@baseplate-dev/project-builder-lib 0.5.3 → 0.6.1
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/CHANGELOG.md +69 -0
- package/dist/definition/index.d.ts +0 -1
- package/dist/definition/index.d.ts.map +1 -1
- package/dist/definition/index.js +0 -1
- package/dist/definition/index.js.map +1 -1
- package/dist/definition/model/model-field-utils.js +2 -2
- package/dist/definition/model/model-field-utils.js.map +1 -1
- package/dist/definition/model/model-utils.d.ts.map +1 -1
- package/dist/definition/model/model-utils.js +2 -2
- package/dist/definition/model/model-utils.js.map +1 -1
- package/dist/definition/project-definition-container.d.ts +21 -12
- package/dist/definition/project-definition-container.d.ts.map +1 -1
- package/dist/definition/project-definition-container.js +42 -23
- package/dist/definition/project-definition-container.js.map +1 -1
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +6 -0
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/migration-024-graphql-object-type-field-auth.d.ts +30 -0
- package/dist/migrations/migration-024-graphql-object-type-field-auth.d.ts.map +1 -0
- package/dist/migrations/migration-024-graphql-object-type-field-auth.js +54 -0
- package/dist/migrations/migration-024-graphql-object-type-field-auth.js.map +1 -0
- package/dist/migrations/migration-025-service-method-auth.d.ts +44 -0
- package/dist/migrations/migration-025-service-method-auth.d.ts.map +1 -0
- package/dist/migrations/migration-025-service-method-auth.js +62 -0
- package/dist/migrations/migration-025-service-method-auth.js.map +1 -0
- package/dist/migrations/migration-026-query-shared-roles.d.ts +32 -0
- package/dist/migrations/migration-026-query-shared-roles.d.ts.map +1 -0
- package/dist/migrations/migration-026-query-shared-roles.js +48 -0
- package/dist/migrations/migration-026-query-shared-roles.js.map +1 -0
- package/dist/parser/apply-definition-fixes.d.ts +13 -0
- package/dist/parser/apply-definition-fixes.d.ts.map +1 -0
- package/dist/parser/apply-definition-fixes.js +25 -0
- package/dist/parser/apply-definition-fixes.js.map +1 -0
- package/dist/parser/clean-default-values.d.ts +14 -0
- package/dist/parser/clean-default-values.d.ts.map +1 -0
- package/dist/parser/clean-default-values.js +24 -0
- package/dist/parser/clean-default-values.js.map +1 -0
- package/dist/parser/collect-definition-issues.d.ts +36 -0
- package/dist/parser/collect-definition-issues.d.ts.map +1 -0
- package/dist/parser/collect-definition-issues.js +94 -0
- package/dist/parser/collect-definition-issues.js.map +1 -0
- package/dist/parser/collect-expression-issues.d.ts +17 -0
- package/dist/parser/collect-expression-issues.d.ts.map +1 -0
- package/dist/parser/collect-expression-issues.js +33 -0
- package/dist/parser/collect-expression-issues.js.map +1 -0
- package/dist/parser/definition-issue-checkers/mutation-roles-checker.d.ts +11 -0
- package/dist/parser/definition-issue-checkers/mutation-roles-checker.d.ts.map +1 -0
- package/dist/parser/definition-issue-checkers/mutation-roles-checker.js +41 -0
- package/dist/parser/definition-issue-checkers/mutation-roles-checker.js.map +1 -0
- package/dist/parser/definition-issue-checkers/relation-type-mismatch-checker.d.ts +10 -0
- package/dist/parser/definition-issue-checkers/relation-type-mismatch-checker.d.ts.map +1 -0
- package/dist/parser/definition-issue-checkers/relation-type-mismatch-checker.js +36 -0
- package/dist/parser/definition-issue-checkers/relation-type-mismatch-checker.js.map +1 -0
- package/dist/parser/definition-issue-utils.d.ts +23 -0
- package/dist/parser/definition-issue-utils.d.ts.map +1 -0
- package/dist/parser/definition-issue-utils.js +33 -0
- package/dist/parser/definition-issue-utils.js.map +1 -0
- package/dist/parser/index.d.ts +9 -0
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +8 -0
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/parser.d.ts.map +1 -1
- package/dist/parser/parser.js +7 -2
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/schema-structure.d.ts +53 -0
- package/dist/parser/schema-structure.d.ts.map +1 -0
- package/dist/parser/schema-structure.js +171 -0
- package/dist/parser/schema-structure.js.map +1 -0
- package/dist/parser/transform-data-with-schema.d.ts +35 -0
- package/dist/parser/transform-data-with-schema.d.ts.map +1 -0
- package/dist/parser/transform-data-with-schema.js +140 -0
- package/dist/parser/transform-data-with-schema.js.map +1 -0
- package/dist/parser/types.d.ts +6 -3
- package/dist/parser/types.d.ts.map +1 -1
- package/dist/parser/walk-data-with-schema.d.ts +46 -0
- package/dist/parser/walk-data-with-schema.d.ts.map +1 -0
- package/dist/parser/walk-data-with-schema.js +140 -0
- package/dist/parser/walk-data-with-schema.js.map +1 -0
- package/dist/parser/walk-schema-structure.d.ts +60 -0
- package/dist/parser/walk-schema-structure.d.ts.map +1 -0
- package/dist/parser/walk-schema-structure.js +163 -0
- package/dist/parser/walk-schema-structure.js.map +1 -0
- package/dist/plugins/imports/loader.d.ts +1 -1
- package/dist/plugins/imports/loader.d.ts.map +1 -1
- package/dist/plugins/imports/loader.js +2 -2
- package/dist/plugins/imports/loader.js.map +1 -1
- package/dist/plugins/imports/types.d.ts +1 -1
- package/dist/plugins/imports/types.d.ts.map +1 -1
- package/dist/plugins/metadata/types.d.ts +1 -1
- package/dist/plugins/metadata/types.js +1 -1
- package/dist/plugins/plugins.test-utils.d.ts +15 -0
- package/dist/plugins/plugins.test-utils.d.ts.map +1 -1
- package/dist/plugins/plugins.test-utils.js +24 -0
- package/dist/plugins/plugins.test-utils.js.map +1 -1
- package/dist/plugins/spec/config-spec.d.ts +1 -0
- package/dist/plugins/spec/config-spec.d.ts.map +1 -1
- package/dist/plugins/spec/config-spec.js +1 -0
- package/dist/plugins/spec/config-spec.js.map +1 -1
- package/dist/plugins/store/store.d.ts +6 -1
- package/dist/plugins/store/store.d.ts.map +1 -1
- package/dist/plugins/store/store.js +9 -1
- package/dist/plugins/store/store.js.map +1 -1
- package/dist/references/definition-ref-registry.d.ts +105 -0
- package/dist/references/definition-ref-registry.d.ts.map +1 -0
- package/dist/references/definition-ref-registry.js +40 -0
- package/dist/references/definition-ref-registry.js.map +1 -0
- package/dist/references/deserialize-schema.d.ts +4 -6
- package/dist/references/deserialize-schema.d.ts.map +1 -1
- package/dist/references/deserialize-schema.js +4 -5
- package/dist/references/deserialize-schema.js.map +1 -1
- package/dist/references/expression-types.d.ts +46 -14
- package/dist/references/expression-types.d.ts.map +1 -1
- package/dist/references/expression-types.js +17 -0
- package/dist/references/expression-types.js.map +1 -1
- package/dist/references/extend-parser-context-with-refs.d.ts +32 -2
- package/dist/references/extend-parser-context-with-refs.d.ts.map +1 -1
- package/dist/references/extend-parser-context-with-refs.js +123 -163
- package/dist/references/extend-parser-context-with-refs.js.map +1 -1
- package/dist/references/extract-definition-refs.d.ts +9 -8
- package/dist/references/extract-definition-refs.d.ts.map +1 -1
- package/dist/references/extract-definition-refs.js +110 -26
- package/dist/references/extract-definition-refs.js.map +1 -1
- package/dist/references/fix-ref-deletions.d.ts +6 -6
- package/dist/references/fix-ref-deletions.d.ts.map +1 -1
- package/dist/references/fix-ref-deletions.js +2 -2
- package/dist/references/fix-ref-deletions.js.map +1 -1
- package/dist/references/index.d.ts +3 -0
- package/dist/references/index.d.ts.map +1 -1
- package/dist/references/index.js +3 -0
- package/dist/references/index.js.map +1 -1
- package/dist/references/parse-schema-with-references.d.ts +8 -6
- package/dist/references/parse-schema-with-references.d.ts.map +1 -1
- package/dist/references/parse-schema-with-references.js +10 -12
- package/dist/references/parse-schema-with-references.js.map +1 -1
- package/dist/references/ref-schema-visitor.d.ts +33 -0
- package/dist/references/ref-schema-visitor.d.ts.map +1 -0
- package/dist/references/ref-schema-visitor.js +61 -0
- package/dist/references/ref-schema-visitor.js.map +1 -0
- package/dist/references/resolve-slots.d.ts +1 -1
- package/dist/references/resolve-slots.d.ts.map +1 -1
- package/dist/references/serialize-schema.d.ts +9 -2
- package/dist/references/serialize-schema.d.ts.map +1 -1
- package/dist/references/serialize-schema.js +20 -4
- package/dist/references/serialize-schema.js.map +1 -1
- package/dist/schema/apps/web/admin/admin.d.ts +22 -37
- package/dist/schema/apps/web/admin/admin.d.ts.map +1 -1
- package/dist/schema/apps/web/admin/sections/crud-actions/admin-crud-action.d.ts +6 -15
- package/dist/schema/apps/web/admin/sections/crud-actions/admin-crud-action.d.ts.map +1 -1
- package/dist/schema/apps/web/admin/sections/crud-actions/admin-crud-action.js +3 -8
- package/dist/schema/apps/web/admin/sections/crud-actions/admin-crud-action.js.map +1 -1
- package/dist/schema/apps/web/admin/sections/crud-columns/admin-crud-column.d.ts +6 -15
- package/dist/schema/apps/web/admin/sections/crud-columns/admin-crud-column.d.ts.map +1 -1
- package/dist/schema/apps/web/admin/sections/crud-columns/admin-crud-column.js +3 -8
- package/dist/schema/apps/web/admin/sections/crud-columns/admin-crud-column.js.map +1 -1
- package/dist/schema/apps/web/admin/sections/crud-form/admin-crud-input.d.ts +9 -15
- package/dist/schema/apps/web/admin/sections/crud-form/admin-crud-input.d.ts.map +1 -1
- package/dist/schema/apps/web/admin/sections/crud-form/admin-crud-input.js +3 -8
- package/dist/schema/apps/web/admin/sections/crud-form/admin-crud-input.js.map +1 -1
- package/dist/schema/apps/web/admin/sections/crud.d.ts +6 -6
- package/dist/schema/apps/web/web-app.d.ts +32 -47
- package/dist/schema/apps/web/web-app.d.ts.map +1 -1
- package/dist/schema/creator/definition-default-registry.d.ts +22 -0
- package/dist/schema/creator/definition-default-registry.d.ts.map +1 -0
- package/dist/schema/creator/definition-default-registry.js +18 -0
- package/dist/schema/creator/definition-default-registry.js.map +1 -0
- package/dist/schema/creator/definition-fix-registry.d.ts +45 -0
- package/dist/schema/creator/definition-fix-registry.d.ts.map +1 -0
- package/dist/schema/creator/definition-fix-registry.js +41 -0
- package/dist/schema/creator/definition-fix-registry.js.map +1 -0
- package/dist/schema/creator/definition-issue-checker-spec.d.ts +37 -0
- package/dist/schema/creator/definition-issue-checker-spec.d.ts.map +1 -0
- package/dist/schema/creator/definition-issue-checker-spec.js +28 -0
- package/dist/schema/creator/definition-issue-checker-spec.js.map +1 -0
- package/dist/schema/creator/definition-issue-checkers.d.ts +16 -0
- package/dist/schema/creator/definition-issue-checkers.d.ts.map +1 -0
- package/dist/schema/creator/definition-issue-checkers.js +35 -0
- package/dist/schema/creator/definition-issue-checkers.js.map +1 -0
- package/dist/schema/creator/definition-issue-registry.d.ts +54 -0
- package/dist/schema/creator/definition-issue-registry.d.ts.map +1 -0
- package/dist/schema/creator/definition-issue-registry.js +47 -0
- package/dist/schema/creator/definition-issue-registry.js.map +1 -0
- package/dist/schema/creator/definition-issue-types.d.ts +53 -0
- package/dist/schema/creator/definition-issue-types.d.ts.map +1 -0
- package/dist/schema/creator/definition-issue-types.js +2 -0
- package/dist/schema/creator/definition-issue-types.js.map +1 -0
- package/dist/schema/creator/extend-parser-context-with-defaults.d.ts +20 -4
- package/dist/schema/creator/extend-parser-context-with-defaults.d.ts.map +1 -1
- package/dist/schema/creator/extend-parser-context-with-defaults.js +24 -42
- package/dist/schema/creator/extend-parser-context-with-defaults.js.map +1 -1
- package/dist/schema/creator/index.d.ts +6 -0
- package/dist/schema/creator/index.d.ts.map +1 -1
- package/dist/schema/creator/index.js +5 -0
- package/dist/schema/creator/index.js.map +1 -1
- package/dist/schema/creator/schema-creator.d.ts.map +1 -1
- package/dist/schema/creator/schema-creator.js +18 -4
- package/dist/schema/creator/schema-creator.js.map +1 -1
- package/dist/schema/creator/types.d.ts +3 -30
- package/dist/schema/creator/types.d.ts.map +1 -1
- package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.d.ts.map +1 -1
- package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.js +116 -25
- package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.js.map +1 -1
- package/dist/schema/models/authorizer/authorizer-expression-ast.d.ts +82 -1
- package/dist/schema/models/authorizer/authorizer-expression-ast.d.ts.map +1 -1
- package/dist/schema/models/authorizer/authorizer-expression-ast.js.map +1 -1
- package/dist/schema/models/authorizer/authorizer-expression-parser.d.ts +8 -9
- package/dist/schema/models/authorizer/authorizer-expression-parser.d.ts.map +1 -1
- package/dist/schema/models/authorizer/authorizer-expression-parser.js +28 -35
- package/dist/schema/models/authorizer/authorizer-expression-parser.js.map +1 -1
- package/dist/schema/models/authorizer/authorizer-expression-validator.d.ts +42 -4
- package/dist/schema/models/authorizer/authorizer-expression-validator.d.ts.map +1 -1
- package/dist/schema/models/authorizer/authorizer-expression-validator.js +119 -18
- package/dist/schema/models/authorizer/authorizer-expression-validator.js.map +1 -1
- package/dist/schema/models/graphql.d.ts +42 -111
- package/dist/schema/models/graphql.d.ts.map +1 -1
- package/dist/schema/models/graphql.js +59 -19
- package/dist/schema/models/graphql.js.map +1 -1
- package/dist/schema/models/models.d.ts +1134 -343
- package/dist/schema/models/models.d.ts.map +1 -1
- package/dist/schema/models/models.js +258 -86
- package/dist/schema/models/models.js.map +1 -1
- package/dist/schema/plugins/definition.d.ts +2 -30
- package/dist/schema/plugins/definition.d.ts.map +1 -1
- package/dist/schema/plugins/definition.js +26 -15
- package/dist/schema/plugins/definition.js.map +1 -1
- package/dist/schema/project-definition.d.ts +532 -186
- package/dist/schema/project-definition.d.ts.map +1 -1
- package/dist/schema/project-definition.js +15 -3
- package/dist/schema/project-definition.js.map +1 -1
- package/dist/schema/settings/general.d.ts +1 -1
- package/dist/schema/settings/general.d.ts.map +1 -1
- package/dist/schema/settings/general.js +4 -1
- package/dist/schema/settings/general.js.map +1 -1
- package/dist/schema/settings/settings.d.ts +3 -3
- package/dist/schema/settings/theme.d.ts +3 -3
- package/dist/testing/definition-helpers.test-helper.d.ts +12 -0
- package/dist/testing/definition-helpers.test-helper.d.ts.map +1 -0
- package/dist/testing/definition-helpers.test-helper.js +77 -0
- package/dist/testing/definition-helpers.test-helper.js.map +1 -0
- package/dist/testing/expression-stub-parser.test-helper.d.ts +59 -0
- package/dist/testing/expression-stub-parser.test-helper.d.ts.map +1 -0
- package/dist/testing/expression-stub-parser.test-helper.js +79 -0
- package/dist/testing/expression-stub-parser.test-helper.js.map +1 -0
- package/dist/testing/expression-warning-parser.test-helper.d.ts +39 -0
- package/dist/testing/expression-warning-parser.test-helper.d.ts.map +1 -0
- package/dist/testing/expression-warning-parser.test-helper.js +62 -0
- package/dist/testing/expression-warning-parser.test-helper.js.map +1 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +5 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/parser-context.test-helper.d.ts +8 -0
- package/dist/testing/parser-context.test-helper.d.ts.map +1 -0
- package/dist/testing/parser-context.test-helper.js +16 -0
- package/dist/testing/parser-context.test-helper.js.map +1 -0
- package/dist/{definition/project-definition-container.test-utils.d.ts → testing/project-definition-container.test-helper.d.ts} +4 -2
- package/dist/testing/project-definition-container.test-helper.d.ts.map +1 -0
- package/dist/{definition/project-definition-container.test-utils.js → testing/project-definition-container.test-helper.js} +11 -5
- package/dist/testing/project-definition-container.test-helper.js.map +1 -0
- package/dist/tools/assign-entity-ids.d.ts +17 -0
- package/dist/tools/assign-entity-ids.d.ts.map +1 -0
- package/dist/tools/assign-entity-ids.js +34 -0
- package/dist/tools/assign-entity-ids.js.map +1 -0
- package/dist/tools/entity-service/entity-navigation.d.ts +13 -0
- package/dist/tools/entity-service/entity-navigation.d.ts.map +1 -0
- package/dist/tools/entity-service/entity-navigation.js +84 -0
- package/dist/tools/entity-service/entity-navigation.js.map +1 -0
- package/dist/tools/entity-service/entity-read.d.ts +38 -0
- package/dist/tools/entity-service/entity-read.d.ts.map +1 -0
- package/dist/tools/entity-service/entity-read.js +56 -0
- package/dist/tools/entity-service/entity-read.js.map +1 -0
- package/dist/tools/entity-service/entity-type-map.d.ts +18 -0
- package/dist/tools/entity-service/entity-type-map.d.ts.map +1 -0
- package/dist/tools/entity-service/entity-type-map.js +75 -0
- package/dist/tools/entity-service/entity-type-map.js.map +1 -0
- package/dist/tools/entity-service/entity-write.d.ts +39 -0
- package/dist/tools/entity-service/entity-write.d.ts.map +1 -0
- package/dist/tools/entity-service/entity-write.js +99 -0
- package/dist/tools/entity-service/entity-write.js.map +1 -0
- package/dist/tools/entity-service/index.d.ts +5 -0
- package/dist/tools/entity-service/index.d.ts.map +1 -0
- package/dist/tools/entity-service/index.js +4 -0
- package/dist/tools/entity-service/index.js.map +1 -0
- package/dist/tools/entity-service/types.d.ts +41 -0
- package/dist/tools/entity-service/types.d.ts.map +1 -0
- package/dist/tools/entity-service/types.js +2 -0
- package/dist/tools/entity-service/types.js.map +1 -0
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/merge-schema/diff-definition.d.ts +74 -0
- package/dist/tools/merge-schema/diff-definition.d.ts.map +1 -0
- package/dist/tools/merge-schema/diff-definition.js +163 -0
- package/dist/tools/merge-schema/diff-definition.js.map +1 -0
- package/dist/tools/merge-schema/entity-utils.d.ts +18 -0
- package/dist/tools/merge-schema/entity-utils.d.ts.map +1 -0
- package/dist/tools/merge-schema/entity-utils.js +42 -0
- package/dist/tools/merge-schema/entity-utils.js.map +1 -0
- package/dist/tools/merge-schema/index.d.ts +10 -0
- package/dist/tools/merge-schema/index.d.ts.map +1 -0
- package/dist/tools/merge-schema/index.js +7 -0
- package/dist/tools/merge-schema/index.js.map +1 -0
- package/dist/tools/merge-schema/merge-data-with-schema.d.ts +21 -0
- package/dist/tools/merge-schema/merge-data-with-schema.d.ts.map +1 -0
- package/dist/tools/merge-schema/merge-data-with-schema.js +168 -0
- package/dist/tools/merge-schema/merge-data-with-schema.js.map +1 -0
- package/dist/tools/merge-schema/merge-definition.d.ts +42 -0
- package/dist/tools/merge-schema/merge-definition.d.ts.map +1 -0
- package/dist/tools/merge-schema/merge-definition.js +53 -0
- package/dist/tools/merge-schema/merge-definition.js.map +1 -0
- package/dist/tools/merge-schema/merge-rule-registry.d.ts +47 -0
- package/dist/tools/merge-schema/merge-rule-registry.d.ts.map +1 -0
- package/dist/tools/merge-schema/merge-rule-registry.js +53 -0
- package/dist/tools/merge-schema/merge-rule-registry.js.map +1 -0
- package/dist/tools/merge-schema/walk-schema.d.ts +26 -0
- package/dist/tools/merge-schema/walk-schema.d.ts.map +1 -0
- package/dist/tools/merge-schema/walk-schema.js +94 -0
- package/dist/tools/merge-schema/walk-schema.js.map +1 -0
- package/dist/utils/definition-diff/definition-diff.js.map +1 -1
- package/dist/web/components/definition-diff-alert.d.ts +9 -0
- package/dist/web/components/definition-diff-alert.d.ts.map +1 -0
- package/dist/web/components/definition-diff-alert.js +17 -0
- package/dist/web/components/definition-diff-alert.js.map +1 -0
- package/dist/web/components/index.d.ts +1 -1
- package/dist/web/components/index.d.ts.map +1 -1
- package/dist/web/components/index.js +1 -1
- package/dist/web/components/index.js.map +1 -1
- package/dist/web/hooks/use-project-definition.d.ts +10 -2
- package/dist/web/hooks/use-project-definition.d.ts.map +1 -1
- package/dist/web/hooks/use-project-definition.js.map +1 -1
- package/dist/web/specs/entity-type-url-web-spec.d.ts +68 -0
- package/dist/web/specs/entity-type-url-web-spec.d.ts.map +1 -0
- package/dist/web/specs/entity-type-url-web-spec.js +27 -0
- package/dist/web/specs/entity-type-url-web-spec.js.map +1 -0
- package/dist/web/specs/index.d.ts +1 -0
- package/dist/web/specs/index.d.ts.map +1 -1
- package/dist/web/specs/index.js +1 -0
- package/dist/web/specs/index.js.map +1 -1
- package/package.json +12 -11
- package/dist/definition/project-definition-container.test-utils.d.ts.map +0 -1
- package/dist/definition/project-definition-container.test-utils.js.map +0 -1
- package/dist/references/collect-refs.d.ts +0 -24
- package/dist/references/collect-refs.d.ts.map +0 -1
- package/dist/references/collect-refs.js +0 -86
- package/dist/references/collect-refs.js.map +0 -1
- package/dist/references/markers.d.ts +0 -59
- package/dist/references/markers.d.ts.map +0 -1
- package/dist/references/markers.js +0 -29
- package/dist/references/markers.js.map +0 -1
- package/dist/references/strip-ref-markers.d.ts +0 -7
- package/dist/references/strip-ref-markers.d.ts.map +0 -1
- package/dist/references/strip-ref-markers.js +0 -25
- package/dist/references/strip-ref-markers.js.map +0 -1
- package/dist/schema/models/mocks.d.ts +0 -6
- package/dist/schema/models/mocks.d.ts.map +0 -1
- package/dist/schema/models/mocks.js +0 -55
- package/dist/schema/models/mocks.js.map +0 -1
- package/dist/tools/model-merger/index.d.ts +0 -2
- package/dist/tools/model-merger/index.d.ts.map +0 -1
- package/dist/tools/model-merger/index.js +0 -2
- package/dist/tools/model-merger/index.js.map +0 -1
- package/dist/tools/model-merger/model-merger.d.ts +0 -569
- package/dist/tools/model-merger/model-merger.d.ts.map +0 -1
- package/dist/tools/model-merger/model-merger.js +0 -319
- package/dist/tools/model-merger/model-merger.js.map +0 -1
- package/dist/web/components/model-merger-result-alert.d.ts +0 -8
- package/dist/web/components/model-merger-result-alert.d.ts.map +0 -1
- package/dist/web/components/model-merger-result-alert.js +0 -20
- package/dist/web/components/model-merger-result-alert.js.map +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves a definition issue's path to an absolute path in the definition.
|
|
3
|
+
*
|
|
4
|
+
* If the issue is scoped to an entity, combines the entity's path with the
|
|
5
|
+
* issue's relative path. If no entity, returns the path as-is.
|
|
6
|
+
*/
|
|
7
|
+
export function resolveIssuePath(issue, container) {
|
|
8
|
+
if (!issue.entityId)
|
|
9
|
+
return issue.path;
|
|
10
|
+
const entity = container.entityFromId(issue.entityId);
|
|
11
|
+
if (!entity)
|
|
12
|
+
return issue.path;
|
|
13
|
+
return [...entity.path, ...issue.path];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Creates a definition issue scoped to a specific entity.
|
|
17
|
+
*
|
|
18
|
+
* Validates that the entity exists in the container and returns an issue
|
|
19
|
+
* with the entity ID and a relative path from the entity root.
|
|
20
|
+
*
|
|
21
|
+
* @param container - The project definition container
|
|
22
|
+
* @param entityId - The entity ID to scope the issue to
|
|
23
|
+
* @param relativePath - Path relative to the entity
|
|
24
|
+
* @param issue - The issue message, severity, and optional fix
|
|
25
|
+
*/
|
|
26
|
+
export function createEntityIssue(container, entityId, relativePath, issue) {
|
|
27
|
+
const entity = container.entityFromId(entityId);
|
|
28
|
+
if (!entity) {
|
|
29
|
+
throw new Error(`Entity not found: ${entityId}`);
|
|
30
|
+
}
|
|
31
|
+
return { ...issue, entityId, path: relativePath };
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=definition-issue-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition-issue-utils.js","sourceRoot":"","sources":["../../src/parser/definition-issue-utils.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAsB,EACtB,SAAqC;IAErC,IAAI,CAAC,KAAK,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IACvC,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IAC/B,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAqC,EACrC,QAAgB,EAChB,YAA2B,EAC3B,KAA4D;IAE5D,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AACpD,CAAC"}
|
package/dist/parser/index.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
export { applyDefinitionFixes } from './apply-definition-fixes.js';
|
|
2
|
+
export { cleanDefaultValues } from './clean-default-values.js';
|
|
3
|
+
export { collectDefinitionIssues, collectFieldIssues, partitionIssuesBySeverity, } from './collect-definition-issues.js';
|
|
4
|
+
export type { PartitionedIssues } from './collect-definition-issues.js';
|
|
5
|
+
export { collectExpressionIssues } from './collect-expression-issues.js';
|
|
6
|
+
export { createEntityIssue, resolveIssuePath, } from './definition-issue-utils.js';
|
|
1
7
|
export * from './parser.js';
|
|
8
|
+
export { findDiscriminatedUnionMatch } from './schema-structure.js';
|
|
9
|
+
export { transformDataWithSchema } from './transform-data-with-schema.js';
|
|
2
10
|
export type * from './types.js';
|
|
11
|
+
export { walkDataWithSchema } from './walk-data-with-schema.js';
|
|
3
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,mBAAmB,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/parser/index.js
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
+
export { applyDefinitionFixes } from './apply-definition-fixes.js';
|
|
2
|
+
export { cleanDefaultValues } from './clean-default-values.js';
|
|
3
|
+
export { collectDefinitionIssues, collectFieldIssues, partitionIssuesBySeverity, } from './collect-definition-issues.js';
|
|
4
|
+
export { collectExpressionIssues } from './collect-expression-issues.js';
|
|
5
|
+
export { createEntityIssue, resolveIssuePath, } from './definition-issue-utils.js';
|
|
1
6
|
export * from './parser.js';
|
|
7
|
+
export { findDiscriminatedUnionMatch } from './schema-structure.js';
|
|
8
|
+
export { transformDataWithSchema } from './transform-data-with-schema.js';
|
|
9
|
+
export { walkDataWithSchema } from './walk-data-with-schema.js';
|
|
2
10
|
//# sourceMappingURL=index.js.map
|
package/dist/parser/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,WAAW,EACZ,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,mCAAmC,CAAC;AAW3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,OAAO,GACzB,eAAe,
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,WAAW,EACZ,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,mCAAmC,CAAC;AAW3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,OAAO,GACzB,eAAe,CAyBjB;AAED;;;;;;;GAOG;AACH,wBAAgB,6CAA6C,CAC3D,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,uBAAuB,EAAE,EAClC,iBAAiB,EAAE,iBAAiB,GACnC,eAAe,CAsBjB;AAED;;;;;;GAMG;AACH,wBAAgB,wCAAwC,CACtD,iBAAiB,EAAE,OAAO,EAC1B,OAAO,EAAE,mBAAmB,GAC3B,uBAAuB,CAOzB;AAED,wBAAgB,iCAAiC,CAC/C,iBAAiB,EAAE,OAAO,EAC1B,OAAO,EAAE,mBAAmB,GAC3B,iBAAiB,CAMnB;AAED;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAClD,iBAAiB,EAAE,OAAO,EAC1B,OAAO,EAAE,mBAAmB,GAC3B;IACD,UAAU,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IACrD,WAAW,EAAE,eAAe,CAAC;CAC9B,CAYA"}
|
package/dist/parser/parser.js
CHANGED
|
@@ -32,7 +32,8 @@ export function createPluginSpecStore(pluginStore, projectDefinition) {
|
|
|
32
32
|
module: m.module,
|
|
33
33
|
}));
|
|
34
34
|
});
|
|
35
|
-
|
|
35
|
+
const pluginKeys = plugins.map((p) => pluginEntityType.keyFromId(p.id));
|
|
36
|
+
return initializePlugins([...modulesWithKey, ...coreModules], pluginKeys);
|
|
36
37
|
}
|
|
37
38
|
/**
|
|
38
39
|
* Creates a plugin implementation store with the given plugins added to the project definition.
|
|
@@ -89,7 +90,11 @@ export function parseProjectDefinitionWithContext(projectDefinition, context) {
|
|
|
89
90
|
export function parseProjectDefinitionWithReferences(projectDefinition, context) {
|
|
90
91
|
const { pluginStore } = context;
|
|
91
92
|
const pluginSpecStore = createPluginSpecStore(pluginStore, projectDefinition);
|
|
92
|
-
const
|
|
93
|
+
const definitionContext = createDefinitionSchemaParserContext({
|
|
94
|
+
plugins: pluginSpecStore,
|
|
95
|
+
});
|
|
96
|
+
const schema = createProjectDefinitionSchema(definitionContext);
|
|
97
|
+
const definition = parseSchemaWithTransformedReferences(schema, projectDefinition);
|
|
93
98
|
return { definition, pluginStore: pluginSpecStore };
|
|
94
99
|
}
|
|
95
100
|
//# sourceMappingURL=parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgBxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,oCAAoC,EAAE,MAAM,iDAAiD,CAAC;AACvG,OAAO,EACL,mCAAmC,EACnC,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAIlF;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAwB,EACxB,iBAA0B;IAE1B,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;IACtD,MAAM,UAAU,GAAG,CAAC;SACjB,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,QAAQ,EAAE;KACxD,CAAC;SACD,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC5B,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,UAAU,CAAC;IACpC,qBAAqB;IACrB,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAyB,EAAE;QAClE,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAClC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CACf,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,CACrE,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;YAC7D,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG;YAC9B,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IACH,OAAO,iBAAiB,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import type { ReferencePath } from '#src/references/types.js';
|
|
3
|
+
export type SchemaChildren = {
|
|
4
|
+
readonly kind: 'leaf';
|
|
5
|
+
} | {
|
|
6
|
+
readonly kind: 'leaf-union';
|
|
7
|
+
} | {
|
|
8
|
+
readonly kind: 'wrapper';
|
|
9
|
+
readonly innerSchema: z.ZodType;
|
|
10
|
+
readonly skipIfNullish: boolean;
|
|
11
|
+
} | {
|
|
12
|
+
readonly kind: 'object';
|
|
13
|
+
readonly entries: readonly (readonly [string, z.ZodType])[];
|
|
14
|
+
} | {
|
|
15
|
+
readonly kind: 'array';
|
|
16
|
+
readonly elementSchema: z.ZodType;
|
|
17
|
+
} | {
|
|
18
|
+
readonly kind: 'tuple';
|
|
19
|
+
readonly items: readonly z.ZodType[];
|
|
20
|
+
readonly rest: z.ZodType | null;
|
|
21
|
+
} | {
|
|
22
|
+
readonly kind: 'record';
|
|
23
|
+
readonly valueSchema: z.ZodType;
|
|
24
|
+
} | {
|
|
25
|
+
readonly kind: 'intersection';
|
|
26
|
+
readonly left: z.ZodType;
|
|
27
|
+
readonly right: z.ZodType;
|
|
28
|
+
} | {
|
|
29
|
+
readonly kind: 'discriminated-union';
|
|
30
|
+
readonly match: z.ZodType | undefined;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Given a list of discriminated union options, finds the branch whose
|
|
34
|
+
* discriminator literal includes the value found at `data[discriminator]`.
|
|
35
|
+
*
|
|
36
|
+
* Returns `undefined` if:
|
|
37
|
+
* - `data` is not a plain object or doesn't contain the discriminator key
|
|
38
|
+
* - no option matches the discriminator value in the data
|
|
39
|
+
*
|
|
40
|
+
* Throws if any option is not a ZodObject or its discriminator field is not a literal schema.
|
|
41
|
+
*/
|
|
42
|
+
export declare function findDiscriminatedUnionMatch(options: z.ZodType[], discriminator: string, data: unknown): z.ZodType | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Classifies a Zod schema node and returns a descriptor of its child schemas.
|
|
45
|
+
*
|
|
46
|
+
* This is the single source of truth for schema structure traversal.
|
|
47
|
+
* Both `walkDataWithSchema` and `transformDataWithSchema` delegate here
|
|
48
|
+
* instead of duplicating the exhaustive type switch.
|
|
49
|
+
*
|
|
50
|
+
* Throws for unsupported schema types (transform, pipe, custom, etc.).
|
|
51
|
+
*/
|
|
52
|
+
export declare function getSchemaChildren(schema: z.ZodType, data: unknown, path: ReferencePath): SchemaChildren;
|
|
53
|
+
//# sourceMappingURL=schema-structure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-structure.d.ts","sourceRoot":"","sources":["../../src/parser/schema-structure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,CAAC,EAaF,MAAM,KAAK,CAAC;AAEb,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAM9D,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;CAAE,GAC/B;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;CAC7D,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAA;CAAE,GAC7D;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;CACjC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAA;CAAE,GAC5D;IACE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC;CAC3B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC;CACvC,CAAC;AAiBN;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EACpB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,OAAO,GACZ,CAAC,CAAC,OAAO,GAAG,SAAS,CA8BvB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,CAAC,CAAC,OAAO,EACjB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,aAAa,GAClB,cAAc,CAuHhB"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Helpers
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
/** Leaf types that are allowed in a plain `z.union()` without a discriminator. */
|
|
5
|
+
const LEAF_UNION_TYPES = new Set(['string', 'enum', 'literal']);
|
|
6
|
+
/**
|
|
7
|
+
* Returns `true` if every option in the union is a leaf type
|
|
8
|
+
* (string, enum, or literal), meaning no structural descent is needed.
|
|
9
|
+
*/
|
|
10
|
+
function isLeafUnion(options) {
|
|
11
|
+
return options.every((opt) => LEAF_UNION_TYPES.has(opt._zod.def.type));
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Given a list of discriminated union options, finds the branch whose
|
|
15
|
+
* discriminator literal includes the value found at `data[discriminator]`.
|
|
16
|
+
*
|
|
17
|
+
* Returns `undefined` if:
|
|
18
|
+
* - `data` is not a plain object or doesn't contain the discriminator key
|
|
19
|
+
* - no option matches the discriminator value in the data
|
|
20
|
+
*
|
|
21
|
+
* Throws if any option is not a ZodObject or its discriminator field is not a literal schema.
|
|
22
|
+
*/
|
|
23
|
+
export function findDiscriminatedUnionMatch(options, discriminator, data) {
|
|
24
|
+
if (data === null ||
|
|
25
|
+
data === undefined ||
|
|
26
|
+
typeof data !== 'object' ||
|
|
27
|
+
!(discriminator in data)) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
const discValue = data[discriminator];
|
|
31
|
+
for (const option of options) {
|
|
32
|
+
if (option._zod.def.type !== 'object') {
|
|
33
|
+
throw new Error(`findDiscriminatedUnionMatch: discriminated union option must be an object schema (got type: "${option._zod.def.type}")`);
|
|
34
|
+
}
|
|
35
|
+
const { shape } = option;
|
|
36
|
+
const discField = shape[discriminator];
|
|
37
|
+
if (discField?._zod.def.type !== 'literal') {
|
|
38
|
+
throw new Error(`findDiscriminatedUnionMatch: discriminator field "${discriminator}" must be a literal schema on each union option`);
|
|
39
|
+
}
|
|
40
|
+
const { values } = discField._zod.def;
|
|
41
|
+
if (values.includes(discValue)) {
|
|
42
|
+
return option;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
// getSchemaChildren — single exhaustive type switch
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
/**
|
|
51
|
+
* Classifies a Zod schema node and returns a descriptor of its child schemas.
|
|
52
|
+
*
|
|
53
|
+
* This is the single source of truth for schema structure traversal.
|
|
54
|
+
* Both `walkDataWithSchema` and `transformDataWithSchema` delegate here
|
|
55
|
+
* instead of duplicating the exhaustive type switch.
|
|
56
|
+
*
|
|
57
|
+
* Throws for unsupported schema types (transform, pipe, custom, etc.).
|
|
58
|
+
*/
|
|
59
|
+
export function getSchemaChildren(schema, data, path) {
|
|
60
|
+
const { type } = schema._zod.def;
|
|
61
|
+
switch (type) {
|
|
62
|
+
case 'object': {
|
|
63
|
+
const typed = schema;
|
|
64
|
+
return {
|
|
65
|
+
kind: 'object',
|
|
66
|
+
entries: Object.entries(typed.shape),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
case 'array': {
|
|
70
|
+
const typed = schema;
|
|
71
|
+
return {
|
|
72
|
+
kind: 'array',
|
|
73
|
+
elementSchema: typed.element,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
case 'optional':
|
|
77
|
+
case 'nullable':
|
|
78
|
+
case 'nonoptional':
|
|
79
|
+
case 'readonly': {
|
|
80
|
+
const innerSchema = schema.unwrap();
|
|
81
|
+
return { kind: 'wrapper', innerSchema, skipIfNullish: true };
|
|
82
|
+
}
|
|
83
|
+
case 'default':
|
|
84
|
+
case 'prefault': {
|
|
85
|
+
// Default/prefault wrappers always descend regardless of data value.
|
|
86
|
+
// Both support `.unwrap()` to access the inner schema.
|
|
87
|
+
const innerSchema = schema.unwrap();
|
|
88
|
+
return { kind: 'wrapper', innerSchema, skipIfNullish: false };
|
|
89
|
+
}
|
|
90
|
+
case 'union': {
|
|
91
|
+
const typed = schema;
|
|
92
|
+
const options = typed.options;
|
|
93
|
+
// discriminator has no public API — must use internal access
|
|
94
|
+
const { discriminator } = typed._zod.def;
|
|
95
|
+
if (discriminator) {
|
|
96
|
+
const match = findDiscriminatedUnionMatch(options, discriminator, data);
|
|
97
|
+
return { kind: 'discriminated-union', match };
|
|
98
|
+
}
|
|
99
|
+
if (isLeafUnion(options)) {
|
|
100
|
+
return { kind: 'leaf-union' };
|
|
101
|
+
}
|
|
102
|
+
throw new Error(`Plain z.union() is not supported unless all options are string/enum/literal (path: ${path.join('.')})`);
|
|
103
|
+
}
|
|
104
|
+
case 'tuple': {
|
|
105
|
+
// items/rest have no public API on ZodTuple — must use internal access
|
|
106
|
+
const typed = schema;
|
|
107
|
+
return {
|
|
108
|
+
kind: 'tuple',
|
|
109
|
+
items: typed._zod.def.items,
|
|
110
|
+
rest: typed._zod.def.rest ?? null,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
case 'record': {
|
|
114
|
+
const typed = schema;
|
|
115
|
+
return {
|
|
116
|
+
kind: 'record',
|
|
117
|
+
valueSchema: typed.valueType,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
case 'intersection': {
|
|
121
|
+
// left/right have no public API on ZodIntersection — must use internal access
|
|
122
|
+
const typed = schema;
|
|
123
|
+
return {
|
|
124
|
+
kind: 'intersection',
|
|
125
|
+
left: typed._zod.def.left,
|
|
126
|
+
right: typed._zod.def.right,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
// Opaque / non-structural types are not supported in definition schemas.
|
|
130
|
+
case 'transform':
|
|
131
|
+
case 'pipe':
|
|
132
|
+
case 'custom':
|
|
133
|
+
case 'file':
|
|
134
|
+
case 'symbol':
|
|
135
|
+
case 'promise':
|
|
136
|
+
case 'function':
|
|
137
|
+
case 'bigint':
|
|
138
|
+
case 'void':
|
|
139
|
+
case 'nan':
|
|
140
|
+
case 'lazy':
|
|
141
|
+
case 'catch':
|
|
142
|
+
case 'map':
|
|
143
|
+
case 'set':
|
|
144
|
+
case 'success':
|
|
145
|
+
case 'template_literal': {
|
|
146
|
+
throw new Error(`Schema type "${type}" is not supported in definition schemas (path: ${path.join('.')})`);
|
|
147
|
+
}
|
|
148
|
+
// Serializable leaf types — no structural descent needed.
|
|
149
|
+
case 'string':
|
|
150
|
+
case 'number':
|
|
151
|
+
case 'int':
|
|
152
|
+
case 'boolean':
|
|
153
|
+
case 'null':
|
|
154
|
+
case 'undefined':
|
|
155
|
+
case 'never':
|
|
156
|
+
case 'any':
|
|
157
|
+
case 'unknown':
|
|
158
|
+
case 'date':
|
|
159
|
+
case 'enum':
|
|
160
|
+
case 'literal': {
|
|
161
|
+
return { kind: 'leaf' };
|
|
162
|
+
}
|
|
163
|
+
default: {
|
|
164
|
+
// Exhaustive guard: if Zod adds a new type, this will fail to compile.
|
|
165
|
+
const _exhaustiveCheck = type;
|
|
166
|
+
void _exhaustiveCheck;
|
|
167
|
+
return { kind: 'leaf' };
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=schema-structure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-structure.js","sourceRoot":"","sources":["../../src/parser/schema-structure.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import type { ReferencePath } from '#src/references/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Context passed to the transform callback at each schema node.
|
|
5
|
+
*/
|
|
6
|
+
interface SchemaTransformContext {
|
|
7
|
+
/** The absolute path to the current node in the data. */
|
|
8
|
+
readonly path: ReferencePath;
|
|
9
|
+
/** The Zod schema at this node. */
|
|
10
|
+
readonly schema: z.ZodType;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A transform function called at each schema node after children have
|
|
14
|
+
* already been transformed. Returns the (possibly new) value for this node.
|
|
15
|
+
* Return the input value unchanged to signal "no change".
|
|
16
|
+
*
|
|
17
|
+
* Returning `undefined` signals that the value should be removed (for object
|
|
18
|
+
* keys) or kept in place (for array elements).
|
|
19
|
+
*/
|
|
20
|
+
export type SchemaTransformFn = (value: unknown, ctx: SchemaTransformContext) => unknown;
|
|
21
|
+
/**
|
|
22
|
+
* Walks a Zod schema in parallel with data, applying a transform function
|
|
23
|
+
* bottom-up. Children are transformed first, then the parent transform
|
|
24
|
+
* sees the already-transformed children.
|
|
25
|
+
*
|
|
26
|
+
* Returns a new data tree with transformations applied. Preserves object
|
|
27
|
+
* references when no changes occur in a subtree (structural sharing).
|
|
28
|
+
*
|
|
29
|
+
* Transform semantics for `undefined` returns:
|
|
30
|
+
* - Object keys: the key is omitted from the result
|
|
31
|
+
* - Array elements: `undefined` is kept in place (indices must be preserved)
|
|
32
|
+
*/
|
|
33
|
+
export declare function transformDataWithSchema<T>(schema: z.ZodType, data: T, transform: SchemaTransformFn): T;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=transform-data-with-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-data-with-schema.d.ts","sourceRoot":"","sources":["../../src/parser/transform-data-with-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI9D;;GAEG;AACH,UAAU,sBAAsB;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,mCAAmC;IACnC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,sBAAsB,KACxB,OAAO,CAAC;AAEb;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EACvC,MAAM,EAAE,CAAC,CAAC,OAAO,EACjB,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,iBAAiB,GAC3B,CAAC,CAEH"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { getSchemaChildren } from './schema-structure.js';
|
|
2
|
+
/**
|
|
3
|
+
* Walks a Zod schema in parallel with data, applying a transform function
|
|
4
|
+
* bottom-up. Children are transformed first, then the parent transform
|
|
5
|
+
* sees the already-transformed children.
|
|
6
|
+
*
|
|
7
|
+
* Returns a new data tree with transformations applied. Preserves object
|
|
8
|
+
* references when no changes occur in a subtree (structural sharing).
|
|
9
|
+
*
|
|
10
|
+
* Transform semantics for `undefined` returns:
|
|
11
|
+
* - Object keys: the key is omitted from the result
|
|
12
|
+
* - Array elements: `undefined` is kept in place (indices must be preserved)
|
|
13
|
+
*/
|
|
14
|
+
export function transformDataWithSchema(schema, data, transform) {
|
|
15
|
+
return transformNode(schema, data, [], transform);
|
|
16
|
+
}
|
|
17
|
+
function transformNode(schema, data, path, transform) {
|
|
18
|
+
// Step 1: Structural descent — recurse into children first (bottom-up).
|
|
19
|
+
let childResult = data;
|
|
20
|
+
const children = getSchemaChildren(schema, data, path);
|
|
21
|
+
switch (children.kind) {
|
|
22
|
+
case 'leaf': {
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
case 'leaf-union': {
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
case 'wrapper': {
|
|
29
|
+
if (children.skipIfNullish && (data === undefined || data === null))
|
|
30
|
+
break;
|
|
31
|
+
childResult = transformNode(children.innerSchema, data, path, transform);
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
case 'object': {
|
|
35
|
+
if (data === null || data === undefined || typeof data !== 'object')
|
|
36
|
+
break;
|
|
37
|
+
const obj = data;
|
|
38
|
+
let changed = false;
|
|
39
|
+
const entries = [];
|
|
40
|
+
for (const [key, fieldSchema] of children.entries) {
|
|
41
|
+
const original = obj[key];
|
|
42
|
+
const transformed = transformNode(fieldSchema, original, [...path, key], transform);
|
|
43
|
+
if (transformed !== original)
|
|
44
|
+
changed = true;
|
|
45
|
+
entries.push([key, transformed]);
|
|
46
|
+
}
|
|
47
|
+
if (changed) {
|
|
48
|
+
// Spread original first to preserve keys not in schema shape,
|
|
49
|
+
// then overlay transformed entries.
|
|
50
|
+
const result = { ...obj };
|
|
51
|
+
for (const [key, value] of entries) {
|
|
52
|
+
if (value === undefined) {
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
54
|
+
delete result[key];
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
result[key] = value;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
childResult = result;
|
|
61
|
+
}
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
case 'array': {
|
|
65
|
+
if (!Array.isArray(data))
|
|
66
|
+
break;
|
|
67
|
+
let changed = false;
|
|
68
|
+
const items = [];
|
|
69
|
+
for (const [i, datum] of data.entries()) {
|
|
70
|
+
const transformed = transformNode(children.elementSchema, datum, [...path, i], transform);
|
|
71
|
+
if (transformed !== datum)
|
|
72
|
+
changed = true;
|
|
73
|
+
items.push(transformed);
|
|
74
|
+
}
|
|
75
|
+
if (changed) {
|
|
76
|
+
childResult = items;
|
|
77
|
+
}
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
case 'tuple': {
|
|
81
|
+
if (!Array.isArray(data))
|
|
82
|
+
break;
|
|
83
|
+
let changed = false;
|
|
84
|
+
const resultItems = [];
|
|
85
|
+
for (const [i, itemSchema] of children.items.entries()) {
|
|
86
|
+
if (i < data.length) {
|
|
87
|
+
const transformed = transformNode(itemSchema, data[i], [...path, i], transform);
|
|
88
|
+
if (transformed !== data[i])
|
|
89
|
+
changed = true;
|
|
90
|
+
resultItems.push(transformed);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Transform rest elements if the tuple has a rest schema
|
|
94
|
+
if (children.rest) {
|
|
95
|
+
for (let i = children.items.length; i < data.length; i++) {
|
|
96
|
+
const transformed = transformNode(children.rest, data[i], [...path, i], transform);
|
|
97
|
+
if (transformed !== data[i])
|
|
98
|
+
changed = true;
|
|
99
|
+
resultItems.push(transformed);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (changed) {
|
|
103
|
+
childResult = resultItems;
|
|
104
|
+
}
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
case 'record': {
|
|
108
|
+
if (data === null || data === undefined || typeof data !== 'object')
|
|
109
|
+
break;
|
|
110
|
+
const obj = data;
|
|
111
|
+
let changed = false;
|
|
112
|
+
const entries = [];
|
|
113
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
114
|
+
const transformed = transformNode(children.valueSchema, value, [...path, key], transform);
|
|
115
|
+
if (transformed !== value)
|
|
116
|
+
changed = true;
|
|
117
|
+
entries.push([key, transformed]);
|
|
118
|
+
}
|
|
119
|
+
if (changed) {
|
|
120
|
+
childResult = Object.fromEntries(entries.filter(([, v]) => v !== undefined));
|
|
121
|
+
}
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
case 'discriminated-union': {
|
|
125
|
+
if (children.match) {
|
|
126
|
+
childResult = transformNode(children.match, data, path, transform);
|
|
127
|
+
}
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
case 'intersection': {
|
|
131
|
+
// Transform left first, then transform the result via right
|
|
132
|
+
const leftResult = transformNode(children.left, data, path, transform);
|
|
133
|
+
childResult = transformNode(children.right, leftResult, path, transform);
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Step 2: Apply transform to the (already-transformed) child result.
|
|
138
|
+
return transform(childResult, { path, schema });
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=transform-data-with-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-data-with-schema.js","sourceRoot":"","sources":["../../src/parser/transform-data-with-schema.ts"],"names":[],"mappings":"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"}
|
package/dist/parser/types.d.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import type { PluginStore } from '#src/plugins/imports/types.js';
|
|
2
|
+
export type ProjectType = 'user' | 'example' | 'test';
|
|
2
3
|
export interface ProjectInfo {
|
|
3
4
|
/** A deterministic ID for the project based off the directory. */
|
|
4
5
|
id: string;
|
|
5
6
|
/** The name of the project. */
|
|
6
7
|
name: string;
|
|
7
|
-
/** The directory of the project. */
|
|
8
|
+
/** The directory of the project output. */
|
|
8
9
|
directory: string;
|
|
9
|
-
/**
|
|
10
|
-
|
|
10
|
+
/** The type of the project. */
|
|
11
|
+
type: ProjectType;
|
|
12
|
+
/** The baseplate directory containing project-definition.json and snapshots. */
|
|
13
|
+
baseplateDirectory: string;
|
|
11
14
|
}
|
|
12
15
|
/**
|
|
13
16
|
* The context available to the schema parser, including the plugin store.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/parser/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/parser/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,gFAAgF;IAChF,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,EAAE,WAAW,CAAC;CACtB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import type { ReferencePath } from '#src/references/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* The context passed to visitors during a schema walk.
|
|
5
|
+
* Carries the current path and entity context.
|
|
6
|
+
*/
|
|
7
|
+
export interface SchemaWalkContext {
|
|
8
|
+
/** The absolute path to the current node in the data. */
|
|
9
|
+
readonly path: ReferencePath;
|
|
10
|
+
/** The entity ID of the closest ancestor entity (undefined at root level). */
|
|
11
|
+
readonly entityId: string | undefined;
|
|
12
|
+
/** Path relative to the closest ancestor entity (or absolute if at root). */
|
|
13
|
+
readonly entityRelativePath: ReferencePath;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A visitor that plugs into `walkDataWithSchema`.
|
|
17
|
+
*
|
|
18
|
+
* Called for every node in the schema tree. The visitor receives the schema
|
|
19
|
+
* instance and can call its own registry internally. If the visitor returns a
|
|
20
|
+
* cleanup function, it will be called after all children have been visited —
|
|
21
|
+
* similar to the React `useEffect` cleanup pattern.
|
|
22
|
+
*/
|
|
23
|
+
export interface SchemaNodeVisitor {
|
|
24
|
+
visit(schema: z.ZodType, data: unknown, ctx: SchemaWalkContext): (() => void) | undefined;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Walks a Zod schema structure in parallel with parsed data, invoking
|
|
28
|
+
* registered visitors whenever schema nodes are encountered.
|
|
29
|
+
*
|
|
30
|
+
* Each visitor's `visit()` is called for every node. If it returns a cleanup
|
|
31
|
+
* function, that function is called after all children have been visited —
|
|
32
|
+
* similar to the React `useEffect` cleanup pattern.
|
|
33
|
+
*
|
|
34
|
+
* The walker is entity-aware: it detects entity boundaries via
|
|
35
|
+
* `definitionRefRegistry` annotations and tracks the current entity ID and
|
|
36
|
+
* relative path, exposing them through `SchemaWalkContext`.
|
|
37
|
+
*
|
|
38
|
+
* Only serializable, structurally-traversable schema types are supported.
|
|
39
|
+
* Non-serializable types (transform, custom, file, symbol, promise, function,
|
|
40
|
+
* lazy, etc.) will throw at walk time.
|
|
41
|
+
*
|
|
42
|
+
* Discriminated unions are fully supported. Plain `z.union()` is allowed only
|
|
43
|
+
* when every option is a leaf type (string, enum, or literal); otherwise it throws.
|
|
44
|
+
*/
|
|
45
|
+
export declare function walkDataWithSchema(schema: z.ZodType, data: unknown, visitors: readonly SchemaNodeVisitor[]): void;
|
|
46
|
+
//# sourceMappingURL=walk-data-with-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walk-data-with-schema.d.ts","sourceRoot":"","sources":["../../src/parser/walk-data-with-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAK7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAM9D;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,6EAA6E;IAC7E,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC;CAC5C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CACH,MAAM,EAAE,CAAC,CAAC,OAAO,EACjB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,iBAAiB,GACrB,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAC7B;AAeD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EACjB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GACrC,IAAI,CAMN"}
|