@bpmn-ld/bpmn-ld 0.0.0-stage → 0.1.0
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/LICENSE +201 -0
- package/README.md +125 -2
- package/contexts/combined.jsonld +3 -0
- package/contexts/core.jsonld +170 -0
- package/contexts/di.jsonld +37 -0
- package/dist/analyze/analyze.d.ts +3 -0
- package/dist/analyze/analyze.js +11 -0
- package/dist/analyze/findings.d.ts +8 -0
- package/dist/analyze/findings.js +1 -0
- package/dist/analyze/report.d.ts +3 -0
- package/dist/analyze/report.js +9 -0
- package/dist/analyze/rules/ad-hoc-completion-condition.d.ts +2 -0
- package/dist/analyze/rules/ad-hoc-completion-condition.js +7 -0
- package/dist/analyze/rules/cannot-reach-end.d.ts +2 -0
- package/dist/analyze/rules/cannot-reach-end.js +28 -0
- package/dist/analyze/rules/compensation-association.d.ts +2 -0
- package/dist/analyze/rules/compensation-association.js +13 -0
- package/dist/analyze/rules/dead-end.d.ts +2 -0
- package/dist/analyze/rules/dead-end.js +13 -0
- package/dist/analyze/rules/end-event.d.ts +2 -0
- package/dist/analyze/rules/end-event.js +8 -0
- package/dist/analyze/rules/error-catch.d.ts +2 -0
- package/dist/analyze/rules/error-catch.js +14 -0
- package/dist/analyze/rules/escalation-catch.d.ts +2 -0
- package/dist/analyze/rules/escalation-catch.js +14 -0
- package/dist/analyze/rules/gateway-cardinality.d.ts +3 -0
- package/dist/analyze/rules/gateway-cardinality.js +17 -0
- package/dist/analyze/rules/index.d.ts +4 -0
- package/dist/analyze/rules/index.js +21 -0
- package/dist/analyze/rules/instantiating-gateway.d.ts +2 -0
- package/dist/analyze/rules/instantiating-gateway.js +14 -0
- package/dist/analyze/rules/non-interrupting-start.d.ts +2 -0
- package/dist/analyze/rules/non-interrupting-start.js +14 -0
- package/dist/analyze/rules/reachability.d.ts +2 -0
- package/dist/analyze/rules/reachability.js +25 -0
- package/dist/analyze/rules/rule.d.ts +7 -0
- package/dist/analyze/rules/rule.js +1 -0
- package/dist/analyze/rules/signal-catch.d.ts +2 -0
- package/dist/analyze/rules/signal-catch.js +12 -0
- package/dist/analyze/rules/split-join-pairing.d.ts +3 -0
- package/dist/analyze/rules/split-join-pairing.js +50 -0
- package/dist/analyze/rules/start-event.d.ts +2 -0
- package/dist/analyze/rules/start-event.js +8 -0
- package/dist/analyze/rules/task-message-flow.d.ts +2 -0
- package/dist/analyze/rules/task-message-flow.js +19 -0
- package/dist/analyze/scope-graph.d.ts +56 -0
- package/dist/analyze/scope-graph.js +89 -0
- package/dist/analyze-cli.d.ts +1 -0
- package/dist/analyze-cli.js +5 -0
- package/dist/analyze-run.d.ts +12 -0
- package/dist/analyze-run.js +85 -0
- package/dist/bpmn-ld-cli.d.ts +1 -0
- package/dist/bpmn-ld-cli.js +90 -0
- package/dist/build-cli.d.ts +1 -0
- package/dist/build-cli.js +2 -0
- package/dist/build.d.ts +3 -0
- package/dist/build.js +38 -0
- package/dist/check-xml/check.d.ts +3 -0
- package/dist/check-xml/check.js +11 -0
- package/dist/check-xml/lint.d.ts +2 -0
- package/dist/check-xml/lint.js +47 -0
- package/dist/check-xml/moddle.d.ts +6 -0
- package/dist/check-xml/moddle.js +23 -0
- package/dist/check-xml/types.d.ts +20 -0
- package/dist/check-xml/types.js +1 -0
- package/dist/check-xml/xsd.d.ts +2 -0
- package/dist/check-xml/xsd.js +25 -0
- package/dist/check-xml-cli.d.ts +1 -0
- package/dist/check-xml-cli.js +5 -0
- package/dist/check-xml-run.d.ts +10 -0
- package/dist/check-xml-run.js +77 -0
- package/dist/convert/analyze-output.d.ts +3 -0
- package/dist/convert/analyze-output.js +8 -0
- package/dist/convert/convert.d.ts +19 -0
- package/dist/convert/convert.js +96 -0
- package/dist/convert/errors.d.ts +5 -0
- package/dist/convert/errors.js +8 -0
- package/dist/convert/extensions.d.ts +23 -0
- package/dist/convert/extensions.js +103 -0
- package/dist/convert/mapping-check.d.ts +15 -0
- package/dist/convert/mapping-check.js +66 -0
- package/dist/convert/mapping.d.ts +52 -0
- package/dist/convert/mapping.js +273 -0
- package/dist/convert/namespaces.d.ts +2 -0
- package/dist/convert/namespaces.js +19 -0
- package/dist/convert/validate-output.d.ts +2 -0
- package/dist/convert/validate-output.js +28 -0
- package/dist/convert/warnings.d.ts +9 -0
- package/dist/convert/warnings.js +67 -0
- package/dist/convert/xml-reader.d.ts +11 -0
- package/dist/convert/xml-reader.js +84 -0
- package/dist/convert-cli.d.ts +1 -0
- package/dist/convert-cli.js +5 -0
- package/dist/convert-run.d.ts +10 -0
- package/dist/convert-run.js +125 -0
- package/dist/coverage-cli.d.ts +1 -0
- package/dist/coverage-cli.js +8 -0
- package/dist/coverage-mappings.d.ts +3 -0
- package/dist/coverage-mappings.js +34 -0
- package/dist/coverage-scope.d.ts +11 -0
- package/dist/coverage-scope.js +187 -0
- package/dist/coverage-xsd.d.ts +15 -0
- package/dist/coverage-xsd.js +55 -0
- package/dist/coverage.d.ts +35 -0
- package/dist/coverage.js +152 -0
- package/dist/docs-cli.d.ts +1 -0
- package/dist/docs-cli.js +18 -0
- package/dist/docs.d.ts +8 -0
- package/dist/docs.js +136 -0
- package/dist/eval/checks.d.ts +19 -0
- package/dist/eval/checks.js +252 -0
- package/dist/eval/regenerate.d.ts +10 -0
- package/dist/eval/regenerate.js +48 -0
- package/dist/eval-regenerate-cli.d.ts +1 -0
- package/dist/eval-regenerate-cli.js +16 -0
- package/dist/export/data.d.ts +10 -0
- package/dist/export/data.js +127 -0
- package/dist/export/diagram.d.ts +8 -0
- package/dist/export/diagram.js +112 -0
- package/dist/export/element.d.ts +27 -0
- package/dist/export/element.js +175 -0
- package/dist/export/export.d.ts +22 -0
- package/dist/export/export.js +124 -0
- package/dist/export/extensions.d.ts +18 -0
- package/dist/export/extensions.js +122 -0
- package/dist/export/layout-export.d.ts +4 -0
- package/dist/export/layout-export.js +25 -0
- package/dist/export/mapping-check.d.ts +39 -0
- package/dist/export/mapping-check.js +175 -0
- package/dist/export/normalize.d.ts +3 -0
- package/dist/export/normalize.js +67 -0
- package/dist/export-cli.d.ts +1 -0
- package/dist/export-cli.js +5 -0
- package/dist/export-run.d.ts +10 -0
- package/dist/export-run.js +157 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +10 -0
- package/dist/install-skill-run.d.ts +8 -0
- package/dist/install-skill-run.js +30 -0
- package/dist/install-skill.d.ts +23 -0
- package/dist/install-skill.js +76 -0
- package/dist/layout/collaboration.d.ts +36 -0
- package/dist/layout/collaboration.js +152 -0
- package/dist/layout/di.d.ts +15 -0
- package/dist/layout/di.js +52 -0
- package/dist/layout/extract.d.ts +2 -0
- package/dist/layout/extract.js +99 -0
- package/dist/layout/lanes.d.ts +30 -0
- package/dist/layout/lanes.js +112 -0
- package/dist/layout/layering.d.ts +7 -0
- package/dist/layout/layering.js +53 -0
- package/dist/layout/layout.d.ts +12 -0
- package/dist/layout/layout.js +299 -0
- package/dist/layout/model.d.ts +52 -0
- package/dist/layout/model.js +10 -0
- package/dist/layout/placement.d.ts +25 -0
- package/dist/layout/placement.js +256 -0
- package/dist/layout/standalone.d.ts +8 -0
- package/dist/layout/standalone.js +50 -0
- package/dist/layout-cli.d.ts +1 -0
- package/dist/layout-cli.js +5 -0
- package/dist/layout-run.d.ts +9 -0
- package/dist/layout-run.js +105 -0
- package/dist/loader.d.ts +5 -0
- package/dist/loader.js +7 -0
- package/dist/namespace.d.ts +5 -0
- package/dist/namespace.js +5 -0
- package/dist/ontology.d.ts +19 -0
- package/dist/ontology.js +94 -0
- package/dist/paths.d.ts +1 -0
- package/dist/paths.js +2 -0
- package/dist/render/geometry.d.ts +40 -0
- package/dist/render/geometry.js +81 -0
- package/dist/render/renderer.d.ts +31 -0
- package/dist/render/renderer.js +369 -0
- package/dist/render/symbols.d.ts +10 -0
- package/dist/render/symbols.js +26 -0
- package/dist/render/text.d.ts +20 -0
- package/dist/render/text.js +28 -0
- package/dist/render-cli.d.ts +1 -0
- package/dist/render-cli.js +7 -0
- package/dist/render-run.d.ts +9 -0
- package/dist/render-run.js +161 -0
- package/dist/render.d.ts +4 -0
- package/dist/render.js +4 -0
- package/dist/schema-overrides.d.ts +14 -0
- package/dist/schema-overrides.js +36 -0
- package/dist/schema-validate.d.ts +5 -0
- package/dist/schema-validate.js +8 -0
- package/dist/schema.d.ts +6 -0
- package/dist/schema.js +114 -0
- package/dist/shacl.d.ts +15 -0
- package/dist/shacl.js +37 -0
- package/dist/validate-cli.d.ts +1 -0
- package/dist/validate-cli.js +5 -0
- package/dist/validate-run.d.ts +8 -0
- package/dist/validate-run.js +58 -0
- package/dist/validate.d.ts +11 -0
- package/dist/validate.js +94 -0
- package/dist/versioning-cli.d.ts +1 -0
- package/dist/versioning-cli.js +18 -0
- package/dist/versioning.d.ts +17 -0
- package/dist/versioning.js +45 -0
- package/ontology/core.ttl +993 -0
- package/ontology/di.ttl +167 -0
- package/package.json +76 -4
- package/schema/bpmn-ld.schema.json +15230 -0
- package/shapes/core.shapes.ttl +398 -0
- package/skills/bpmn-ld/SKILL.md +154 -0
- package/skills/bpmn-ld/evals/models/order-approval-di.jsonld +296 -0
- package/skills/bpmn-ld/evals/models/refund-di.bpmn +82 -0
- package/skills/bpmn-ld/evals/models/refund.bpmn +18 -0
- package/skills/bpmn-ld/evals/outputs/explain-collaboration.md +22 -0
- package/skills/bpmn-ld/evals/outputs/explain-order-approval.md +24 -0
- package/skills/bpmn-ld/evals/outputs/explain-refund.md +17 -0
- package/skills/bpmn-ld/evals/outputs/generate-activity-compensation.jsonld +39 -0
- package/skills/bpmn-ld/evals/outputs/generate-ad-hoc-sub-process.jsonld +52 -0
- package/skills/bpmn-ld/evals/outputs/generate-boundary-event.jsonld +27 -0
- package/skills/bpmn-ld/evals/outputs/generate-collaboration.jsonld +49 -0
- package/skills/bpmn-ld/evals/outputs/generate-conditions.jsonld +93 -0
- package/skills/bpmn-ld/evals/outputs/generate-diagram-properties.jsonld +340 -0
- package/skills/bpmn-ld/evals/outputs/generate-error.jsonld +217 -0
- package/skills/bpmn-ld/evals/outputs/generate-escalation.jsonld +231 -0
- package/skills/bpmn-ld/evals/outputs/generate-event-definition-ref.jsonld +67 -0
- package/skills/bpmn-ld/evals/outputs/generate-event-sub-process.jsonld +54 -0
- package/skills/bpmn-ld/evals/outputs/generate-exclusive-choice.jsonld +32 -0
- package/skills/bpmn-ld/evals/outputs/generate-instantiating-gateway.jsonld +24 -0
- package/skills/bpmn-ld/evals/outputs/generate-lane-partition.jsonld +46 -0
- package/skills/bpmn-ld/evals/outputs/generate-link-event.expect.json +11 -0
- package/skills/bpmn-ld/evals/outputs/generate-link-event.jsonld +57 -0
- package/skills/bpmn-ld/evals/outputs/generate-loop.jsonld +30 -0
- package/skills/bpmn-ld/evals/outputs/generate-message.jsonld +61 -0
- package/skills/bpmn-ld/evals/outputs/generate-parallel-branches.jsonld +25 -0
- package/skills/bpmn-ld/evals/outputs/generate-process-attributes.jsonld +49 -0
- package/skills/bpmn-ld/evals/outputs/generate-script-task.jsonld +18 -0
- package/skills/bpmn-ld/evals/outputs/generate-signal.jsonld +178 -0
- package/skills/bpmn-ld/evals/outputs/generate-sub-process.jsonld +31 -0
- package/skills/bpmn-ld/evals/outputs/generate-targeted-compensation.jsonld +40 -0
- package/skills/bpmn-ld/evals/outputs/generate-task-implementation.jsonld +18 -0
- package/skills/bpmn-ld/evals/outputs/generate-task-message-references.jsonld +49 -0
- package/skills/bpmn-ld/evals/outputs/generate-transaction.jsonld +48 -0
- package/skills/bpmn-ld/evals/outputs/modify-order-approval.jsonld +376 -0
- package/skills/bpmn-ld/evals/outputs/modify-refund.jsonld +373 -0
- package/skills/bpmn-ld/evals/outputs/order-approval.jsonld +29 -0
- package/skills/bpmn-ld/evals/outputs/refine-order-approval.jsonld +377 -0
- package/skills/bpmn-ld/evals/prompts/explain-collaboration.md +3 -0
- package/skills/bpmn-ld/evals/prompts/explain-order-approval.md +3 -0
- package/skills/bpmn-ld/evals/prompts/explain-refund.md +3 -0
- package/skills/bpmn-ld/evals/prompts/generate-activity-compensation.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-ad-hoc-sub-process.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-boundary-event.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-collaboration.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-conditions.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-diagram-properties.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-error.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-escalation.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-event-definition-ref.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-event-sub-process.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-exclusive-choice.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-instantiating-gateway.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-lane-partition.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-link-event.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-loop.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-message.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-parallel-branches.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-process-attributes.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-script-task.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-signal.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-sub-process.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-targeted-compensation.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-task-implementation.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-task-message-references.md +1 -0
- package/skills/bpmn-ld/evals/prompts/generate-transaction.md +1 -0
- package/skills/bpmn-ld/evals/prompts/modify-order-approval.md +4 -0
- package/skills/bpmn-ld/evals/prompts/modify-refund.md +4 -0
- package/skills/bpmn-ld/evals/prompts/order-approval.md +1 -0
- package/skills/bpmn-ld/evals/prompts/refine-order-approval.md +8 -0
- package/skills/bpmn-ld/examples/positive/activity-compensation.jsonld +39 -0
- package/skills/bpmn-ld/examples/positive/ad-hoc-sub-process.jsonld +52 -0
- package/skills/bpmn-ld/examples/positive/boundary-event.jsonld +27 -0
- package/skills/bpmn-ld/examples/positive/collaboration.jsonld +49 -0
- package/skills/bpmn-ld/examples/positive/conditions.jsonld +93 -0
- package/skills/bpmn-ld/examples/positive/diagram-properties.jsonld +340 -0
- package/skills/bpmn-ld/examples/positive/error.jsonld +208 -0
- package/skills/bpmn-ld/examples/positive/escalation.jsonld +231 -0
- package/skills/bpmn-ld/examples/positive/event-definition-ref.jsonld +142 -0
- package/skills/bpmn-ld/examples/positive/event-sub-process.jsonld +54 -0
- package/skills/bpmn-ld/examples/positive/exclusive-choice.jsonld +32 -0
- package/skills/bpmn-ld/examples/positive/instantiating-gateway.jsonld +24 -0
- package/skills/bpmn-ld/examples/positive/lane-partition.jsonld +46 -0
- package/skills/bpmn-ld/examples/positive/link-event.expect.json +10 -0
- package/skills/bpmn-ld/examples/positive/link-event.jsonld +138 -0
- package/skills/bpmn-ld/examples/positive/loop.jsonld +30 -0
- package/skills/bpmn-ld/examples/positive/message.jsonld +60 -0
- package/skills/bpmn-ld/examples/positive/order-approval.jsonld +29 -0
- package/skills/bpmn-ld/examples/positive/parallel-branches.jsonld +25 -0
- package/skills/bpmn-ld/examples/positive/process-attributes.jsonld +49 -0
- package/skills/bpmn-ld/examples/positive/script-task.jsonld +18 -0
- package/skills/bpmn-ld/examples/positive/signal.jsonld +150 -0
- package/skills/bpmn-ld/examples/positive/sub-process.jsonld +31 -0
- package/skills/bpmn-ld/examples/positive/targeted-compensation.jsonld +40 -0
- package/skills/bpmn-ld/examples/positive/task-implementation.jsonld +18 -0
- package/skills/bpmn-ld/examples/positive/task-message-references.jsonld +151 -0
- package/skills/bpmn-ld/examples/positive/transaction.jsonld +48 -0
- package/skills/bpmn-ld/references/clarification-and-refinement.md +60 -0
- package/skills/bpmn-ld/references/common-mistakes.md +110 -0
- package/skills/bpmn-ld/references/explain-and-document.md +36 -0
- package/skills/bpmn-ld/references/modify-existing-model.md +49 -0
- package/skills/bpmn-ld/references/patterns.md +292 -0
- package/skills/bpmn-ld/references/render-output.md +1 -0
- package/skills/bpmn-ld/references/rule-catalogue.md +183 -0
- package/skills/bpmn-ld/references/vocabulary-summary.md +65 -0
- package/skills/bpmn-ld/template.jsonld +14 -0
- package/templates/combined.jsonld +3 -0
- package/templates/core.jsonld +170 -0
- package/templates/core.shapes.ttl +398 -0
- package/templates/core.ttl +993 -0
- package/templates/di.jsonld +37 -0
- package/templates/di.ttl +167 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { runAnalyze } from "./analyze-run.js";
|
|
2
|
+
import { runCheckXml } from "./check-xml-run.js";
|
|
3
|
+
import { runConvert } from "./convert-run.js";
|
|
4
|
+
import { runExport } from "./export-run.js";
|
|
5
|
+
import { runLayout } from "./layout-run.js";
|
|
6
|
+
import { runRender } from "./render-run.js";
|
|
7
|
+
import { runInstallSkill } from "./install-skill-run.js";
|
|
8
|
+
import { runValidate } from "./validate-run.js";
|
|
9
|
+
import { ROOT } from "./paths.js";
|
|
10
|
+
const USAGE = `Usage: bpmn-ld <command> [args]
|
|
11
|
+
|
|
12
|
+
Commands:
|
|
13
|
+
validate, analyze, convert, export, layout, check-xml, render
|
|
14
|
+
coverage, docs
|
|
15
|
+
root, install-skill
|
|
16
|
+
|
|
17
|
+
Run "bpmn-ld <command> --help" for command help.
|
|
18
|
+
`;
|
|
19
|
+
const write = (r) => {
|
|
20
|
+
if (r.stdout)
|
|
21
|
+
process.stdout.write(r.stdout);
|
|
22
|
+
if (r.stderr)
|
|
23
|
+
process.stderr.write(r.stderr);
|
|
24
|
+
};
|
|
25
|
+
const run = async (argv) => {
|
|
26
|
+
const [command, ...rest] = argv;
|
|
27
|
+
if (command === undefined || command === "-h" || command === "--help" || command === "help") {
|
|
28
|
+
process.stdout.write(USAGE);
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
switch (command) {
|
|
32
|
+
case "validate": {
|
|
33
|
+
const r = await runValidate(rest);
|
|
34
|
+
write(r);
|
|
35
|
+
return r.exitCode;
|
|
36
|
+
}
|
|
37
|
+
case "analyze": {
|
|
38
|
+
const r = await runAnalyze(rest);
|
|
39
|
+
write(r);
|
|
40
|
+
return r.exitCode;
|
|
41
|
+
}
|
|
42
|
+
case "convert": {
|
|
43
|
+
const r = await runConvert(rest);
|
|
44
|
+
write(r);
|
|
45
|
+
return r.exitCode;
|
|
46
|
+
}
|
|
47
|
+
case "export": {
|
|
48
|
+
const r = await runExport(rest);
|
|
49
|
+
write(r);
|
|
50
|
+
return r.exitCode;
|
|
51
|
+
}
|
|
52
|
+
case "layout": {
|
|
53
|
+
const r = runLayout(rest);
|
|
54
|
+
write(r);
|
|
55
|
+
return r.exitCode;
|
|
56
|
+
}
|
|
57
|
+
case "check-xml": {
|
|
58
|
+
const r = await runCheckXml(rest);
|
|
59
|
+
write(r);
|
|
60
|
+
return r.exitCode;
|
|
61
|
+
}
|
|
62
|
+
case "render": {
|
|
63
|
+
const r = runRender(rest);
|
|
64
|
+
write(r);
|
|
65
|
+
return r.exitCode;
|
|
66
|
+
}
|
|
67
|
+
case "root": {
|
|
68
|
+
process.stdout.write(`${ROOT}\n`);
|
|
69
|
+
return 0;
|
|
70
|
+
}
|
|
71
|
+
case "coverage": {
|
|
72
|
+
process.stdout.write("coverage not implemented\n");
|
|
73
|
+
return 1;
|
|
74
|
+
}
|
|
75
|
+
case "docs": {
|
|
76
|
+
process.stdout.write("docs not implemented\n");
|
|
77
|
+
return 1;
|
|
78
|
+
}
|
|
79
|
+
case "install-skill": {
|
|
80
|
+
const r = await runInstallSkill(rest);
|
|
81
|
+
write(r);
|
|
82
|
+
return r.exitCode;
|
|
83
|
+
}
|
|
84
|
+
default:
|
|
85
|
+
process.stderr.write(`unknown command: ${command}\n\n${USAGE}`);
|
|
86
|
+
return 2;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const code = await run(process.argv.slice(2));
|
|
90
|
+
process.exitCode = code;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/build.d.ts
ADDED
package/dist/build.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { renderSchema } from "./schema.js";
|
|
4
|
+
import { ROOT } from "./paths.js";
|
|
5
|
+
import { BPMN_NAMESPACE, BPMN_ONTOLOGY_IRI, BPMN_SHAPES_NAMESPACE, BPMNDI_NAMESPACE, BPMNDI_ONTOLOGY_IRI } from "./namespace.js";
|
|
6
|
+
const values = {
|
|
7
|
+
BPMN_NAMESPACE,
|
|
8
|
+
BPMN_ONTOLOGY_IRI,
|
|
9
|
+
BPMN_SHAPES_NAMESPACE,
|
|
10
|
+
BPMNDI_NAMESPACE,
|
|
11
|
+
BPMNDI_ONTOLOGY_IRI,
|
|
12
|
+
};
|
|
13
|
+
const targets = {
|
|
14
|
+
"ontology/core.ttl": "templates/core.ttl",
|
|
15
|
+
"contexts/core.jsonld": "templates/core.jsonld",
|
|
16
|
+
"ontology/di.ttl": "templates/di.ttl",
|
|
17
|
+
"contexts/di.jsonld": "templates/di.jsonld",
|
|
18
|
+
"shapes/core.shapes.ttl": "templates/core.shapes.ttl",
|
|
19
|
+
"contexts/combined.jsonld": "templates/combined.jsonld",
|
|
20
|
+
};
|
|
21
|
+
const render = (template) => template.replace(/\{\{(\w+)\}\}/g, (_, key) => {
|
|
22
|
+
const value = values[key];
|
|
23
|
+
if (value === undefined)
|
|
24
|
+
throw new Error(`Unknown template variable ${key}`);
|
|
25
|
+
return value;
|
|
26
|
+
});
|
|
27
|
+
export const SCHEMA_PATH = "schema/bpmn-ld.schema.json";
|
|
28
|
+
const renderTemplates = () => Object.fromEntries(Object.entries(targets).map(([output, template]) => [output, render(readFileSync(join(ROOT, template), "utf8"))]));
|
|
29
|
+
export const renderArtifacts = () => ({
|
|
30
|
+
...renderTemplates(),
|
|
31
|
+
[SCHEMA_PATH]: renderSchema(),
|
|
32
|
+
});
|
|
33
|
+
export const build = () => {
|
|
34
|
+
for (const [path, content] of Object.entries(renderTemplates())) {
|
|
35
|
+
writeFileSync(join(ROOT, path), content);
|
|
36
|
+
}
|
|
37
|
+
writeFileSync(join(ROOT, SCHEMA_PATH), renderSchema());
|
|
38
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { checkLint } from "./lint.js";
|
|
2
|
+
import { checkModdle } from "./moddle.js";
|
|
3
|
+
import { checkXsd } from "./xsd.js";
|
|
4
|
+
export const checkXml = async (xml) => {
|
|
5
|
+
const xsd = await checkXsd(xml);
|
|
6
|
+
const moddle = await checkModdle(xml);
|
|
7
|
+
const lint = moddle.rootElement ? await checkLint(moddle.rootElement) : { status: "skipped", issues: [] };
|
|
8
|
+
const checks = { xsd, moddle: moddle.result, lint };
|
|
9
|
+
const ok = Object.values(checks).every((check) => check.status !== "fail");
|
|
10
|
+
return { ok, checks };
|
|
11
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { Linter } from "bpmnlint";
|
|
3
|
+
import StaticResolver from "bpmnlint/lib/resolver/static-resolver";
|
|
4
|
+
const require = createRequire(import.meta.url);
|
|
5
|
+
const config = require("bpmnlint/config/recommended");
|
|
6
|
+
const cache = { "config:bpmnlint/recommended": config };
|
|
7
|
+
for (const rule of Object.keys(config.rules))
|
|
8
|
+
cache[`rule:bpmnlint/${rule}`] = require(`bpmnlint/rules/${rule}`);
|
|
9
|
+
const createLinter = () => new Linter({ config: { extends: "bpmnlint:recommended" }, resolver: new StaticResolver(cache) });
|
|
10
|
+
const isInstantiating = (element) => (element.$type === "bpmn:EventBasedGateway" || element.$type === "bpmn:ReceiveTask") && element.instantiate === true;
|
|
11
|
+
const instantiatingScopes = (root) => {
|
|
12
|
+
const elements = new Set();
|
|
13
|
+
const scopes = new Set();
|
|
14
|
+
const visit = (container) => {
|
|
15
|
+
for (const member of container.flowElements ?? []) {
|
|
16
|
+
if (isInstantiating(member) && member.id !== undefined) {
|
|
17
|
+
elements.add(member.id);
|
|
18
|
+
if (container.id !== undefined)
|
|
19
|
+
scopes.add(container.id);
|
|
20
|
+
}
|
|
21
|
+
visit(member);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
(root.rootElements ?? []).forEach(visit);
|
|
25
|
+
return { elements, scopes };
|
|
26
|
+
};
|
|
27
|
+
export const checkLint = async (rootElement) => {
|
|
28
|
+
const reports = await createLinter().lint(rootElement);
|
|
29
|
+
const { elements, scopes } = instantiatingScopes(rootElement);
|
|
30
|
+
for (const [rule, found] of Object.entries(reports)) {
|
|
31
|
+
reports[rule] = found.filter((report) => !(rule === "no-implicit-start" && report.id !== undefined && elements.has(report.id)) &&
|
|
32
|
+
!(rule === "start-event-required" && report.id !== undefined && scopes.has(report.id)));
|
|
33
|
+
}
|
|
34
|
+
const issues = [];
|
|
35
|
+
for (const [rule, found] of Object.entries(reports)) {
|
|
36
|
+
for (const report of found) {
|
|
37
|
+
issues.push({
|
|
38
|
+
severity: report.category === "warn" ? "warning" : "error",
|
|
39
|
+
message: report.message,
|
|
40
|
+
rule,
|
|
41
|
+
...(report.id ? { location: report.id } : {}),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const failed = issues.some((issue) => issue.severity === "error");
|
|
46
|
+
return { status: failed ? "fail" : "pass", issues };
|
|
47
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { BpmnModdle } from "bpmn-moddle";
|
|
2
|
+
const issueFrom = (message) => {
|
|
3
|
+
const [first, ...details] = message.split("\n").map((line) => line.trim());
|
|
4
|
+
const detail = (key) => details.find((line) => line.startsWith(`${key}:`))?.slice(key.length + 1).trim();
|
|
5
|
+
const nested = detail("nested error");
|
|
6
|
+
const line = detail("line");
|
|
7
|
+
const column = detail("column");
|
|
8
|
+
return {
|
|
9
|
+
severity: "error",
|
|
10
|
+
message: nested ? `${first}: ${nested}` : first,
|
|
11
|
+
...(line !== undefined && column !== undefined ? { location: `line ${Number(line) + 1}, column ${column}` } : {}),
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export const checkModdle = async (xml) => {
|
|
15
|
+
try {
|
|
16
|
+
const { rootElement, warnings } = await new BpmnModdle().fromXML(xml);
|
|
17
|
+
const issues = warnings.map((warning) => issueFrom(warning.message));
|
|
18
|
+
return { result: { status: issues.length ? "fail" : "pass", issues }, rootElement };
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
return { result: { status: "fail", issues: [issueFrom(error.message)] } };
|
|
22
|
+
}
|
|
23
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type Severity = "error" | "warning";
|
|
2
|
+
export interface CheckIssue {
|
|
3
|
+
severity: Severity;
|
|
4
|
+
message: string;
|
|
5
|
+
location?: string;
|
|
6
|
+
rule?: string;
|
|
7
|
+
}
|
|
8
|
+
export type CheckStatus = "pass" | "fail" | "skipped";
|
|
9
|
+
export interface CheckResult {
|
|
10
|
+
status: CheckStatus;
|
|
11
|
+
issues: CheckIssue[];
|
|
12
|
+
}
|
|
13
|
+
export interface CheckReport {
|
|
14
|
+
ok: boolean;
|
|
15
|
+
checks: {
|
|
16
|
+
xsd: CheckResult;
|
|
17
|
+
moddle: CheckResult;
|
|
18
|
+
lint: CheckResult;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { validateXML } from "xmllint-wasm";
|
|
4
|
+
import { ROOT } from "../paths.js";
|
|
5
|
+
const XSD_DIR = join(ROOT, "reference/bpmn-xsd");
|
|
6
|
+
const ROOT_SCHEMA = "BPMN20.xsd";
|
|
7
|
+
const IMPORTED_SCHEMAS = ["Semantic.xsd", "BPMNDI.xsd", "DI.xsd", "DC.xsd"];
|
|
8
|
+
const load = (fileName) => ({ fileName, contents: readFileSync(join(XSD_DIR, fileName), "utf8") });
|
|
9
|
+
const schema = load(ROOT_SCHEMA);
|
|
10
|
+
const preload = IMPORTED_SCHEMAS.map(load);
|
|
11
|
+
export const checkXsd = async (xml) => {
|
|
12
|
+
const result = await validateXML({
|
|
13
|
+
xml: { fileName: "input.bpmn", contents: xml },
|
|
14
|
+
schema: [schema],
|
|
15
|
+
preload,
|
|
16
|
+
});
|
|
17
|
+
if (result.valid)
|
|
18
|
+
return { status: "pass", issues: [] };
|
|
19
|
+
const issues = result.errors.map((error) => ({
|
|
20
|
+
severity: "error",
|
|
21
|
+
message: error.message,
|
|
22
|
+
...(error.loc ? { location: `line ${error.loc.lineNumber}` } : {}),
|
|
23
|
+
}));
|
|
24
|
+
return { status: "fail", issues };
|
|
25
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const EXIT_OK = 0;
|
|
2
|
+
export declare const EXIT_CHECK_FAILED = 1;
|
|
3
|
+
export declare const EXIT_BAD_INPUT = 2;
|
|
4
|
+
export interface CliResult {
|
|
5
|
+
exitCode: number;
|
|
6
|
+
stdout: string;
|
|
7
|
+
stderr: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const USAGE = "Usage: check-xml <input.bpmn> [options]\n\nChecks a BPMN 2.0 XML file with tools independent of this project:\n xsd validation against the normative BPMN 2.0 XSD\n moddle import with bpmn-moddle\n lint bpmnlint with the generic recommended rule set\n\nOptions:\n --json Write the report as JSON to standard output\n -h, --help Show this help\n\nExit codes:\n 0 No check reported an error (warnings are allowed)\n 1 At least one check reported an error\n 2 Usage error or unreadable input\n";
|
|
10
|
+
export declare const runCheckXml: (argv: string[]) => Promise<CliResult>;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { checkXml } from "./check-xml/check.js";
|
|
3
|
+
export const EXIT_OK = 0;
|
|
4
|
+
export const EXIT_CHECK_FAILED = 1;
|
|
5
|
+
export const EXIT_BAD_INPUT = 2;
|
|
6
|
+
export const USAGE = `Usage: check-xml <input.bpmn> [options]
|
|
7
|
+
|
|
8
|
+
Checks a BPMN 2.0 XML file with tools independent of this project:
|
|
9
|
+
xsd validation against the normative BPMN 2.0 XSD
|
|
10
|
+
moddle import with bpmn-moddle
|
|
11
|
+
lint bpmnlint with the generic recommended rule set
|
|
12
|
+
|
|
13
|
+
Options:
|
|
14
|
+
--json Write the report as JSON to standard output
|
|
15
|
+
-h, --help Show this help
|
|
16
|
+
|
|
17
|
+
Exit codes:
|
|
18
|
+
0 No check reported an error (warnings are allowed)
|
|
19
|
+
1 At least one check reported an error
|
|
20
|
+
2 Usage error or unreadable input
|
|
21
|
+
`;
|
|
22
|
+
class UsageError extends Error {
|
|
23
|
+
}
|
|
24
|
+
const parseArgs = (argv) => {
|
|
25
|
+
let input;
|
|
26
|
+
let json = false;
|
|
27
|
+
for (const arg of argv) {
|
|
28
|
+
if (arg === "-h" || arg === "--help")
|
|
29
|
+
return "help";
|
|
30
|
+
else if (arg === "--json")
|
|
31
|
+
json = true;
|
|
32
|
+
else if (arg.startsWith("-"))
|
|
33
|
+
throw new UsageError(`unknown option ${arg}`);
|
|
34
|
+
else if (input !== undefined)
|
|
35
|
+
throw new UsageError(`unexpected extra argument ${arg}`);
|
|
36
|
+
else
|
|
37
|
+
input = arg;
|
|
38
|
+
}
|
|
39
|
+
if (input === undefined)
|
|
40
|
+
throw new UsageError("missing input file");
|
|
41
|
+
return { input, json };
|
|
42
|
+
};
|
|
43
|
+
const readText = (path) => {
|
|
44
|
+
try {
|
|
45
|
+
return readFileSync(path, "utf8");
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
const reason = error.code === "ENOENT" ? "no such file" : (error.message ?? "cannot read");
|
|
49
|
+
throw new UsageError(`cannot read ${path}: ${reason}`);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const formatIssue = (issue) => {
|
|
53
|
+
const rule = issue.rule ? ` [${issue.rule}]` : "";
|
|
54
|
+
const location = issue.location ? ` (${issue.location})` : "";
|
|
55
|
+
return ` ${issue.severity}:${rule} ${issue.message}${location}`;
|
|
56
|
+
};
|
|
57
|
+
const formatText = (report) => Object.entries(report.checks)
|
|
58
|
+
.map(([name, check]) => [`${name}: ${check.status}`, ...check.issues.map(formatIssue)].join("\n"))
|
|
59
|
+
.join("\n") + "\n";
|
|
60
|
+
export const runCheckXml = async (argv) => {
|
|
61
|
+
let options;
|
|
62
|
+
let xml;
|
|
63
|
+
try {
|
|
64
|
+
options = parseArgs(argv);
|
|
65
|
+
if (options === "help")
|
|
66
|
+
return { exitCode: EXIT_OK, stdout: USAGE, stderr: "" };
|
|
67
|
+
xml = readText(options.input);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
if (error instanceof UsageError)
|
|
71
|
+
return { exitCode: EXIT_BAD_INPUT, stdout: "", stderr: `error: ${error.message}\n\n${USAGE}` };
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
const report = await checkXml(xml);
|
|
75
|
+
const stdout = options.json ? `${JSON.stringify(report, null, 2)}\n` : formatText(report);
|
|
76
|
+
return { exitCode: report.ok ? EXIT_OK : EXIT_CHECK_FAILED, stdout, stderr: "" };
|
|
77
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { pathToFileURL } from "node:url";
|
|
3
|
+
import { analyze } from "../analyze/analyze.js";
|
|
4
|
+
import { ROOT } from "../paths.js";
|
|
5
|
+
export const analyzeConverted = (document) => {
|
|
6
|
+
const local = { ...document, "@context": [pathToFileURL(join(ROOT, "contexts/combined.jsonld")).href, document["@context"][1]] };
|
|
7
|
+
return analyze(local, document["@context"][1]["@base"]);
|
|
8
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Warning } from "./warnings.ts";
|
|
2
|
+
export interface ConvertOptions {
|
|
3
|
+
base?: string;
|
|
4
|
+
fileName?: string;
|
|
5
|
+
}
|
|
6
|
+
export type { Warning };
|
|
7
|
+
export type Node = Record<string, any>;
|
|
8
|
+
export interface ConvertResult {
|
|
9
|
+
document: {
|
|
10
|
+
"@context": [string, {
|
|
11
|
+
"@base": string;
|
|
12
|
+
} & Record<string, unknown>];
|
|
13
|
+
"@graph": Node[];
|
|
14
|
+
};
|
|
15
|
+
warnings: Warning[];
|
|
16
|
+
}
|
|
17
|
+
export declare const COMBINED_CONTEXT_IRI: string;
|
|
18
|
+
export declare const defaultBase: (fileName?: string) => string;
|
|
19
|
+
export declare const convert: (xml: string, options?: ConvertOptions) => ConvertResult;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { basename, extname } from "node:path";
|
|
2
|
+
import { BPMN_NAMESPACE } from "../namespace.js";
|
|
3
|
+
import { PUBLISH_BASE } from "../versioning.js";
|
|
4
|
+
import { ConversionError } from "./errors.js";
|
|
5
|
+
import { CONTAINMENT, concreteElement, ELEMENT_MAPPINGS, isEmptyRequired, isMapped, MODEL_NAMESPACE, ROOT_ELEMENTS } from "./mapping.js";
|
|
6
|
+
import { extensionProperties, Prefixes } from "./extensions.js";
|
|
7
|
+
import { assertSupportedNamespaces } from "./namespaces.js";
|
|
8
|
+
import { collectWarnings } from "./warnings.js";
|
|
9
|
+
import { readXml } from "./xml-reader.js";
|
|
10
|
+
export const COMBINED_CONTEXT_IRI = `${PUBLISH_BASE}/latest/contexts/combined.jsonld`;
|
|
11
|
+
const DEFAULT_MODEL_NAME = "model";
|
|
12
|
+
export const defaultBase = (fileName) => {
|
|
13
|
+
const name = fileName ? basename(fileName, extname(fileName)) : "";
|
|
14
|
+
return `${new URL(BPMN_NAMESPACE).origin}/models/${encodeURIComponent(name || DEFAULT_MODEL_NAME)}/`;
|
|
15
|
+
};
|
|
16
|
+
const mapElement = (element, root, prefixes) => {
|
|
17
|
+
const mapping = ELEMENT_MAPPINGS[element.name];
|
|
18
|
+
const node = {};
|
|
19
|
+
if (!mapping.anonymous && element.attributes.id !== undefined)
|
|
20
|
+
node.id = element.attributes.id;
|
|
21
|
+
node.type = mapping.type;
|
|
22
|
+
for (const [attribute, term] of Object.entries(mapping.attributes)) {
|
|
23
|
+
if (attribute !== "id" && element.attributes[attribute] !== undefined && element.attributes[attribute] !== "")
|
|
24
|
+
node[term] = element.attributes[attribute];
|
|
25
|
+
}
|
|
26
|
+
for (const attribute of mapping.booleans ?? []) {
|
|
27
|
+
if (node[attribute] !== undefined)
|
|
28
|
+
node[attribute] = node[attribute] === "true";
|
|
29
|
+
}
|
|
30
|
+
for (const attribute of mapping.hashPrefixed ?? []) {
|
|
31
|
+
const value = node[attribute];
|
|
32
|
+
if (typeof value === "string" && value.startsWith("##"))
|
|
33
|
+
node[attribute] = value.slice(2);
|
|
34
|
+
}
|
|
35
|
+
for (const child of element.children) {
|
|
36
|
+
const textTerm = mapping.textChildren?.[child.name];
|
|
37
|
+
if (child.namespace === MODEL_NAMESPACE && textTerm !== undefined)
|
|
38
|
+
node[textTerm] = child.text;
|
|
39
|
+
}
|
|
40
|
+
for (const child of element.children) {
|
|
41
|
+
const listTerm = mapping.textLists?.[child.name];
|
|
42
|
+
if (child.namespace === MODEL_NAMESPACE && listTerm !== undefined)
|
|
43
|
+
(node[listTerm] ??= []).push(child.text);
|
|
44
|
+
}
|
|
45
|
+
for (const lookup of (mapping.lookups ?? []).filter((candidate) => candidate.exportOnly !== true)) {
|
|
46
|
+
const reference = element.attributes[lookup.attribute];
|
|
47
|
+
const target = root.children.find((candidate) => candidate.namespace === MODEL_NAMESPACE && candidate.name === lookup.root && candidate.attributes.id === reference);
|
|
48
|
+
if (target?.attributes[lookup.from] !== undefined)
|
|
49
|
+
node[lookup.term] = target.attributes[lookup.from];
|
|
50
|
+
}
|
|
51
|
+
if (mapping.bodyTerm !== undefined && element.text !== "")
|
|
52
|
+
node[mapping.bodyTerm] = element.text;
|
|
53
|
+
for (const attribute of mapping.numbers ?? []) {
|
|
54
|
+
if (node[attribute] !== undefined)
|
|
55
|
+
node[attribute] = Number(node[attribute]);
|
|
56
|
+
}
|
|
57
|
+
for (const declared of element.children) {
|
|
58
|
+
const single = mapping.singles?.[declared.name];
|
|
59
|
+
const child = concreteElement(declared);
|
|
60
|
+
if (!isMapped(child) || single === undefined || isEmptyRequired(child))
|
|
61
|
+
continue;
|
|
62
|
+
const mapped = mapElement(child, root, prefixes);
|
|
63
|
+
const prefix = mapping.derivedChildIds?.[single];
|
|
64
|
+
if (prefix !== undefined && mapped.id === undefined && node.id !== undefined)
|
|
65
|
+
mapped.id = `${prefix}${node.id}`;
|
|
66
|
+
node[single] = mapped;
|
|
67
|
+
}
|
|
68
|
+
for (const child of element.children) {
|
|
69
|
+
const property = CONTAINMENT[element.name]?.[child.name];
|
|
70
|
+
if (!isMapped(child) || property === undefined)
|
|
71
|
+
continue;
|
|
72
|
+
const members = (node[property] ??= []);
|
|
73
|
+
members.push(mapElement(child, root, prefixes));
|
|
74
|
+
}
|
|
75
|
+
Object.assign(node, extensionProperties(element, prefixes));
|
|
76
|
+
return node;
|
|
77
|
+
};
|
|
78
|
+
export const convert = (xml, options = {}) => {
|
|
79
|
+
const root = readXml(xml);
|
|
80
|
+
assertSupportedNamespaces(root);
|
|
81
|
+
if (root.name !== "definitions" || root.namespace !== MODEL_NAMESPACE) {
|
|
82
|
+
const found = root.namespace ? `{${root.namespace}}${root.name}` : root.name;
|
|
83
|
+
throw new ConversionError("not-bpmn-definitions", `root element is ${found}, expected a definitions element in the BPMN 2.0 model namespace ${MODEL_NAMESPACE}`);
|
|
84
|
+
}
|
|
85
|
+
const prefixes = new Prefixes(root);
|
|
86
|
+
const graph = root.children
|
|
87
|
+
.filter((child) => isMapped(child) && ROOT_ELEMENTS.includes(child.name))
|
|
88
|
+
.map((child) => mapElement(child, root, prefixes));
|
|
89
|
+
return {
|
|
90
|
+
document: {
|
|
91
|
+
"@context": [COMBINED_CONTEXT_IRI, { "@base": options.base ?? defaultBase(options.fileName), ...prefixes.context() }],
|
|
92
|
+
"@graph": graph,
|
|
93
|
+
},
|
|
94
|
+
warnings: collectWarnings(root),
|
|
95
|
+
};
|
|
96
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Warning } from "./warnings.ts";
|
|
2
|
+
import type { XmlElement } from "./xml-reader.ts";
|
|
3
|
+
export type ExtensionValue = string | {
|
|
4
|
+
[property: string]: ExtensionValue | ExtensionValue[];
|
|
5
|
+
};
|
|
6
|
+
type ExtensionProperties = Record<string, ExtensionValue | ExtensionValue[]>;
|
|
7
|
+
export declare const isExtensionNamespace: (namespace: string) => boolean;
|
|
8
|
+
export declare const isExtensionAttribute: (key: string) => boolean;
|
|
9
|
+
export declare class Prefixes {
|
|
10
|
+
private readonly hints;
|
|
11
|
+
private readonly declared;
|
|
12
|
+
private readonly terms;
|
|
13
|
+
private readonly byNamespace;
|
|
14
|
+
private readonly byPrefix;
|
|
15
|
+
private generated;
|
|
16
|
+
constructor(root: XmlElement);
|
|
17
|
+
private available;
|
|
18
|
+
prefixFor(namespace: string): string;
|
|
19
|
+
context(): Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
export declare const extensionProperties: (element: XmlElement, prefixes: Prefixes) => ExtensionProperties;
|
|
22
|
+
export declare const extensionWarnings: (container: XmlElement) => Warning[];
|
|
23
|
+
export {};
|