@superbee/core 0.2.0-pre.3 → 0.2.0-pre.31
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/README.md +1084 -0
- package/dist/artifact-contract.d.ts +90 -0
- package/dist/artifact-contract.d.ts.map +1 -0
- package/dist/artifact-contract.js +205 -0
- package/dist/artifact-contract.js.map +1 -0
- package/dist/backend.d.ts +19 -1
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +83 -36
- package/dist/backend.js.map +1 -1
- package/dist/blob-contract.d.ts +80 -0
- package/dist/blob-contract.d.ts.map +1 -0
- package/dist/blob-contract.js +131 -0
- package/dist/blob-contract.js.map +1 -0
- package/dist/blob-journal.d.ts +302 -0
- package/dist/blob-journal.d.ts.map +1 -0
- package/dist/blob-journal.js +540 -0
- package/dist/blob-journal.js.map +1 -0
- package/dist/body-replace-guards.d.ts +52 -0
- package/dist/body-replace-guards.d.ts.map +1 -0
- package/dist/body-replace-guards.js +176 -0
- package/dist/body-replace-guards.js.map +1 -0
- package/dist/builtin-recipes/content.d.ts +93 -0
- package/dist/builtin-recipes/content.d.ts.map +1 -0
- package/dist/builtin-recipes/content.js +288 -0
- package/dist/builtin-recipes/content.js.map +1 -0
- package/dist/builtin-recipes.d.ts +10 -0
- package/dist/builtin-recipes.d.ts.map +1 -0
- package/dist/builtin-recipes.js +97 -0
- package/dist/builtin-recipes.js.map +1 -0
- package/dist/bundle-health/index.d.ts +14 -0
- package/dist/bundle-health/index.d.ts.map +1 -0
- package/dist/bundle-health/index.js +12 -0
- package/dist/bundle-health/index.js.map +1 -0
- package/dist/bundle-health/kind-findings.d.ts +44 -0
- package/dist/bundle-health/kind-findings.d.ts.map +1 -0
- package/dist/bundle-health/kind-findings.js +68 -0
- package/dist/bundle-health/kind-findings.js.map +1 -0
- package/dist/bundle-health/legacy-page.d.ts +39 -0
- package/dist/bundle-health/legacy-page.d.ts.map +1 -0
- package/dist/bundle-health/legacy-page.js +50 -0
- package/dist/bundle-health/legacy-page.js.map +1 -0
- package/dist/bundle-health/report.d.ts +202 -0
- package/dist/bundle-health/report.d.ts.map +1 -0
- package/dist/bundle-health/report.js +438 -0
- package/dist/bundle-health/report.js.map +1 -0
- package/dist/bundle-ops.d.ts +1 -1
- package/dist/bundle-ops.d.ts.map +1 -1
- package/dist/bundle-ops.js +2 -2
- package/dist/bundle-ops.js.map +1 -1
- package/dist/bundle.d.ts +2 -1
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +3 -3
- package/dist/bundle.js.map +1 -1
- package/dist/code-point-order.d.ts +8 -0
- package/dist/code-point-order.d.ts.map +1 -0
- package/dist/code-point-order.js +20 -0
- package/dist/code-point-order.js.map +1 -0
- package/dist/connector-request.d.ts +87 -0
- package/dist/connector-request.d.ts.map +1 -0
- package/dist/connector-request.js +370 -0
- package/dist/connector-request.js.map +1 -0
- package/dist/connectors.d.ts +262 -0
- package/dist/connectors.d.ts.map +1 -0
- package/dist/connectors.js +1179 -0
- package/dist/connectors.js.map +1 -0
- package/dist/cross-bundle.d.ts +135 -0
- package/dist/cross-bundle.d.ts.map +1 -0
- package/dist/cross-bundle.js +186 -0
- package/dist/cross-bundle.js.map +1 -0
- package/dist/dependencies.d.ts +94 -0
- package/dist/dependencies.d.ts.map +1 -0
- package/dist/dependencies.js +180 -0
- package/dist/dependencies.js.map +1 -0
- package/dist/document-codec.d.ts +5 -1
- package/dist/document-codec.d.ts.map +1 -1
- package/dist/document-codec.js +7 -4
- package/dist/document-codec.js.map +1 -1
- package/dist/document-field-actions.d.ts +31 -1
- package/dist/document-field-actions.d.ts.map +1 -1
- package/dist/document-field-actions.js +137 -34
- package/dist/document-field-actions.js.map +1 -1
- package/dist/document-mutation.d.ts +22 -10
- package/dist/document-mutation.d.ts.map +1 -1
- package/dist/document-mutation.js +61 -27
- package/dist/document-mutation.js.map +1 -1
- package/dist/document-write-policy.d.ts.map +1 -1
- package/dist/document-write-policy.js +4 -2
- package/dist/document-write-policy.js.map +1 -1
- package/dist/domain-model.d.ts +73 -0
- package/dist/domain-model.d.ts.map +1 -0
- package/dist/domain-model.js +169 -0
- package/dist/domain-model.js.map +1 -0
- package/dist/engine.d.ts +16 -8
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +42 -4
- package/dist/engine.js.map +1 -1
- package/dist/file-journaled-backend-internal.d.ts +21 -0
- package/dist/file-journaled-backend-internal.d.ts.map +1 -0
- package/dist/file-journaled-backend-internal.js +12 -0
- package/dist/file-journaled-backend-internal.js.map +1 -0
- package/dist/file-journaled-backend.d.ts +160 -0
- package/dist/file-journaled-backend.d.ts.map +1 -0
- package/dist/file-journaled-backend.js +1345 -0
- package/dist/file-journaled-backend.js.map +1 -0
- package/dist/filesystem-host.d.ts +15 -0
- package/dist/filesystem-host.d.ts.map +1 -0
- package/dist/filesystem-host.js +20 -0
- package/dist/filesystem-host.js.map +1 -0
- package/dist/filesystem-identity.d.ts +86 -4
- package/dist/filesystem-identity.d.ts.map +1 -1
- package/dist/filesystem-identity.js +338 -102
- package/dist/filesystem-identity.js.map +1 -1
- package/dist/filesystem-lock.d.ts +16 -3
- package/dist/filesystem-lock.d.ts.map +1 -1
- package/dist/filesystem-lock.js +323 -77
- package/dist/filesystem-lock.js.map +1 -1
- package/dist/filesystem-push-role.d.ts +77 -0
- package/dist/filesystem-push-role.d.ts.map +1 -0
- package/dist/filesystem-push-role.js +165 -0
- package/dist/filesystem-push-role.js.map +1 -0
- package/dist/filesystem.d.ts +17 -0
- package/dist/filesystem.d.ts.map +1 -0
- package/dist/filesystem.js +18 -0
- package/dist/filesystem.js.map +1 -0
- package/dist/governed-body-write.d.ts +106 -0
- package/dist/governed-body-write.d.ts.map +1 -0
- package/dist/governed-body-write.js +251 -0
- package/dist/governed-body-write.js.map +1 -0
- package/dist/host-policy-snapshot.d.ts +9 -0
- package/dist/host-policy-snapshot.d.ts.map +1 -0
- package/dist/host-policy-snapshot.js +33 -0
- package/dist/host-policy-snapshot.js.map +1 -0
- package/dist/host-text.d.ts +31 -0
- package/dist/host-text.d.ts.map +1 -0
- package/dist/host-text.js +77 -0
- package/dist/host-text.js.map +1 -0
- package/dist/hosted-client/binding.d.ts +7 -0
- package/dist/hosted-client/binding.d.ts.map +1 -0
- package/dist/hosted-client/binding.js +10 -0
- package/dist/hosted-client/binding.js.map +1 -0
- package/dist/hosted-client/blob-delivery.d.ts +67 -0
- package/dist/hosted-client/blob-delivery.d.ts.map +1 -0
- package/dist/hosted-client/blob-delivery.js +169 -0
- package/dist/hosted-client/blob-delivery.js.map +1 -0
- package/dist/hosted-client/blob-write.d.ts +386 -0
- package/dist/hosted-client/blob-write.d.ts.map +1 -0
- package/dist/hosted-client/blob-write.js +770 -0
- package/dist/hosted-client/blob-write.js.map +1 -0
- package/dist/hosted-client/bundle-listing.d.ts +46 -0
- package/dist/hosted-client/bundle-listing.d.ts.map +1 -0
- package/dist/hosted-client/bundle-listing.js +36 -0
- package/dist/hosted-client/bundle-listing.js.map +1 -0
- package/dist/hosted-client/client.d.ts +219 -0
- package/dist/hosted-client/client.d.ts.map +1 -0
- package/dist/hosted-client/client.js +309 -0
- package/dist/hosted-client/client.js.map +1 -0
- package/dist/hosted-client/directory.d.ts +46 -0
- package/dist/hosted-client/directory.d.ts.map +1 -0
- package/dist/hosted-client/directory.js +74 -0
- package/dist/hosted-client/directory.js.map +1 -0
- package/dist/hosted-client/errors.d.ts +26 -0
- package/dist/hosted-client/errors.d.ts.map +1 -0
- package/dist/hosted-client/errors.js +35 -0
- package/dist/hosted-client/errors.js.map +1 -0
- package/dist/hosted-client/inbox.d.ts +320 -0
- package/dist/hosted-client/inbox.d.ts.map +1 -0
- package/dist/hosted-client/inbox.js +379 -0
- package/dist/hosted-client/inbox.js.map +1 -0
- package/dist/hosted-client/index.d.ts +30 -0
- package/dist/hosted-client/index.d.ts.map +1 -0
- package/dist/hosted-client/index.js +32 -0
- package/dist/hosted-client/index.js.map +1 -0
- package/dist/hosted-client/journal.d.ts +103 -0
- package/dist/hosted-client/journal.d.ts.map +1 -0
- package/dist/hosted-client/journal.js +464 -0
- package/dist/hosted-client/journal.js.map +1 -0
- package/dist/hosted-client/node.d.ts +74 -0
- package/dist/hosted-client/node.d.ts.map +1 -0
- package/dist/hosted-client/node.js +219 -0
- package/dist/hosted-client/node.js.map +1 -0
- package/dist/hosted-client/reference.d.ts +12 -0
- package/dist/hosted-client/reference.d.ts.map +1 -0
- package/dist/hosted-client/reference.js +29 -0
- package/dist/hosted-client/reference.js.map +1 -0
- package/dist/hosted-client/write.d.ts +217 -0
- package/dist/hosted-client/write.d.ts.map +1 -0
- package/dist/hosted-client/write.js +418 -0
- package/dist/hosted-client/write.js.map +1 -0
- package/dist/hosted-transport/answer-rows.d.ts +243 -0
- package/dist/hosted-transport/answer-rows.d.ts.map +1 -0
- package/dist/hosted-transport/answer-rows.js +454 -0
- package/dist/hosted-transport/answer-rows.js.map +1 -0
- package/dist/hosted-transport/blob-reads.d.ts +35 -0
- package/dist/hosted-transport/blob-reads.d.ts.map +1 -0
- package/dist/hosted-transport/blob-reads.js +179 -0
- package/dist/hosted-transport/blob-reads.js.map +1 -0
- package/dist/hosted-transport/blob-write.d.ts +34 -0
- package/dist/hosted-transport/blob-write.d.ts.map +1 -0
- package/dist/hosted-transport/blob-write.js +115 -0
- package/dist/hosted-transport/blob-write.js.map +1 -0
- package/dist/hosted-transport/carrier.d.ts +151 -0
- package/dist/hosted-transport/carrier.d.ts.map +1 -0
- package/dist/hosted-transport/carrier.js +260 -0
- package/dist/hosted-transport/carrier.js.map +1 -0
- package/dist/hosted-transport/history-pages.d.ts +55 -0
- package/dist/hosted-transport/history-pages.d.ts.map +1 -0
- package/dist/hosted-transport/history-pages.js +69 -0
- package/dist/hosted-transport/history-pages.js.map +1 -0
- package/dist/hosted-transport/index.d.ts +18 -0
- package/dist/hosted-transport/index.d.ts.map +1 -0
- package/dist/hosted-transport/index.js +18 -0
- package/dist/hosted-transport/index.js.map +1 -0
- package/dist/hosted-transport/operations.d.ts +85 -0
- package/dist/hosted-transport/operations.d.ts.map +1 -0
- package/dist/hosted-transport/operations.js +128 -0
- package/dist/hosted-transport/operations.js.map +1 -0
- package/dist/hosted-transport/paged-reads.d.ts +87 -0
- package/dist/hosted-transport/paged-reads.d.ts.map +1 -0
- package/dist/hosted-transport/paged-reads.js +238 -0
- package/dist/hosted-transport/paged-reads.js.map +1 -0
- package/dist/hosted-transport/read-adapter.d.ts +256 -0
- package/dist/hosted-transport/read-adapter.d.ts.map +1 -0
- package/dist/hosted-transport/read-adapter.js +568 -0
- package/dist/hosted-transport/read-adapter.js.map +1 -0
- package/dist/hosted-transport/root-write.d.ts +114 -0
- package/dist/hosted-transport/root-write.d.ts.map +1 -0
- package/dist/hosted-transport/root-write.js +171 -0
- package/dist/hosted-transport/root-write.js.map +1 -0
- package/dist/hosted-transport/whole-document-transport.d.ts +204 -0
- package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -0
- package/dist/hosted-transport/whole-document-transport.js +447 -0
- package/dist/hosted-transport/whole-document-transport.js.map +1 -0
- package/dist/index.d.ts +34 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -8
- package/dist/index.js.map +1 -1
- package/dist/indexeddb-backend.d.ts +28 -37
- package/dist/indexeddb-backend.d.ts.map +1 -1
- package/dist/indexeddb-backend.js +467 -113
- package/dist/indexeddb-backend.js.map +1 -1
- package/dist/journaled-backend.d.ts +232 -15
- package/dist/journaled-backend.d.ts.map +1 -1
- package/dist/journaled-backend.js +254 -55
- package/dist/journaled-backend.js.map +1 -1
- package/dist/kind-authoring.d.ts +170 -0
- package/dist/kind-authoring.d.ts.map +1 -0
- package/dist/kind-authoring.js +451 -0
- package/dist/kind-authoring.js.map +1 -0
- package/dist/kind-conformance-error.d.ts +15 -0
- package/dist/kind-conformance-error.d.ts.map +1 -0
- package/dist/kind-conformance-error.js +20 -0
- package/dist/kind-conformance-error.js.map +1 -0
- package/dist/kind-coverage.d.ts +99 -0
- package/dist/kind-coverage.d.ts.map +1 -0
- package/dist/kind-coverage.js +186 -0
- package/dist/kind-coverage.js.map +1 -0
- package/dist/kind-field-mutation.d.ts +4 -0
- package/dist/kind-field-mutation.d.ts.map +1 -1
- package/dist/kind-field-mutation.js +28 -3
- package/dist/kind-field-mutation.js.map +1 -1
- package/dist/kinds-load.js +4 -4
- package/dist/kinds-load.js.map +1 -1
- package/dist/kinds.d.ts +65 -2
- package/dist/kinds.d.ts.map +1 -1
- package/dist/kinds.js +341 -21
- package/dist/kinds.js.map +1 -1
- package/dist/link-types.d.ts +26 -0
- package/dist/link-types.d.ts.map +1 -0
- package/dist/link-types.js +57 -0
- package/dist/link-types.js.map +1 -0
- package/dist/links.d.ts +21 -3
- package/dist/links.d.ts.map +1 -1
- package/dist/links.js +213 -14
- package/dist/links.js.map +1 -1
- package/dist/managed-document-metadata.d.ts +2 -0
- package/dist/managed-document-metadata.d.ts.map +1 -0
- package/dist/managed-document-metadata.js +9 -0
- package/dist/managed-document-metadata.js.map +1 -0
- package/dist/memory-backend.d.ts.map +1 -1
- package/dist/memory-backend.js +6 -2
- package/dist/memory-backend.js.map +1 -1
- package/dist/paths.d.ts +16 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +25 -0
- package/dist/paths.js.map +1 -1
- package/dist/platform.d.ts +13 -2
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +16 -0
- package/dist/platform.js.map +1 -1
- package/dist/portable-export.d.ts +119 -0
- package/dist/portable-export.d.ts.map +1 -0
- package/dist/portable-export.js +501 -0
- package/dist/portable-export.js.map +1 -0
- package/dist/publication-filesystem.d.ts +1 -1
- package/dist/publication-filesystem.d.ts.map +1 -1
- package/dist/publication-filesystem.js +1 -1
- package/dist/publication-filesystem.js.map +1 -1
- package/dist/qualified-links.d.ts +67 -0
- package/dist/qualified-links.d.ts.map +1 -0
- package/dist/qualified-links.js +117 -0
- package/dist/qualified-links.js.map +1 -0
- package/dist/query-filter.d.ts +16 -2
- package/dist/query-filter.d.ts.map +1 -1
- package/dist/query-filter.js +40 -1
- package/dist/query-filter.js.map +1 -1
- package/dist/query-order.d.ts +22 -0
- package/dist/query-order.d.ts.map +1 -0
- package/dist/query-order.js +42 -0
- package/dist/query-order.js.map +1 -0
- package/dist/recipe-lifecycle/errors.d.ts +96 -0
- package/dist/recipe-lifecycle/errors.d.ts.map +1 -0
- package/dist/recipe-lifecycle/errors.js +122 -0
- package/dist/recipe-lifecycle/errors.js.map +1 -0
- package/dist/recipe-lifecycle/evolution.d.ts +112 -0
- package/dist/recipe-lifecycle/evolution.d.ts.map +1 -0
- package/dist/recipe-lifecycle/evolution.js +941 -0
- package/dist/recipe-lifecycle/evolution.js.map +1 -0
- package/dist/recipe-lifecycle/index.d.ts +30 -0
- package/dist/recipe-lifecycle/index.d.ts.map +1 -0
- package/dist/recipe-lifecycle/index.js +26 -0
- package/dist/recipe-lifecycle/index.js.map +1 -0
- package/dist/recipe-lifecycle/install.d.ts +155 -0
- package/dist/recipe-lifecycle/install.d.ts.map +1 -0
- package/dist/recipe-lifecycle/install.js +594 -0
- package/dist/recipe-lifecycle/install.js.map +1 -0
- package/dist/recipe-lifecycle/legacy-aliases.d.ts +16 -0
- package/dist/recipe-lifecycle/legacy-aliases.d.ts.map +1 -0
- package/dist/recipe-lifecycle/legacy-aliases.js +51 -0
- package/dist/recipe-lifecycle/legacy-aliases.js.map +1 -0
- package/dist/recipe-lifecycle/stamp.d.ts +151 -0
- package/dist/recipe-lifecycle/stamp.d.ts.map +1 -0
- package/dist/recipe-lifecycle/stamp.js +364 -0
- package/dist/recipe-lifecycle/stamp.js.map +1 -0
- package/dist/recipe-set-preflight.d.ts +139 -0
- package/dist/recipe-set-preflight.d.ts.map +1 -0
- package/dist/recipe-set-preflight.js +536 -0
- package/dist/recipe-set-preflight.js.map +1 -0
- package/dist/recipes.d.ts +29 -1
- package/dist/recipes.d.ts.map +1 -1
- package/dist/recipes.js +137 -1
- package/dist/recipes.js.map +1 -1
- package/dist/record-overlay/apply.d.ts +43 -0
- package/dist/record-overlay/apply.d.ts.map +1 -0
- package/dist/record-overlay/apply.js +527 -0
- package/dist/record-overlay/apply.js.map +1 -0
- package/dist/record-overlay/canonical.d.ts +22 -0
- package/dist/record-overlay/canonical.d.ts.map +1 -0
- package/dist/record-overlay/canonical.js +47 -0
- package/dist/record-overlay/canonical.js.map +1 -0
- package/dist/record-overlay/digest.d.ts +4 -0
- package/dist/record-overlay/digest.d.ts.map +1 -0
- package/dist/record-overlay/digest.js +11 -0
- package/dist/record-overlay/digest.js.map +1 -0
- package/dist/record-overlay/errors.d.ts +44 -0
- package/dist/record-overlay/errors.d.ts.map +1 -0
- package/dist/record-overlay/errors.js +55 -0
- package/dist/record-overlay/errors.js.map +1 -0
- package/dist/record-overlay/findings.d.ts +5 -0
- package/dist/record-overlay/findings.d.ts.map +1 -0
- package/dist/record-overlay/findings.js +83 -0
- package/dist/record-overlay/findings.js.map +1 -0
- package/dist/record-overlay/index.d.ts +23 -0
- package/dist/record-overlay/index.d.ts.map +1 -0
- package/dist/record-overlay/index.js +21 -0
- package/dist/record-overlay/index.js.map +1 -0
- package/dist/record-overlay/plan.d.ts +12 -0
- package/dist/record-overlay/plan.d.ts.map +1 -0
- package/dist/record-overlay/plan.js +285 -0
- package/dist/record-overlay/plan.js.map +1 -0
- package/dist/record-overlay/policy.d.ts +69 -0
- package/dist/record-overlay/policy.d.ts.map +1 -0
- package/dist/record-overlay/policy.js +228 -0
- package/dist/record-overlay/policy.js.map +1 -0
- package/dist/record-overlay/redact.d.ts +3 -0
- package/dist/record-overlay/redact.d.ts.map +1 -0
- package/dist/record-overlay/redact.js +27 -0
- package/dist/record-overlay/redact.js.map +1 -0
- package/dist/record-overlay/signal-kind.d.ts +30 -0
- package/dist/record-overlay/signal-kind.d.ts.map +1 -0
- package/dist/record-overlay/signal-kind.js +38 -0
- package/dist/record-overlay/signal-kind.js.map +1 -0
- package/dist/record-overlay/signal-text.d.ts +45 -0
- package/dist/record-overlay/signal-text.d.ts.map +1 -0
- package/dist/record-overlay/signal-text.js +116 -0
- package/dist/record-overlay/signal-text.js.map +1 -0
- package/dist/record-overlay/source-index.d.ts +19 -0
- package/dist/record-overlay/source-index.d.ts.map +1 -0
- package/dist/record-overlay/source-index.js +102 -0
- package/dist/record-overlay/source-index.js.map +1 -0
- package/dist/record-overlay/types.d.ts +291 -0
- package/dist/record-overlay/types.d.ts.map +1 -0
- package/dist/record-overlay/types.js +2 -0
- package/dist/record-overlay/types.js.map +1 -0
- package/dist/remote-backend.d.ts +67 -67
- package/dist/remote-backend.d.ts.map +1 -1
- package/dist/remote-backend.js +168 -201
- package/dist/remote-backend.js.map +1 -1
- package/dist/remote-document-codec.d.ts +2 -1
- package/dist/remote-document-codec.d.ts.map +1 -1
- package/dist/remote-document-codec.js +3 -2
- package/dist/remote-document-codec.js.map +1 -1
- package/dist/remote-error.d.ts +38 -0
- package/dist/remote-error.d.ts.map +1 -0
- package/dist/remote-error.js +59 -0
- package/dist/remote-error.js.map +1 -0
- package/dist/remote-operations.d.ts +0 -40
- package/dist/remote-operations.d.ts.map +1 -1
- package/dist/remote-operations.js +26 -6
- package/dist/remote-operations.js.map +1 -1
- package/dist/remote-parsers.d.ts +86 -0
- package/dist/remote-parsers.d.ts.map +1 -0
- package/dist/remote-parsers.js +181 -0
- package/dist/remote-parsers.js.map +1 -0
- package/dist/remote.d.ts +5 -2
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +5 -1
- package/dist/remote.js.map +1 -1
- package/dist/search/backend-source.d.ts +6 -0
- package/dist/search/backend-source.d.ts.map +1 -0
- package/dist/search/backend-source.js +33 -0
- package/dist/search/backend-source.js.map +1 -0
- package/dist/search/contract.d.ts +151 -0
- package/dist/search/contract.d.ts.map +1 -0
- package/dist/search/contract.js +78 -0
- package/dist/search/contract.js.map +1 -0
- package/dist/search/errors.d.ts +30 -0
- package/dist/search/errors.d.ts.map +1 -0
- package/dist/search/errors.js +50 -0
- package/dist/search/errors.js.map +1 -0
- package/dist/search/identity.d.ts +12 -0
- package/dist/search/identity.d.ts.map +1 -0
- package/dist/search/identity.js +90 -0
- package/dist/search/identity.js.map +1 -0
- package/dist/search/index.d.ts +16 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +15 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/memory-source.d.ts +36 -0
- package/dist/search/memory-source.d.ts.map +1 -0
- package/dist/search/memory-source.js +235 -0
- package/dist/search/memory-source.js.map +1 -0
- package/dist/search/rank.d.ts +34 -0
- package/dist/search/rank.d.ts.map +1 -0
- package/dist/search/rank.js +129 -0
- package/dist/search/rank.js.map +1 -0
- package/dist/search/row-text.d.ts +38 -0
- package/dist/search/row-text.d.ts.map +1 -0
- package/dist/search/row-text.js +88 -0
- package/dist/search/row-text.js.map +1 -0
- package/dist/search/search.d.ts +28 -0
- package/dist/search/search.d.ts.map +1 -0
- package/dist/search/search.js +257 -0
- package/dist/search/search.js.map +1 -0
- package/dist/search/source.d.ts +67 -0
- package/dist/search/source.d.ts.map +1 -0
- package/dist/search/source.js +2 -0
- package/dist/search/source.js.map +1 -0
- package/dist/search/text.d.ts +47 -0
- package/dist/search/text.d.ts.map +1 -0
- package/dist/search/text.js +150 -0
- package/dist/search/text.js.map +1 -0
- package/dist/site-capabilities.d.ts +345 -0
- package/dist/site-capabilities.d.ts.map +1 -0
- package/dist/site-capabilities.js +724 -0
- package/dist/site-capabilities.js.map +1 -0
- package/dist/source-engine/guard.d.ts +78 -0
- package/dist/source-engine/guard.d.ts.map +1 -0
- package/dist/source-engine/guard.js +423 -0
- package/dist/source-engine/guard.js.map +1 -0
- package/dist/source-engine/index.d.ts +26 -0
- package/dist/source-engine/index.d.ts.map +1 -0
- package/dist/source-engine/index.js +21 -0
- package/dist/source-engine/index.js.map +1 -0
- package/dist/source-engine/machine-state.d.ts +74 -0
- package/dist/source-engine/machine-state.d.ts.map +1 -0
- package/dist/source-engine/machine-state.js +48 -0
- package/dist/source-engine/machine-state.js.map +1 -0
- package/dist/source-engine/observe.d.ts +18 -0
- package/dist/source-engine/observe.d.ts.map +1 -0
- package/dist/source-engine/observe.js +620 -0
- package/dist/source-engine/observe.js.map +1 -0
- package/dist/source-engine/overlay.d.ts +49 -0
- package/dist/source-engine/overlay.d.ts.map +1 -0
- package/dist/source-engine/overlay.js +114 -0
- package/dist/source-engine/overlay.js.map +1 -0
- package/dist/source-engine/robots.d.ts +53 -0
- package/dist/source-engine/robots.d.ts.map +1 -0
- package/dist/source-engine/robots.js +158 -0
- package/dist/source-engine/robots.js.map +1 -0
- package/dist/source-engine/types.d.ts +287 -0
- package/dist/source-engine/types.d.ts.map +1 -0
- package/dist/source-engine/types.js +2 -0
- package/dist/source-engine/types.js.map +1 -0
- package/dist/source-harness/conformance.d.ts +16 -0
- package/dist/source-harness/conformance.d.ts.map +1 -0
- package/dist/source-harness/conformance.js +266 -0
- package/dist/source-harness/conformance.js.map +1 -0
- package/dist/source-harness/fixture.d.ts +95 -0
- package/dist/source-harness/fixture.d.ts.map +1 -0
- package/dist/source-harness/fixture.js +273 -0
- package/dist/source-harness/fixture.js.map +1 -0
- package/dist/source-harness/index.d.ts +22 -0
- package/dist/source-harness/index.d.ts.map +1 -0
- package/dist/source-harness/index.js +19 -0
- package/dist/source-harness/index.js.map +1 -0
- package/dist/source-harness/peer.d.ts +74 -0
- package/dist/source-harness/peer.d.ts.map +1 -0
- package/dist/source-harness/peer.js +106 -0
- package/dist/source-harness/peer.js.map +1 -0
- package/dist/source-profiles/index.d.ts +31 -0
- package/dist/source-profiles/index.d.ts.map +1 -0
- package/dist/source-profiles/index.js +206 -0
- package/dist/source-profiles/index.js.map +1 -0
- package/dist/source-profiles/link-header.d.ts +6 -0
- package/dist/source-profiles/link-header.d.ts.map +1 -0
- package/dist/source-profiles/link-header.js +131 -0
- package/dist/source-profiles/link-header.js.map +1 -0
- package/dist/storage.d.ts +6 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +4 -1
- package/dist/storage.js.map +1 -1
- package/dist/types.d.ts +38 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -10
- package/dist/types.js.map +1 -1
- package/dist/uncertain-write.d.ts +161 -19
- package/dist/uncertain-write.d.ts.map +1 -1
- package/dist/uncertain-write.js +90 -31
- package/dist/uncertain-write.js.map +1 -1
- package/dist/versioning.d.ts +9 -4
- package/dist/versioning.d.ts.map +1 -1
- package/dist/versioning.js +9 -4
- package/dist/versioning.js.map +1 -1
- package/dist/write-identity.d.ts +5 -0
- package/dist/write-identity.d.ts.map +1 -0
- package/dist/write-identity.js +9 -0
- package/dist/write-identity.js.map +1 -0
- package/package.json +107 -2
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
// Recipe installation: create-only, expect-absent CAS per artifact through the shared document
|
|
2
|
+
// mutation boundary, so a built-in and an external recipe install through the same function and
|
|
3
|
+
// an existing document is never overwritten. Storage-neutral: no Node globals or builtins.
|
|
4
|
+
import { query, readBlob, readBundleOkfVersion, readDoc, writeBlob } from "../bundle-ops.js";
|
|
5
|
+
import { checkConnectorAgainstKinds, CONNECTORS_PREFIX } from "../connectors.js";
|
|
6
|
+
import { resolveContentType } from "../content-type.js";
|
|
7
|
+
import { mutateDocument } from "../document-mutation.js";
|
|
8
|
+
import { InvalidInputError, OkfActorError } from "../errors.js";
|
|
9
|
+
import { isOkfActor } from "../okf-actor.js";
|
|
10
|
+
import { CONVENTION_TYPE, CONVENTIONS_PREFIX, PROGRESS_STATUS_FIELD, buildKindRegistry, progressStatusStorageField, } from "../kinds.js";
|
|
11
|
+
import { okfValuesEqual } from "../okf-authored-values.js";
|
|
12
|
+
import { assertAuthoredOkfStandardFields } from "../okf-standard-fields.js";
|
|
13
|
+
import { PAGE_REGISTRY_PREFIX, parseRegistration, VIEW_REGISTRY_PREFIX } from "../page.js";
|
|
14
|
+
import { RECIPE_PROGRESS_STATUS_TOKEN } from "../recipes.js";
|
|
15
|
+
import { VersionConflict } from "../versioning.js";
|
|
16
|
+
import { ConnectorTargetUnsatisfied, RecipeAssetConflict, RecipeEditionChanged, RecipeInputError } from "./errors.js";
|
|
17
|
+
import { RECIPE_STAMP_KEY, normalizeDefinitionBody, recipeStampIdentity, recipeStampState, conventionStampState, withRecipeStamp, worstRecipeStampState, } from "./stamp.js";
|
|
18
|
+
import { findLegacyViewConvention, governsKind, legacyEntryAlias, legacyRegistryAlias, VIEW_KIND_NAME, } from "./legacy-aliases.js";
|
|
19
|
+
function materializeRecipeBody(body, storageField) {
|
|
20
|
+
return body.replaceAll(RECIPE_PROGRESS_STATUS_TOKEN, storageField);
|
|
21
|
+
}
|
|
22
|
+
const RECIPE_WRITE_REGISTRY = { kinds: new Map(), warnings: [] };
|
|
23
|
+
function plainRecord(value) {
|
|
24
|
+
return value !== null && typeof value === "object" && !Array.isArray(value)
|
|
25
|
+
? value
|
|
26
|
+
: undefined;
|
|
27
|
+
}
|
|
28
|
+
function renameLogicalFieldMap(value, storageField, recipeId, docId) {
|
|
29
|
+
const record = plainRecord(value);
|
|
30
|
+
if (!record || !Object.prototype.hasOwnProperty.call(record, PROGRESS_STATUS_FIELD))
|
|
31
|
+
return value;
|
|
32
|
+
if (storageField !== PROGRESS_STATUS_FIELD
|
|
33
|
+
&& Object.prototype.hasOwnProperty.call(record, storageField)) {
|
|
34
|
+
throw new RecipeInputError(`recipe '${recipeId}' convention '${docId}' declares both logical '${PROGRESS_STATUS_FIELD}' and storage field '${storageField}'`);
|
|
35
|
+
}
|
|
36
|
+
return Object.fromEntries(Object.entries(record).map(([field, fieldValue]) => [
|
|
37
|
+
field === PROGRESS_STATUS_FIELD ? storageField : field,
|
|
38
|
+
fieldValue,
|
|
39
|
+
]));
|
|
40
|
+
}
|
|
41
|
+
/** Materialize explicit logical recipe fields into the target edition's physical convention keys. */
|
|
42
|
+
export function materializeRecipeForEdition(recipe, okfVersion) {
|
|
43
|
+
const storageField = progressStatusStorageField(okfVersion);
|
|
44
|
+
if (!storageField) {
|
|
45
|
+
throw new RecipeInputError(`recipe '${recipe.id}' cannot target unsupported OKF mutation version '${okfVersion}'`);
|
|
46
|
+
}
|
|
47
|
+
const docs = recipe.docs.map((doc) => {
|
|
48
|
+
const fields = plainRecord(doc.frontmatter.fields);
|
|
49
|
+
if (!fields)
|
|
50
|
+
return doc;
|
|
51
|
+
const listField = (value) => {
|
|
52
|
+
if (!Array.isArray(value) || !value.includes(PROGRESS_STATUS_FIELD))
|
|
53
|
+
return value;
|
|
54
|
+
if (value.includes(storageField)) {
|
|
55
|
+
throw new RecipeInputError(`recipe '${recipe.id}' convention '${doc.id}' declares both logical '${PROGRESS_STATUS_FIELD}' and storage field '${storageField}'`);
|
|
56
|
+
}
|
|
57
|
+
return value.map((field) => field === PROGRESS_STATUS_FIELD ? storageField : field);
|
|
58
|
+
};
|
|
59
|
+
const materializedFields = { ...fields };
|
|
60
|
+
for (const key of ["required", "optional"]) {
|
|
61
|
+
if (Object.prototype.hasOwnProperty.call(fields, key)) {
|
|
62
|
+
materializedFields[key] = listField(fields[key]);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
for (const key of ["values", "value_descriptions", "terminal", "descriptions", "types"]) {
|
|
66
|
+
if (Object.prototype.hasOwnProperty.call(fields, key)) {
|
|
67
|
+
materializedFields[key] = renameLogicalFieldMap(fields[key], storageField, recipe.id, doc.id);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
...doc,
|
|
72
|
+
frontmatter: { ...doc.frontmatter, fields: materializedFields },
|
|
73
|
+
body: materializeRecipeBody(doc.body, storageField),
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
return { ...recipe, docs };
|
|
77
|
+
}
|
|
78
|
+
export function recipeDocumentForApply(doc, okfVersion, now) {
|
|
79
|
+
return okfVersion === "0.1"
|
|
80
|
+
? { ...doc, frontmatter: { ...doc.frontmatter, timestamp: now } }
|
|
81
|
+
: { ...doc, frontmatter: { ...doc.frontmatter } };
|
|
82
|
+
}
|
|
83
|
+
/** Parsed recipe carriers contain YAML values. Copy mappings locally so preparation neither
|
|
84
|
+
* aliases its source nor changes the record realm used by the owning OKF value comparator. */
|
|
85
|
+
function cloneRecipeData(value) {
|
|
86
|
+
if (value instanceof Date)
|
|
87
|
+
return new Date(value.getTime());
|
|
88
|
+
if (value instanceof Uint8Array)
|
|
89
|
+
return Uint8Array.from(value);
|
|
90
|
+
if (Array.isArray(value))
|
|
91
|
+
return value.map((item) => cloneRecipeData(item));
|
|
92
|
+
if (value !== null && typeof value === "object") {
|
|
93
|
+
return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, cloneRecipeData(item)]));
|
|
94
|
+
}
|
|
95
|
+
return value;
|
|
96
|
+
}
|
|
97
|
+
/** Prepare the same candidates installRecipe creates. The caller retains the explicit preparation
|
|
98
|
+
* time across preview/replay; source identity is calculated before edition materialization.
|
|
99
|
+
* The result shares no mutable data with the parsed source. It is proposal data, not authority. */
|
|
100
|
+
export function prepareRecipeInstall(recipe, options) {
|
|
101
|
+
if (typeof options.now !== "string") {
|
|
102
|
+
throw new RecipeInputError("recipe installation preparation requires an explicit retained time");
|
|
103
|
+
}
|
|
104
|
+
const source = cloneRecipeData(recipe);
|
|
105
|
+
const materialized = materializeRecipeForEdition(source, options.okfVersion);
|
|
106
|
+
const identity = recipeStampIdentity(source, materialized);
|
|
107
|
+
const document = (doc) => recipeDocumentForApply(doc, options.okfVersion, options.now);
|
|
108
|
+
const stamped = (doc) => withRecipeStamp(document(doc), identity);
|
|
109
|
+
return {
|
|
110
|
+
okfVersion: options.okfVersion,
|
|
111
|
+
now: options.now,
|
|
112
|
+
identity,
|
|
113
|
+
docs: materialized.docs.map(stamped),
|
|
114
|
+
connectors: (materialized.connectors ?? []).map((connector) => ({ ...connector, doc: stamped(connector.doc) })),
|
|
115
|
+
pages: materialized.pages.map((page) => ({ ...page, registry: document(page.registry) })),
|
|
116
|
+
references: materialized.references.map((reference) => ({ ...reference, doc: stamped(reference.doc) })),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/** Inspect one candidate's exact target without changing content or adopting a stamp. Registry,
|
|
120
|
+
* compatibility, permission and storage admission remain the committing caller's responsibility. */
|
|
121
|
+
export function inspectRecipeInstallTarget(existing, desired, prepared) {
|
|
122
|
+
if (existing === null)
|
|
123
|
+
return { exists: false, sameContent: false, stamp: "missing", stampIntegrity: "unknown" };
|
|
124
|
+
if (existing.id !== desired.id) {
|
|
125
|
+
throw new RecipeInputError(`recipe installation target '${existing.id}' does not match candidate '${desired.id}'`);
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
exists: true,
|
|
129
|
+
sameContent: sameInstalledDoc(existing, desired, prepared.okfVersion),
|
|
130
|
+
stamp: recipeStampState(existing, prepared.identity),
|
|
131
|
+
stampIntegrity: conventionStampState(existing),
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
async function createRecipeDocument(bundle, doc, okfVersion, now, actor) {
|
|
135
|
+
const result = await mutateDocument({
|
|
136
|
+
bundle,
|
|
137
|
+
id: doc.id,
|
|
138
|
+
mode: "create-only",
|
|
139
|
+
registry: RECIPE_WRITE_REGISTRY,
|
|
140
|
+
strict: false,
|
|
141
|
+
actor,
|
|
142
|
+
// Installed definitions must stay byte-comparable to their recipe source (sameInstalledDoc
|
|
143
|
+
// preserves upstream generated.by). Record the installer separately as mutation attribution,
|
|
144
|
+
// without manufacturing content provenance or replacing the recipe producer.
|
|
145
|
+
seedGenerationClock: false,
|
|
146
|
+
now: () => now,
|
|
147
|
+
buildCandidate: (_existing, context) => {
|
|
148
|
+
if (context.okfVersion !== okfVersion) {
|
|
149
|
+
throw new RecipeEditionChanged(okfVersion, context.okfVersion, "installation");
|
|
150
|
+
}
|
|
151
|
+
return { frontmatter: { ...doc.frontmatter }, body: doc.body };
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
return result.doc;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Install `recipe` through the shared document-mutation boundary using expect-absent CAS. Recipe
|
|
158
|
+
* conventions may declare Superbee's logical `progress_status`; this installer materializes the
|
|
159
|
+
* concrete field for the bundle edition before any write. V0.1 retains the historical install-time
|
|
160
|
+
* `timestamp` (`options.now`, default the current time); v0.2 preserves explicitly supplied legacy
|
|
161
|
+
* fields but does not invent them. A `VersionConflict` remains an idempotent existing-doc result,
|
|
162
|
+
* never a clobber.
|
|
163
|
+
*/
|
|
164
|
+
export async function installRecipe(bundle, recipe, options = {}) {
|
|
165
|
+
const now = options.now ?? new Date().toISOString();
|
|
166
|
+
const okfVersion = await readBundleOkfVersion(bundle) ?? "0.1";
|
|
167
|
+
// Validate before any artifact write, including recipes whose first artifact is a blob.
|
|
168
|
+
if (okfVersion === "0.2" && options.actor !== undefined && !isOkfActor(options.actor)) {
|
|
169
|
+
throw new OkfActorError(options.actor, `OKF v0.2 mutation actor '${options.actor}' must be human:<id>, process:<id>, or <producer>/<version>`);
|
|
170
|
+
}
|
|
171
|
+
const prepared = prepareRecipeInstall(recipe, { okfVersion: okfVersion, now });
|
|
172
|
+
recipe = { ...recipe, docs: prepared.docs, connectors: prepared.connectors, pages: prepared.pages, references: prepared.references };
|
|
173
|
+
assertConnectorsWritable(recipe, okfVersion);
|
|
174
|
+
assertReferencesWritable(recipe, okfVersion);
|
|
175
|
+
await assertConnectorTargets(bundle, recipe, okfVersion);
|
|
176
|
+
await assertPortableTargetsCompatible(bundle, recipe, okfVersion);
|
|
177
|
+
// Legacy-alias probes (see the module comment above the alias helpers): resolved lazily, once.
|
|
178
|
+
const legacyConventionId = recipe.docs.some((d) => governsKind(d, VIEW_KIND_NAME))
|
|
179
|
+
? await findLegacyViewConvention(bundle)
|
|
180
|
+
: null;
|
|
181
|
+
let legacyRegistryDocs = null;
|
|
182
|
+
const legacyRegistryDoc = async (id) => {
|
|
183
|
+
legacyRegistryDocs ??= new Map((await query(bundle, { prefix: PAGE_REGISTRY_PREFIX })).map((doc) => [doc.id, doc]));
|
|
184
|
+
return legacyRegistryDocs.get(id);
|
|
185
|
+
};
|
|
186
|
+
const migrationWarnings = [];
|
|
187
|
+
const migrationHelp = "run `node scripts/migrate-legacy-view-names.mjs --dir <bundle-root>` from the Superbee repository root to migrate it in place";
|
|
188
|
+
const docs = [];
|
|
189
|
+
const stamps = [];
|
|
190
|
+
const restampIds = [];
|
|
191
|
+
const foreignIds = [];
|
|
192
|
+
for (const d of recipe.docs) {
|
|
193
|
+
if (legacyConventionId !== null && governsKind(d, VIEW_KIND_NAME)) {
|
|
194
|
+
// A convention still governing the RETIRED legacy name is unmigrated state: skip creating
|
|
195
|
+
// the current-name convention (never two conventions for one kind), but as an explicit
|
|
196
|
+
// NON-SUCCESS — not a satisfied-looking skip.
|
|
197
|
+
docs.push({ id: d.id, changed: false, migration_required: legacyConventionId });
|
|
198
|
+
stamps.push("missing");
|
|
199
|
+
migrationWarnings.push({
|
|
200
|
+
code: "MIGRATION_REQUIRED",
|
|
201
|
+
message: `'${legacyConventionId}' still governs the retired legacy 'Page' kind name — ` +
|
|
202
|
+
`'${d.id}' was not installed; ${migrationHelp}`,
|
|
203
|
+
severity: "warning",
|
|
204
|
+
});
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
// The stamp lands in the convention's own create: it exists exactly when the convention does.
|
|
208
|
+
let doc = d;
|
|
209
|
+
let changed = true;
|
|
210
|
+
let sourceDiffers = false;
|
|
211
|
+
try {
|
|
212
|
+
doc = await createRecipeDocument(bundle, doc, okfVersion, now, options.actor);
|
|
213
|
+
stamps.push("current");
|
|
214
|
+
}
|
|
215
|
+
catch (err) {
|
|
216
|
+
if (err instanceof VersionConflict) {
|
|
217
|
+
const existing = await readDoc(bundle, doc.id);
|
|
218
|
+
const inspection = inspectRecipeInstallTarget(existing, doc, prepared);
|
|
219
|
+
const existingStamp = inspection.stamp;
|
|
220
|
+
stamps.push(existingStamp);
|
|
221
|
+
if (existingStamp === "stale" || existingStamp === "missing")
|
|
222
|
+
restampIds.push(doc.id);
|
|
223
|
+
else if (existingStamp === "foreign")
|
|
224
|
+
foreignIds.push(doc.id);
|
|
225
|
+
if (!inspection.sameContent) {
|
|
226
|
+
sourceDiffers = true;
|
|
227
|
+
migrationWarnings.push({
|
|
228
|
+
code: "RECIPE_SOURCE_DIFFERS",
|
|
229
|
+
message: `recipe '${recipe.id}' source for '${doc.id}.md' differs from the existing convention; ` +
|
|
230
|
+
"the existing bundle content was left untouched — run 'recipe evolve <same-name-or-path>' to inspect a safe additive upgrade plan",
|
|
231
|
+
severity: "warning",
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
changed = false;
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
throw err;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
docs.push({ id: doc.id, changed, ...(sourceDiffers ? { source_differs: true } : {}) });
|
|
241
|
+
}
|
|
242
|
+
// After the conventions, so a Kind the recipe declares exists before the Connector that maps onto it.
|
|
243
|
+
const connectors = [];
|
|
244
|
+
for (const { doc: authored } of recipe.connectors ?? []) {
|
|
245
|
+
const doc = authored;
|
|
246
|
+
let changed = true;
|
|
247
|
+
let sourceDiffers = false;
|
|
248
|
+
try {
|
|
249
|
+
await createRecipeDocument(bundle, doc, okfVersion, now, options.actor);
|
|
250
|
+
stamps.push("current");
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
if (!(err instanceof VersionConflict))
|
|
254
|
+
throw err;
|
|
255
|
+
const existing = await readDoc(bundle, doc.id);
|
|
256
|
+
const inspection = inspectRecipeInstallTarget(existing, doc, prepared);
|
|
257
|
+
const existingStamp = inspection.stamp;
|
|
258
|
+
stamps.push(existingStamp);
|
|
259
|
+
if (existingStamp === "stale" || existingStamp === "missing")
|
|
260
|
+
restampIds.push(doc.id);
|
|
261
|
+
else if (existingStamp === "foreign")
|
|
262
|
+
foreignIds.push(doc.id);
|
|
263
|
+
if (!inspection.sameContent) {
|
|
264
|
+
sourceDiffers = true;
|
|
265
|
+
migrationWarnings.push({
|
|
266
|
+
code: "RECIPE_SOURCE_DIFFERS",
|
|
267
|
+
message: `recipe '${recipe.id}' source for '${doc.id}.md' differs from the existing Connector; ` +
|
|
268
|
+
"the existing bundle content was left untouched; run 'recipe evolve <same-name-or-path>' to inspect the plan, which never replaces a Connector a person changed",
|
|
269
|
+
severity: "warning",
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
changed = false;
|
|
273
|
+
}
|
|
274
|
+
connectors.push({ id: doc.id, changed, ...(sourceDiffers ? { source_differs: true } : {}) });
|
|
275
|
+
}
|
|
276
|
+
const pages = [];
|
|
277
|
+
for (const page of recipe.pages) {
|
|
278
|
+
const registryAlias = legacyRegistryAlias(page.registry.id);
|
|
279
|
+
const entryAlias = legacyEntryAlias(page.entry);
|
|
280
|
+
const aliasDoc = registryAlias !== null && entryAlias !== null ? await legacyRegistryDoc(registryAlias) : undefined;
|
|
281
|
+
if (registryAlias !== null && entryAlias !== null && aliasDoc !== undefined) {
|
|
282
|
+
// Skip ONLY on a COMPLETE legacy pair: a partial legacy leftover (registry doc without its
|
|
283
|
+
// blob) must not suppress the new install — that would leave no working card at all.
|
|
284
|
+
// Creating under the new ids is always safe (expect-absent CAS; ids never collide across
|
|
285
|
+
// prefixes), and the leftover is the audit's business, not the installer's.
|
|
286
|
+
const legacyBlob = await readBlob(bundle, entryAlias);
|
|
287
|
+
if (legacyBlob !== null) {
|
|
288
|
+
// The counterpart's KIND decides the outcome: a registering View at the
|
|
289
|
+
// legacy location genuinely satisfies the artifact; a RETIRED-name (Page-typed or
|
|
290
|
+
// otherwise non-registering) counterpart holds the slot but no longer works — an
|
|
291
|
+
// explicit non-success naming the remedy, never a satisfied-looking skip.
|
|
292
|
+
const registers = parseRegistration(aliasDoc.id, aliasDoc.frontmatter) !== null;
|
|
293
|
+
if (registers) {
|
|
294
|
+
pages.push({
|
|
295
|
+
registry_id: page.registry.id,
|
|
296
|
+
entry: page.entry,
|
|
297
|
+
registry_changed: false,
|
|
298
|
+
entry_changed: false,
|
|
299
|
+
changed: false,
|
|
300
|
+
legacy_present: { registry: registryAlias, entry: entryAlias },
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
pages.push({
|
|
305
|
+
registry_id: page.registry.id,
|
|
306
|
+
entry: page.entry,
|
|
307
|
+
registry_changed: false,
|
|
308
|
+
entry_changed: false,
|
|
309
|
+
changed: false,
|
|
310
|
+
migration_required: { registry: registryAlias, entry: entryAlias },
|
|
311
|
+
});
|
|
312
|
+
migrationWarnings.push({
|
|
313
|
+
code: "MIGRATION_REQUIRED",
|
|
314
|
+
message: `'${registryAlias}' holds this artifact's slot but still carries the retired legacy names ` +
|
|
315
|
+
`and does not register — '${page.registry.id}' was not installed; ${migrationHelp}`,
|
|
316
|
+
severity: "warning",
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
continue;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
const desiredBytes = new TextEncoder().encode(page.html);
|
|
323
|
+
let entryChanged = true;
|
|
324
|
+
try {
|
|
325
|
+
await writeBlob(bundle, page.entry, desiredBytes, undefined, { expectedVersion: null });
|
|
326
|
+
}
|
|
327
|
+
catch (err) {
|
|
328
|
+
if (!(err instanceof VersionConflict))
|
|
329
|
+
throw err;
|
|
330
|
+
const existing = await readBlob(bundle, page.entry);
|
|
331
|
+
const bytesMatch = existing !== null && sameBytes(existing.bytes, desiredBytes);
|
|
332
|
+
const sameContentType = existing?.contentType === resolveContentType(page.entry);
|
|
333
|
+
if (!bytesMatch || !sameContentType)
|
|
334
|
+
throw new RecipeAssetConflict(recipe.id, page.entry);
|
|
335
|
+
entryChanged = false;
|
|
336
|
+
}
|
|
337
|
+
let registry = page.registry;
|
|
338
|
+
let registryChanged = true;
|
|
339
|
+
try {
|
|
340
|
+
registry = await createRecipeDocument(bundle, registry, okfVersion, now, options.actor);
|
|
341
|
+
}
|
|
342
|
+
catch (err) {
|
|
343
|
+
if (!(err instanceof VersionConflict))
|
|
344
|
+
throw err;
|
|
345
|
+
const existing = await readDoc(bundle, registry.id);
|
|
346
|
+
if (!sameInstalledDoc(existing, registry, okfVersion))
|
|
347
|
+
throw new RecipeAssetConflict(recipe.id, `${registry.id}.md`);
|
|
348
|
+
registryChanged = false;
|
|
349
|
+
}
|
|
350
|
+
pages.push({
|
|
351
|
+
registry_id: registry.id,
|
|
352
|
+
entry: page.entry,
|
|
353
|
+
registry_changed: registryChanged,
|
|
354
|
+
entry_changed: entryChanged,
|
|
355
|
+
changed: registryChanged || entryChanged,
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
const references = [];
|
|
359
|
+
for (const reference of recipe.references) {
|
|
360
|
+
let desired = reference.doc;
|
|
361
|
+
let changed = true;
|
|
362
|
+
try {
|
|
363
|
+
desired = await createRecipeDocument(bundle, desired, okfVersion, now, options.actor);
|
|
364
|
+
}
|
|
365
|
+
catch (err) {
|
|
366
|
+
if (!(err instanceof VersionConflict))
|
|
367
|
+
throw err;
|
|
368
|
+
const existing = await readDoc(bundle, desired.id);
|
|
369
|
+
if (!sameInstalledDoc(existing, desired, okfVersion))
|
|
370
|
+
throw new RecipeAssetConflict(recipe.id, `${desired.id}.md`);
|
|
371
|
+
changed = false;
|
|
372
|
+
}
|
|
373
|
+
references.push({ id: desired.id, changed });
|
|
374
|
+
}
|
|
375
|
+
const artifacts = [
|
|
376
|
+
...docs,
|
|
377
|
+
...connectors,
|
|
378
|
+
...pages,
|
|
379
|
+
...references,
|
|
380
|
+
];
|
|
381
|
+
const sourceDiffers = [...docs, ...connectors].filter((doc) => doc.source_differs).length;
|
|
382
|
+
const counts = {
|
|
383
|
+
created: artifacts.filter((a) => a.changed).length,
|
|
384
|
+
existing: artifacts.filter((a) => !a.changed && a.legacy_present === undefined && a.migration_required === undefined &&
|
|
385
|
+
!("source_differs" in a && a.source_differs === true))
|
|
386
|
+
.length,
|
|
387
|
+
legacy_present: artifacts.filter((a) => a.legacy_present !== undefined).length,
|
|
388
|
+
migration_required: artifacts.filter((a) => a.migration_required !== undefined).length,
|
|
389
|
+
...(sourceDiffers > 0 ? { source_differs: sourceDiffers } : {}),
|
|
390
|
+
};
|
|
391
|
+
return {
|
|
392
|
+
id: recipe.id,
|
|
393
|
+
version: recipe.version,
|
|
394
|
+
source: recipe.source,
|
|
395
|
+
docs,
|
|
396
|
+
connectors,
|
|
397
|
+
pages,
|
|
398
|
+
references,
|
|
399
|
+
counts,
|
|
400
|
+
changed: docs.some((d) => d.changed) ||
|
|
401
|
+
connectors.some((connector) => connector.changed) ||
|
|
402
|
+
pages.some((page) => page.changed) ||
|
|
403
|
+
references.some((reference) => reference.changed),
|
|
404
|
+
stamp: worstRecipeStampState(stamps),
|
|
405
|
+
restamp_ids: restampIds.sort(),
|
|
406
|
+
foreign_ids: foreignIds.sort(),
|
|
407
|
+
warnings: [...recipe.warnings, ...migrationWarnings],
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Every Connector as install will write it, against the authoring rules the engine applies on this
|
|
412
|
+
* edition. The parser tolerates unknown top-level keys, so one OKF v0.2 owns (a `tags` that is not
|
|
413
|
+
* a list, say) would otherwise be refused at the Connector's create, after the conventions.
|
|
414
|
+
*/
|
|
415
|
+
function assertConnectorsWritable(recipe, okfVersion) {
|
|
416
|
+
if (okfVersion !== "0.2")
|
|
417
|
+
return;
|
|
418
|
+
for (const { doc } of recipe.connectors ?? []) {
|
|
419
|
+
try {
|
|
420
|
+
assertAuthoredOkfStandardFields(doc.frontmatter, undefined, { phase: "input" });
|
|
421
|
+
}
|
|
422
|
+
catch (error) {
|
|
423
|
+
if (!(error instanceof InvalidInputError))
|
|
424
|
+
throw error;
|
|
425
|
+
throw new RecipeInputError(`recipe '${recipe.id}' cannot install Connector '${doc.id}': ${error.message}; nothing was written`);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
/** References follow Views in the write order, so authoring admission must precede even a
|
|
430
|
+
* blob-only recipe's first write. Use the same edition-specific owner as document mutation. */
|
|
431
|
+
function assertReferencesWritable(recipe, okfVersion) {
|
|
432
|
+
if (okfVersion !== "0.2")
|
|
433
|
+
return;
|
|
434
|
+
for (const { doc } of recipe.references) {
|
|
435
|
+
try {
|
|
436
|
+
assertAuthoredOkfStandardFields(doc.frontmatter, undefined, { phase: "input" });
|
|
437
|
+
}
|
|
438
|
+
catch (error) {
|
|
439
|
+
if (!(error instanceof InvalidInputError))
|
|
440
|
+
throw error;
|
|
441
|
+
throw new RecipeInputError(`recipe '${recipe.id}' cannot install Reference '${doc.id}': ${error.message}; nothing was written`);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Every Connector's sources against the Kinds the bundle will hold once this install is done: its
|
|
447
|
+
* conventions, plus the recipe's own at ids the bundle does not hold yet (install never rewrites an
|
|
448
|
+
* existing convention). Runs before the first write of any artifact.
|
|
449
|
+
*/
|
|
450
|
+
async function assertConnectorTargets(bundle, recipe, okfVersion) {
|
|
451
|
+
const connectors = recipe.connectors ?? [];
|
|
452
|
+
if (connectors.length === 0)
|
|
453
|
+
return;
|
|
454
|
+
const conventions = new Map((await query(bundle, { prefix: CONVENTIONS_PREFIX, type: CONVENTION_TYPE })).map((doc) => [doc.id, doc]));
|
|
455
|
+
for (const doc of recipe.docs)
|
|
456
|
+
if (!conventions.has(doc.id))
|
|
457
|
+
conventions.set(doc.id, doc);
|
|
458
|
+
const registry = buildKindRegistry([...conventions.values()], [], { okfVersion });
|
|
459
|
+
// Each refusal points at /<sources key>/<index>/target_kind or /<sources key>/<index>/fields/<field>.
|
|
460
|
+
const segments = (pointer) => pointer.split("/").slice(1).map((segment) => segment.replaceAll("~1", "/").replaceAll("~0", "~"));
|
|
461
|
+
for (const { connector } of connectors) {
|
|
462
|
+
const errors = checkConnectorAgainstKinds(connector, registry);
|
|
463
|
+
if (errors.length === 0)
|
|
464
|
+
continue;
|
|
465
|
+
const index = segments(errors[0].path)[1];
|
|
466
|
+
const source = connector.sources[Number(index)];
|
|
467
|
+
const ofSource = errors.filter((error) => segments(error.path)[1] === index);
|
|
468
|
+
const fields = [...new Set(ofSource.flatMap((error) => {
|
|
469
|
+
const [, , block, field] = segments(error.path);
|
|
470
|
+
return block === "fields" && field !== undefined ? [field] : [];
|
|
471
|
+
}))];
|
|
472
|
+
throw new ConnectorTargetUnsatisfied(recipe.id, connector.id, source.name, source.target_kind, errors[0].code, fields, ofSource.map((error) => error.message).join("; "));
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
async function assertPortableTargetsCompatible(bundle, recipe, okfVersion) {
|
|
476
|
+
const registries = new Map();
|
|
477
|
+
if (recipe.pages.length > 0) {
|
|
478
|
+
// Both accepted registry prefixes (views-registry/ current, pages-registry/ legacy) — the
|
|
479
|
+
// query takes ONE prefix, so run it per prefix and merge (ids never collide across prefixes).
|
|
480
|
+
for (const prefix of [PAGE_REGISTRY_PREFIX, VIEW_REGISTRY_PREFIX]) {
|
|
481
|
+
const registryDocs = await query(bundle, { prefix });
|
|
482
|
+
for (const doc of registryDocs)
|
|
483
|
+
registries.set(doc.id, doc);
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
for (const page of recipe.pages) {
|
|
487
|
+
const existingBlob = await readBlob(bundle, page.entry);
|
|
488
|
+
if (existingBlob) {
|
|
489
|
+
const desiredBytes = new TextEncoder().encode(page.html);
|
|
490
|
+
const bytesMatch = sameBytes(existingBlob.bytes, desiredBytes);
|
|
491
|
+
const sameContentType = existingBlob.contentType === resolveContentType(page.entry);
|
|
492
|
+
if (!bytesMatch || !sameContentType)
|
|
493
|
+
throw new RecipeAssetConflict(recipe.id, page.entry);
|
|
494
|
+
}
|
|
495
|
+
const existingRegistry = registries.get(page.registry.id);
|
|
496
|
+
if (existingRegistry) {
|
|
497
|
+
const desiredRegistry = page.registry;
|
|
498
|
+
if (!sameInstalledDoc(existingRegistry, desiredRegistry, okfVersion)) {
|
|
499
|
+
throw new RecipeAssetConflict(recipe.id, `${page.registry.id}.md`);
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
const installedReferences = new Map();
|
|
504
|
+
if (recipe.references.length > 0) {
|
|
505
|
+
const referenceDocs = await query(bundle, { prefix: "references/" });
|
|
506
|
+
for (const doc of referenceDocs)
|
|
507
|
+
installedReferences.set(doc.id, doc);
|
|
508
|
+
}
|
|
509
|
+
for (const reference of recipe.references) {
|
|
510
|
+
if (reference.doc.frontmatter.type !== "Reference") {
|
|
511
|
+
throw new RecipeInputError(`recipe '${recipe.id}' asset '${reference.doc.id}' must have type 'Reference'`);
|
|
512
|
+
}
|
|
513
|
+
const existing = installedReferences.get(reference.doc.id);
|
|
514
|
+
if (!existing)
|
|
515
|
+
continue;
|
|
516
|
+
const desired = reference.doc;
|
|
517
|
+
if (!sameInstalledDoc(existing, desired, okfVersion)) {
|
|
518
|
+
throw new RecipeAssetConflict(recipe.id, `${reference.doc.id}.md`);
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
/** Byte equality of two blob payloads. */
|
|
523
|
+
function sameBytes(a, b) {
|
|
524
|
+
if (a.length !== b.length)
|
|
525
|
+
return false;
|
|
526
|
+
for (let index = 0; index < a.length; index += 1) {
|
|
527
|
+
if (a[index] !== b[index])
|
|
528
|
+
return false;
|
|
529
|
+
}
|
|
530
|
+
return true;
|
|
531
|
+
}
|
|
532
|
+
export function sameInstalledDoc(existing, desired, okfVersion) {
|
|
533
|
+
// The recipe stamp is install metadata, never definition content.
|
|
534
|
+
const { timestamp: _existingTimestamp, [RECIPE_STAMP_KEY]: _existingStamp, ...existingFrontmatter } = existing.frontmatter;
|
|
535
|
+
const { timestamp: _desiredTimestamp, [RECIPE_STAMP_KEY]: _desiredStamp, ...desiredFrontmatter } = desired.frontmatter;
|
|
536
|
+
// The installer is the latest mutation actor, not part of the upstream definition. Its
|
|
537
|
+
// edition-specific coordinate may change without changing source-authored generated.by.
|
|
538
|
+
const actorField = okfVersion === "0.2" ? "superbee_updated_by" : "actor";
|
|
539
|
+
delete existingFrontmatter[actorField];
|
|
540
|
+
delete desiredFrontmatter[actorField];
|
|
541
|
+
// A reading-order placement the bundle added to an installed convention is not drift: the
|
|
542
|
+
// recipe declares none, and evolution keeps it (BUNDLE_LOCAL_PLACEMENT in evolution.ts).
|
|
543
|
+
if (desiredFrontmatter.order === undefined)
|
|
544
|
+
delete existingFrontmatter.order;
|
|
545
|
+
if (okfVersion === "0.2") {
|
|
546
|
+
for (const frontmatter of [existingFrontmatter, desiredFrontmatter]) {
|
|
547
|
+
const generated = plainRecord(frontmatter.generated);
|
|
548
|
+
if (!generated)
|
|
549
|
+
continue;
|
|
550
|
+
const { at: _at, ...rest } = generated;
|
|
551
|
+
frontmatter.generated = rest;
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
return okfValuesEqual(existingFrontmatter, desiredFrontmatter) && normalizeDefinitionBody(existing.body) === normalizeDefinitionBody(desired.body);
|
|
555
|
+
}
|
|
556
|
+
/**
|
|
557
|
+
* The convention docs currently present under `conventions/`, by id — ONE round-trip
|
|
558
|
+
* (backend-agnostic, works over `--remote`), used by `recipes` to report whether a built-in is
|
|
559
|
+
* already applied to `bundle` (every one of its docs' ids present) AND whether any installed
|
|
560
|
+
* doc's content differs from the recipe source (the listing's `drift` bit). The query was always
|
|
561
|
+
* a full read; returning the docs instead of discarding their content costs zero added I/O.
|
|
562
|
+
*/
|
|
563
|
+
export async function installedConventionDocs(bundle) {
|
|
564
|
+
const docs = await query(bundle, { prefix: CONVENTIONS_PREFIX });
|
|
565
|
+
return new Map(docs.map((d) => [d.id, d]));
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* The documents under `connectors/`, by id: the Connector documents `installedRecipes` reads beside
|
|
569
|
+
* the conventions, in one round-trip.
|
|
570
|
+
*/
|
|
571
|
+
export async function installedConnectorDocs(bundle) {
|
|
572
|
+
const docs = await query(bundle, { prefix: CONNECTORS_PREFIX });
|
|
573
|
+
return new Map(docs.map((d) => [d.id, d]));
|
|
574
|
+
}
|
|
575
|
+
/**
|
|
576
|
+
* True when at least one of `recipe`'s installed docs differs in content from the recipe source
|
|
577
|
+
* (the same `sameInstalledDoc` comparison `installRecipe` makes; timestamp-insensitive). Honest at
|
|
578
|
+
* the literal level only: drift can be DELIBERATE — a dismissal record occupying the canonical
|
|
579
|
+
* id, or a kind legitimately evolved via `kind field add` / `recipe evolve`. The listing pairs
|
|
580
|
+
* the bit with descriptive help and NO fixing command (design appendix O2): a proactive "fix"
|
|
581
|
+
* pointer here would re-propose exactly what a `kind dismiss` recorded declining.
|
|
582
|
+
*/
|
|
583
|
+
export function recipeDrifts(recipe, installed, okfVersion, now) {
|
|
584
|
+
const materialized = materializeRecipeForEdition(recipe, okfVersion);
|
|
585
|
+
return materialized.docs.some((doc) => {
|
|
586
|
+
const existing = installed.get(doc.id);
|
|
587
|
+
return existing !== undefined && !sameInstalledDoc(existing, recipeDocumentForApply(doc, okfVersion, now), okfVersion);
|
|
588
|
+
});
|
|
589
|
+
}
|
|
590
|
+
/** True when every convention doc `recipe` installs is already present in `appliedIds`. */
|
|
591
|
+
export function isRecipeApplied(recipe, appliedIds) {
|
|
592
|
+
return recipe.docs.every((doc) => appliedIds.has(doc.id));
|
|
593
|
+
}
|
|
594
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/recipe-lifecycle/install.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,gGAAgG;AAChG,2FAA2F;AAC3F,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,0BAA0B,GAE3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAkB,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC3F,OAAO,EAAE,4BAA4B,EAAkF,MAAM,eAAe,CAAC;AAG7I,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtH,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,GAItB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,wBAAwB,EACxB,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,SAAS,qBAAqB,CAAC,IAAY,EAAE,YAAoB;IAC/D,OAAO,IAAI,CAAC,UAAU,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC;AACrE,CAAC;AAoFD,MAAM,qBAAqB,GAAiB,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAE/E,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAC,KAAgC;QAClC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAc,EACd,YAAoB,EACpB,QAAgB,EAChB,KAAgB;IAEhB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,qBAAqB,CAAC;QAAE,OAAO,KAAK,CAAC;IAClG,IACE,YAAY,KAAK,qBAAqB;WACnC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAC7D,CAAC;QACD,MAAM,IAAI,gBAAgB,CACxB,WAAW,QAAQ,iBAAiB,KAAK,4BAA4B,qBAAqB,wBAAwB,YAAY,GAAG,CAClI,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC;QAClD,KAAK,KAAK,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK;QACtD,UAAU;KACX,CAAC,CACH,CAAC;AACJ,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,2BAA2B,CACzC,MAAoB,EACpB,UAAkB;IAElB,MAAM,YAAY,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;IAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,gBAAgB,CACxB,WAAW,MAAM,CAAC,EAAE,qDAAqD,UAAU,GAAG,CACvF,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM;YAAE,OAAO,GAAG,CAAC;QACxB,MAAM,SAAS,GAAG,CAAC,KAAc,EAAW,EAAE;YAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC;gBAAE,OAAO,KAAK,CAAC;YAClF,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,gBAAgB,CACxB,WAAW,MAAM,CAAC,EAAE,iBAAiB,GAAG,CAAC,EAAE,4BAA4B,qBAAqB,wBAAwB,YAAY,GAAG,CACpI,CAAC;YACJ,CAAC;YACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtF,CAAC,CAAC;QACF,MAAM,kBAAkB,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;QAClE,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;gBACtD,kBAAkB,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC;YACxF,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;gBACtD,kBAAkB,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAChG,CAAC;QACH,CAAC;QACD,OAAO;YACL,GAAG,GAAG;YACN,WAAW,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE;YAC/D,IAAI,EAAE,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC;SACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,GAAgB,EAChB,UAAkB,EAClB,GAAW;IAEX,OAAO,UAAU,KAAK,KAAK;QACzB,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE;QACjE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;AACtD,CAAC;AAED;8FAC8F;AAC9F,SAAS,eAAe,CAAI,KAAQ;IAClC,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAM,CAAC;IACjE,IAAI,KAAK,YAAY,UAAU;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAM,CAAC;IACpE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAM,CAAC;IACjF,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAM,CAAC;IAC3G,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAcD;;mGAEmG;AACnG,MAAM,UAAU,oBAAoB,CAClC,MAAoB,EACpB,OAAmD;IAEnD,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,gBAAgB,CAAC,oEAAoE,CAAC,CAAC;IACnG,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,2BAA2B,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,CAAC,GAAgB,EAAe,EAAE,CAAC,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACjH,MAAM,OAAO,GAAG,CAAC,GAAgB,EAAe,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5F,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ;QACR,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,UAAU,EAAE,CAAC,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/G,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzF,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KACxG,CAAC;AACJ,CAAC;AAUD;oGACoG;AACpG,MAAM,UAAU,0BAA0B,CACxC,QAA4B,EAC5B,OAAoB,EACpB,QAAgE;IAEhE,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;IACjH,IAAI,QAAQ,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,IAAI,gBAAgB,CAAC,+BAA+B,QAAQ,CAAC,EAAE,+BAA+B,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;IACrH,CAAC;IACD,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC;QACrE,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;QACpD,cAAc,EAAE,oBAAoB,CAAC,QAAQ,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAAc,EACd,GAAgB,EAChB,UAAkB,EAClB,GAAW,EACX,KAAc;IAEd,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QAClC,MAAM;QACN,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,qBAAqB;QAC/B,MAAM,EAAE,KAAK;QACb,KAAK;QACL,2FAA2F;QAC3F,6FAA6F;QAC7F,6EAA6E;QAC7E,mBAAmB,EAAE,KAAK;QAC1B,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG;QACd,cAAc,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE;YACrC,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;gBACtC,MAAM,IAAI,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YACjF,CAAC;YACD,OAAO,EAAE,WAAW,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QACjE,CAAC;KACF,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,GAAG,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,MAAoB,EACpB,UAA4C,EAAE;IAE9C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;IAC/D,wFAAwF;IACxF,IAAI,UAAU,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtF,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,4BAA4B,OAAO,CAAC,KAAK,6DAA6D,CAAC,CAAC;IACjJ,CAAC;IACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,UAA2B,EAAE,GAAG,EAAE,CAAC,CAAC;IAChG,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrI,wBAAwB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7C,wBAAwB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7C,MAAM,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACzD,MAAM,+BAA+B,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAElE,+FAA+F;IAC/F,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAChF,CAAC,CAAC,MAAM,wBAAwB,CAAC,MAAM,CAAC;QACxC,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,kBAAkB,GAAuC,IAAI,CAAC;IAClE,MAAM,iBAAiB,GAAG,KAAK,EAAE,EAAa,EAAoC,EAAE;QAClF,kBAAkB,KAAK,IAAI,GAAG,CAC5B,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CACpF,CAAC;QACF,OAAO,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,MAAM,iBAAiB,GAAwB,EAAE,CAAC;IAClD,MAAM,aAAa,GACjB,+HAA+H,CAAC;IAElI,MAAM,IAAI,GAAsB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,kBAAkB,KAAK,IAAI,IAAI,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC;YAClE,0FAA0F;YAC1F,uFAAuF;YACvF,8CAA8C;YAC9C,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAChF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,iBAAiB,CAAC,IAAI,CAAC;gBACrB,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EACL,IAAI,kBAAkB,wDAAwD;oBAC9E,IAAI,CAAC,CAAC,EAAE,wBAAwB,aAAa,EAAE;gBACjD,QAAQ,EAAE,SAAS;aACpB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,8FAA8F;QAC9F,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9E,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/C,MAAM,UAAU,GAAG,0BAA0B,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACvE,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3B,IAAI,aAAa,KAAK,OAAO,IAAI,aAAa,KAAK,SAAS;oBAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;qBACjF,IAAI,aAAa,KAAK,SAAS;oBAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC9D,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;oBAC5B,aAAa,GAAG,IAAI,CAAC;oBACrB,iBAAiB,CAAC,IAAI,CAAC;wBACrB,IAAI,EAAE,uBAAuB;wBAC7B,OAAO,EACL,WAAW,MAAM,CAAC,EAAE,iBAAiB,GAAG,CAAC,EAAE,6CAA6C;4BACxF,kIAAkI;wBACpI,QAAQ,EAAE,SAAS;qBACpB,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,sGAAsG;IACtG,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QACxD,MAAM,GAAG,GAAG,QAAQ,CAAC;QACrB,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACxE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,GAAG,YAAY,eAAe,CAAC;gBAAE,MAAM,GAAG,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAG,0BAA0B,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;YACvE,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3B,IAAI,aAAa,KAAK,OAAO,IAAI,aAAa,KAAK,SAAS;gBAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACjF,IAAI,aAAa,KAAK,SAAS;gBAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9D,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC5B,aAAa,GAAG,IAAI,CAAC;gBACrB,iBAAiB,CAAC,IAAI,CAAC;oBACrB,IAAI,EAAE,uBAAuB;oBAC7B,OAAO,EACL,WAAW,MAAM,CAAC,EAAE,iBAAiB,GAAG,CAAC,EAAE,4CAA4C;wBACvF,gKAAgK;oBAClK,QAAQ,EAAE,SAAS;iBACpB,CAAC,CAAC;YACL,CAAC;YACD,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxG,CAAC;IAED,MAAM,KAAK,GAAuB,EAAE,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,aAAa,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpH,IAAI,aAAa,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5E,2FAA2F;YAC3F,qFAAqF;YACrF,yFAAyF;YACzF,4EAA4E;YAC5E,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACtD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,wEAAwE;gBACxE,kFAAkF;gBAClF,iFAAiF;gBACjF,0EAA0E;gBAC1E,MAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;gBAChF,IAAI,SAAS,EAAE,CAAC;oBACd,KAAK,CAAC,IAAI,CAAC;wBACT,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;wBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,gBAAgB,EAAE,KAAK;wBACvB,aAAa,EAAE,KAAK;wBACpB,OAAO,EAAE,KAAK;wBACd,cAAc,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE;qBAC/D,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC;wBACT,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;wBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,gBAAgB,EAAE,KAAK;wBACvB,aAAa,EAAE,KAAK;wBACpB,OAAO,EAAE,KAAK;wBACd,kBAAkB,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE;qBACnE,CAAC,CAAC;oBACH,iBAAiB,CAAC,IAAI,CAAC;wBACrB,IAAI,EAAE,oBAAoB;wBAC1B,OAAO,EACL,IAAI,aAAa,0EAA0E;4BAC3F,4BAA4B,IAAI,CAAC,QAAQ,CAAC,EAAE,wBAAwB,aAAa,EAAE;wBACrF,QAAQ,EAAE,SAAS;qBACpB,CAAC,CAAC;gBACL,CAAC;gBACD,SAAS;YACX,CAAC;QACH,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,GAAG,YAAY,eAAe,CAAC;gBAAE,MAAM,GAAG,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,QAAQ,KAAK,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAChF,MAAM,eAAe,GAAG,QAAQ,EAAE,WAAW,KAAK,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjF,IAAI,CAAC,UAAU,IAAI,CAAC,eAAe;gBAAE,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1F,YAAY,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,IAAI,eAAe,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,GAAG,YAAY,eAAe,CAAC;gBAAE,MAAM,GAAG,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;gBAAE,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;YACrH,eAAe,GAAG,KAAK,CAAC;QAC1B,CAAC;QAED,KAAK,CAAC,IAAI,CAAC;YACT,WAAW,EAAE,QAAQ,CAAC,EAAE;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,gBAAgB,EAAE,eAAe;YACjC,aAAa,EAAE,YAAY;YAC3B,OAAO,EAAE,eAAe,IAAI,YAAY;SACzC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1C,IAAI,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC;QAC5B,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACxF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,GAAG,YAAY,eAAe,CAAC;gBAAE,MAAM,GAAG,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC;gBAAE,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YACnH,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,SAAS,GAAwF;QACrG,GAAG,IAAI;QACP,GAAG,UAAU;QACb,GAAG,KAAK;QACR,GAAG,UAAU;KACd,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;IAC1F,MAAM,MAAM,GAAwB;QAClC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM;QAClD,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/B,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,CAAC,kBAAkB,KAAK,SAAS;YAClF,CAAC,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,CACtD;aACE,MAAM;QACT,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,MAAM;QAC9E,kBAAkB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,MAAM;QACtF,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI;QACJ,UAAU;QACV,KAAK;QACL,UAAU;QACV,MAAM;QACN,OAAO,EACL,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3B,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;YAClC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;QACnD,KAAK,EAAE,qBAAqB,CAAC,MAAM,CAAC;QACpC,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE;QAC9B,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE;QAC9B,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,iBAAiB,CAAC;KACrD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,MAAoB,EAAE,UAAkB;IACxE,IAAI,UAAU,KAAK,KAAK;QAAE,OAAO;IACjC,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,+BAA+B,CAAC,GAAG,CAAC,WAAmC,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1G,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,iBAAiB,CAAC;gBAAE,MAAM,KAAK,CAAC;YACvD,MAAM,IAAI,gBAAgB,CAAC,WAAW,MAAM,CAAC,EAAE,+BAA+B,GAAG,CAAC,EAAE,MAAM,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;QAClI,CAAC;IACH,CAAC;AACH,CAAC;AAED;+FAC+F;AAC/F,SAAS,wBAAwB,CAAC,MAAoB,EAAE,UAAkB;IACxE,IAAI,UAAU,KAAK,KAAK;QAAE,OAAO;IACjC,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,+BAA+B,CAAC,GAAG,CAAC,WAAmC,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1G,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,iBAAiB,CAAC;gBAAE,MAAM,KAAK,CAAC;YACvD,MAAM,IAAI,gBAAgB,CAAC,WAAW,MAAM,CAAC,EAAE,+BAA+B,GAAG,CAAC,EAAE,MAAM,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;QAClI,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,sBAAsB,CAAC,MAAc,EAAE,MAAoB,EAAE,UAAkB;IAC5F,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAC3C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACpC,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CACzG,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI;QAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAClF,sGAAsG;IACtG,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAY,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAClJ,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,UAAU,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,0BAA0B,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;QAC7E,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACpD,MAAM,CAAC,EAAE,AAAD,EAAG,KAAK,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,CAAC,CAAC,CAAC,CAAC,CAAC;QACL,MAAM,IAAI,0BAA0B,CAClC,MAAM,CAAC,EAAE,EACT,SAAS,CAAC,EAAE,EACZ,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,EACf,MAAM,EACN,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAClD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,+BAA+B,CAC5C,MAAc,EACd,MAAoB,EACpB,UAAkB;IAElB,MAAM,UAAU,GAAG,IAAI,GAAG,EAA0B,CAAC;IACrD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,0FAA0F;QAC1F,8FAA8F;QAC9F,KAAK,MAAM,MAAM,IAAI,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,EAAE,CAAC;YAClE,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,KAAK,MAAM,GAAG,IAAI,YAAY;gBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAC/D,MAAM,eAAe,GAAG,YAAY,CAAC,WAAW,KAAK,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpF,IAAI,CAAC,UAAU,IAAI,CAAC,eAAe;gBAAE,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5F,CAAC;QAED,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;YACtC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC;gBACrE,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC9D,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QACrE,KAAK,MAAM,GAAG,IAAI,aAAa;YAAE,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACxE,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1C,IAAI,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACnD,MAAM,IAAI,gBAAgB,CAAC,WAAW,MAAM,CAAC,EAAE,YAAY,SAAS,CAAC,GAAG,CAAC,EAAE,8BAA8B,CAAC,CAAC;QAC7G,CAAC;QACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;AACH,CAAC;AAED,0CAA0C;AAC1C,SAAS,SAAS,CAAC,CAAa,EAAE,CAAa;IAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAqB,EAAE,OAAoB,EAAE,UAAkB;IAC9F,kEAAkE;IAClE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,gBAAgB,CAAC,EAAE,cAAc,EAAE,GAAG,mBAAmB,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;IAC3H,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,GAAG,kBAAkB,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IACvH,uFAAuF;IACvF,wFAAwF;IACxF,MAAM,UAAU,GAAG,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1E,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACvC,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACtC,0FAA0F;IAC1F,yFAAyF;IACzF,IAAI,kBAAkB,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,mBAAmB,CAAC,KAAK,CAAC;IAC7E,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,WAAW,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,EAAE,CAAC;YACpE,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACrD,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC;YACvC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,IAAI,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,MAAc;IAC1D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACjE,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAc;IACzD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAChE,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAoB,EACpB,SAAsC,EACtC,UAAkB,EAClB,GAAW;IAEX,MAAM,YAAY,GAAG,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrE,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO,QAAQ,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;IACzH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,eAAe,CAAC,MAAoB,EAAE,UAA0B;IAC9E,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Bundle, ConceptId, OkfDocument } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* The retired legacy kind name, frozen as a historical fact. Internal to the recipe lifecycle and
|
|
4
|
+
* not part of its public API; the CLI's diagnostics keep their own frozen copy, and
|
|
5
|
+
* `legacy-constants-tripwire.test.ts` pins the two equal.
|
|
6
|
+
*/
|
|
7
|
+
export declare const RETIRED_PAGE_TYPE_NAME = "Page";
|
|
8
|
+
/** Core's one accepted kind name (`View`). */
|
|
9
|
+
export declare const VIEW_KIND_NAME: "View";
|
|
10
|
+
export declare function legacyRegistryAlias(id: ConceptId): ConceptId | null;
|
|
11
|
+
export declare function legacyEntryAlias(key: string): string | null;
|
|
12
|
+
export declare function governsKind(doc: OkfDocument, kindName: string): boolean;
|
|
13
|
+
/** The id of an existing convention doc governing the LEGACY kind name, or null. Called at most
|
|
14
|
+
* once per apply, and only when the recipe carries a convention governing the current name. */
|
|
15
|
+
export declare function findLegacyViewConvention(bundle: Bundle): Promise<ConceptId | null>;
|
|
16
|
+
//# sourceMappingURL=legacy-aliases.d.ts.map
|