@baseplate-dev/project-builder-lib 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +60 -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 @@
|
|
|
1
|
+
{"version":3,"file":"migration-025-service-method-auth.js","sourceRoot":"","sources":["../../src/migrations/migration-025-service-method-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAwCnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAGhE;IACA,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,6EAA6E;IAC/E,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAChD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;YAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;YAElD,qEAAqE;YACrE,MAAM,aAAa,GAA4B,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YACpE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,aAAa,CAAC,MAAM,GAAG;oBACrB,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM;oBACxB,WAAW,EAAE,WAAW;iBACzB,CAAC;YACJ,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,aAAa,CAAC,MAAM,GAAG;oBACrB,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM;oBACxB,WAAW,EAAE,WAAW;iBACzB,CAAC;YACJ,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,aAAa,CAAC,MAAM,GAAG;oBACrB,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM;oBACxB,WAAW,EAAE,WAAW;iBACzB,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,GAAG,KAAK;gBACR,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE;oBACP,GAAG,KAAK,CAAC,OAAO;oBAChB,SAAS,EAAE;wBACT,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,IAAI,KAAK,EAAE;wBACvD,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,IAAI,KAAK,EAAE;wBACvD,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,IAAI,KAAK,EAAE;qBACxD;iBACF;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,MAAM;YACT,MAAM,EAAE,aAAa;SACtB,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
interface QueryConfig {
|
|
2
|
+
get?: {
|
|
3
|
+
enabled?: boolean;
|
|
4
|
+
roles?: string[];
|
|
5
|
+
};
|
|
6
|
+
list?: {
|
|
7
|
+
enabled?: boolean;
|
|
8
|
+
roles?: string[];
|
|
9
|
+
count?: {
|
|
10
|
+
enabled?: boolean;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
globalRoles?: string[];
|
|
14
|
+
instanceRoles?: string[];
|
|
15
|
+
}
|
|
16
|
+
interface Config {
|
|
17
|
+
models?: {
|
|
18
|
+
graphql?: {
|
|
19
|
+
queries?: QueryConfig;
|
|
20
|
+
[key: string]: unknown;
|
|
21
|
+
};
|
|
22
|
+
[key: string]: unknown;
|
|
23
|
+
}[];
|
|
24
|
+
[key: string]: unknown;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Migration to merge per-query roles (get.roles, list.roles) into shared
|
|
28
|
+
* queries.globalRoles + queries.instanceRoles for unified read permissions.
|
|
29
|
+
*/
|
|
30
|
+
export declare const migration026QuerySharedRoles: import("./types.js").SchemaMigration<Config, Config>;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=migration-026-query-shared-roles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-026-query-shared-roles.d.ts","sourceRoot":"","sources":["../../src/migrations/migration-026-query-shared-roles.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IAEnB,GAAG,CAAC,EAAE;QACJ,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,EAAE;YACN,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB,CAAC;KACH,CAAC;IAEF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,UAAU,MAAM;IACd,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,EAAE,WAAW,CAAC;YACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC;QACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,EAAE,CAAC;IACJ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,4BAA4B,sDAiDvC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { uniq } from 'es-toolkit';
|
|
2
|
+
import { createSchemaMigration } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Migration to merge per-query roles (get.roles, list.roles) into shared
|
|
5
|
+
* queries.globalRoles + queries.instanceRoles for unified read permissions.
|
|
6
|
+
*/
|
|
7
|
+
export const migration026QuerySharedRoles = createSchemaMigration({
|
|
8
|
+
version: 26,
|
|
9
|
+
name: 'querySharedRoles',
|
|
10
|
+
description: 'Merge per-query roles into shared queries.globalRoles and queries.instanceRoles',
|
|
11
|
+
migrate: (config) => {
|
|
12
|
+
if (!config.models) {
|
|
13
|
+
return config;
|
|
14
|
+
}
|
|
15
|
+
const updatedModels = config.models.map((model) => {
|
|
16
|
+
const queries = model.graphql?.queries;
|
|
17
|
+
if (!queries) {
|
|
18
|
+
return model;
|
|
19
|
+
}
|
|
20
|
+
const getRoles = queries.get?.roles ?? [];
|
|
21
|
+
const listRoles = queries.list?.roles ?? [];
|
|
22
|
+
// Merge roles from get and list (deduplicated)
|
|
23
|
+
const globalRoles = uniq([...getRoles, ...listRoles]);
|
|
24
|
+
return {
|
|
25
|
+
...model,
|
|
26
|
+
graphql: {
|
|
27
|
+
...model.graphql,
|
|
28
|
+
queries: {
|
|
29
|
+
globalRoles,
|
|
30
|
+
instanceRoles: [],
|
|
31
|
+
get: {
|
|
32
|
+
enabled: queries.get?.enabled ?? false,
|
|
33
|
+
},
|
|
34
|
+
list: {
|
|
35
|
+
enabled: queries.list?.enabled ?? false,
|
|
36
|
+
count: queries.list?.count ?? {},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
return {
|
|
43
|
+
...config,
|
|
44
|
+
models: updatedModels,
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=migration-026-query-shared-roles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-026-query-shared-roles.js","sourceRoot":"","sources":["../../src/migrations/migration-026-query-shared-roles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AA+BnD;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,qBAAqB,CAG/D;IACA,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,iFAAiF;IACnF,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAChD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;YACvC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAE5C,+CAA+C;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;YAEtD,OAAO;gBACL,GAAG,KAAK;gBACR,OAAO,EAAE;oBACP,GAAG,KAAK,CAAC,OAAO;oBAChB,OAAO,EAAE;wBACP,WAAW;wBACX,aAAa,EAAE,EAAE;wBACjB,GAAG,EAAE;4BACH,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,IAAI,KAAK;yBACvC;wBACD,IAAI,EAAE;4BACJ,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK;4BACvC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;yBACjC;qBACF;iBACF;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,MAAM;YACT,MAAM,EAAE,aAAa;SACtB,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Walks schema+data bottom-up, applying registered fix functions to produce
|
|
4
|
+
* a new data object. Children are fixed before parents, so parent fixes
|
|
5
|
+
* see the already-fixed child values.
|
|
6
|
+
*
|
|
7
|
+
* Applied during the save pipeline after producing changes but before
|
|
8
|
+
* `fixRefDeletions`.
|
|
9
|
+
*
|
|
10
|
+
* Returns the original reference if no fixes were needed.
|
|
11
|
+
*/
|
|
12
|
+
export declare function applyDefinitionFixes<T>(schema: z.ZodType, data: T): T;
|
|
13
|
+
//# sourceMappingURL=apply-definition-fixes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-definition-fixes.d.ts","sourceRoot":"","sources":["../../src/parser/apply-definition-fixes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAM7B;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAWrE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { definitionFixRegistry } from '#src/schema/creator/definition-fix-registry.js';
|
|
2
|
+
import { transformDataWithSchema } from './transform-data-with-schema.js';
|
|
3
|
+
/**
|
|
4
|
+
* Walks schema+data bottom-up, applying registered fix functions to produce
|
|
5
|
+
* a new data object. Children are fixed before parents, so parent fixes
|
|
6
|
+
* see the already-fixed child values.
|
|
7
|
+
*
|
|
8
|
+
* Applied during the save pipeline after producing changes but before
|
|
9
|
+
* `fixRefDeletions`.
|
|
10
|
+
*
|
|
11
|
+
* Returns the original reference if no fixes were needed.
|
|
12
|
+
*/
|
|
13
|
+
export function applyDefinitionFixes(schema, data) {
|
|
14
|
+
return transformDataWithSchema(schema, data, (value, ctx) => {
|
|
15
|
+
const meta = definitionFixRegistry.get(ctx.schema);
|
|
16
|
+
if (!meta)
|
|
17
|
+
return value;
|
|
18
|
+
let current = value;
|
|
19
|
+
for (const fix of meta.fixes) {
|
|
20
|
+
current = fix(current, { path: ctx.path });
|
|
21
|
+
}
|
|
22
|
+
return current;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=apply-definition-fixes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-definition-fixes.js","sourceRoot":"","sources":["../../src/parser/apply-definition-fixes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAEvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAI,MAAiB,EAAE,IAAO;IAChE,OAAO,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1D,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAExB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7B,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Walks schema+data bottom-up, removing values that match their registered
|
|
4
|
+
* defaults. Children are cleaned first, so cascading happens naturally:
|
|
5
|
+
* if cleaning children produces a result matching the parent's default,
|
|
6
|
+
* the parent is also stripped.
|
|
7
|
+
*
|
|
8
|
+
* The operation is fully reversible via `.prefault()`.
|
|
9
|
+
*
|
|
10
|
+
* Returns a new object with default-matching values removed, or the original
|
|
11
|
+
* reference if nothing was changed.
|
|
12
|
+
*/
|
|
13
|
+
export declare function cleanDefaultValues<T>(schema: z.ZodType, data: T): T;
|
|
14
|
+
//# sourceMappingURL=clean-default-values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean-default-values.d.ts","sourceRoot":"","sources":["../../src/parser/clean-default-values.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQ7B;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAQnE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { isEqual } from 'es-toolkit';
|
|
2
|
+
import { definitionDefaultRegistry } from '#src/schema/creator/definition-default-registry.js';
|
|
3
|
+
import { transformDataWithSchema } from './transform-data-with-schema.js';
|
|
4
|
+
/**
|
|
5
|
+
* Walks schema+data bottom-up, removing values that match their registered
|
|
6
|
+
* defaults. Children are cleaned first, so cascading happens naturally:
|
|
7
|
+
* if cleaning children produces a result matching the parent's default,
|
|
8
|
+
* the parent is also stripped.
|
|
9
|
+
*
|
|
10
|
+
* The operation is fully reversible via `.prefault()`.
|
|
11
|
+
*
|
|
12
|
+
* Returns a new object with default-matching values removed, or the original
|
|
13
|
+
* reference if nothing was changed.
|
|
14
|
+
*/
|
|
15
|
+
export function cleanDefaultValues(schema, data) {
|
|
16
|
+
return transformDataWithSchema(schema, data, (value, ctx) => {
|
|
17
|
+
const meta = definitionDefaultRegistry.get(ctx.schema);
|
|
18
|
+
if (meta && isEqual(value, meta.defaultValue)) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=clean-default-values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean-default-values.js","sourceRoot":"","sources":["../../src/parser/clean-default-values.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AAE/F,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAI,MAAiB,EAAE,IAAO;IAC9D,OAAO,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1D,MAAM,IAAI,GAAG,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import type { ProjectDefinitionContainer } from '#src/definition/project-definition-container.js';
|
|
3
|
+
import type { DefinitionIssue } from '#src/schema/creator/definition-issue-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Issues partitioned by severity level.
|
|
6
|
+
*/
|
|
7
|
+
export interface PartitionedIssues {
|
|
8
|
+
/** Issues that block saving */
|
|
9
|
+
errors: DefinitionIssue[];
|
|
10
|
+
/** Issues that allow saving but block syncing */
|
|
11
|
+
warnings: DefinitionIssue[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Splits issues into errors (block save) and warnings (block sync only).
|
|
15
|
+
*/
|
|
16
|
+
export declare function partitionIssuesBySeverity(issues: DefinitionIssue[]): PartitionedIssues;
|
|
17
|
+
/**
|
|
18
|
+
* Walks schema+data to collect issues from field-level issue checkers
|
|
19
|
+
* registered via `withIssueChecker`.
|
|
20
|
+
*
|
|
21
|
+
* Field-level checkers operate on the local value at each schema node
|
|
22
|
+
* without access to the full definition.
|
|
23
|
+
*/
|
|
24
|
+
export declare function collectFieldIssues(schema: z.ZodType, data: unknown): DefinitionIssue[];
|
|
25
|
+
/**
|
|
26
|
+
* Collects all definition issues from both field-level and definition-level checkers.
|
|
27
|
+
*
|
|
28
|
+
* - Field-level checkers are registered on schema nodes via `withIssueChecker`
|
|
29
|
+
* and operate on local values.
|
|
30
|
+
* - Definition-level checkers are registered via `definitionIssueCheckerSpec`
|
|
31
|
+
* and operate on the full project definition.
|
|
32
|
+
*
|
|
33
|
+
* Error-severity issues block saving; warning-severity issues allow saving but block syncing.
|
|
34
|
+
*/
|
|
35
|
+
export declare function collectDefinitionIssues(container: ProjectDefinitionContainer): DefinitionIssue[];
|
|
36
|
+
//# sourceMappingURL=collect-definition-issues.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-definition-issues.d.ts","sourceRoot":"","sources":["../../src/parser/collect-definition-issues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAElG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAmBrF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,iDAAiD;IACjD,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,eAAe,EAAE,GACxB,iBAAiB,CAWnB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EACjB,IAAI,EAAE,OAAO,GACZ,eAAe,EAAE,CA0BnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,0BAA0B,GACpC,eAAe,EAAE,CA4BnB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { definitionIssueCheckerSpec } from '#src/schema/creator/definition-issue-checker-spec.js';
|
|
2
|
+
import { definitionFieldIssueRegistry } from '#src/schema/creator/definition-issue-registry.js';
|
|
3
|
+
import { collectExpressionIssues } from './collect-expression-issues.js';
|
|
4
|
+
import { checkMutationRoles } from './definition-issue-checkers/mutation-roles-checker.js';
|
|
5
|
+
import { checkRelationTypeMismatch } from './definition-issue-checkers/relation-type-mismatch-checker.js';
|
|
6
|
+
import { walkDataWithSchema } from './walk-data-with-schema.js';
|
|
7
|
+
/**
|
|
8
|
+
* Built-in definition-level checkers registered at runtime to avoid
|
|
9
|
+
* circular dependencies between schema/creator/ and parser/.
|
|
10
|
+
*/
|
|
11
|
+
const BUILT_IN_CHECKERS = [
|
|
12
|
+
checkRelationTypeMismatch,
|
|
13
|
+
checkMutationRoles,
|
|
14
|
+
];
|
|
15
|
+
/**
|
|
16
|
+
* Splits issues into errors (block save) and warnings (block sync only).
|
|
17
|
+
*/
|
|
18
|
+
export function partitionIssuesBySeverity(issues) {
|
|
19
|
+
const errors = [];
|
|
20
|
+
const warnings = [];
|
|
21
|
+
for (const issue of issues) {
|
|
22
|
+
if (issue.severity === 'error') {
|
|
23
|
+
errors.push(issue);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
warnings.push(issue);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return { errors, warnings };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Walks schema+data to collect issues from field-level issue checkers
|
|
33
|
+
* registered via `withIssueChecker`.
|
|
34
|
+
*
|
|
35
|
+
* Field-level checkers operate on the local value at each schema node
|
|
36
|
+
* without access to the full definition.
|
|
37
|
+
*/
|
|
38
|
+
export function collectFieldIssues(schema, data) {
|
|
39
|
+
const issues = [];
|
|
40
|
+
walkDataWithSchema(schema, data, [
|
|
41
|
+
{
|
|
42
|
+
visit(schemaNode, value, ctx) {
|
|
43
|
+
const meta = definitionFieldIssueRegistry.get(schemaNode);
|
|
44
|
+
if (meta) {
|
|
45
|
+
for (const checker of meta.checkers) {
|
|
46
|
+
const results = checker(value);
|
|
47
|
+
for (const result of results) {
|
|
48
|
+
const path = [...ctx.entityRelativePath, ...result.path];
|
|
49
|
+
if (ctx.entityId) {
|
|
50
|
+
issues.push({ ...result, entityId: ctx.entityId, path });
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
issues.push({ ...result, path });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
]);
|
|
62
|
+
return issues;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Collects all definition issues from both field-level and definition-level checkers.
|
|
66
|
+
*
|
|
67
|
+
* - Field-level checkers are registered on schema nodes via `withIssueChecker`
|
|
68
|
+
* and operate on local values.
|
|
69
|
+
* - Definition-level checkers are registered via `definitionIssueCheckerSpec`
|
|
70
|
+
* and operate on the full project definition.
|
|
71
|
+
*
|
|
72
|
+
* Error-severity issues block saving; warning-severity issues allow saving but block syncing.
|
|
73
|
+
*/
|
|
74
|
+
export function collectDefinitionIssues(container) {
|
|
75
|
+
const { schema, definition, pluginStore } = container;
|
|
76
|
+
// Collect field-level issues from schema walk
|
|
77
|
+
const issues = collectFieldIssues(schema, definition);
|
|
78
|
+
// Collect definition-level issues from built-in checkers
|
|
79
|
+
for (const checker of BUILT_IN_CHECKERS) {
|
|
80
|
+
const result = checker(container);
|
|
81
|
+
issues.push(...result);
|
|
82
|
+
}
|
|
83
|
+
// Collect definition-level issues from plugin spec checkers
|
|
84
|
+
const checkerSpec = pluginStore.use(definitionIssueCheckerSpec);
|
|
85
|
+
for (const checker of checkerSpec.getAllCheckers().values()) {
|
|
86
|
+
const result = checker(container);
|
|
87
|
+
issues.push(...result);
|
|
88
|
+
}
|
|
89
|
+
// Collect expression validation issues
|
|
90
|
+
const expressionIssues = collectExpressionIssues(schema, definition, pluginStore);
|
|
91
|
+
issues.push(...expressionIssues);
|
|
92
|
+
return issues;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=collect-definition-issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-definition-issues.js","sourceRoot":"","sources":["../../src/parser/collect-definition-issues.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sDAAsD,CAAC;AAClG,OAAO,EAAE,4BAA4B,EAAE,MAAM,kDAAkD,CAAC;AAEhG,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,+DAA+D,CAAC;AAC1G,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE;;;GAGG;AACH,MAAM,iBAAiB,GAA6B;IAClD,yBAAyB;IACzB,kBAAkB;CACnB,CAAC;AAYF;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAyB;IAEzB,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAiB,EACjB,IAAa;IAEb,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE;QAC/B;YACE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG;gBAC1B,MAAM,IAAI,GAAG,4BAA4B,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC1D,IAAI,IAAI,EAAE,CAAC;oBACT,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACpC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;wBAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;4BAC7B,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,kBAAkB,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;4BACzD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gCACjB,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC3D,CAAC;iCAAM,CAAC;gCACN,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;4BACnC,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;SACF;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAqC;IAErC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAEtD,8CAA8C;IAC9C,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEtD,yDAAyD;IACzD,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,4DAA4D;IAC5D,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAChE,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,uCAAuC;IACvC,MAAM,gBAAgB,GAAG,uBAAuB,CAC9C,MAAM,EACN,UAAU,EACV,WAAW,CACZ,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;IAEjC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import type { PluginSpecStore } from '#src/plugins/index.js';
|
|
3
|
+
import type { DefinitionIssue } from '#src/schema/creator/definition-issue-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Collects validation issues from expression parsers registered on the schema.
|
|
6
|
+
*
|
|
7
|
+
* Walks the schema+data to find expression annotations, resolves their slots,
|
|
8
|
+
* then calls each parser's `validate()` method. Warnings are mapped to
|
|
9
|
+
* `DefinitionIssue` objects with warning severity.
|
|
10
|
+
*
|
|
11
|
+
* @param schema - The Zod schema to walk
|
|
12
|
+
* @param data - The parsed definition data
|
|
13
|
+
* @param pluginStore - The plugin spec store for validation context
|
|
14
|
+
* @returns Array of definition issues from expression validation
|
|
15
|
+
*/
|
|
16
|
+
export declare function collectExpressionIssues(schema: z.ZodType, data: unknown, pluginStore: PluginSpecStore): DefinitionIssue[];
|
|
17
|
+
//# sourceMappingURL=collect-expression-issues.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-expression-issues.d.ts","sourceRoot":"","sources":["../../src/parser/collect-expression-issues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAIrF;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,CAAC,CAAC,OAAO,EACjB,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,eAAe,GAC3B,eAAe,EAAE,CA4BnB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { extractDefinitionRefs } from '#src/references/extract-definition-refs.js';
|
|
2
|
+
/**
|
|
3
|
+
* Collects validation issues from expression parsers registered on the schema.
|
|
4
|
+
*
|
|
5
|
+
* Walks the schema+data to find expression annotations, resolves their slots,
|
|
6
|
+
* then calls each parser's `validate()` method. Warnings are mapped to
|
|
7
|
+
* `DefinitionIssue` objects with warning severity.
|
|
8
|
+
*
|
|
9
|
+
* @param schema - The Zod schema to walk
|
|
10
|
+
* @param data - The parsed definition data
|
|
11
|
+
* @param pluginStore - The plugin spec store for validation context
|
|
12
|
+
* @returns Array of definition issues from expression validation
|
|
13
|
+
*/
|
|
14
|
+
export function collectExpressionIssues(schema, data, pluginStore) {
|
|
15
|
+
const refPayload = extractDefinitionRefs(schema, data);
|
|
16
|
+
const context = {
|
|
17
|
+
definition: data,
|
|
18
|
+
pluginStore,
|
|
19
|
+
};
|
|
20
|
+
const issues = [];
|
|
21
|
+
for (const expression of refPayload.expressions) {
|
|
22
|
+
const warnings = expression.parser.validate(expression.value, data, context, expression.resolvedSlots);
|
|
23
|
+
for (const warning of warnings) {
|
|
24
|
+
issues.push({
|
|
25
|
+
message: warning.message,
|
|
26
|
+
path: expression.path,
|
|
27
|
+
severity: 'warning',
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return issues;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=collect-expression-issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-expression-issues.js","sourceRoot":"","sources":["../../src/parser/collect-expression-issues.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAiB,EACjB,IAAa,EACb,WAA4B;IAE5B,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAgC;QAC3C,UAAU,EAAE,IAAI;QAChB,WAAW;KACZ,CAAC;IAEF,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CACzC,UAAU,CAAC,KAAK,EAChB,IAAI,EACJ,OAAO,EACP,UAAU,CAAC,aAAa,CACzB,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,QAAQ,EAAE,SAAS;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ProjectDefinitionContainer } from '#src/definition/project-definition-container.js';
|
|
2
|
+
import type { DefinitionIssue } from '#src/schema/creator/definition-issue-types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Checks that service mutations exposed to GraphQL have roles assigned when auth is enabled.
|
|
5
|
+
*
|
|
6
|
+
* Skips validation when no auth plugin is configured. For each model with
|
|
7
|
+
* enabled service methods that are also exposed via GraphQL mutations,
|
|
8
|
+
* warns if no global roles (or instance roles for update/delete) are assigned.
|
|
9
|
+
*/
|
|
10
|
+
export declare function checkMutationRoles(container: ProjectDefinitionContainer): DefinitionIssue[];
|
|
11
|
+
//# sourceMappingURL=mutation-roles-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutation-roles-checker.d.ts","sourceRoot":"","sources":["../../../src/parser/definition-issue-checkers/mutation-roles-checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AASrF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,0BAA0B,GACpC,eAAe,EAAE,CA4CnB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createEntityIssue } from '#src/parser/definition-issue-utils.js';
|
|
2
|
+
import { authConfigSpec } from '#src/plugins/spec/auth-config-spec.js';
|
|
3
|
+
const MUTATION_METHODS = ['create', 'update', 'delete'];
|
|
4
|
+
/**
|
|
5
|
+
* Checks that service mutations exposed to GraphQL have roles assigned when auth is enabled.
|
|
6
|
+
*
|
|
7
|
+
* Skips validation when no auth plugin is configured. For each model with
|
|
8
|
+
* enabled service methods that are also exposed via GraphQL mutations,
|
|
9
|
+
* warns if no global roles (or instance roles for update/delete) are assigned.
|
|
10
|
+
*/
|
|
11
|
+
export function checkMutationRoles(container) {
|
|
12
|
+
const { definition, pluginStore } = container;
|
|
13
|
+
const authConfig = pluginStore.use(authConfigSpec);
|
|
14
|
+
// If auth is not configured, skip validation
|
|
15
|
+
if (!authConfig.getAuthConfig(definition)) {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
const { models } = definition;
|
|
19
|
+
const issues = [];
|
|
20
|
+
for (const model of models) {
|
|
21
|
+
for (const method of MUTATION_METHODS) {
|
|
22
|
+
const serviceMethod = model.service[method];
|
|
23
|
+
const graphqlMutation = model.graphql.mutations[method];
|
|
24
|
+
if (!serviceMethod.enabled || !graphqlMutation.enabled) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const hasGlobalRoles = serviceMethod.globalRoles.length > 0;
|
|
28
|
+
const hasInstanceRoles = method !== 'create' &&
|
|
29
|
+
'instanceRoles' in serviceMethod &&
|
|
30
|
+
serviceMethod.instanceRoles.length > 0;
|
|
31
|
+
if (!hasGlobalRoles && !hasInstanceRoles) {
|
|
32
|
+
issues.push(createEntityIssue(container, model.id, ['service', method, 'globalRoles'], {
|
|
33
|
+
message: `Model '${model.name}' ${method} mutation is exposed to GraphQL but has no roles assigned`,
|
|
34
|
+
severity: 'warning',
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return issues;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=mutation-roles-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutation-roles-checker.js","sourceRoot":"","sources":["../../../src/parser/definition-issue-checkers/mutation-roles-checker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAIvE,MAAM,gBAAgB,GAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAAqC;IAErC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAC9C,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEnD,6CAA6C;IAC7C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAC9B,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACtC,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAExD,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;gBACvD,SAAS;YACX,CAAC;YAED,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YAC5D,MAAM,gBAAgB,GACpB,MAAM,KAAK,QAAQ;gBACnB,eAAe,IAAI,aAAa;gBAChC,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;YAEzC,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACzC,MAAM,CAAC,IAAI,CACT,iBAAiB,CACf,SAAS,EACT,KAAK,CAAC,EAAE,EACR,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAClC;oBACE,OAAO,EAAE,UAAU,KAAK,CAAC,IAAI,KAAK,MAAM,2DAA2D;oBACnG,QAAQ,EAAE,SAAS;iBACpB,CACF,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ProjectDefinitionContainer } from '#src/definition/project-definition-container.js';
|
|
2
|
+
import type { DefinitionIssue } from '#src/schema/creator/definition-issue-types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Checks that relation reference pairs have matching scalar field types.
|
|
5
|
+
*
|
|
6
|
+
* For each relation, compares the type of the local scalar field with the
|
|
7
|
+
* type of the foreign scalar field. Emits a warning when types differ.
|
|
8
|
+
*/
|
|
9
|
+
export declare function checkRelationTypeMismatch(container: ProjectDefinitionContainer): DefinitionIssue[];
|
|
10
|
+
//# sourceMappingURL=relation-type-mismatch-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation-type-mismatch-checker.d.ts","sourceRoot":"","sources":["../../../src/parser/definition-issue-checkers/relation-type-mismatch-checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAKrF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,0BAA0B,GACpC,eAAe,EAAE,CA8CnB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ModelUtils } from '#src/definition/index.js';
|
|
2
|
+
import { createEntityIssue } from '#src/parser/definition-issue-utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* Checks that relation reference pairs have matching scalar field types.
|
|
5
|
+
*
|
|
6
|
+
* For each relation, compares the type of the local scalar field with the
|
|
7
|
+
* type of the foreign scalar field. Emits a warning when types differ.
|
|
8
|
+
*/
|
|
9
|
+
export function checkRelationTypeMismatch(container) {
|
|
10
|
+
const { models } = container.definition;
|
|
11
|
+
const issues = [];
|
|
12
|
+
for (const model of models) {
|
|
13
|
+
const { relations } = model.model;
|
|
14
|
+
for (const [relationIndex, relation] of relations.entries()) {
|
|
15
|
+
const foreignModel = ModelUtils.byId(container.definition, relation.modelRef);
|
|
16
|
+
if (!foreignModel) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
for (const ref of relation.references) {
|
|
20
|
+
const localField = model.model.fields.find((f) => f.id === ref.localRef);
|
|
21
|
+
const foreignField = foreignModel.model.fields.find((f) => f.id === ref.foreignRef);
|
|
22
|
+
if (!localField || !foreignField) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (localField.type !== foreignField.type) {
|
|
26
|
+
issues.push(createEntityIssue(container, model.id, ['model', 'relations', relationIndex], {
|
|
27
|
+
message: `Relation '${relation.name}' type mismatch: '${localField.name}' is '${localField.type}' but '${foreignField.name}' on '${foreignModel.name}' is '${foreignField.type}'`,
|
|
28
|
+
severity: 'warning',
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return issues;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=relation-type-mismatch-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation-type-mismatch-checker.js","sourceRoot":"","sources":["../../../src/parser/definition-issue-checkers/relation-type-mismatch-checker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAAqC;IAErC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC;IACxC,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;QAElC,KAAK,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAClC,SAAS,CAAC,UAAU,EACpB,QAAQ,CAAC,QAAQ,CAClB,CAAC;YACF,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,SAAS;YACX,CAAC;YAED,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACtC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,QAAQ,CAC7B,CAAC;gBACF,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,UAAU,CAC/B,CAAC;gBAEF,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC;oBACjC,SAAS;gBACX,CAAC;gBAED,IAAI,UAAU,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;oBAC1C,MAAM,CAAC,IAAI,CACT,iBAAiB,CACf,SAAS,EACT,KAAK,CAAC,EAAE,EACR,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EACrC;wBACE,OAAO,EAAE,aAAa,QAAQ,CAAC,IAAI,qBAAqB,UAAU,CAAC,IAAI,SAAS,UAAU,CAAC,IAAI,UAAU,YAAY,CAAC,IAAI,SAAS,YAAY,CAAC,IAAI,SAAS,YAAY,CAAC,IAAI,GAAG;wBACjL,QAAQ,EAAE,SAAS;qBACpB,CACF,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ProjectDefinitionContainer } from '#src/definition/project-definition-container.js';
|
|
2
|
+
import type { ReferencePath } from '#src/references/types.js';
|
|
3
|
+
import type { DefinitionIssue, EntityDefinitionIssue } from '#src/schema/creator/definition-issue-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Resolves a definition issue's path to an absolute path in the definition.
|
|
6
|
+
*
|
|
7
|
+
* If the issue is scoped to an entity, combines the entity's path with the
|
|
8
|
+
* issue's relative path. If no entity, returns the path as-is.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveIssuePath(issue: DefinitionIssue, container: ProjectDefinitionContainer): ReferencePath;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a definition issue scoped to a specific entity.
|
|
13
|
+
*
|
|
14
|
+
* Validates that the entity exists in the container and returns an issue
|
|
15
|
+
* with the entity ID and a relative path from the entity root.
|
|
16
|
+
*
|
|
17
|
+
* @param container - The project definition container
|
|
18
|
+
* @param entityId - The entity ID to scope the issue to
|
|
19
|
+
* @param relativePath - Path relative to the entity
|
|
20
|
+
* @param issue - The issue message, severity, and optional fix
|
|
21
|
+
*/
|
|
22
|
+
export declare function createEntityIssue(container: ProjectDefinitionContainer, entityId: string, relativePath: ReferencePath, issue: Pick<DefinitionIssue, 'message' | 'severity' | 'fix'>): EntityDefinitionIssue;
|
|
23
|
+
//# sourceMappingURL=definition-issue-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition-issue-utils.d.ts","sourceRoot":"","sources":["../../src/parser/definition-issue-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACtB,MAAM,+CAA+C,CAAC;AAEvD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,0BAA0B,GACpC,aAAa,CAKf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,0BAA0B,EACrC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,aAAa,EAC3B,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC,GAC3D,qBAAqB,CAMvB"}
|
|
@@ -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"}
|