www.federated.computer/node_modules/yaml/dist/PlainValue-ec8e588e.js
david@federated.company a1adfc8706 Initial commit...
new file:   archetypes/default.md
	new file:   config.toml
	new file:   content/about/_index.md
	new file:   content/access/_index.md
	new file:   content/background.jpg
	new file:   content/background.mp4
	new file:   content/blog/_index.md
	new file:   content/manifesto/_index.md
	new file:   content/posts/_index.md
	new file:   content/posts/apple-breaks-privacy.md
	new file:   content/posts/main_street_against_big_tech.md
	new file:   content/posts/template.md
	new file:   content/posts/what_is_done_with_personal_data.md
	new file:   content/projects/_index.md
	new file:   node_modules/.bin/nanoid
	new file:   node_modules/.bin/postcss
	new file:   node_modules/.package-lock.json
	new file:   node_modules/@nodelib/fs.scandir/LICENSE
	new file:   node_modules/@nodelib/fs.scandir/README.md
	new file:   node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts
	new file:   node_modules/@nodelib/fs.scandir/out/adapters/fs.js
	new file:   node_modules/@nodelib/fs.scandir/out/constants.d.ts
	new file:   node_modules/@nodelib/fs.scandir/out/constants.js
	new file:   node_modules/@nodelib/fs.scandir/out/index.d.ts
	new file:   node_modules/@nodelib/fs.scandir/out/index.js
	new file:   node_modules/@nodelib/fs.scandir/out/providers/async.d.ts
	new file:   node_modules/@nodelib/fs.scandir/out/providers/async.js
	new file:   node_modules/@nodelib/fs.scandir/out/providers/common.d.ts
	new file:   node_modules/@nodelib/fs.scandir/out/providers/common.js
	new file:   node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts
	new file:   node_modules/@nodelib/fs.scandir/out/providers/sync.js
	new file:   node_modules/@nodelib/fs.scandir/out/settings.d.ts
	new file:   node_modules/@nodelib/fs.scandir/out/settings.js
	new file:   node_modules/@nodelib/fs.scandir/out/types/index.d.ts
	new file:   node_modules/@nodelib/fs.scandir/out/types/index.js
	new file:   node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts
	new file:   node_modules/@nodelib/fs.scandir/out/utils/fs.js
	new file:   node_modules/@nodelib/fs.scandir/out/utils/index.d.ts
	new file:   node_modules/@nodelib/fs.scandir/out/utils/index.js
	new file:   node_modules/@nodelib/fs.scandir/package.json
	new file:   node_modules/@nodelib/fs.stat/LICENSE
	new file:   node_modules/@nodelib/fs.stat/README.md
	new file:   node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts
	new file:   node_modules/@nodelib/fs.stat/out/adapters/fs.js
	new file:   node_modules/@nodelib/fs.stat/out/index.d.ts
	new file:   node_modules/@nodelib/fs.stat/out/index.js
	new file:   node_modules/@nodelib/fs.stat/out/providers/async.d.ts
	new file:   node_modules/@nodelib/fs.stat/out/providers/async.js
	new file:   node_modules/@nodelib/fs.stat/out/providers/sync.d.ts
	new file:   node_modules/@nodelib/fs.stat/out/providers/sync.js
	new file:   node_modules/@nodelib/fs.stat/out/settings.d.ts
	new file:   node_modules/@nodelib/fs.stat/out/settings.js
	new file:   node_modules/@nodelib/fs.stat/out/types/index.d.ts
	new file:   node_modules/@nodelib/fs.stat/out/types/index.js
	new file:   node_modules/@nodelib/fs.stat/package.json
	new file:   node_modules/@nodelib/fs.walk/LICENSE
	new file:   node_modules/@nodelib/fs.walk/README.md
	new file:   node_modules/@nodelib/fs.walk/out/index.d.ts
	new file:   node_modules/@nodelib/fs.walk/out/index.js
	new file:   node_modules/@nodelib/fs.walk/out/providers/async.d.ts
	new file:   node_modules/@nodelib/fs.walk/out/providers/async.js
	new file:   node_modules/@nodelib/fs.walk/out/providers/index.d.ts
	new file:   node_modules/@nodelib/fs.walk/out/providers/index.js
	new file:   node_modules/@nodelib/fs.walk/out/providers/stream.d.ts
	new file:   node_modules/@nodelib/fs.walk/out/providers/stream.js
	new file:   node_modules/@nodelib/fs.walk/out/providers/sync.d.ts
	new file:   node_modules/@nodelib/fs.walk/out/providers/sync.js
	new file:   node_modules/@nodelib/fs.walk/out/readers/async.d.ts
	new file:   node_modules/@nodelib/fs.walk/out/readers/async.js
	new file:   node_modules/@nodelib/fs.walk/out/readers/common.d.ts
	new file:   node_modules/@nodelib/fs.walk/out/readers/common.js
	new file:   node_modules/@nodelib/fs.walk/out/readers/reader.d.ts
	new file:   node_modules/@nodelib/fs.walk/out/readers/reader.js
	new file:   node_modules/@nodelib/fs.walk/out/readers/sync.d.ts
	new file:   node_modules/@nodelib/fs.walk/out/readers/sync.js
	new file:   node_modules/@nodelib/fs.walk/out/settings.d.ts
	new file:   node_modules/@nodelib/fs.walk/out/settings.js
	new file:   node_modules/@nodelib/fs.walk/out/types/index.d.ts
	new file:   node_modules/@nodelib/fs.walk/out/types/index.js
	new file:   node_modules/@nodelib/fs.walk/package.json
	new file:   node_modules/ansi-regex/index.d.ts
	new file:   node_modules/ansi-regex/index.js
	new file:   node_modules/ansi-regex/license
	new file:   node_modules/ansi-regex/package.json
	new file:   node_modules/ansi-regex/readme.md
	new file:   node_modules/ansi-styles/index.d.ts
	new file:   node_modules/ansi-styles/index.js
	new file:   node_modules/ansi-styles/license
	new file:   node_modules/ansi-styles/package.json
	new file:   node_modules/ansi-styles/readme.md
	new file:   node_modules/anymatch/LICENSE
	new file:   node_modules/anymatch/README.md
	new file:   node_modules/anymatch/index.d.ts
	new file:   node_modules/anymatch/index.js
	new file:   node_modules/anymatch/package.json
	new file:   node_modules/array-union/index.d.ts
	new file:   node_modules/array-union/index.js
	new file:   node_modules/array-union/license
	new file:   node_modules/array-union/package.json
	new file:   node_modules/array-union/readme.md
	new file:   node_modules/binary-extensions/binary-extensions.json
	new file:   node_modules/binary-extensions/binary-extensions.json.d.ts
	new file:   node_modules/binary-extensions/index.d.ts
	new file:   node_modules/binary-extensions/index.js
	new file:   node_modules/binary-extensions/license
	new file:   node_modules/binary-extensions/package.json
	new file:   node_modules/binary-extensions/readme.md
	new file:   node_modules/braces/CHANGELOG.md
	new file:   node_modules/braces/LICENSE
	new file:   node_modules/braces/README.md
	new file:   node_modules/braces/index.js
	new file:   node_modules/braces/lib/compile.js
	new file:   node_modules/braces/lib/constants.js
	new file:   node_modules/braces/lib/expand.js
	new file:   node_modules/braces/lib/parse.js
	new file:   node_modules/braces/lib/stringify.js
	new file:   node_modules/braces/lib/utils.js
	new file:   node_modules/braces/package.json
	new file:   node_modules/chokidar/LICENSE
	new file:   node_modules/chokidar/README.md
	new file:   node_modules/chokidar/index.js
	new file:   node_modules/chokidar/lib/constants.js
	new file:   node_modules/chokidar/lib/fsevents-handler.js
	new file:   node_modules/chokidar/lib/nodefs-handler.js
	new file:   node_modules/chokidar/package.json
	new file:   node_modules/chokidar/types/index.d.ts
	new file:   node_modules/cliui/CHANGELOG.md
	new file:   node_modules/cliui/LICENSE.txt
	new file:   node_modules/cliui/README.md
	new file:   node_modules/cliui/build/index.cjs
	new file:   node_modules/cliui/build/lib/index.js
	new file:   node_modules/cliui/build/lib/string-utils.js
	new file:   node_modules/cliui/index.mjs
	new file:   node_modules/cliui/package.json
	new file:   node_modules/color-convert/CHANGELOG.md
	new file:   node_modules/color-convert/LICENSE
	new file:   node_modules/color-convert/README.md
	new file:   node_modules/color-convert/conversions.js
	new file:   node_modules/color-convert/index.js
	new file:   node_modules/color-convert/package.json
	new file:   node_modules/color-convert/route.js
	new file:   node_modules/color-name/LICENSE
	new file:   node_modules/color-name/README.md
	new file:   node_modules/color-name/index.js
	new file:   node_modules/color-name/package.json
	new file:   node_modules/dependency-graph/CHANGELOG.md
	new file:   node_modules/dependency-graph/LICENSE
	new file:   node_modules/dependency-graph/README.md
	new file:   node_modules/dependency-graph/lib/dep_graph.js
	new file:   node_modules/dependency-graph/lib/index.d.ts
	new file:   node_modules/dependency-graph/package.json
	new file:   node_modules/dependency-graph/specs/dep_graph_spec.js
	new file:   node_modules/dir-glob/index.js
	new file:   node_modules/dir-glob/license
	new file:   node_modules/dir-glob/package.json
	new file:   node_modules/dir-glob/readme.md
	new file:   node_modules/emoji-regex/LICENSE-MIT.txt
	new file:   node_modules/emoji-regex/README.md
	new file:   node_modules/emoji-regex/es2015/index.js
	new file:   node_modules/emoji-regex/es2015/text.js
	new file:   node_modules/emoji-regex/index.d.ts
	new file:   node_modules/emoji-regex/index.js
	new file:   node_modules/emoji-regex/package.json
	new file:   node_modules/emoji-regex/text.js
	new file:   node_modules/escalade/dist/index.js
	new file:   node_modules/escalade/dist/index.mjs
	new file:   node_modules/escalade/index.d.ts
	new file:   node_modules/escalade/license
	new file:   node_modules/escalade/package.json
	new file:   node_modules/escalade/readme.md
	new file:   node_modules/escalade/sync/index.d.ts
	new file:   node_modules/escalade/sync/index.js
	new file:   node_modules/escalade/sync/index.mjs
	new file:   node_modules/fast-glob/LICENSE
	new file:   node_modules/fast-glob/README.md
	new file:   node_modules/fast-glob/out/index.d.ts
	new file:   node_modules/fast-glob/out/index.js
	new file:   node_modules/fast-glob/out/managers/patterns.d.ts
	new file:   node_modules/fast-glob/out/managers/patterns.js
	new file:   node_modules/fast-glob/out/managers/tasks.d.ts
	new file:   node_modules/fast-glob/out/managers/tasks.js
	new file:   node_modules/fast-glob/out/providers/async.d.ts
	new file:   node_modules/fast-glob/out/providers/async.js
	new file:   node_modules/fast-glob/out/providers/filters/deep.d.ts
	new file:   node_modules/fast-glob/out/providers/filters/deep.js
	new file:   node_modules/fast-glob/out/providers/filters/entry.d.ts
	new file:   node_modules/fast-glob/out/providers/filters/entry.js
	new file:   node_modules/fast-glob/out/providers/filters/error.d.ts
	new file:   node_modules/fast-glob/out/providers/filters/error.js
	new file:   node_modules/fast-glob/out/providers/matchers/matcher.d.ts
	new file:   node_modules/fast-glob/out/providers/matchers/matcher.js
	new file:   node_modules/fast-glob/out/providers/matchers/partial.d.ts
	new file:   node_modules/fast-glob/out/providers/matchers/partial.js
	new file:   node_modules/fast-glob/out/providers/provider.d.ts
	new file:   node_modules/fast-glob/out/providers/provider.js
	new file:   node_modules/fast-glob/out/providers/stream.d.ts
	new file:   node_modules/fast-glob/out/providers/stream.js
	new file:   node_modules/fast-glob/out/providers/sync.d.ts
	new file:   node_modules/fast-glob/out/providers/sync.js
	new file:   node_modules/fast-glob/out/providers/transformers/entry.d.ts
	new file:   node_modules/fast-glob/out/providers/transformers/entry.js
	new file:   node_modules/fast-glob/out/readers/reader.d.ts
	new file:   node_modules/fast-glob/out/readers/reader.js
	new file:   node_modules/fast-glob/out/readers/stream.d.ts
	new file:   node_modules/fast-glob/out/readers/stream.js
	new file:   node_modules/fast-glob/out/readers/sync.d.ts
	new file:   node_modules/fast-glob/out/readers/sync.js
	new file:   node_modules/fast-glob/out/settings.d.ts
	new file:   node_modules/fast-glob/out/settings.js
	new file:   node_modules/fast-glob/out/types/index.d.ts
	new file:   node_modules/fast-glob/out/types/index.js
	new file:   node_modules/fast-glob/out/utils/array.d.ts
	new file:   node_modules/fast-glob/out/utils/array.js
	new file:   node_modules/fast-glob/out/utils/errno.d.ts
	new file:   node_modules/fast-glob/out/utils/errno.js
	new file:   node_modules/fast-glob/out/utils/fs.d.ts
	new file:   node_modules/fast-glob/out/utils/fs.js
	new file:   node_modules/fast-glob/out/utils/index.d.ts
	new file:   node_modules/fast-glob/out/utils/index.js
	new file:   node_modules/fast-glob/out/utils/path.d.ts
	new file:   node_modules/fast-glob/out/utils/path.js
	new file:   node_modules/fast-glob/out/utils/pattern.d.ts
	new file:   node_modules/fast-glob/out/utils/pattern.js
	new file:   node_modules/fast-glob/out/utils/stream.d.ts
	new file:   node_modules/fast-glob/out/utils/stream.js
	new file:   node_modules/fast-glob/out/utils/string.d.ts
	new file:   node_modules/fast-glob/out/utils/string.js
	new file:   node_modules/fast-glob/package.json
	new file:   node_modules/fastq/.github/dependabot.yml
	new file:   node_modules/fastq/.github/workflows/ci.yml
	new file:   node_modules/fastq/LICENSE
	new file:   node_modules/fastq/README.md
	new file:   node_modules/fastq/bench.js
	new file:   node_modules/fastq/example.js
	new file:   node_modules/fastq/example.mjs
	new file:   node_modules/fastq/index.d.ts
	new file:   node_modules/fastq/package.json
	new file:   node_modules/fastq/queue.js
	new file:   node_modules/fastq/test/example.ts
	new file:   node_modules/fastq/test/promise.js
	new file:   node_modules/fastq/test/test.js
	new file:   node_modules/fastq/test/tsconfig.json
	new file:   node_modules/fill-range/LICENSE
	new file:   node_modules/fill-range/README.md
	new file:   node_modules/fill-range/index.js
	new file:   node_modules/fill-range/package.json
	new file:   node_modules/fs-extra/CHANGELOG.md
	new file:   node_modules/fs-extra/LICENSE
	new file:   node_modules/fs-extra/README.md
	new file:   node_modules/fs-extra/lib/copy-sync/copy-sync.js
	new file:   node_modules/fs-extra/lib/copy-sync/index.js
	new file:   node_modules/fs-extra/lib/copy/copy.js
	new file:   node_modules/fs-extra/lib/copy/index.js
	new file:   node_modules/fs-extra/lib/empty/index.js
	new file:   node_modules/fs-extra/lib/ensure/file.js
	new file:   node_modules/fs-extra/lib/ensure/index.js
	new file:   node_modules/fs-extra/lib/ensure/link.js
	new file:   node_modules/fs-extra/lib/ensure/symlink-paths.js
	new file:   node_modules/fs-extra/lib/ensure/symlink-type.js
	new file:   node_modules/fs-extra/lib/ensure/symlink.js
	new file:   node_modules/fs-extra/lib/fs/index.js
	new file:   node_modules/fs-extra/lib/index.js
	new file:   node_modules/fs-extra/lib/json/index.js
	new file:   node_modules/fs-extra/lib/json/jsonfile.js
	new file:   node_modules/fs-extra/lib/json/output-json-sync.js
	new file:   node_modules/fs-extra/lib/json/output-json.js
	new file:   node_modules/fs-extra/lib/mkdirs/index.js
	new file:   node_modules/fs-extra/lib/mkdirs/make-dir.js
	new file:   node_modules/fs-extra/lib/mkdirs/utils.js
	new file:   node_modules/fs-extra/lib/move-sync/index.js
	new file:   node_modules/fs-extra/lib/move-sync/move-sync.js
	new file:   node_modules/fs-extra/lib/move/index.js
	new file:   node_modules/fs-extra/lib/move/move.js
	new file:   node_modules/fs-extra/lib/output/index.js
	new file:   node_modules/fs-extra/lib/path-exists/index.js
	new file:   node_modules/fs-extra/lib/remove/index.js
	new file:   node_modules/fs-extra/lib/remove/rimraf.js
	new file:   node_modules/fs-extra/lib/util/stat.js
	new file:   node_modules/fs-extra/lib/util/utimes.js
	new file:   node_modules/fs-extra/package.json
	new file:   node_modules/get-caller-file/LICENSE.md
	new file:   node_modules/get-caller-file/README.md
	new file:   node_modules/get-caller-file/index.d.ts
	new file:   node_modules/get-caller-file/index.js
	new file:   node_modules/get-caller-file/index.js.map
	new file:   node_modules/get-caller-file/package.json
	new file:   node_modules/get-stdin/index.d.ts
	new file:   node_modules/get-stdin/index.js
	new file:   node_modules/get-stdin/license
	new file:   node_modules/get-stdin/package.json
	new file:   node_modules/get-stdin/readme.md
	new file:   node_modules/glob-parent/CHANGELOG.md
	new file:   node_modules/glob-parent/LICENSE
	new file:   node_modules/glob-parent/README.md
	new file:   node_modules/glob-parent/index.js
	new file:   node_modules/glob-parent/package.json
	new file:   node_modules/globby/gitignore.js
	new file:   node_modules/globby/index.d.ts
	new file:   node_modules/globby/index.js
	new file:   node_modules/globby/license
	new file:   node_modules/globby/package.json
	new file:   node_modules/globby/readme.md
	new file:   node_modules/globby/stream-utils.js
	new file:   node_modules/globby/to-path.js
	new file:   node_modules/graceful-fs/LICENSE
	new file:   node_modules/graceful-fs/README.md
	new file:   node_modules/graceful-fs/clone.js
	new file:   node_modules/graceful-fs/graceful-fs.js
	new file:   node_modules/graceful-fs/legacy-streams.js
	new file:   node_modules/graceful-fs/package.json
	new file:   node_modules/graceful-fs/polyfills.js
	new file:   node_modules/ignore/LICENSE-MIT
	new file:   node_modules/ignore/README.md
	new file:   node_modules/ignore/index.d.ts
	new file:   node_modules/ignore/index.js
	new file:   node_modules/ignore/legacy.js
	new file:   node_modules/ignore/package.json
	new file:   node_modules/is-binary-path/index.d.ts
	new file:   node_modules/is-binary-path/index.js
	new file:   node_modules/is-binary-path/license
	new file:   node_modules/is-binary-path/package.json
	new file:   node_modules/is-binary-path/readme.md
	new file:   node_modules/is-extglob/LICENSE
	new file:   node_modules/is-extglob/README.md
	new file:   node_modules/is-extglob/index.js
	new file:   node_modules/is-extglob/package.json
	new file:   node_modules/is-fullwidth-code-point/index.d.ts
	new file:   node_modules/is-fullwidth-code-point/index.js
	new file:   node_modules/is-fullwidth-code-point/license
	new file:   node_modules/is-fullwidth-code-point/package.json
	new file:   node_modules/is-fullwidth-code-point/readme.md
	new file:   node_modules/is-glob/LICENSE
	new file:   node_modules/is-glob/README.md
	new file:   node_modules/is-glob/index.js
	new file:   node_modules/is-glob/package.json
	new file:   node_modules/is-number/LICENSE
	new file:   node_modules/is-number/README.md
	new file:   node_modules/is-number/index.js
	new file:   node_modules/is-number/package.json
	new file:   node_modules/jsonfile/CHANGELOG.md
	new file:   node_modules/jsonfile/LICENSE
	new file:   node_modules/jsonfile/README.md
	new file:   node_modules/jsonfile/index.js
	new file:   node_modules/jsonfile/package.json
	new file:   node_modules/jsonfile/utils.js
	new file:   node_modules/lilconfig/dist/index.d.ts
	new file:   node_modules/lilconfig/dist/index.js
	new file:   node_modules/lilconfig/package.json
	new file:   node_modules/lilconfig/readme.md
	new file:   node_modules/merge2/LICENSE
	new file:   node_modules/merge2/README.md
	new file:   node_modules/merge2/index.js
	new file:   node_modules/merge2/package.json
	new file:   node_modules/micromatch/CHANGELOG.md
	new file:   node_modules/micromatch/LICENSE
	new file:   node_modules/micromatch/README.md
	new file:   node_modules/micromatch/index.js
	new file:   node_modules/micromatch/package.json
	new file:   node_modules/nanoid/LICENSE
	new file:   node_modules/nanoid/README.md
	new file:   node_modules/nanoid/async/index.browser.cjs
	new file:   node_modules/nanoid/async/index.browser.js
	new file:   node_modules/nanoid/async/index.cjs
	new file:   node_modules/nanoid/async/index.d.ts
	new file:   node_modules/nanoid/async/index.js
	new file:   node_modules/nanoid/async/index.native.js
	new file:   node_modules/nanoid/async/package.json
	new file:   node_modules/nanoid/bin/nanoid.cjs
	new file:   node_modules/nanoid/index.browser.cjs
	new file:   node_modules/nanoid/index.browser.js
	new file:   node_modules/nanoid/index.cjs
	new file:   node_modules/nanoid/index.d.ts
	new file:   node_modules/nanoid/index.dev.js
	new file:   node_modules/nanoid/index.js
	new file:   node_modules/nanoid/index.prod.js
	new file:   node_modules/nanoid/nanoid.js
	new file:   node_modules/nanoid/non-secure/index.cjs
	new file:   node_modules/nanoid/non-secure/index.d.ts
	new file:   node_modules/nanoid/non-secure/index.js
	new file:   node_modules/nanoid/non-secure/package.json
	new file:   node_modules/nanoid/package.json
	new file:   node_modules/nanoid/url-alphabet/index.cjs
	new file:   node_modules/nanoid/url-alphabet/index.js
	new file:   node_modules/nanoid/url-alphabet/package.json
	new file:   node_modules/normalize-path/LICENSE
	new file:   node_modules/normalize-path/README.md
	new file:   node_modules/normalize-path/index.js
	new file:   node_modules/normalize-path/package.json
	new file:   node_modules/path-type/index.d.ts
	new file:   node_modules/path-type/index.js
	new file:   node_modules/path-type/license
	new file:   node_modules/path-type/package.json
	new file:   node_modules/path-type/readme.md
	new file:   node_modules/picocolors/LICENSE
	new file:   node_modules/picocolors/README.md
	new file:   node_modules/picocolors/package.json
	new file:   node_modules/picocolors/picocolors.browser.js
	new file:   node_modules/picocolors/picocolors.d.ts
	new file:   node_modules/picocolors/picocolors.js
	new file:   node_modules/picocolors/types.ts
	new file:   node_modules/picomatch/CHANGELOG.md
	new file:   node_modules/picomatch/LICENSE
	new file:   node_modules/picomatch/README.md
	new file:   node_modules/picomatch/index.js
	new file:   node_modules/picomatch/lib/constants.js
	new file:   node_modules/picomatch/lib/parse.js
	new file:   node_modules/picomatch/lib/picomatch.js
	new file:   node_modules/picomatch/lib/scan.js
	new file:   node_modules/picomatch/lib/utils.js
	new file:   node_modules/picomatch/package.json
	new file:   node_modules/pify/index.js
	new file:   node_modules/pify/license
	new file:   node_modules/pify/package.json
	new file:   node_modules/pify/readme.md
	new file:   node_modules/postcss-cli/LICENSE
	new file:   node_modules/postcss-cli/README.md
	new file:   node_modules/postcss-cli/index.js
	new file:   node_modules/postcss-cli/lib/DependencyGraph.js
	new file:   node_modules/postcss-cli/lib/args.js
	new file:   node_modules/postcss-cli/lib/getMapfile.js
	new file:   node_modules/postcss-cli/package.json
	new file:   node_modules/postcss-load-config/LICENSE
	new file:   node_modules/postcss-load-config/README.md
	new file:   node_modules/postcss-load-config/package.json
	new file:   node_modules/postcss-load-config/src/index.d.ts
	new file:   node_modules/postcss-load-config/src/index.js
	new file:   node_modules/postcss-load-config/src/options.js
	new file:   node_modules/postcss-load-config/src/plugins.js
	new file:   node_modules/postcss-load-config/src/req.js
	new file:   node_modules/postcss-reporter/LICENSE
	new file:   node_modules/postcss-reporter/README.md
	new file:   node_modules/postcss-reporter/index.js
	new file:   node_modules/postcss-reporter/lib/formatter.js
	new file:   node_modules/postcss-reporter/lib/reporter.js
	new file:   node_modules/postcss-reporter/lib/util.js
	new file:   node_modules/postcss-reporter/package.json
	new file:   node_modules/postcss/LICENSE
	new file:   node_modules/postcss/README.md
	new file:   node_modules/postcss/lib/at-rule.d.ts
	new file:   node_modules/postcss/lib/at-rule.js
	new file:   node_modules/postcss/lib/comment.d.ts
	new file:   node_modules/postcss/lib/comment.js
	new file:   node_modules/postcss/lib/container.d.ts
	new file:   node_modules/postcss/lib/container.js
	new file:   node_modules/postcss/lib/css-syntax-error.d.ts
	new file:   node_modules/postcss/lib/css-syntax-error.js
	new file:   node_modules/postcss/lib/declaration.d.ts
	new file:   node_modules/postcss/lib/declaration.js
	new file:   node_modules/postcss/lib/document.d.ts
	new file:   node_modules/postcss/lib/document.js
	new file:   node_modules/postcss/lib/fromJSON.d.ts
	new file:   node_modules/postcss/lib/fromJSON.js
	new file:   node_modules/postcss/lib/input.d.ts
	new file:   node_modules/postcss/lib/input.js
	new file:   node_modules/postcss/lib/lazy-result.d.ts
	new file:   node_modules/postcss/lib/lazy-result.js
	new file:   node_modules/postcss/lib/list.d.ts
	new file:   node_modules/postcss/lib/list.js
	new file:   node_modules/postcss/lib/map-generator.js
	new file:   node_modules/postcss/lib/no-work-result.d.ts
	new file:   node_modules/postcss/lib/no-work-result.js
	new file:   node_modules/postcss/lib/node.d.ts
	new file:   node_modules/postcss/lib/node.js
	new file:   node_modules/postcss/lib/parse.d.ts
	new file:   node_modules/postcss/lib/parse.js
	new file:   node_modules/postcss/lib/parser.js
	new file:   node_modules/postcss/lib/postcss.d.ts
	new file:   node_modules/postcss/lib/postcss.js
	new file:   node_modules/postcss/lib/postcss.mjs
	new file:   node_modules/postcss/lib/previous-map.d.ts
	new file:   node_modules/postcss/lib/previous-map.js
	new file:   node_modules/postcss/lib/processor.d.ts
	new file:   node_modules/postcss/lib/processor.js
	new file:   node_modules/postcss/lib/result.d.ts
	new file:   node_modules/postcss/lib/result.js
	new file:   node_modules/postcss/lib/root.d.ts
	new file:   node_modules/postcss/lib/root.js
	new file:   node_modules/postcss/lib/rule.d.ts
	new file:   node_modules/postcss/lib/rule.js
	new file:   node_modules/postcss/lib/stringifier.d.ts
	new file:   node_modules/postcss/lib/stringifier.js
	new file:   node_modules/postcss/lib/stringify.d.ts
	new file:   node_modules/postcss/lib/stringify.js
	new file:   node_modules/postcss/lib/symbols.js
	new file:   node_modules/postcss/lib/terminal-highlight.js
	new file:   node_modules/postcss/lib/tokenize.js
	new file:   node_modules/postcss/lib/warn-once.js
	new file:   node_modules/postcss/lib/warning.d.ts
	new file:   node_modules/postcss/lib/warning.js
	new file:   node_modules/postcss/package.json
	new file:   node_modules/pretty-hrtime/.jshintignore
	new file:   node_modules/pretty-hrtime/.npmignore
	new file:   node_modules/pretty-hrtime/LICENSE
	new file:   node_modules/pretty-hrtime/README.md
	new file:   node_modules/pretty-hrtime/index.js
	new file:   node_modules/pretty-hrtime/package.json
	new file:   node_modules/queue-microtask/LICENSE
	new file:   node_modules/queue-microtask/README.md
	new file:   node_modules/queue-microtask/index.d.ts
	new file:   node_modules/queue-microtask/index.js
	new file:   node_modules/queue-microtask/package.json
	new file:   node_modules/read-cache/LICENSE
	new file:   node_modules/read-cache/README.md
	new file:   node_modules/read-cache/index.js
	new file:   node_modules/read-cache/package.json
	new file:   node_modules/readdirp/LICENSE
	new file:   node_modules/readdirp/README.md
	new file:   node_modules/readdirp/index.d.ts
	new file:   node_modules/readdirp/index.js
	new file:   node_modules/readdirp/package.json
	new file:   node_modules/require-directory/.jshintrc
	new file:   node_modules/require-directory/.npmignore
	new file:   node_modules/require-directory/.travis.yml
	new file:   node_modules/require-directory/LICENSE
	new file:   node_modules/require-directory/README.markdown
	new file:   node_modules/require-directory/index.js
	new file:   node_modules/require-directory/package.json
	new file:   node_modules/reusify/.coveralls.yml
	new file:   node_modules/reusify/.travis.yml
	new file:   node_modules/reusify/LICENSE
	new file:   node_modules/reusify/README.md
	new file:   node_modules/reusify/benchmarks/createNoCodeFunction.js
	new file:   node_modules/reusify/benchmarks/fib.js
	new file:   node_modules/reusify/benchmarks/reuseNoCodeFunction.js
	new file:   node_modules/reusify/package.json
	new file:   node_modules/reusify/reusify.js
	new file:   node_modules/reusify/test.js
	new file:   node_modules/run-parallel/LICENSE
	new file:   node_modules/run-parallel/README.md
	new file:   node_modules/run-parallel/index.js
	new file:   node_modules/run-parallel/package.json
	new file:   node_modules/slash/index.d.ts
	new file:   node_modules/slash/index.js
	new file:   node_modules/slash/license
	new file:   node_modules/slash/package.json
	new file:   node_modules/slash/readme.md
	new file:   node_modules/source-map-js/CHANGELOG.md
	new file:   node_modules/source-map-js/LICENSE
	new file:   node_modules/source-map-js/README.md
	new file:   node_modules/source-map-js/lib/array-set.js
	new file:   node_modules/source-map-js/lib/base64-vlq.js
	new file:   node_modules/source-map-js/lib/base64.js
	new file:   node_modules/source-map-js/lib/binary-search.js
	new file:   node_modules/source-map-js/lib/mapping-list.js
	new file:   node_modules/source-map-js/lib/quick-sort.js
	new file:   node_modules/source-map-js/lib/source-map-consumer.js
	new file:   node_modules/source-map-js/lib/source-map-generator.js
	new file:   node_modules/source-map-js/lib/source-node.js
	new file:   node_modules/source-map-js/lib/util.js
	new file:   node_modules/source-map-js/package.json
	new file:   node_modules/source-map-js/source-map.d.ts
	new file:   node_modules/source-map-js/source-map.js
	new file:   node_modules/string-width/index.d.ts
	new file:   node_modules/string-width/index.js
	new file:   node_modules/string-width/license
	new file:   node_modules/string-width/package.json
	new file:   node_modules/string-width/readme.md
	new file:   node_modules/strip-ansi/index.d.ts
	new file:   node_modules/strip-ansi/index.js
	new file:   node_modules/strip-ansi/license
	new file:   node_modules/strip-ansi/package.json
	new file:   node_modules/strip-ansi/readme.md
	new file:   node_modules/thenby/LICENSE.TXT
	new file:   node_modules/thenby/README.md
	new file:   node_modules/thenby/package.json
	new file:   node_modules/thenby/thenBy.min.js
	new file:   node_modules/thenby/thenBy.module.d.ts
	new file:   node_modules/thenby/thenBy.module.js
	new file:   node_modules/to-regex-range/LICENSE
	new file:   node_modules/to-regex-range/README.md
	new file:   node_modules/to-regex-range/index.js
	new file:   node_modules/to-regex-range/package.json
	new file:   node_modules/universalify/LICENSE
	new file:   node_modules/universalify/README.md
	new file:   node_modules/universalify/index.js
	new file:   node_modules/universalify/package.json
	new file:   node_modules/wrap-ansi/index.js
	new file:   node_modules/wrap-ansi/license
	new file:   node_modules/wrap-ansi/package.json
	new file:   node_modules/wrap-ansi/readme.md
	new file:   node_modules/y18n/CHANGELOG.md
	new file:   node_modules/y18n/LICENSE
	new file:   node_modules/y18n/README.md
	new file:   node_modules/y18n/build/index.cjs
	new file:   node_modules/y18n/build/lib/cjs.js
	new file:   node_modules/y18n/build/lib/index.js
	new file:   node_modules/y18n/build/lib/platform-shims/node.js
	new file:   node_modules/y18n/index.mjs
	new file:   node_modules/y18n/package.json
	new file:   node_modules/yaml/LICENSE
	new file:   node_modules/yaml/README.md
	new file:   node_modules/yaml/browser/dist/PlainValue-b8036b75.js
	new file:   node_modules/yaml/browser/dist/Schema-e94716c8.js
	new file:   node_modules/yaml/browser/dist/index.js
	new file:   node_modules/yaml/browser/dist/legacy-exports.js
	new file:   node_modules/yaml/browser/dist/package.json
	new file:   node_modules/yaml/browser/dist/parse-cst.js
	new file:   node_modules/yaml/browser/dist/resolveSeq-492ab440.js
	new file:   node_modules/yaml/browser/dist/types.js
	new file:   node_modules/yaml/browser/dist/util.js
	new file:   node_modules/yaml/browser/dist/warnings-df54cb69.js
	new file:   node_modules/yaml/browser/index.js
	new file:   node_modules/yaml/browser/map.js
	new file:   node_modules/yaml/browser/pair.js
	new file:   node_modules/yaml/browser/parse-cst.js
	new file:   node_modules/yaml/browser/scalar.js
	new file:   node_modules/yaml/browser/schema.js
	new file:   node_modules/yaml/browser/seq.js
	new file:   node_modules/yaml/browser/types.js
	new file:   node_modules/yaml/browser/types/binary.js
	new file:   node_modules/yaml/browser/types/omap.js
	new file:   node_modules/yaml/browser/types/pairs.js
	new file:   node_modules/yaml/browser/types/set.js
	new file:   node_modules/yaml/browser/types/timestamp.js
	new file:   node_modules/yaml/browser/util.js
	new file:   node_modules/yaml/dist/Document-9b4560a1.js
	new file:   node_modules/yaml/dist/PlainValue-ec8e588e.js
	new file:   node_modules/yaml/dist/Schema-88e323a7.js
	new file:   node_modules/yaml/dist/index.js
	new file:   node_modules/yaml/dist/legacy-exports.js
	new file:   node_modules/yaml/dist/parse-cst.js
	new file:   node_modules/yaml/dist/resolveSeq-d03cb037.js
	new file:   node_modules/yaml/dist/test-events.js
	new file:   node_modules/yaml/dist/types.js
	new file:   node_modules/yaml/dist/util.js
	new file:   node_modules/yaml/dist/warnings-1000a372.js
	new file:   node_modules/yaml/index.d.ts
	new file:   node_modules/yaml/index.js
	new file:   node_modules/yaml/map.js
	new file:   node_modules/yaml/package.json
	new file:   node_modules/yaml/pair.js
	new file:   node_modules/yaml/parse-cst.d.ts
	new file:   node_modules/yaml/parse-cst.js
	new file:   node_modules/yaml/scalar.js
	new file:   node_modules/yaml/schema.js
	new file:   node_modules/yaml/seq.js
	new file:   node_modules/yaml/types.d.ts
	new file:   node_modules/yaml/types.js
	new file:   node_modules/yaml/types.mjs
	new file:   node_modules/yaml/types/binary.js
	new file:   node_modules/yaml/types/omap.js
	new file:   node_modules/yaml/types/pairs.js
	new file:   node_modules/yaml/types/set.js
	new file:   node_modules/yaml/types/timestamp.js
	new file:   node_modules/yaml/util.d.ts
	new file:   node_modules/yaml/util.js
	new file:   node_modules/yaml/util.mjs
	new file:   node_modules/yargs-parser/CHANGELOG.md
	new file:   node_modules/yargs-parser/LICENSE.txt
	new file:   node_modules/yargs-parser/README.md
	new file:   node_modules/yargs-parser/browser.js
	new file:   node_modules/yargs-parser/build/index.cjs
	new file:   node_modules/yargs-parser/build/lib/index.js
	new file:   node_modules/yargs-parser/build/lib/string-utils.js
	new file:   node_modules/yargs-parser/build/lib/tokenize-arg-string.js
	new file:   node_modules/yargs-parser/build/lib/yargs-parser-types.js
	new file:   node_modules/yargs-parser/build/lib/yargs-parser.js
	new file:   node_modules/yargs-parser/package.json
	new file:   node_modules/yargs/LICENSE
	new file:   node_modules/yargs/README.md
	new file:   node_modules/yargs/browser.mjs
	new file:   node_modules/yargs/build/index.cjs
	new file:   node_modules/yargs/build/lib/argsert.js
	new file:   node_modules/yargs/build/lib/command.js
	new file:   node_modules/yargs/build/lib/completion-templates.js
	new file:   node_modules/yargs/build/lib/completion.js
	new file:   node_modules/yargs/build/lib/middleware.js
	new file:   node_modules/yargs/build/lib/parse-command.js
	new file:   node_modules/yargs/build/lib/typings/common-types.js
	new file:   node_modules/yargs/build/lib/typings/yargs-parser-types.js
	new file:   node_modules/yargs/build/lib/usage.js
	new file:   node_modules/yargs/build/lib/utils/apply-extends.js
	new file:   node_modules/yargs/build/lib/utils/is-promise.js
	new file:   node_modules/yargs/build/lib/utils/levenshtein.js
	new file:   node_modules/yargs/build/lib/utils/maybe-async-result.js
	new file:   node_modules/yargs/build/lib/utils/obj-filter.js
	new file:   node_modules/yargs/build/lib/utils/process-argv.js
	new file:   node_modules/yargs/build/lib/utils/set-blocking.js
	new file:   node_modules/yargs/build/lib/utils/which-module.js
	new file:   node_modules/yargs/build/lib/validation.js
	new file:   node_modules/yargs/build/lib/yargs-factory.js
	new file:   node_modules/yargs/build/lib/yerror.js
	new file:   node_modules/yargs/helpers/helpers.mjs
	new file:   node_modules/yargs/helpers/index.js
	new file:   node_modules/yargs/helpers/package.json
	new file:   node_modules/yargs/index.cjs
	new file:   node_modules/yargs/index.mjs
	new file:   node_modules/yargs/lib/platform-shims/browser.mjs
	new file:   node_modules/yargs/lib/platform-shims/esm.mjs
	new file:   node_modules/yargs/locales/be.json
	new file:   node_modules/yargs/locales/de.json
	new file:   node_modules/yargs/locales/en.json
	new file:   node_modules/yargs/locales/es.json
	new file:   node_modules/yargs/locales/fi.json
	new file:   node_modules/yargs/locales/fr.json
	new file:   node_modules/yargs/locales/hi.json
	new file:   node_modules/yargs/locales/hu.json
	new file:   node_modules/yargs/locales/id.json
	new file:   node_modules/yargs/locales/it.json
	new file:   node_modules/yargs/locales/ja.json
	new file:   node_modules/yargs/locales/ko.json
	new file:   node_modules/yargs/locales/nb.json
	new file:   node_modules/yargs/locales/nl.json
	new file:   node_modules/yargs/locales/nn.json
	new file:   node_modules/yargs/locales/pirate.json
	new file:   node_modules/yargs/locales/pl.json
	new file:   node_modules/yargs/locales/pt.json
	new file:   node_modules/yargs/locales/pt_BR.json
	new file:   node_modules/yargs/locales/ru.json
	new file:   node_modules/yargs/locales/th.json
	new file:   node_modules/yargs/locales/tr.json
	new file:   node_modules/yargs/locales/uk_UA.json
	new file:   node_modules/yargs/locales/uz.json
	new file:   node_modules/yargs/locales/zh_CN.json
	new file:   node_modules/yargs/locales/zh_TW.json
	new file:   node_modules/yargs/package.json
	new file:   node_modules/yargs/yargs
	new file:   package-lock.json
	new file:   package.json
	new file:   public/about/index.html
	new file:   public/about/index.xml
	new file:   public/access/index.html
	new file:   public/access/index.xml
	new file:   public/background.jpg
	new file:   public/background.mp4
	new file:   public/blog/index.html
	new file:   public/blog/index.xml
	new file:   public/categories/index.html
	new file:   public/categories/index.xml
	new file:   public/css/default-skin.css
	new file:   public/css/default-skin.png
	new file:   public/css/default-skin.svg
	new file:   public/css/photoswipe.css
	new file:   public/css/preloader.gif
	new file:   public/css/style.css
	new file:   public/index.html
	new file:   public/index.xml
	new file:   public/js/photoswipe-ui-default.min.js
	new file:   public/js/photoswipe.min.js
	new file:   public/manifesto/index.html
	new file:   public/manifesto/index.xml
	new file:   public/posts/apple-breaks-privacy/index.html
	new file:   public/posts/index.html
	new file:   public/posts/index.xml
	new file:   public/posts/main_street_against_big_tech/index.html
	new file:   public/posts/manifesto/index.html
	new file:   public/posts/what_is_done_with_personal_data/index.html
	new file:   public/projects/index.html
	new file:   public/projects/index.xml
	new file:   public/sam.ico
	new file:   public/sitemap.xml
	new file:   public/tags/index.html
	new file:   public/tags/index.xml
	new file:   public/tn.png
	new file:   resources/_gen/assets/css/ananke/css/main.css_bb5467e0521bbea6b1e66429f6ec028e.content
	new file:   resources/_gen/assets/css/ananke/css/main.css_bb5467e0521bbea6b1e66429f6ec028e.json
	new file:   resources/_gen/assets/sass/sass/style.sass_7642ba43b3212fd7d7ba324df3b88b0c.content
	new file:   resources/_gen/assets/sass/sass/style.sass_7642ba43b3212fd7d7ba324df3b88b0c.json
2023-04-21 08:57:54 -06:00

877 lines
20 KiB
JavaScript

'use strict';
const Char = {
ANCHOR: '&',
COMMENT: '#',
TAG: '!',
DIRECTIVES_END: '-',
DOCUMENT_END: '.'
};
const Type = {
ALIAS: 'ALIAS',
BLANK_LINE: 'BLANK_LINE',
BLOCK_FOLDED: 'BLOCK_FOLDED',
BLOCK_LITERAL: 'BLOCK_LITERAL',
COMMENT: 'COMMENT',
DIRECTIVE: 'DIRECTIVE',
DOCUMENT: 'DOCUMENT',
FLOW_MAP: 'FLOW_MAP',
FLOW_SEQ: 'FLOW_SEQ',
MAP: 'MAP',
MAP_KEY: 'MAP_KEY',
MAP_VALUE: 'MAP_VALUE',
PLAIN: 'PLAIN',
QUOTE_DOUBLE: 'QUOTE_DOUBLE',
QUOTE_SINGLE: 'QUOTE_SINGLE',
SEQ: 'SEQ',
SEQ_ITEM: 'SEQ_ITEM'
};
const defaultTagPrefix = 'tag:yaml.org,2002:';
const defaultTags = {
MAP: 'tag:yaml.org,2002:map',
SEQ: 'tag:yaml.org,2002:seq',
STR: 'tag:yaml.org,2002:str'
};
function findLineStarts(src) {
const ls = [0];
let offset = src.indexOf('\n');
while (offset !== -1) {
offset += 1;
ls.push(offset);
offset = src.indexOf('\n', offset);
}
return ls;
}
function getSrcInfo(cst) {
let lineStarts, src;
if (typeof cst === 'string') {
lineStarts = findLineStarts(cst);
src = cst;
} else {
if (Array.isArray(cst)) cst = cst[0];
if (cst && cst.context) {
if (!cst.lineStarts) cst.lineStarts = findLineStarts(cst.context.src);
lineStarts = cst.lineStarts;
src = cst.context.src;
}
}
return {
lineStarts,
src
};
}
/**
* @typedef {Object} LinePos - One-indexed position in the source
* @property {number} line
* @property {number} col
*/
/**
* Determine the line/col position matching a character offset.
*
* Accepts a source string or a CST document as the second parameter. With
* the latter, starting indices for lines are cached in the document as
* `lineStarts: number[]`.
*
* Returns a one-indexed `{ line, col }` location if found, or
* `undefined` otherwise.
*
* @param {number} offset
* @param {string|Document|Document[]} cst
* @returns {?LinePos}
*/
function getLinePos(offset, cst) {
if (typeof offset !== 'number' || offset < 0) return null;
const {
lineStarts,
src
} = getSrcInfo(cst);
if (!lineStarts || !src || offset > src.length) return null;
for (let i = 0; i < lineStarts.length; ++i) {
const start = lineStarts[i];
if (offset < start) {
return {
line: i,
col: offset - lineStarts[i - 1] + 1
};
}
if (offset === start) return {
line: i + 1,
col: 1
};
}
const line = lineStarts.length;
return {
line,
col: offset - lineStarts[line - 1] + 1
};
}
/**
* Get a specified line from the source.
*
* Accepts a source string or a CST document as the second parameter. With
* the latter, starting indices for lines are cached in the document as
* `lineStarts: number[]`.
*
* Returns the line as a string if found, or `null` otherwise.
*
* @param {number} line One-indexed line number
* @param {string|Document|Document[]} cst
* @returns {?string}
*/
function getLine(line, cst) {
const {
lineStarts,
src
} = getSrcInfo(cst);
if (!lineStarts || !(line >= 1) || line > lineStarts.length) return null;
const start = lineStarts[line - 1];
let end = lineStarts[line]; // undefined for last line; that's ok for slice()
while (end && end > start && src[end - 1] === '\n') --end;
return src.slice(start, end);
}
/**
* Pretty-print the starting line from the source indicated by the range `pos`
*
* Trims output to `maxWidth` chars while keeping the starting column visible,
* using `…` at either end to indicate dropped characters.
*
* Returns a two-line string (or `null`) with `\n` as separator; the second line
* will hold appropriately indented `^` marks indicating the column range.
*
* @param {Object} pos
* @param {LinePos} pos.start
* @param {LinePos} [pos.end]
* @param {string|Document|Document[]*} cst
* @param {number} [maxWidth=80]
* @returns {?string}
*/
function getPrettyContext({
start,
end
}, cst, maxWidth = 80) {
let src = getLine(start.line, cst);
if (!src) return null;
let {
col
} = start;
if (src.length > maxWidth) {
if (col <= maxWidth - 10) {
src = src.substr(0, maxWidth - 1) + '…';
} else {
const halfWidth = Math.round(maxWidth / 2);
if (src.length > col + halfWidth) src = src.substr(0, col + halfWidth - 1) + '…';
col -= src.length - maxWidth;
src = '…' + src.substr(1 - maxWidth);
}
}
let errLen = 1;
let errEnd = '';
if (end) {
if (end.line === start.line && col + (end.col - start.col) <= maxWidth + 1) {
errLen = end.col - start.col;
} else {
errLen = Math.min(src.length + 1, maxWidth) - col;
errEnd = '…';
}
}
const offset = col > 1 ? ' '.repeat(col - 1) : '';
const err = '^'.repeat(errLen);
return `${src}\n${offset}${err}${errEnd}`;
}
class Range {
static copy(orig) {
return new Range(orig.start, orig.end);
}
constructor(start, end) {
this.start = start;
this.end = end || start;
}
isEmpty() {
return typeof this.start !== 'number' || !this.end || this.end <= this.start;
}
/**
* Set `origStart` and `origEnd` to point to the original source range for
* this node, which may differ due to dropped CR characters.
*
* @param {number[]} cr - Positions of dropped CR characters
* @param {number} offset - Starting index of `cr` from the last call
* @returns {number} - The next offset, matching the one found for `origStart`
*/
setOrigRange(cr, offset) {
const {
start,
end
} = this;
if (cr.length === 0 || end <= cr[0]) {
this.origStart = start;
this.origEnd = end;
return offset;
}
let i = offset;
while (i < cr.length) {
if (cr[i] > start) break;else ++i;
}
this.origStart = start + i;
const nextOffset = i;
while (i < cr.length) {
// if end was at \n, it should now be at \r
if (cr[i] >= end) break;else ++i;
}
this.origEnd = end + i;
return nextOffset;
}
}
/** Root class of all nodes */
class Node {
static addStringTerminator(src, offset, str) {
if (str[str.length - 1] === '\n') return str;
const next = Node.endOfWhiteSpace(src, offset);
return next >= src.length || src[next] === '\n' ? str + '\n' : str;
} // ^(---|...)
static atDocumentBoundary(src, offset, sep) {
const ch0 = src[offset];
if (!ch0) return true;
const prev = src[offset - 1];
if (prev && prev !== '\n') return false;
if (sep) {
if (ch0 !== sep) return false;
} else {
if (ch0 !== Char.DIRECTIVES_END && ch0 !== Char.DOCUMENT_END) return false;
}
const ch1 = src[offset + 1];
const ch2 = src[offset + 2];
if (ch1 !== ch0 || ch2 !== ch0) return false;
const ch3 = src[offset + 3];
return !ch3 || ch3 === '\n' || ch3 === '\t' || ch3 === ' ';
}
static endOfIdentifier(src, offset) {
let ch = src[offset];
const isVerbatim = ch === '<';
const notOk = isVerbatim ? ['\n', '\t', ' ', '>'] : ['\n', '\t', ' ', '[', ']', '{', '}', ','];
while (ch && notOk.indexOf(ch) === -1) ch = src[offset += 1];
if (isVerbatim && ch === '>') offset += 1;
return offset;
}
static endOfIndent(src, offset) {
let ch = src[offset];
while (ch === ' ') ch = src[offset += 1];
return offset;
}
static endOfLine(src, offset) {
let ch = src[offset];
while (ch && ch !== '\n') ch = src[offset += 1];
return offset;
}
static endOfWhiteSpace(src, offset) {
let ch = src[offset];
while (ch === '\t' || ch === ' ') ch = src[offset += 1];
return offset;
}
static startOfLine(src, offset) {
let ch = src[offset - 1];
if (ch === '\n') return offset;
while (ch && ch !== '\n') ch = src[offset -= 1];
return offset + 1;
}
/**
* End of indentation, or null if the line's indent level is not more
* than `indent`
*
* @param {string} src
* @param {number} indent
* @param {number} lineStart
* @returns {?number}
*/
static endOfBlockIndent(src, indent, lineStart) {
const inEnd = Node.endOfIndent(src, lineStart);
if (inEnd > lineStart + indent) {
return inEnd;
} else {
const wsEnd = Node.endOfWhiteSpace(src, inEnd);
const ch = src[wsEnd];
if (!ch || ch === '\n') return wsEnd;
}
return null;
}
static atBlank(src, offset, endAsBlank) {
const ch = src[offset];
return ch === '\n' || ch === '\t' || ch === ' ' || endAsBlank && !ch;
}
static nextNodeIsIndented(ch, indentDiff, indicatorAsIndent) {
if (!ch || indentDiff < 0) return false;
if (indentDiff > 0) return true;
return indicatorAsIndent && ch === '-';
} // should be at line or string end, or at next non-whitespace char
static normalizeOffset(src, offset) {
const ch = src[offset];
return !ch ? offset : ch !== '\n' && src[offset - 1] === '\n' ? offset - 1 : Node.endOfWhiteSpace(src, offset);
} // fold single newline into space, multiple newlines to N - 1 newlines
// presumes src[offset] === '\n'
static foldNewline(src, offset, indent) {
let inCount = 0;
let error = false;
let fold = '';
let ch = src[offset + 1];
while (ch === ' ' || ch === '\t' || ch === '\n') {
switch (ch) {
case '\n':
inCount = 0;
offset += 1;
fold += '\n';
break;
case '\t':
if (inCount <= indent) error = true;
offset = Node.endOfWhiteSpace(src, offset + 2) - 1;
break;
case ' ':
inCount += 1;
offset += 1;
break;
}
ch = src[offset + 1];
}
if (!fold) fold = ' ';
if (ch && inCount <= indent) error = true;
return {
fold,
offset,
error
};
}
constructor(type, props, context) {
Object.defineProperty(this, 'context', {
value: context || null,
writable: true
});
this.error = null;
this.range = null;
this.valueRange = null;
this.props = props || [];
this.type = type;
this.value = null;
}
getPropValue(idx, key, skipKey) {
if (!this.context) return null;
const {
src
} = this.context;
const prop = this.props[idx];
return prop && src[prop.start] === key ? src.slice(prop.start + (skipKey ? 1 : 0), prop.end) : null;
}
get anchor() {
for (let i = 0; i < this.props.length; ++i) {
const anchor = this.getPropValue(i, Char.ANCHOR, true);
if (anchor != null) return anchor;
}
return null;
}
get comment() {
const comments = [];
for (let i = 0; i < this.props.length; ++i) {
const comment = this.getPropValue(i, Char.COMMENT, true);
if (comment != null) comments.push(comment);
}
return comments.length > 0 ? comments.join('\n') : null;
}
commentHasRequiredWhitespace(start) {
const {
src
} = this.context;
if (this.header && start === this.header.end) return false;
if (!this.valueRange) return false;
const {
end
} = this.valueRange;
return start !== end || Node.atBlank(src, end - 1);
}
get hasComment() {
if (this.context) {
const {
src
} = this.context;
for (let i = 0; i < this.props.length; ++i) {
if (src[this.props[i].start] === Char.COMMENT) return true;
}
}
return false;
}
get hasProps() {
if (this.context) {
const {
src
} = this.context;
for (let i = 0; i < this.props.length; ++i) {
if (src[this.props[i].start] !== Char.COMMENT) return true;
}
}
return false;
}
get includesTrailingLines() {
return false;
}
get jsonLike() {
const jsonLikeTypes = [Type.FLOW_MAP, Type.FLOW_SEQ, Type.QUOTE_DOUBLE, Type.QUOTE_SINGLE];
return jsonLikeTypes.indexOf(this.type) !== -1;
}
get rangeAsLinePos() {
if (!this.range || !this.context) return undefined;
const start = getLinePos(this.range.start, this.context.root);
if (!start) return undefined;
const end = getLinePos(this.range.end, this.context.root);
return {
start,
end
};
}
get rawValue() {
if (!this.valueRange || !this.context) return null;
const {
start,
end
} = this.valueRange;
return this.context.src.slice(start, end);
}
get tag() {
for (let i = 0; i < this.props.length; ++i) {
const tag = this.getPropValue(i, Char.TAG, false);
if (tag != null) {
if (tag[1] === '<') {
return {
verbatim: tag.slice(2, -1)
};
} else {
// eslint-disable-next-line no-unused-vars
const [_, handle, suffix] = tag.match(/^(.*!)([^!]*)$/);
return {
handle,
suffix
};
}
}
}
return null;
}
get valueRangeContainsNewline() {
if (!this.valueRange || !this.context) return false;
const {
start,
end
} = this.valueRange;
const {
src
} = this.context;
for (let i = start; i < end; ++i) {
if (src[i] === '\n') return true;
}
return false;
}
parseComment(start) {
const {
src
} = this.context;
if (src[start] === Char.COMMENT) {
const end = Node.endOfLine(src, start + 1);
const commentRange = new Range(start, end);
this.props.push(commentRange);
return end;
}
return start;
}
/**
* Populates the `origStart` and `origEnd` values of all ranges for this
* node. Extended by child classes to handle descendant nodes.
*
* @param {number[]} cr - Positions of dropped CR characters
* @param {number} offset - Starting index of `cr` from the last call
* @returns {number} - The next offset, matching the one found for `origStart`
*/
setOrigRanges(cr, offset) {
if (this.range) offset = this.range.setOrigRange(cr, offset);
if (this.valueRange) this.valueRange.setOrigRange(cr, offset);
this.props.forEach(prop => prop.setOrigRange(cr, offset));
return offset;
}
toString() {
const {
context: {
src
},
range,
value
} = this;
if (value != null) return value;
const str = src.slice(range.start, range.end);
return Node.addStringTerminator(src, range.end, str);
}
}
class YAMLError extends Error {
constructor(name, source, message) {
if (!message || !(source instanceof Node)) throw new Error(`Invalid arguments for new ${name}`);
super();
this.name = name;
this.message = message;
this.source = source;
}
makePretty() {
if (!this.source) return;
this.nodeType = this.source.type;
const cst = this.source.context && this.source.context.root;
if (typeof this.offset === 'number') {
this.range = new Range(this.offset, this.offset + 1);
const start = cst && getLinePos(this.offset, cst);
if (start) {
const end = {
line: start.line,
col: start.col + 1
};
this.linePos = {
start,
end
};
}
delete this.offset;
} else {
this.range = this.source.range;
this.linePos = this.source.rangeAsLinePos;
}
if (this.linePos) {
const {
line,
col
} = this.linePos.start;
this.message += ` at line ${line}, column ${col}`;
const ctx = cst && getPrettyContext(this.linePos, cst);
if (ctx) this.message += `:\n\n${ctx}\n`;
}
delete this.source;
}
}
class YAMLReferenceError extends YAMLError {
constructor(source, message) {
super('YAMLReferenceError', source, message);
}
}
class YAMLSemanticError extends YAMLError {
constructor(source, message) {
super('YAMLSemanticError', source, message);
}
}
class YAMLSyntaxError extends YAMLError {
constructor(source, message) {
super('YAMLSyntaxError', source, message);
}
}
class YAMLWarning extends YAMLError {
constructor(source, message) {
super('YAMLWarning', source, message);
}
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
class PlainValue extends Node {
static endOfLine(src, start, inFlow) {
let ch = src[start];
let offset = start;
while (ch && ch !== '\n') {
if (inFlow && (ch === '[' || ch === ']' || ch === '{' || ch === '}' || ch === ',')) break;
const next = src[offset + 1];
if (ch === ':' && (!next || next === '\n' || next === '\t' || next === ' ' || inFlow && next === ',')) break;
if ((ch === ' ' || ch === '\t') && next === '#') break;
offset += 1;
ch = next;
}
return offset;
}
get strValue() {
if (!this.valueRange || !this.context) return null;
let {
start,
end
} = this.valueRange;
const {
src
} = this.context;
let ch = src[end - 1];
while (start < end && (ch === '\n' || ch === '\t' || ch === ' ')) ch = src[--end - 1];
let str = '';
for (let i = start; i < end; ++i) {
const ch = src[i];
if (ch === '\n') {
const {
fold,
offset
} = Node.foldNewline(src, i, -1);
str += fold;
i = offset;
} else if (ch === ' ' || ch === '\t') {
// trim trailing whitespace
const wsStart = i;
let next = src[i + 1];
while (i < end && (next === ' ' || next === '\t')) {
i += 1;
next = src[i + 1];
}
if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;
} else {
str += ch;
}
}
const ch0 = src[start];
switch (ch0) {
case '\t':
{
const msg = 'Plain value cannot start with a tab character';
const errors = [new YAMLSemanticError(this, msg)];
return {
errors,
str
};
}
case '@':
case '`':
{
const msg = `Plain value cannot start with reserved character ${ch0}`;
const errors = [new YAMLSemanticError(this, msg)];
return {
errors,
str
};
}
default:
return str;
}
}
parseBlockValue(start) {
const {
indent,
inFlow,
src
} = this.context;
let offset = start;
let valueEnd = start;
for (let ch = src[offset]; ch === '\n'; ch = src[offset]) {
if (Node.atDocumentBoundary(src, offset + 1)) break;
const end = Node.endOfBlockIndent(src, indent, offset + 1);
if (end === null || src[end] === '#') break;
if (src[end] === '\n') {
offset = end;
} else {
valueEnd = PlainValue.endOfLine(src, end, inFlow);
offset = valueEnd;
}
}
if (this.valueRange.isEmpty()) this.valueRange.start = start;
this.valueRange.end = valueEnd;
return valueEnd;
}
/**
* Parses a plain value from the source
*
* Accepted forms are:
* ```
* #comment
*
* first line
*
* first line #comment
*
* first line
* block
* lines
*
* #comment
* block
* lines
* ```
* where block lines are empty or have an indent level greater than `indent`.
*
* @param {ParseContext} context
* @param {number} start - Index of first character
* @returns {number} - Index of the character after this scalar, may be `\n`
*/
parse(context, start) {
this.context = context;
const {
inFlow,
src
} = context;
let offset = start;
const ch = src[offset];
if (ch && ch !== '#' && ch !== '\n') {
offset = PlainValue.endOfLine(src, start, inFlow);
}
this.valueRange = new Range(start, offset);
offset = Node.endOfWhiteSpace(src, offset);
offset = this.parseComment(offset);
if (!this.hasComment || this.valueRange.isEmpty()) {
offset = this.parseBlockValue(offset);
}
return offset;
}
}
exports.Char = Char;
exports.Node = Node;
exports.PlainValue = PlainValue;
exports.Range = Range;
exports.Type = Type;
exports.YAMLError = YAMLError;
exports.YAMLReferenceError = YAMLReferenceError;
exports.YAMLSemanticError = YAMLSemanticError;
exports.YAMLSyntaxError = YAMLSyntaxError;
exports.YAMLWarning = YAMLWarning;
exports._defineProperty = _defineProperty;
exports.defaultTagPrefix = defaultTagPrefix;
exports.defaultTags = defaultTags;