@agentshouse/mdmodel 0.1.0-c83456e1cebfb → 0.1.0-c96c61ea31316
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.
- package/API.md +292 -221
- package/README.md +18 -19
- package/dist/blocks.d.ts.map +1 -1
- package/dist/blocks.js +55 -26
- package/dist/condition.d.ts +168 -0
- package/dist/condition.d.ts.map +1 -0
- package/dist/condition.js +620 -0
- package/dist/definition.d.ts +65 -25
- package/dist/definition.d.ts.map +1 -1
- package/dist/definition.js +789 -140
- package/dist/divide.d.ts.map +1 -1
- package/dist/divide.js +27 -17
- package/dist/document.d.ts +10 -2
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +373 -117
- package/dist/fields.d.ts +2 -0
- package/dist/fields.d.ts.map +1 -1
- package/dist/fields.js +7 -0
- package/dist/index.d.ts +16 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -4
- package/dist/links.d.ts +3 -0
- package/dist/links.d.ts.map +1 -1
- package/dist/links.js +108 -51
- package/dist/paths.d.ts +13 -1
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +136 -10
- package/dist/pattern.d.ts +10 -0
- package/dist/pattern.d.ts.map +1 -0
- package/dist/pattern.js +355 -0
- package/dist/project.d.ts +1 -0
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +58 -36
- package/dist/references.d.ts +4 -0
- package/dist/references.d.ts.map +1 -0
- package/dist/references.js +30 -0
- package/dist/schema.d.ts +8 -6
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +208 -31
- package/dist/types.d.ts +67 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/validate.d.ts +30 -2
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +319 -151
- package/dist/yaml.d.ts +8 -3
- package/dist/yaml.d.ts.map +1 -1
- package/dist/yaml.js +167 -44
- package/fixtures/README.md +58 -42
- package/fixtures/cases/absent-link-dangles/context.json +1 -0
- package/fixtures/cases/absent-link-dangles/expected.json +1 -0
- package/fixtures/cases/absent-link-dangles/library/item.md +8 -0
- package/fixtures/cases/absent-link-dangles/schema.yaml +6 -0
- package/fixtures/cases/absent-optional-field/context.json +1 -0
- package/fixtures/cases/absent-optional-field/expected.json +1 -0
- package/fixtures/cases/absent-optional-field/library/companies/acme.md +4 -0
- package/fixtures/cases/absent-optional-field/library/deals/lead.md +6 -0
- package/fixtures/cases/absent-optional-field/schema.yaml +56 -0
- package/fixtures/cases/absolute-link/context.json +1 -0
- package/fixtures/cases/{missing-binary-image → absolute-link}/expected.json +1 -1
- package/fixtures/cases/absolute-link/library/item.md +8 -0
- package/fixtures/cases/absolute-link/schema.yaml +6 -0
- package/fixtures/cases/attachment-reference-any-file/context.json +1 -0
- package/fixtures/cases/attachment-reference-any-file/expected.json +1 -0
- package/fixtures/cases/attachment-reference-any-file/library/companies/acme.md +4 -0
- package/fixtures/cases/attachment-reference-any-file/library/deals/renewal.md +15 -0
- package/fixtures/cases/attachment-reference-any-file/library/places/depot.md +4 -0
- package/fixtures/cases/attachment-reference-any-file/library/products/seats.md +4 -0
- package/fixtures/cases/attachment-reference-any-file/library/products/support.md +4 -0
- package/fixtures/cases/attachment-reference-any-file/schema.yaml +32 -0
- package/fixtures/cases/attachment-reference-dangles/context.json +1 -0
- package/fixtures/cases/attachment-reference-dangles/expected.json +1 -0
- package/fixtures/cases/attachment-reference-dangles/library/companies/acme.md +4 -0
- package/fixtures/cases/attachment-reference-dangles/library/deals/renewal.md +15 -0
- package/fixtures/cases/attachment-reference-dangles/library/places/depot.md +4 -0
- package/fixtures/cases/attachment-reference-dangles/library/products/seats.md +4 -0
- package/fixtures/cases/attachment-reference-dangles/library/products/support.md +4 -0
- package/fixtures/cases/attachment-reference-dangles/schema.yaml +32 -0
- package/fixtures/cases/attachment-reference-outside/context.json +1 -0
- package/fixtures/cases/attachment-reference-outside/expected.json +6 -0
- package/fixtures/cases/attachment-reference-outside/library/companies/acme.md +4 -0
- package/fixtures/cases/attachment-reference-outside/library/deals/renewal.md +15 -0
- package/fixtures/cases/attachment-reference-outside/library/places/depot.md +4 -0
- package/fixtures/cases/attachment-reference-outside/library/products/seats.md +4 -0
- package/fixtures/cases/attachment-reference-outside/library/products/support.md +4 -0
- package/fixtures/cases/attachment-reference-outside/schema.yaml +32 -0
- package/fixtures/cases/binary-any-reference/expected.json +1 -1
- package/fixtures/cases/binary-any-reference/schema.yaml +4 -4
- package/fixtures/cases/binary-document-collision/schema.yaml +1 -2
- package/fixtures/cases/binary-image-dangles/expected.json +1 -0
- package/fixtures/cases/binary-image-dangles/schema.yaml +1 -0
- package/fixtures/cases/binary-link-dangles/expected.json +1 -0
- package/fixtures/cases/binary-link-dangles/schema.yaml +1 -0
- package/fixtures/cases/binary-link-outside-collection/schema.yaml +1 -2
- package/fixtures/cases/binary-prototype-reference/expected.json +1 -1
- package/fixtures/cases/binary-prototype-reference/schema.yaml +4 -4
- package/fixtures/cases/binary-typed-reference/expected.json +1 -1
- package/fixtures/cases/binary-typed-reference/schema.yaml +5 -5
- package/fixtures/cases/boolean-field/context.json +1 -0
- package/fixtures/cases/boolean-field/expected.json +6 -0
- package/fixtures/cases/boolean-field/library/companies/acme.md +4 -0
- package/fixtures/cases/boolean-field/library/deals/renewal.md +31 -0
- package/fixtures/cases/boolean-field/schema.yaml +56 -0
- package/fixtures/cases/bracketed-link-definition/schema.yaml +6 -6
- package/fixtures/cases/closed-nested-object/context.json +1 -0
- package/fixtures/cases/closed-nested-object/expected.json +6 -0
- package/fixtures/cases/closed-nested-object/library/companies/acme.md +4 -0
- package/fixtures/cases/closed-nested-object/library/deals/renewal.md +32 -0
- package/fixtures/cases/closed-nested-object/schema.yaml +56 -0
- package/fixtures/cases/composed-root-reference/context.json +1 -0
- package/fixtures/cases/composed-root-reference/expected.json +6 -0
- package/fixtures/cases/composed-root-reference/library/a.md +5 -0
- package/fixtures/cases/composed-root-reference/schema.yaml +13 -0
- package/fixtures/cases/conditional-section/context.json +1 -0
- package/fixtures/cases/conditional-section/expected.json +6 -0
- package/fixtures/cases/conditional-section/library/questions/hosting.md +9 -0
- package/fixtures/cases/conditional-section/library/questions/payments.md +12 -0
- package/fixtures/cases/conditional-section/schema.yaml +14 -0
- package/fixtures/cases/cross-room-link/context.json +1 -0
- package/fixtures/cases/cross-room-link/expected.json +1 -0
- package/fixtures/cases/cross-room-link/library/clients/acme.md +6 -0
- package/fixtures/cases/cross-room-link/schema.yaml +3 -0
- package/fixtures/cases/cross-room-reference/context.json +1 -0
- package/fixtures/cases/cross-room-reference/expected.json +1 -0
- package/fixtures/cases/cross-room-reference/library/clients/acme.md +9 -0
- package/fixtures/cases/cross-room-reference/schema.yaml +9 -0
- package/fixtures/cases/date-time-format/context.json +1 -0
- package/fixtures/cases/date-time-format/expected.json +6 -0
- package/fixtures/cases/date-time-format/library/companies/acme.md +4 -0
- package/fixtures/cases/date-time-format/library/deals/renewal.md +31 -0
- package/fixtures/cases/date-time-format/schema.yaml +56 -0
- package/fixtures/cases/declared-binary-links/schema.yaml +1 -2
- package/fixtures/cases/default-unfilled/context.json +1 -0
- package/fixtures/cases/default-unfilled/expected.json +6 -0
- package/fixtures/cases/default-unfilled/library/companies/acme.md +4 -0
- package/fixtures/cases/default-unfilled/library/deals/renewal.md +29 -0
- package/fixtures/cases/default-unfilled/schema.yaml +56 -0
- package/fixtures/cases/defs-pattern/context.json +1 -0
- package/fixtures/cases/defs-pattern/expected.json +6 -0
- package/fixtures/cases/defs-pattern/library/companies/acme.md +4 -0
- package/fixtures/cases/defs-pattern/library/deals/renewal.md +31 -0
- package/fixtures/cases/defs-pattern/schema.yaml +56 -0
- package/fixtures/cases/dependent-rule/context.json +1 -0
- package/fixtures/cases/dependent-rule/expected.json +6 -0
- package/fixtures/cases/dependent-rule/library/companies/acme.md +4 -0
- package/fixtures/cases/dependent-rule/library/deals/renewal.md +30 -0
- package/fixtures/cases/dependent-rule/schema.yaml +56 -0
- package/fixtures/cases/duplicate-link-definition/schema.yaml +6 -6
- package/fixtures/cases/email-format/context.json +1 -0
- package/fixtures/cases/email-format/expected.json +6 -0
- package/fixtures/cases/email-format/library/companies/acme.md +4 -0
- package/fixtures/cases/email-format/library/deals/renewal.md +31 -0
- package/fixtures/cases/email-format/schema.yaml +56 -0
- package/fixtures/cases/fenced-link-definition/schema.yaml +6 -6
- package/fixtures/cases/field-enum/expected.json +2 -2
- package/fixtures/cases/field-enum/schema.yaml +7 -7
- package/fixtures/cases/frontmatter-schema/schema.yaml +3 -4
- package/fixtures/cases/integer-field/context.json +1 -0
- package/fixtures/cases/integer-field/expected.json +6 -0
- package/fixtures/cases/integer-field/library/companies/acme.md +4 -0
- package/fixtures/cases/integer-field/library/deals/renewal.md +31 -0
- package/fixtures/cases/integer-field/schema.yaml +56 -0
- package/fixtures/cases/interrupted-link-definition/schema.yaml +1 -2
- package/fixtures/cases/json-schema-constructs/context.json +1 -0
- package/fixtures/cases/json-schema-constructs/expected.json +1 -0
- package/fixtures/cases/json-schema-constructs/library/companies/acme.md +4 -0
- package/fixtures/cases/json-schema-constructs/library/deals/renewal.md +31 -0
- package/fixtures/cases/json-schema-constructs/schema.yaml +56 -0
- package/fixtures/cases/list-of-objects-closed/context.json +1 -0
- package/fixtures/cases/list-of-objects-closed/expected.json +6 -0
- package/fixtures/cases/list-of-objects-closed/library/companies/acme.md +4 -0
- package/fixtures/cases/list-of-objects-closed/library/deals/renewal.md +32 -0
- package/fixtures/cases/list-of-objects-closed/schema.yaml +56 -0
- package/fixtures/cases/list-of-objects-item/context.json +1 -0
- package/fixtures/cases/list-of-objects-item/expected.json +6 -0
- package/fixtures/cases/list-of-objects-item/library/companies/acme.md +4 -0
- package/fixtures/cases/list-of-objects-item/library/deals/renewal.md +31 -0
- package/fixtures/cases/list-of-objects-item/schema.yaml +56 -0
- package/fixtures/cases/list-of-objects-reference/context.json +1 -0
- package/fixtures/cases/list-of-objects-reference/expected.json +6 -0
- package/fixtures/cases/list-of-objects-reference/library/companies/acme.md +4 -0
- package/fixtures/cases/list-of-objects-reference/library/deals/renewal.md +14 -0
- package/fixtures/cases/list-of-objects-reference/library/places/depot.md +4 -0
- package/fixtures/cases/list-of-objects-reference/library/products/seats.md +4 -0
- package/fixtures/cases/list-of-objects-reference/library/products/support.md +4 -0
- package/fixtures/cases/list-of-objects-reference/schema.yaml +32 -0
- package/fixtures/cases/list-size/context.json +1 -0
- package/fixtures/cases/list-size/expected.json +6 -0
- package/fixtures/cases/list-size/library/companies/acme.md +4 -0
- package/fixtures/cases/list-size/library/deals/renewal.md +31 -0
- package/fixtures/cases/list-size/schema.yaml +56 -0
- package/fixtures/cases/long-fence-link-definition/schema.yaml +1 -2
- package/fixtures/cases/malformed-definition/expected.json +2 -2
- package/fixtures/cases/malformed-definition/schema.yaml +3 -4
- package/fixtures/cases/member-document/schema.yaml +5 -5
- package/fixtures/cases/missing-required-field/expected.json +2 -2
- package/fixtures/cases/missing-required-field/schema.yaml +7 -7
- package/fixtures/cases/missing-section-item-kind/expected.json +2 -2
- package/fixtures/cases/missing-section-item-kind/schema.yaml +6 -6
- package/fixtures/cases/misspelled-key/context.json +1 -0
- package/fixtures/cases/misspelled-key/expected.json +6 -0
- package/fixtures/cases/misspelled-key/library/companies/acme.md +4 -0
- package/fixtures/cases/misspelled-key/library/deals/renewal.md +32 -0
- package/fixtures/cases/misspelled-key/schema.yaml +56 -0
- package/fixtures/cases/nested-defs/context.json +1 -0
- package/fixtures/cases/nested-defs/expected.json +6 -0
- package/fixtures/cases/nested-defs/library/deal.md +6 -0
- package/fixtures/cases/nested-defs/schema.yaml +11 -0
- package/fixtures/cases/nested-object-reference/context.json +1 -0
- package/fixtures/cases/nested-object-reference/expected.json +6 -0
- package/fixtures/cases/nested-object-reference/library/companies/acme.md +4 -0
- package/fixtures/cases/nested-object-reference/library/deals/renewal.md +14 -0
- package/fixtures/cases/nested-object-reference/library/places/depot.md +4 -0
- package/fixtures/cases/nested-object-reference/library/products/seats.md +4 -0
- package/fixtures/cases/nested-object-reference/library/products/support.md +4 -0
- package/fixtures/cases/nested-object-reference/schema.yaml +32 -0
- package/fixtures/cases/nested-reference/context.json +1 -0
- package/fixtures/cases/nested-reference/expected.json +1 -0
- package/fixtures/cases/nested-reference/library/companies/acme.md +4 -0
- package/fixtures/cases/nested-reference/library/deals/renewal.md +15 -0
- package/fixtures/cases/nested-reference/library/places/depot.md +4 -0
- package/fixtures/cases/nested-reference/library/products/seats.md +4 -0
- package/fixtures/cases/nested-reference/library/products/support.md +4 -0
- package/fixtures/cases/nested-reference/schema.yaml +32 -0
- package/fixtures/cases/nested-required-field/context.json +1 -0
- package/fixtures/cases/nested-required-field/expected.json +6 -0
- package/fixtures/cases/nested-required-field/library/companies/acme.md +4 -0
- package/fixtures/cases/nested-required-field/library/deals/renewal.md +30 -0
- package/fixtures/cases/nested-required-field/schema.yaml +56 -0
- package/fixtures/cases/null-refused/context.json +1 -0
- package/fixtures/cases/null-refused/expected.json +6 -0
- package/fixtures/cases/null-refused/library/companies/acme.md +4 -0
- package/fixtures/cases/null-refused/library/deals/renewal.md +31 -0
- package/fixtures/cases/null-refused/schema.yaml +56 -0
- package/fixtures/cases/numeric-range/context.json +1 -0
- package/fixtures/cases/numeric-range/expected.json +6 -0
- package/fixtures/cases/numeric-range/library/companies/acme.md +4 -0
- package/fixtures/cases/numeric-range/library/deals/renewal.md +31 -0
- package/fixtures/cases/numeric-range/schema.yaml +56 -0
- package/fixtures/cases/one-of-variant/context.json +1 -0
- package/fixtures/cases/one-of-variant/expected.json +6 -0
- package/fixtures/cases/one-of-variant/library/companies/acme.md +4 -0
- package/fixtures/cases/one-of-variant/library/deals/renewal.md +31 -0
- package/fixtures/cases/one-of-variant/schema.yaml +56 -0
- package/fixtures/cases/open-map-value/context.json +1 -0
- package/fixtures/cases/open-map-value/expected.json +6 -0
- package/fixtures/cases/open-map-value/library/companies/acme.md +4 -0
- package/fixtures/cases/open-map-value/library/deals/renewal.md +31 -0
- package/fixtures/cases/open-map-value/schema.yaml +56 -0
- package/fixtures/cases/other-room-reference/context.json +1 -0
- package/fixtures/cases/other-room-reference/expected.json +6 -0
- package/fixtures/cases/other-room-reference/library/companies/acme.md +4 -0
- package/fixtures/cases/other-room-reference/library/deals/renewal.md +14 -0
- package/fixtures/cases/other-room-reference/library/places/depot.md +4 -0
- package/fixtures/cases/other-room-reference/library/products/seats.md +4 -0
- package/fixtures/cases/other-room-reference/library/products/support.md +4 -0
- package/fixtures/cases/other-room-reference/schema.yaml +32 -0
- package/fixtures/cases/paragraph-link-definition/schema.yaml +1 -2
- package/fixtures/cases/prototype-field/expected.json +1 -1
- package/fixtures/cases/prototype-field/schema.yaml +6 -6
- package/fixtures/cases/quoted-link-definition/library/notes/draft.md +1 -1
- package/fixtures/cases/quoted-link-definition/schema.yaml +1 -2
- package/fixtures/cases/referenced-missing-file/schema.yaml +11 -10
- package/fixtures/cases/remote-ref/context.json +1 -0
- package/fixtures/cases/remote-ref/expected.json +5 -0
- package/fixtures/cases/remote-ref/schema.yaml +3 -0
- package/fixtures/cases/second-member-document/expected.json +2 -2
- package/fixtures/cases/second-member-document/schema.yaml +4 -5
- package/fixtures/cases/section-item-enum/schema.yaml +3 -4
- package/fixtures/cases/section-item-kind/schema.yaml +3 -4
- package/fixtures/cases/section-items/library/page.md +14 -0
- package/fixtures/cases/section-items/schema.yaml +10 -8
- package/fixtures/cases/section-reference-path/schema.yaml +3 -4
- package/fixtures/cases/section-reference-type/schema.yaml +3 -4
- package/fixtures/cases/shortcut-reference-link/library/item.md +1 -1
- package/fixtures/cases/shortcut-reference-link/schema.yaml +6 -6
- package/fixtures/cases/string-length/context.json +1 -0
- package/fixtures/cases/string-length/expected.json +6 -0
- package/fixtures/cases/string-length/library/companies/acme.md +4 -0
- package/fixtures/cases/string-length/library/deals/renewal.md +31 -0
- package/fixtures/cases/string-length/schema.yaml +56 -0
- package/fixtures/cases/structured-section/schema.yaml +7 -7
- package/fixtures/cases/submission-keys/schema.yaml +4 -4
- package/fixtures/cases/text-field-kind/expected.json +2 -2
- package/fixtures/cases/text-field-kind/schema.yaml +4 -4
- package/fixtures/cases/truncated-link-definition/library/notes/draft.md +1 -1
- package/fixtures/cases/truncated-link-definition/schema.yaml +1 -2
- package/fixtures/cases/types-folder-content/schema.yaml +4 -4
- package/fixtures/cases/undeclared-field/expected.json +1 -1
- package/fixtures/cases/undeclared-field/schema.yaml +6 -6
- package/fixtures/cases/unevaluated-items-closed/context.json +1 -0
- package/fixtures/cases/unevaluated-items-closed/expected.json +6 -0
- package/fixtures/cases/unevaluated-items-closed/library/trip.md +6 -0
- package/fixtures/cases/unevaluated-items-closed/schema.yaml +10 -0
- package/fixtures/cases/unknown-type/expected.json +1 -1
- package/fixtures/cases/unknown-type/schema.yaml +3 -4
- package/fixtures/cases/unlisted-reference-type/expected.json +2 -2
- package/fixtures/cases/unlisted-reference-type/schema.yaml +3 -4
- package/fixtures/cases/unresolved-link/library/item.md +1 -1
- package/fixtures/cases/unresolved-link/schema.yaml +6 -6
- package/fixtures/cases/valid-typed-document/schema.yaml +16 -15
- package/fixtures/cases/wide-item-fence-link/schema.yaml +1 -2
- package/fixtures/division.json +27 -27
- package/fixtures/projection.json +33 -1
- package/package.json +10 -3
- package/fixtures/cases/missing-binary-image/schema.yaml +0 -2
- package/fixtures/cases/missing-binary-link/expected.json +0 -5
- package/fixtures/cases/missing-binary-link/schema.yaml +0 -2
- /package/fixtures/cases/{missing-binary-image → binary-image-dangles}/context.json +0 -0
- /package/fixtures/cases/{missing-binary-image → binary-image-dangles}/library/notes/draft.md +0 -0
- /package/fixtures/cases/{missing-binary-link → binary-link-dangles}/context.json +0 -0
- /package/fixtures/cases/{missing-binary-link → binary-link-dangles}/library/notes/draft.md +0 -0
package/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# `@agentshouse/mdmodel`
|
|
2
2
|
|
|
3
|
-
Typed Markdown documents:
|
|
3
|
+
Typed Markdown documents: MD Types declared in JSON Schema, a parser, a validator, and the
|
|
4
4
|
deterministic application of one structured change to a Document, plus a
|
|
5
5
|
conformance fixture corpus.
|
|
6
6
|
|
|
7
7
|
It runs in the browser and in Node, makes no network call, and reads no
|
|
8
|
-
filesystem on its own. It ships one ESM artifact that Node 24.
|
|
8
|
+
filesystem on its own. It ships one ESM artifact that Node 24.22.1 and later
|
|
9
9
|
loads through `import` or `require`.
|
|
10
10
|
|
|
11
11
|
## Install
|
|
@@ -19,35 +19,34 @@ npm install @agentshouse/mdmodel
|
|
|
19
19
|
```ts
|
|
20
20
|
import { apply, parse, serialize, validate, verify } from '@agentshouse/mdmodel';
|
|
21
21
|
|
|
22
|
-
const checked = verify('
|
|
22
|
+
const checked = verify('task:\n properties:\n title: { type: string }\n');
|
|
23
23
|
if (checked.verdict === 'accept') {
|
|
24
24
|
validate({ 'tasks/one.md': '---\ntype: task\ntitle: Ship\n---\n' }, undefined, checked.model);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
const parsed = parse('---\ntype: note\ntitle: Hello\n---\n');
|
|
28
28
|
if (parsed.ok) {
|
|
29
|
-
const next = apply(parsed.document,
|
|
30
|
-
kind: 'field',
|
|
31
|
-
|
|
32
|
-
value: 'World',
|
|
33
|
-
prior: 'Hello',
|
|
34
|
-
});
|
|
29
|
+
const next = apply(parsed.document, [
|
|
30
|
+
{ kind: 'field', name: 'title', value: 'World', prior: 'Hello' },
|
|
31
|
+
]);
|
|
35
32
|
if (next.outcome === 'applied') serialize(next.document);
|
|
36
33
|
}
|
|
37
34
|
```
|
|
38
35
|
|
|
39
36
|
## API
|
|
40
37
|
|
|
41
|
-
| Export | Purpose
|
|
42
|
-
| ---------------------------------------------- |
|
|
43
|
-
| `verify` | Verify one schema text into a model of MD Types
|
|
44
|
-
| `validate` | Validate a text Library; returns acceptance or one refusal
|
|
45
|
-
| `parse`, `serialize` | Read and write one Document
|
|
46
|
-
| `apply` | Apply
|
|
47
|
-
| `links`, `target`, `retarget` | Inventory and rewrite link destinations
|
|
48
|
-
| `
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
38
|
+
| Export | Purpose |
|
|
39
|
+
| ---------------------------------------------- | ------------------------------------------------------------------ |
|
|
40
|
+
| `verify` | Verify one schema text into a model of MD Types |
|
|
41
|
+
| `validate` | Validate a text Library; returns acceptance or one refusal |
|
|
42
|
+
| `parse`, `serialize` | Read and write one Document |
|
|
43
|
+
| `apply` | Apply field, section, preamble, link and reference changes at once |
|
|
44
|
+
| `links`, `target`, `retarget` | Inventory and rewrite link destinations |
|
|
45
|
+
| `escapePointer` | Write one key as a JSON Pointer token |
|
|
46
|
+
| `project`, `divide` | Embedding projection input and its division into Spans |
|
|
47
|
+
| `facts`, `factKind`, `holds`, `fires` | A condition over a Document and over one of its changes |
|
|
48
|
+
| `MARKDOWN_SYNTAX_PROFILE`, `VERSION` | The pinned Markdown profile (GFM 0.29) and MD model version |
|
|
49
|
+
| `MEMBER_FIELD`, `SITE_FIELD`, `RECEIVED_FIELD` | The field names validation counts as declared beyond a type's own |
|
|
51
50
|
|
|
52
51
|
The full reference is in [`API.md`](API.md). The conformance corpus and its
|
|
53
52
|
verdict format and rule ids are described in [`fixtures/README.md`](fixtures/README.md).
|
package/dist/blocks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAoDF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,EAAE,CA4BrF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAe/E"}
|
package/dist/blocks.js
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
|
-
import { fenceSpans } from './links.js';
|
|
2
|
-
const
|
|
1
|
+
import { fenceSpans, spanCursor } from './links.js';
|
|
2
|
+
const HEADING_OPEN = /^(#{1,6})(?!#)([ \t]+)/;
|
|
3
|
+
const LINE_BREAK = /[\n\r\u2028\u2029]/;
|
|
4
|
+
function blank(character) {
|
|
5
|
+
return character === ' ' || character === '\t';
|
|
6
|
+
}
|
|
7
|
+
function heading(text) {
|
|
8
|
+
const open = HEADING_OPEN.exec(text);
|
|
9
|
+
if (open === null || LINE_BREAK.test(text))
|
|
10
|
+
return null;
|
|
11
|
+
const level = open[1].length;
|
|
12
|
+
const rest = text.slice(open[0].length);
|
|
13
|
+
if (rest === '')
|
|
14
|
+
return open[2].length > 1 ? { level, name: '' } : null;
|
|
15
|
+
let end = rest.length;
|
|
16
|
+
while (blank(rest[end - 1]))
|
|
17
|
+
end -= 1;
|
|
18
|
+
let hashes = end;
|
|
19
|
+
while (rest[hashes - 1] === '#')
|
|
20
|
+
hashes -= 1;
|
|
21
|
+
let spaced = hashes;
|
|
22
|
+
while (blank(rest[spaced - 1]))
|
|
23
|
+
spaced -= 1;
|
|
24
|
+
const closed = hashes < end && spaced < hashes && spaced > 0;
|
|
25
|
+
return { level, name: rest.slice(0, closed ? spaced : end).trim() };
|
|
26
|
+
}
|
|
3
27
|
function lineAt(content, from, to) {
|
|
4
28
|
const nl = content.indexOf('\n', from);
|
|
5
29
|
const end = nl === -1 || nl >= to ? to : nl;
|
|
@@ -7,40 +31,45 @@ function lineAt(content, from, to) {
|
|
|
7
31
|
return { text: raw.endsWith('\r') ? raw.slice(0, -1) : raw, next: end === to ? to : end + 1 };
|
|
8
32
|
}
|
|
9
33
|
function scan(content, from, to, visit) {
|
|
10
|
-
const
|
|
34
|
+
const fenced = spanCursor(fenceSpans(content.slice(from, to)));
|
|
11
35
|
let i = from;
|
|
12
36
|
while (i < to) {
|
|
13
37
|
const { text, next } = lineAt(content, i, to);
|
|
14
|
-
|
|
15
|
-
visit({
|
|
16
|
-
text,
|
|
17
|
-
start: i,
|
|
18
|
-
next,
|
|
19
|
-
fenced: fences.some(([start, end]) => at >= start && at < end),
|
|
20
|
-
});
|
|
38
|
+
visit({ text, start: i, next, fenced: fenced(i - from) !== undefined });
|
|
21
39
|
if (next === i)
|
|
22
40
|
break;
|
|
23
41
|
i = next;
|
|
24
42
|
}
|
|
25
43
|
}
|
|
44
|
+
const HASH = 0x23;
|
|
26
45
|
export function headingLines(content, from, to) {
|
|
27
46
|
const found = [];
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
if (
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
47
|
+
let fenced = null;
|
|
48
|
+
let i = from;
|
|
49
|
+
while (i < to) {
|
|
50
|
+
const nl = content.indexOf('\n', i);
|
|
51
|
+
const end = nl === -1 || nl >= to ? to : nl;
|
|
52
|
+
const next = end === to ? to : end + 1;
|
|
53
|
+
if (content.charCodeAt(i) === HASH) {
|
|
54
|
+
fenced ??= spanCursor(fenceSpans(content.slice(from, to)));
|
|
55
|
+
if (fenced(i - from) === undefined) {
|
|
56
|
+
const { text } = lineAt(content, i, to);
|
|
57
|
+
const read = heading(text);
|
|
58
|
+
if (read !== null) {
|
|
59
|
+
found.push({
|
|
60
|
+
level: read.level,
|
|
61
|
+
name: read.name,
|
|
62
|
+
start: i,
|
|
63
|
+
textEnd: i + text.length,
|
|
64
|
+
next,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (next === i)
|
|
70
|
+
break;
|
|
71
|
+
i = next;
|
|
72
|
+
}
|
|
44
73
|
return found;
|
|
45
74
|
}
|
|
46
75
|
export function blockRanges(content, from, to) {
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { type Definition, type ValueFacts } from './definition.js';
|
|
2
|
+
import type { Document, VerifiedModel } from './types.js';
|
|
3
|
+
export type ConditionValue = string | number | boolean;
|
|
4
|
+
export declare const CONDITION_OPERATORS: readonly ['eq', 'in', 'exists', 'contains', 'gt', 'gte', 'lt', 'lte', 'prefix'];
|
|
5
|
+
export type ConditionOperator = (typeof CONDITION_OPERATORS)[number];
|
|
6
|
+
export type ConditionTest = {
|
|
7
|
+
readonly all: readonly ConditionTest[];
|
|
8
|
+
} | {
|
|
9
|
+
readonly any: readonly ConditionTest[];
|
|
10
|
+
} | {
|
|
11
|
+
readonly not: ConditionTest;
|
|
12
|
+
} | ({
|
|
13
|
+
readonly path: string;
|
|
14
|
+
} & ({
|
|
15
|
+
readonly eq: ConditionValue;
|
|
16
|
+
} | {
|
|
17
|
+
readonly in: readonly ConditionValue[];
|
|
18
|
+
} | {
|
|
19
|
+
readonly exists: boolean;
|
|
20
|
+
} | {
|
|
21
|
+
readonly contains: ConditionValue;
|
|
22
|
+
} | {
|
|
23
|
+
readonly gt: number | string;
|
|
24
|
+
} | {
|
|
25
|
+
readonly gte: number | string;
|
|
26
|
+
} | {
|
|
27
|
+
readonly lt: number | string;
|
|
28
|
+
} | {
|
|
29
|
+
readonly lte: number | string;
|
|
30
|
+
} | {
|
|
31
|
+
readonly prefix: string;
|
|
32
|
+
}));
|
|
33
|
+
export type ConditionScope = {
|
|
34
|
+
readonly type: string;
|
|
35
|
+
} | {
|
|
36
|
+
readonly folder: string;
|
|
37
|
+
} | {
|
|
38
|
+
readonly document: string;
|
|
39
|
+
};
|
|
40
|
+
type DocumentEventBase = {
|
|
41
|
+
readonly on: 'documents';
|
|
42
|
+
readonly scope: ConditionScope;
|
|
43
|
+
readonly by?: ConditionTest;
|
|
44
|
+
readonly moved_between_rooms?: boolean;
|
|
45
|
+
};
|
|
46
|
+
export type DocumentCondition = (DocumentEventBase & {
|
|
47
|
+
readonly mode: 'starts_matching';
|
|
48
|
+
readonly new_documents: boolean;
|
|
49
|
+
readonly match: ConditionTest;
|
|
50
|
+
}) | (DocumentEventBase & {
|
|
51
|
+
readonly mode: 'field_changes';
|
|
52
|
+
readonly field: string;
|
|
53
|
+
readonly from?: readonly ConditionValue[] | 'new';
|
|
54
|
+
readonly to?: readonly ConditionValue[] | 'deleted';
|
|
55
|
+
readonly match?: ConditionTest;
|
|
56
|
+
});
|
|
57
|
+
export type ItemCondition = {
|
|
58
|
+
readonly on: 'items';
|
|
59
|
+
readonly source?: string;
|
|
60
|
+
readonly address?: string;
|
|
61
|
+
readonly match?: ConditionTest;
|
|
62
|
+
};
|
|
63
|
+
export type CronCondition = {
|
|
64
|
+
readonly on: 'clock';
|
|
65
|
+
readonly cron: string;
|
|
66
|
+
readonly time_zone: string;
|
|
67
|
+
};
|
|
68
|
+
export type DateCondition = {
|
|
69
|
+
readonly on: 'clock';
|
|
70
|
+
readonly scope: {
|
|
71
|
+
readonly type: string;
|
|
72
|
+
};
|
|
73
|
+
readonly date: string;
|
|
74
|
+
readonly days: number;
|
|
75
|
+
readonly at: string;
|
|
76
|
+
readonly time_zone: string;
|
|
77
|
+
readonly match?: ConditionTest;
|
|
78
|
+
};
|
|
79
|
+
export type NotificationCondition = {
|
|
80
|
+
readonly on: 'notifications';
|
|
81
|
+
readonly match?: ConditionTest;
|
|
82
|
+
};
|
|
83
|
+
export type Condition = DocumentCondition | ItemCondition | CronCondition | DateCondition | NotificationCondition;
|
|
84
|
+
export type FactKind = 'string' | 'number' | 'boolean' | 'date' | 'time' | 'enum' | 'reference';
|
|
85
|
+
type Scalar = string | number | boolean;
|
|
86
|
+
export type Fact = {
|
|
87
|
+
readonly kind: FactKind;
|
|
88
|
+
readonly value: Scalar;
|
|
89
|
+
readonly member?: string;
|
|
90
|
+
} | {
|
|
91
|
+
readonly kind: 'prose';
|
|
92
|
+
} | {
|
|
93
|
+
readonly kind: 'null';
|
|
94
|
+
} | {
|
|
95
|
+
readonly kind: 'unreadable';
|
|
96
|
+
} | {
|
|
97
|
+
readonly kind: 'list';
|
|
98
|
+
readonly items: readonly Fact[];
|
|
99
|
+
} | {
|
|
100
|
+
readonly kind: 'object';
|
|
101
|
+
readonly fields: Readonly<Record<string, Fact>>;
|
|
102
|
+
};
|
|
103
|
+
export type DocumentFacts = {
|
|
104
|
+
readonly id: string;
|
|
105
|
+
readonly path: string;
|
|
106
|
+
readonly type: string | null;
|
|
107
|
+
readonly fields: Readonly<Record<string, Fact>>;
|
|
108
|
+
readonly sections: readonly string[];
|
|
109
|
+
};
|
|
110
|
+
export declare const TEXT_FIELD = "/text";
|
|
111
|
+
export declare const WRITE_DOORS: readonly ['browser', 'agent', 'client', 'function'];
|
|
112
|
+
export type WriteDoor = (typeof WRITE_DOORS)[number];
|
|
113
|
+
export type Actor = {
|
|
114
|
+
readonly user?: string;
|
|
115
|
+
readonly site?: string;
|
|
116
|
+
readonly app?: string;
|
|
117
|
+
readonly door?: WriteDoor;
|
|
118
|
+
};
|
|
119
|
+
export type DocumentEvent = {
|
|
120
|
+
readonly before: DocumentFacts | null;
|
|
121
|
+
readonly after: DocumentFacts | null;
|
|
122
|
+
readonly changed: readonly string[];
|
|
123
|
+
readonly by: Actor;
|
|
124
|
+
readonly moved_between_rooms: boolean;
|
|
125
|
+
};
|
|
126
|
+
export type ItemFacts = {
|
|
127
|
+
readonly delivery: string;
|
|
128
|
+
readonly source: string | null;
|
|
129
|
+
readonly address: string | null;
|
|
130
|
+
readonly container: string | null;
|
|
131
|
+
readonly author: string | null;
|
|
132
|
+
readonly headers: Readonly<Record<string, string>>;
|
|
133
|
+
readonly json: {
|
|
134
|
+
readonly value: unknown;
|
|
135
|
+
} | null;
|
|
136
|
+
};
|
|
137
|
+
export type Resolved = {
|
|
138
|
+
readonly id: string;
|
|
139
|
+
readonly member?: string;
|
|
140
|
+
};
|
|
141
|
+
type Truth = boolean | undefined;
|
|
142
|
+
export declare function factKind(facts: ValueFacts): FactKind | null;
|
|
143
|
+
export declare function facts(document: Document, at: {
|
|
144
|
+
readonly id: string;
|
|
145
|
+
readonly path: string;
|
|
146
|
+
}, model: VerifiedModel, resolve: (target: string) => Resolved | undefined): DocumentFacts;
|
|
147
|
+
export declare function prosePaths(facts: DocumentFacts): string[];
|
|
148
|
+
export declare function datePointers(fields: Readonly<Record<string, ValueFacts>>): string[];
|
|
149
|
+
export declare function valuedChange(definition: Definition, field: string): boolean;
|
|
150
|
+
export declare function changeFields(definition: Definition): string[];
|
|
151
|
+
export declare function memberPointers(definition: Definition, memberType: string): string[];
|
|
152
|
+
export declare const DOCUMENT_PATHS: readonly string[];
|
|
153
|
+
export declare const ACTOR_PATHS: readonly string[];
|
|
154
|
+
export declare const ITEM_PATHS: readonly string[];
|
|
155
|
+
export declare function testOperators(definitions: readonly Definition[], path: string, memberType: string | null): readonly ConditionOperator[];
|
|
156
|
+
export declare function actorOperators(path: string): readonly ConditionOperator[];
|
|
157
|
+
export declare function itemOperators(path: string): readonly ConditionOperator[];
|
|
158
|
+
export declare function itemKind(path: string): FactKind | null;
|
|
159
|
+
export declare function dated(value: unknown): value is string;
|
|
160
|
+
export declare function instant(value: unknown): bigint | undefined;
|
|
161
|
+
export declare function pointed(value: unknown, pointer: string): unknown;
|
|
162
|
+
export declare function members(document: DocumentFacts, path: string): readonly string[];
|
|
163
|
+
export declare function holds(test: ConditionTest, document: DocumentFacts): Truth;
|
|
164
|
+
export declare function fires(condition: DocumentCondition, event: DocumentEvent): boolean;
|
|
165
|
+
export declare function itemFires(condition: ItemCondition, item: ItemFacts): boolean;
|
|
166
|
+
export declare function notificationFires(condition: NotificationCondition, notification: DocumentFacts): boolean;
|
|
167
|
+
export {};
|
|
168
|
+
//# sourceMappingURL=condition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../src/condition.ts"],"names":[],"mappings":"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"}
|