@veryfront/ext-yaml 0.1.1226 → 0.1.1227

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +34 -10
  2. package/esm/deno.d.ts +1 -1
  3. package/esm/deno.js +2 -2
  4. package/esm/src/adapter.d.ts +19 -2
  5. package/esm/src/adapter.d.ts.map +1 -1
  6. package/esm/src/adapter.js +119 -4
  7. package/esm/src/index.d.ts +7 -4
  8. package/esm/src/index.d.ts.map +1 -1
  9. package/esm/src/index.js +15 -10
  10. package/package.json +7 -3
  11. package/esm/_dnt.polyfills.d.ts +0 -12
  12. package/esm/_dnt.polyfills.d.ts.map +0 -1
  13. package/esm/_dnt.polyfills.js +0 -15
  14. package/esm/deps/jsr.io/@std/yaml/1.1.0/_chars.d.ts +0 -33
  15. package/esm/deps/jsr.io/@std/yaml/1.1.0/_chars.d.ts.map +0 -1
  16. package/esm/deps/jsr.io/@std/yaml/1.1.0/_chars.js +0 -48
  17. package/esm/deps/jsr.io/@std/yaml/1.1.0/_loader_state.d.ts +0 -64
  18. package/esm/deps/jsr.io/@std/yaml/1.1.0/_loader_state.d.ts.map +0 -1
  19. package/esm/deps/jsr.io/@std/yaml/1.1.0/_loader_state.js +0 -1371
  20. package/esm/deps/jsr.io/@std/yaml/1.1.0/_schema.d.ts +0 -44
  21. package/esm/deps/jsr.io/@std/yaml/1.1.0/_schema.d.ts.map +0 -1
  22. package/esm/deps/jsr.io/@std/yaml/1.1.0/_schema.js +0 -117
  23. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/binary.d.ts +0 -3
  24. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/binary.d.ts.map +0 -1
  25. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/binary.js +0 -103
  26. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/bool.d.ts +0 -3
  27. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/bool.d.ts.map +0 -1
  28. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/bool.js +0 -32
  29. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/float.d.ts +0 -3
  30. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/float.d.ts.map +0 -1
  31. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/float.js +0 -96
  32. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/int.d.ts +0 -3
  33. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/int.d.ts.map +0 -1
  34. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/int.js +0 -159
  35. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/map.d.ts +0 -3
  36. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/map.d.ts.map +0 -1
  37. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/map.js +0 -14
  38. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/merge.d.ts +0 -3
  39. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/merge.d.ts.map +0 -1
  40. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/merge.js +0 -10
  41. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/nil.d.ts +0 -3
  42. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/nil.d.ts.map +0 -1
  43. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/nil.js +0 -22
  44. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/omap.d.ts +0 -3
  45. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/omap.d.ts.map +0 -1
  46. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/omap.js +0 -29
  47. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/pairs.d.ts +0 -3
  48. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/pairs.d.ts.map +0 -1
  49. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/pairs.js +0 -19
  50. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/regexp.d.ts +0 -3
  51. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/regexp.d.ts.map +0 -1
  52. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/regexp.js +0 -30
  53. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/seq.d.ts +0 -3
  54. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/seq.d.ts.map +0 -1
  55. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/seq.js +0 -10
  56. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/set.d.ts +0 -3
  57. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/set.d.ts.map +0 -1
  58. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/set.js +0 -14
  59. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/str.d.ts +0 -3
  60. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/str.d.ts.map +0 -1
  61. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/str.js +0 -9
  62. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/timestamp.d.ts +0 -3
  63. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/timestamp.d.ts.map +0 -1
  64. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/timestamp.js +0 -81
  65. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/undefined.d.ts +0 -3
  66. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/undefined.d.ts.map +0 -1
  67. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type/undefined.js +0 -20
  68. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type.d.ts +0 -32
  69. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type.d.ts.map +0 -1
  70. package/esm/deps/jsr.io/@std/yaml/1.1.0/_type.js +0 -6
  71. package/esm/deps/jsr.io/@std/yaml/1.1.0/_utils.d.ts +0 -4
  72. package/esm/deps/jsr.io/@std/yaml/1.1.0/_utils.d.ts.map +0 -1
  73. package/esm/deps/jsr.io/@std/yaml/1.1.0/_utils.js +0 -13
  74. package/esm/deps/jsr.io/@std/yaml/1.1.0/parse.d.ts +0 -76
  75. package/esm/deps/jsr.io/@std/yaml/1.1.0/parse.d.ts.map +0 -1
  76. package/esm/deps/jsr.io/@std/yaml/1.1.0/parse.js +0 -91
package/README.md CHANGED
@@ -1,23 +1,44 @@
1
1
  # @veryfront/ext-yaml
2
2
 
3
- > **Category:** Parser | **Contract:** `SkillDocumentParserProvider`
3
+ > **Category:** Parser | **Contracts:** `SkillDocumentParserProvider`,
4
+ > `YamlParserProvider`
4
5
 
5
- Provides synchronous YAML decoding for Veryfront Skill document frontmatter,
6
- backed by the pinned `@std/yaml` implementation.
6
+ Provides synchronous YAML decoding for Veryfront, backed by the pinned `yaml`
7
+ (eemeli) implementation. It satisfies two contracts: the narrow
8
+ `SkillDocumentParserProvider` used at the Skill document trust boundary, and the
9
+ general `YamlParserProvider` that core's `#std/yaml/parse` compatibility shim
10
+ resolves for front matter and MDX.
7
11
 
8
12
  Veryfront core owns the `SKILL.md` frontmatter envelope, document limits,
9
13
  mapping-root validation, immutable snapshots, and Skill metadata policy. This
10
14
  extension receives only the YAML source between the delimiters and returns the
11
15
  decoded, untrusted value. Keeping that boundary narrow prevents YAML parser
12
- details and third-party dependencies from entering core.
16
+ details and third-party dependencies from entering core — core may depend on
17
+ the Deno standard library and nothing else, so the parser has to live here.
18
+
19
+ ## YAML version
20
+
21
+ `yaml` implements YAML 1.2. `jsr:@std/yaml`, which this extension previously
22
+ wrapped, implements YAML 1.1. Three resolution differences are deliberate and
23
+ covered by tests:
24
+
25
+ | Source | YAML 1.1 (`@std/yaml`) | YAML 1.2 (this extension) |
26
+ | --------------------- | ---------------------- | ------------------------- |
27
+ | `a: 1_000` | `1000` | `"1_000"` |
28
+ | `created: 2024-01-02` | `Date` | `"2024-01-02"` |
29
+ | `<<: *anchor` | merged into the map | a literal `"<<"` key |
30
+
31
+ `schema: "json"` additionally rejects every explicit tag outside the JSON core
32
+ set, so `!!binary`, `!!timestamp`, `!!set` and unknown tags raise `SyntaxError`
33
+ rather than decoding into implementation-specific values.
13
34
 
14
35
  ## Activation
15
36
 
16
37
  The package declares automatic activation. Once `@veryfront/ext-yaml` is
17
38
  installed, the standard Veryfront server bootstrap discovers it and registers
18
- `SkillDocumentParserProvider` before project capability discovery. Core fails
19
- closed when no parser extension is installed; it does not reinterpret malformed
20
- YAML with a partial built-in grammar.
39
+ both contracts before project capability discovery. Core fails closed when no
40
+ parser extension is installed; it does not reinterpret malformed YAML with a
41
+ partial built-in grammar.
21
42
 
22
43
  Composition roots that do not run standard extension discovery can register the
23
44
  factory explicitly:
@@ -37,10 +58,13 @@ Composition roots that manage contracts directly can create the immutable
37
58
  provider without running the extension lifecycle:
38
59
 
39
60
  ```ts
40
- import { createStdYamlSkillDocumentParserProvider } from "@veryfront/ext-yaml";
61
+ import { createStdYamlSkillDocumentParserProvider, createYamlParser } from "@veryfront/ext-yaml";
62
+
63
+ const skillParser = createStdYamlSkillDocumentParserProvider();
64
+ const decoded = skillParser.parseFrontmatter("name: example");
41
65
 
42
- const parser = createStdYamlSkillDocumentParserProvider();
43
- const decoded = parser.parseFrontmatter("name: example");
66
+ const yamlParser = createYamlParser();
67
+ const value = yamlParser.parseYaml("name: example", { schema: "json" });
44
68
  ```
45
69
 
46
70
  The return value remains `unknown`; callers must enforce their own mapping and
package/esm/deno.d.ts CHANGED
@@ -14,7 +14,7 @@ declare namespace _default {
14
14
  }
15
15
  }
16
16
  let imports: {
17
- "@std/yaml/parse": string;
17
+ yaml: string;
18
18
  "@std/assert": string;
19
19
  "@std/testing/bdd": string;
20
20
  "veryfront/extensions": string;
package/esm/deno.js CHANGED
@@ -6,7 +6,7 @@ export default {
6
6
  "extension": true,
7
7
  "activation": "auto",
8
8
  "contracts": {
9
- "provides": ["SkillDocumentParserProvider"]
9
+ "provides": ["SkillDocumentParserProvider", "YamlParserProvider"]
10
10
  },
11
11
  "capabilities": [],
12
12
  "npm": {
@@ -14,7 +14,7 @@ export default {
14
14
  }
15
15
  },
16
16
  "imports": {
17
- "@std/yaml/parse": "jsr:@std/yaml@1.1.0/parse",
17
+ "yaml": "npm:yaml@2.9.0",
18
18
  "@std/assert": "jsr:@std/assert@1.0.19",
19
19
  "@std/testing/bdd": "jsr:@std/testing@1.0.17/bdd",
20
20
  "veryfront/extensions": "../../src/extensions/types.ts",
@@ -1,4 +1,21 @@
1
- import { type SkillDocumentParserProvider } from "veryfront/extensions/parser";
2
- /** Create the official @std/yaml-backed Skill frontmatter parser. */
1
+ import { type SkillDocumentParserProvider, type YamlParseOptions, type YamlParserProvider } from "veryfront/extensions/parser";
2
+ /**
3
+ * Decode one YAML document with `@std/yaml`-compatible failure behaviour.
4
+ *
5
+ * `yaml` reports most problems on the returned document instead of throwing,
6
+ * and raises `YAMLParseError` rather than `SyntaxError` when it does throw.
7
+ * Both are normalised here so call sites keep the single `SyntaxError`
8
+ * contract they were written against.
9
+ */
10
+ export declare function parseYamlSource(source: string, options?: YamlParseOptions): unknown;
11
+ /** Create the official `yaml`-backed general YAML parser. */
12
+ export declare function createYamlParser(): Readonly<YamlParserProvider>;
13
+ /**
14
+ * Create the official `yaml`-backed Skill frontmatter parser.
15
+ *
16
+ * The name predates the move off `@std/yaml`; it is the export name
17
+ * `src/extensions/parser/skill-defaults.ts` looks up in the published package,
18
+ * so it stays put.
19
+ */
3
20
  export declare function createStdYamlSkillDocumentParserProvider(): Readonly<SkillDocumentParserProvider>;
4
21
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/src/adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,6BAA6B,CAAC;AAErC,qEAAqE;AACrE,wBAAgB,wCAAwC,IAAI,QAAQ,CAClE,2BAA2B,CAC5B,CAOA"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/src/adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAwDrC;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAET;AAiDD,6DAA6D;AAC7D,wBAAgB,gBAAgB,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAE/D;AAED;;;;;;GAMG;AACH,wBAAgB,wCAAwC,IAAI,QAAQ,CAClE,2BAA2B,CAC5B,CAOA"}
@@ -1,8 +1,123 @@
1
- import { parse } from "../deps/jsr.io/@std/yaml/1.1.0/parse.js";
2
- import { createSkillDocumentParserProvider, } from "veryfront/extensions/parser";
3
- /** Create the official @std/yaml-backed Skill frontmatter parser. */
1
+ import { isNode, parseAllDocuments, visit } from "yaml";
2
+ import { createSkillDocumentParserProvider, createYamlParserProvider, } from "veryfront/extensions/parser";
3
+ /**
4
+ * The tags a JSON-representable document may carry explicitly. `yaml`'s
5
+ * `Schema.knownTags` fallback resolves YAML 1.1 tags such as `!!binary`,
6
+ * `!!timestamp`, `!!set` and `!!omap` even under the 1.2 core schema, and does
7
+ * so without raising a warning — so the parser options alone cannot express
8
+ * `@std/yaml`'s JSON schema. Rejecting every other explicit tag does.
9
+ */
10
+ const JSON_SCHEMA_TAGS = new Set([
11
+ "tag:yaml.org,2002:map",
12
+ "tag:yaml.org,2002:seq",
13
+ "tag:yaml.org,2002:str",
14
+ "tag:yaml.org,2002:null",
15
+ "tag:yaml.org,2002:bool",
16
+ "tag:yaml.org,2002:int",
17
+ "tag:yaml.org,2002:float",
18
+ ]);
19
+ function assertJsonRepresentableTags(document) {
20
+ visit(document, (_key, node) => {
21
+ if (!isNode(node))
22
+ return;
23
+ const tag = node.tag;
24
+ if (typeof tag === "string" && !JSON_SCHEMA_TAGS.has(tag)) {
25
+ throw new SyntaxError(`Cannot resolve unknown tag !<${tag}>`);
26
+ }
27
+ });
28
+ }
29
+ /**
30
+ * Run a synchronous parse with any own `value` property lifted off
31
+ * `Object.prototype`.
32
+ *
33
+ * `yaml` builds its AST by assigning `this.value = …` on class instances. A
34
+ * poisoned non-writable `Object.prototype.value` makes strict mode reject
35
+ * every one of those assignments, so no document parses at all. Surviving a
36
+ * poisoned `Object.prototype` is an invariant the framework asserts across its
37
+ * Skill and agent trust boundaries, and `@std/yaml` happened to satisfy it, so
38
+ * the property is lifted for the duration of the parse and restored
39
+ * afterwards.
40
+ *
41
+ * Nothing can observe the gap: the parse is synchronous, never yields, and
42
+ * invokes no caller-supplied code (no custom tags, no reviver).
43
+ */
44
+ function withoutPollutedValuePrototype(run) {
45
+ const polluted = Object.getOwnPropertyDescriptor(Object.prototype, "value");
46
+ if (polluted === undefined || polluted.configurable !== true)
47
+ return run();
48
+ Reflect.deleteProperty(Object.prototype, "value");
49
+ try {
50
+ return run();
51
+ }
52
+ finally {
53
+ Object.defineProperty(Object.prototype, "value", polluted);
54
+ }
55
+ }
56
+ /**
57
+ * Decode one YAML document with `@std/yaml`-compatible failure behaviour.
58
+ *
59
+ * `yaml` reports most problems on the returned document instead of throwing,
60
+ * and raises `YAMLParseError` rather than `SyntaxError` when it does throw.
61
+ * Both are normalised here so call sites keep the single `SyntaxError`
62
+ * contract they were written against.
63
+ */
64
+ export function parseYamlSource(source, options = {}) {
65
+ return withoutPollutedValuePrototype(() => decodeDocument(source, options));
66
+ }
67
+ function decodeDocument(source, options) {
68
+ const jsonSchema = options.schema === "json";
69
+ let documents;
70
+ try {
71
+ documents = parseAllDocuments(source, {
72
+ uniqueKeys: options.allowDuplicateKeys !== true,
73
+ // Forwarded, not merely recorded: without it the parser runs the core
74
+ // schema and resolves `0o7` to 7, which is exactly the widening
75
+ // `schema: "json"` is asked for at a trust boundary.
76
+ schema: jsonSchema ? "json" : "core",
77
+ // Warnings are inspected below; left to the library they would be
78
+ // written straight to the host process's stderr.
79
+ logLevel: "silent",
80
+ });
81
+ }
82
+ catch (cause) {
83
+ throw new SyntaxError(cause instanceof Error ? cause.message : String(cause), { cause });
84
+ }
85
+ if (documents.length === 0)
86
+ return null;
87
+ if (documents.length > 1) {
88
+ throw new SyntaxError("Found more than 1 document in the stream: expected a single document");
89
+ }
90
+ const document = documents[0];
91
+ // An unresolved tag is a warning in `yaml` and an error in `@std/yaml`.
92
+ // Treat it as an error: a tag the parser did not understand means the
93
+ // decoded value is not the one the document asked for.
94
+ //
95
+ // `TAG_RESOLVE_FAILED` is the exception, and only under the JSON schema,
96
+ // where it fires for every ordinary unquoted string -- `name: code-review`
97
+ // raises it twice. It is filtered per diagnostic rather than by taking the
98
+ // first: a document that raises it also raises the real ones beside it, so
99
+ // reading `errors[0]` would report the benign one and hide `BAD_INDENT` or
100
+ // `DUPLICATE_KEY` behind it.
101
+ const problem = [...document.errors, ...document.warnings].find((diagnostic) => !(jsonSchema && diagnostic.code === "TAG_RESOLVE_FAILED"));
102
+ if (problem)
103
+ throw new SyntaxError(problem.message, { cause: problem });
104
+ if (jsonSchema)
105
+ assertJsonRepresentableTags(document);
106
+ return document.toJS();
107
+ }
108
+ /** Create the official `yaml`-backed general YAML parser. */
109
+ export function createYamlParser() {
110
+ return createYamlParserProvider(parseYamlSource);
111
+ }
112
+ /**
113
+ * Create the official `yaml`-backed Skill frontmatter parser.
114
+ *
115
+ * The name predates the move off `@std/yaml`; it is the export name
116
+ * `src/extensions/parser/skill-defaults.ts` looks up in the published package,
117
+ * so it stays put.
118
+ */
4
119
  export function createStdYamlSkillDocumentParserProvider() {
5
- return createSkillDocumentParserProvider((source) => parse(source, {
120
+ return createSkillDocumentParserProvider((source) => parseYamlSource(source, {
6
121
  allowDuplicateKeys: false,
7
122
  schema: "json",
8
123
  }));
@@ -1,12 +1,15 @@
1
1
  /**
2
- * Official @std/yaml implementation of the SkillDocumentParserProvider
3
- * extension contract.
2
+ * Official `yaml` (eemeli, YAML 1.2) implementation of the framework's YAML
3
+ * extension contracts.
4
+ *
5
+ * Provides both the narrow `SkillDocumentParserProvider` used at the Skill
6
+ * document trust boundary and the general `YamlParserProvider` the framework's
7
+ * `#std/yaml/parse` compatibility shim resolves.
4
8
  *
5
9
  * @module extensions/ext-yaml
6
10
  */
7
- import "../_dnt.polyfills.js";
8
11
  import type { ExtensionFactory } from "veryfront/extensions";
9
12
  declare const extYaml: ExtensionFactory;
10
13
  export default extYaml;
11
- export { createStdYamlSkillDocumentParserProvider } from "./adapter.js";
14
+ export { createStdYamlSkillDocumentParserProvider, createYamlParser, parseYamlSource, } from "./adapter.js";
12
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAK7D,QAAA,MAAM,OAAO,EAAE,gBAoBd,CAAC;AAEF,eAAe,OAAO,CAAC;AACvB,OAAO,EAAE,wCAAwC,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAQ7D,QAAA,MAAM,OAAO,EAAE,gBAsBd,CAAC;AAEF,eAAe,OAAO,CAAC;AACvB,OAAO,EACL,wCAAwC,EACxC,gBAAgB,EAChB,eAAe,GAChB,MAAM,cAAc,CAAC"}
package/esm/src/index.js CHANGED
@@ -1,25 +1,30 @@
1
1
  /**
2
- * Official @std/yaml implementation of the SkillDocumentParserProvider
3
- * extension contract.
2
+ * Official `yaml` (eemeli, YAML 1.2) implementation of the framework's YAML
3
+ * extension contracts.
4
+ *
5
+ * Provides both the narrow `SkillDocumentParserProvider` used at the Skill
6
+ * document trust boundary and the general `YamlParserProvider` the framework's
7
+ * `#std/yaml/parse` compatibility shim resolves.
4
8
  *
5
9
  * @module extensions/ext-yaml
6
10
  */
7
- import "../_dnt.polyfills.js";
8
- import { SkillDocumentParserProviderName } from "veryfront/extensions/parser";
11
+ import { SkillDocumentParserProviderName, YamlParserProviderName, } from "veryfront/extensions/parser";
9
12
  import extensionPackage from "../deno.js";
10
- import { createStdYamlSkillDocumentParserProvider } from "./adapter.js";
13
+ import { createStdYamlSkillDocumentParserProvider, createYamlParser } from "./adapter.js";
11
14
  const extYaml = () => {
12
- const provider = createStdYamlSkillDocumentParserProvider();
15
+ const skillParser = createStdYamlSkillDocumentParserProvider();
16
+ const yamlParser = createYamlParser();
13
17
  return {
14
18
  name: "ext-yaml",
15
19
  version: extensionPackage.version,
16
20
  contracts: {
17
- provides: [SkillDocumentParserProviderName],
21
+ provides: [SkillDocumentParserProviderName, YamlParserProviderName],
18
22
  },
19
23
  capabilities: [],
20
24
  setup(ctx) {
21
- ctx.provide(SkillDocumentParserProviderName, provider);
22
- ctx.logger.debug("[ext-yaml] SkillDocumentParserProvider registered");
25
+ ctx.provide(SkillDocumentParserProviderName, skillParser);
26
+ ctx.provide(YamlParserProviderName, yamlParser);
27
+ ctx.logger.debug("[ext-yaml] SkillDocumentParserProvider and YamlParserProvider registered");
23
28
  },
24
29
  teardown() {
25
30
  // No resources to release.
@@ -27,4 +32,4 @@ const extYaml = () => {
27
32
  };
28
33
  };
29
34
  export default extYaml;
30
- export { createStdYamlSkillDocumentParserProvider } from "./adapter.js";
35
+ export { createStdYamlSkillDocumentParserProvider, createYamlParser, parseYamlSource, } from "./adapter.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veryfront/ext-yaml",
3
- "version": "0.1.1226",
3
+ "version": "0.1.1227",
4
4
  "description": "Veryfront first-party extension package for ext-yaml",
5
5
  "keywords": [
6
6
  "veryfront",
@@ -37,7 +37,8 @@
37
37
  "activation": "auto",
38
38
  "contracts": {
39
39
  "provides": [
40
- "SkillDocumentParserProvider"
40
+ "SkillDocumentParserProvider",
41
+ "YamlParserProvider"
41
42
  ]
42
43
  },
43
44
  "capabilities": [],
@@ -45,8 +46,11 @@
45
46
  "runtimeVersionFromManifest": true
46
47
  }
47
48
  },
49
+ "dependencies": {
50
+ "yaml": "2.9.0"
51
+ },
48
52
  "peerDependencies": {
49
- "veryfront": "^0.1.1226"
53
+ "veryfront": "^0.1.1227"
50
54
  },
51
55
  "type": "module",
52
56
  "types": "./esm/src/index.d.ts",
@@ -1,12 +0,0 @@
1
- declare global {
2
- interface Object {
3
- /**
4
- * Determines whether an object has a property with the specified name.
5
- * @param o An object.
6
- * @param v A property name.
7
- */
8
- hasOwn(o: object, v: PropertyKey): boolean;
9
- }
10
- }
11
- export {};
12
- //# sourceMappingURL=_dnt.polyfills.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_dnt.polyfills.d.ts","sourceRoot":"","sources":["../src/_dnt.polyfills.ts"],"names":[],"mappings":"AAeA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd;;;;WAIG;QACH,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;KAC5C;CACF;AAED,OAAO,EAAE,CAAC"}
@@ -1,15 +0,0 @@
1
- // https://github.com/tc39/proposal-accessible-object-hasownproperty/blob/main/polyfill.js
2
- if (!Object.hasOwn) {
3
- Object.defineProperty(Object, "hasOwn", {
4
- value: function (object, property) {
5
- if (object == null) {
6
- throw new TypeError("Cannot convert undefined or null to object");
7
- }
8
- return Object.prototype.hasOwnProperty.call(Object(object), property);
9
- },
10
- configurable: true,
11
- enumerable: false,
12
- writable: true,
13
- });
14
- }
15
- export {};
@@ -1,33 +0,0 @@
1
- export declare const BOM = 65279;
2
- export declare const TAB = 9;
3
- export declare const LINE_FEED = 10;
4
- export declare const CARRIAGE_RETURN = 13;
5
- export declare const SPACE = 32;
6
- export declare const EXCLAMATION = 33;
7
- export declare const DOUBLE_QUOTE = 34;
8
- export declare const SHARP = 35;
9
- export declare const PERCENT = 37;
10
- export declare const AMPERSAND = 38;
11
- export declare const SINGLE_QUOTE = 39;
12
- export declare const ASTERISK = 42;
13
- export declare const PLUS = 43;
14
- export declare const COMMA = 44;
15
- export declare const MINUS = 45;
16
- export declare const DOT = 46;
17
- export declare const COLON = 58;
18
- export declare const SMALLER_THAN = 60;
19
- export declare const GREATER_THAN = 62;
20
- export declare const QUESTION = 63;
21
- export declare const COMMERCIAL_AT = 64;
22
- export declare const LEFT_SQUARE_BRACKET = 91;
23
- export declare const BACKSLASH = 92;
24
- export declare const RIGHT_SQUARE_BRACKET = 93;
25
- export declare const GRAVE_ACCENT = 96;
26
- export declare const LEFT_CURLY_BRACKET = 123;
27
- export declare const VERTICAL_LINE = 124;
28
- export declare const RIGHT_CURLY_BRACKET = 125;
29
- export declare function isEOL(c: number): boolean;
30
- export declare function isWhiteSpace(c: number): boolean;
31
- export declare function isWhiteSpaceOrEOL(c: number): boolean;
32
- export declare function isFlowIndicator(c: number): boolean;
33
- //# sourceMappingURL=_chars.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_chars.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/yaml/1.1.0/_chars.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,GAAG,QAAS,CAAC;AAC1B,eAAO,MAAM,GAAG,IAAO,CAAC;AACxB,eAAO,MAAM,SAAS,KAAO,CAAC;AAC9B,eAAO,MAAM,eAAe,KAAO,CAAC;AACpC,eAAO,MAAM,KAAK,KAAO,CAAC;AAC1B,eAAO,MAAM,WAAW,KAAO,CAAC;AAChC,eAAO,MAAM,YAAY,KAAO,CAAC;AACjC,eAAO,MAAM,KAAK,KAAO,CAAC;AAC1B,eAAO,MAAM,OAAO,KAAO,CAAC;AAC5B,eAAO,MAAM,SAAS,KAAO,CAAC;AAC9B,eAAO,MAAM,YAAY,KAAO,CAAC;AACjC,eAAO,MAAM,QAAQ,KAAO,CAAC;AAC7B,eAAO,MAAM,IAAI,KAAO,CAAC;AACzB,eAAO,MAAM,KAAK,KAAO,CAAC;AAC1B,eAAO,MAAM,KAAK,KAAO,CAAC;AAC1B,eAAO,MAAM,GAAG,KAAO,CAAC;AACxB,eAAO,MAAM,KAAK,KAAO,CAAC;AAC1B,eAAO,MAAM,YAAY,KAAO,CAAC;AACjC,eAAO,MAAM,YAAY,KAAO,CAAC;AACjC,eAAO,MAAM,QAAQ,KAAO,CAAC;AAC7B,eAAO,MAAM,aAAa,KAAO,CAAC;AAClC,eAAO,MAAM,mBAAmB,KAAO,CAAC;AACxC,eAAO,MAAM,SAAS,KAAO,CAAC;AAC9B,eAAO,MAAM,oBAAoB,KAAO,CAAC;AACzC,eAAO,MAAM,YAAY,KAAO,CAAC;AACjC,eAAO,MAAM,kBAAkB,MAAO,CAAC;AACvC,eAAO,MAAM,aAAa,MAAO,CAAC;AAClC,eAAO,MAAM,mBAAmB,MAAO,CAAC;AAExC,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAExC;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAQlD"}
@@ -1,48 +0,0 @@
1
- // Ported from js-yaml v3.13.1:
2
- // https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
3
- // Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
4
- // Copyright 2018-2026 the Deno authors. MIT license.
5
- export const BOM = 0xfeff; /* BOM */
6
- export const TAB = 0x09; /* Tab */
7
- export const LINE_FEED = 0x0a; /* LF */
8
- export const CARRIAGE_RETURN = 0x0d; /* CR */
9
- export const SPACE = 0x20; /* Space */
10
- export const EXCLAMATION = 0x21; /* ! */
11
- export const DOUBLE_QUOTE = 0x22; /* " */
12
- export const SHARP = 0x23; /* # */
13
- export const PERCENT = 0x25; /* % */
14
- export const AMPERSAND = 0x26; /* & */
15
- export const SINGLE_QUOTE = 0x27; /* ' */
16
- export const ASTERISK = 0x2a; /* * */
17
- export const PLUS = 0x2b; /* + */
18
- export const COMMA = 0x2c; /* , */
19
- export const MINUS = 0x2d; /* - */
20
- export const DOT = 0x2e; /* . */
21
- export const COLON = 0x3a; /* : */
22
- export const SMALLER_THAN = 0x3c; /* < */
23
- export const GREATER_THAN = 0x3e; /* > */
24
- export const QUESTION = 0x3f; /* ? */
25
- export const COMMERCIAL_AT = 0x40; /* @ */
26
- export const LEFT_SQUARE_BRACKET = 0x5b; /* [ */
27
- export const BACKSLASH = 0x5c; /* \ */
28
- export const RIGHT_SQUARE_BRACKET = 0x5d; /* ] */
29
- export const GRAVE_ACCENT = 0x60; /* ` */
30
- export const LEFT_CURLY_BRACKET = 0x7b; /* { */
31
- export const VERTICAL_LINE = 0x7c; /* | */
32
- export const RIGHT_CURLY_BRACKET = 0x7d; /* } */
33
- export function isEOL(c) {
34
- return c === LINE_FEED || c === CARRIAGE_RETURN;
35
- }
36
- export function isWhiteSpace(c) {
37
- return c === TAB || c === SPACE;
38
- }
39
- export function isWhiteSpaceOrEOL(c) {
40
- return isWhiteSpace(c) || isEOL(c);
41
- }
42
- export function isFlowIndicator(c) {
43
- return (c === COMMA ||
44
- c === LEFT_SQUARE_BRACKET ||
45
- c === RIGHT_SQUARE_BRACKET ||
46
- c === LEFT_CURLY_BRACKET ||
47
- c === RIGHT_CURLY_BRACKET);
48
- }
@@ -1,64 +0,0 @@
1
- import { type Schema, type TypeMap } from "./_schema.js";
2
- import type { KindType, Type } from "./_type.js";
3
- export interface LoaderStateOptions {
4
- /** specifies a schema to use. */
5
- schema?: Schema;
6
- /** compatibility with JSON.parse behaviour. */
7
- allowDuplicateKeys?: boolean;
8
- /** function to call on warning messages. */
9
- onWarning?(error: Error): void;
10
- }
11
- interface State {
12
- tag: string | null;
13
- anchor: string | null;
14
- kind: KindType | null;
15
- result: unknown[] | Record<string, unknown> | string | null;
16
- }
17
- export declare class LoaderState {
18
- #private;
19
- lineIndent: number;
20
- lineStart: number;
21
- line: number;
22
- onWarning: ((error: Error) => void) | undefined;
23
- allowDuplicateKeys: boolean;
24
- implicitTypes: Type<"scalar">[];
25
- typeMap: TypeMap;
26
- checkLineBreaks: boolean;
27
- tagMap: Map<any, any>;
28
- anchorMap: Map<any, any>;
29
- constructor(input: string, { schema, onWarning, allowDuplicateKeys, }: LoaderStateOptions);
30
- skipWhitespaces(): void;
31
- skipComment(): void;
32
- readIndent(): void;
33
- dispatchWarning(message: string): void;
34
- yamlDirectiveHandler(args: string[]): string | null;
35
- tagDirectiveHandler(args: string[]): void;
36
- captureSegment(start: number, end: number, checkJson: boolean): string | undefined;
37
- readBlockSequence(tag: string | null, anchor: string | null, nodeIndent: number): State | void;
38
- mergeMappings(destination: Record<string, unknown>, source: Record<string, unknown>, overridableKeys: Set<string>): void;
39
- storeMappingPair(result: Record<string, unknown>, overridableKeys: Set<string>, keyTag: string | null, keyNode: Record<PropertyKey, unknown> | unknown[] | string | null, valueNode: unknown, startLine?: number, startPos?: number): Record<string, unknown>;
40
- readLineBreak(): void;
41
- skipSeparationSpace(allowComments: boolean, checkIndent: number): number;
42
- testDocumentSeparator(): boolean;
43
- readPlainScalar(tag: string | null, anchor: string | null, nodeIndent: number, withinFlowCollection: boolean): State | void;
44
- readSingleQuotedScalar(tag: string | null, anchor: string | null, nodeIndent: number): State | void;
45
- readDoubleQuotedScalar(tag: string | null, anchor: string | null, nodeIndent: number): State | void;
46
- readFlowCollection(tag: string | null, anchor: string | null, nodeIndent: number): State | void;
47
- readBlockScalar(tag: string | null, anchor: string | null, nodeIndent: number): State | void;
48
- readBlockMapping(tag: string | null, anchor: string | null, nodeIndent: number, flowIndent: number): State | void;
49
- readTagProperty(tag: string | null): string | void;
50
- readAnchorProperty(anchor: string | null): string | void;
51
- readAlias(): string | void;
52
- resolveTag(state: State): State;
53
- composeNode({ parentIndent, nodeContext, allowToSeek, allowCompact }: {
54
- parentIndent: number;
55
- nodeContext: number;
56
- allowToSeek: boolean;
57
- allowCompact: boolean;
58
- }): State | void;
59
- readDirectives(): boolean;
60
- readDocument(): string | unknown[] | Record<string, unknown> | null;
61
- readDocuments(): Generator<string | unknown[] | Record<string, unknown> | null, void, unknown>;
62
- }
63
- export {};
64
- //# sourceMappingURL=_loader_state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_loader_state.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/yaml/1.1.0/_loader_state.ts"],"names":[],"mappings":"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"}