@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
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { ProjectDefinitionContainer } from '#src/definition/project-definition-container.js';
|
|
1
2
|
import { getLatestMigrationVersion } from '#src/migrations/index.js';
|
|
2
3
|
import { createPluginSpecStore } from '#src/parser/parser.js';
|
|
3
4
|
import { deserializeSchemaWithTransformedReferences } from '#src/references/deserialize-schema.js';
|
|
5
|
+
import { createDefinitionSchemaParserContext } from '#src/schema/index.js';
|
|
4
6
|
import { createProjectDefinitionSchema } from '#src/schema/project-definition.js';
|
|
5
|
-
import { ProjectDefinitionContainer } from './project-definition-container.js';
|
|
6
7
|
export function createTestProjectDefinition(input = {}) {
|
|
7
8
|
return {
|
|
8
9
|
settings: {
|
|
@@ -36,7 +37,8 @@ export function createTestProjectDefinitionContainer(input = {}) {
|
|
|
36
37
|
const pluginSpecStore = createPluginSpecStore(pluginStore, {
|
|
37
38
|
plugins: [],
|
|
38
39
|
});
|
|
39
|
-
const
|
|
40
|
+
const schema = createProjectDefinitionSchema(createDefinitionSchemaParserContext({ plugins: pluginSpecStore }));
|
|
41
|
+
const resolvedRefPayload = deserializeSchemaWithTransformedReferences(schema, createTestProjectDefinitionInput(input));
|
|
40
42
|
return new ProjectDefinitionContainer(resolvedRefPayload, {
|
|
41
43
|
pluginStore,
|
|
42
44
|
cliVersion: '0.1.0',
|
|
@@ -44,8 +46,12 @@ export function createTestProjectDefinitionContainer(input = {}) {
|
|
|
44
46
|
id: 'test-project',
|
|
45
47
|
name: 'test-project',
|
|
46
48
|
directory: '/test-project',
|
|
47
|
-
|
|
49
|
+
type: 'user',
|
|
50
|
+
baseplateDirectory: '/test-project/baseplate',
|
|
48
51
|
},
|
|
49
|
-
}, pluginSpecStore);
|
|
52
|
+
}, pluginSpecStore, schema);
|
|
50
53
|
}
|
|
51
|
-
|
|
54
|
+
export function createTestEntityServiceContext(input = {}) {
|
|
55
|
+
return createTestProjectDefinitionContainer(input).toEntityServiceContext();
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=project-definition-container.test-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-definition-container.test-helper.js","sourceRoot":"","sources":["../../src/testing/project-definition-container.test-helper.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,0CAA0C,EAAE,MAAM,uCAAuC,CAAC;AACnG,OAAO,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAElF,MAAM,UAAU,2BAA2B,CACzC,QAAoC,EAAE;IAEtC,OAAO;QACL,QAAQ,EAAE;YACR,OAAO,EAAE;gBACP,IAAI,EAAE,cAAc;gBACpB,YAAY,EAAE,EAAE;gBAChB,UAAU,EAAE,IAAI;aACjB;SACF;QACD,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,yBAAyB,EAAE;QAC1C,GAAG,KAAK;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,QAAyC,EAAE;IAE3C,OAAO;QACL,GAAG,2BAA2B,EAAE;QAChC,GAAG,KAAK;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,QAAyC,EAAE;IAE3C,MAAM,WAAW,GAAgB;QAC/B,gBAAgB,EAAE,EAAE;QACpB,WAAW,EAAE,EAAE;KAChB,CAAC;IACF,MAAM,eAAe,GAAG,qBAAqB,CAAC,WAAW,EAAE;QACzD,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,6BAA6B,CAC1C,mCAAmC,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAClE,CAAC;IACF,MAAM,kBAAkB,GAAG,0CAA0C,CACnE,MAAM,EACN,gCAAgC,CAAC,KAAK,CAAC,CACxC,CAAC;IACF,OAAO,IAAI,0BAA0B,CACnC,kBAAkB,EAClB;QACE,WAAW;QACX,UAAU,EAAE,OAAO;QACnB,OAAO,EAAE;YACP,EAAE,EAAE,cAAc;YAClB,IAAI,EAAE,cAAc;YACpB,SAAS,EAAE,eAAe;YAC1B,IAAI,EAAE,MAAM;YACZ,kBAAkB,EAAE,yBAAyB;SAC9C;KACF,EACD,eAAe,EACf,MAAM,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,QAAyC,EAAE;IAE3C,OAAO,oCAAoC,CAAC,KAAK,CAAC,CAAC,sBAAsB,EAAE,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
interface AssignEntityIdsOptions {
|
|
3
|
+
/** If returns true for an ID, that ID is preserved (not regenerated). */
|
|
4
|
+
isExistingId?: (id: string) => boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Recursively assigns IDs to an entity and all nested child entities.
|
|
8
|
+
*
|
|
9
|
+
* Walks the schema using `transformDataWithSchema` to detect entity nodes
|
|
10
|
+
* (via `getEntityMeta`). At each entity boundary, generates a new ID unless
|
|
11
|
+
* the existing ID is preserved by the `isExistingId` callback.
|
|
12
|
+
*
|
|
13
|
+
* Returns a new object with IDs assigned (immutable, structural sharing).
|
|
14
|
+
*/
|
|
15
|
+
export declare function assignEntityIds<T>(schema: z.ZodType, data: T, options?: AssignEntityIdsOptions): T;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=assign-entity-ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assign-entity-ids.d.ts","sourceRoot":"","sources":["../../src/tools/assign-entity-ids.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAS7B,UAAU,sBAAsB;IAC9B,yEAAyE;IACzE,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,MAAM,EAAE,CAAC,CAAC,OAAO,EACjB,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,sBAAsB,GAC/B,CAAC,CAuBH"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { immutableSet } from '@baseplate-dev/utils';
|
|
2
|
+
import { get } from 'es-toolkit/compat';
|
|
3
|
+
import { transformDataWithSchema } from '#src/parser/transform-data-with-schema.js';
|
|
4
|
+
import { getEntityMeta } from './merge-schema/entity-utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* Recursively assigns IDs to an entity and all nested child entities.
|
|
7
|
+
*
|
|
8
|
+
* Walks the schema using `transformDataWithSchema` to detect entity nodes
|
|
9
|
+
* (via `getEntityMeta`). At each entity boundary, generates a new ID unless
|
|
10
|
+
* the existing ID is preserved by the `isExistingId` callback.
|
|
11
|
+
*
|
|
12
|
+
* Returns a new object with IDs assigned (immutable, structural sharing).
|
|
13
|
+
*/
|
|
14
|
+
export function assignEntityIds(schema, data, options) {
|
|
15
|
+
return transformDataWithSchema(schema, data, (value, ctx) => {
|
|
16
|
+
const entityMeta = getEntityMeta(ctx.schema);
|
|
17
|
+
if (!entityMeta) {
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
if (value === null || value === undefined || typeof value !== 'object') {
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
const currentId = get(value, entityMeta.idPath);
|
|
24
|
+
if (currentId !== undefined && typeof currentId !== 'string') {
|
|
25
|
+
throw new TypeError(`Expected string id at path "${entityMeta.idPath.join('.')}" but got ${typeof currentId}`);
|
|
26
|
+
}
|
|
27
|
+
if (currentId && options?.isExistingId?.(currentId)) {
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
const newId = entityMeta.type.generateNewId();
|
|
31
|
+
return immutableSet(value, entityMeta.idPath, newId);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=assign-entity-ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assign-entity-ids.js","sourceRoot":"","sources":["../../src/tools/assign-entity-ids.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAO/D;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAiB,EACjB,IAAO,EACP,OAAgC;IAEhC,OAAO,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1D,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAY,CAAC;QAC3D,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC7D,MAAM,IAAI,SAAS,CACjB,+BAA+B,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,OAAO,SAAS,EAAE,CAC1F,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,OAAO,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReferencePath } from '#src/references/types.js';
|
|
2
|
+
import type { EntityServiceContext } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Finds the entity array containing entities of the given type.
|
|
5
|
+
*
|
|
6
|
+
* For top-level types: navigates from the definition root.
|
|
7
|
+
* For nested types: finds the parent entity by ID, then navigates from there.
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolveEntityArray(entityTypeName: string, parentEntityId: string | undefined, { entityTypeMap, lookupEntity, serializedDefinition }: EntityServiceContext): {
|
|
10
|
+
array: unknown[];
|
|
11
|
+
path: ReferencePath;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=entity-navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-navigation.d.ts","sourceRoot":"","sources":["../../../src/tools/entity-service/entity-navigation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAwEvD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,EAAE,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAE,EAAE,oBAAoB,GAC1E;IAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,CA0C3C"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { isPlainObject } from 'es-toolkit';
|
|
2
|
+
import { get } from 'es-toolkit/compat';
|
|
3
|
+
/**
|
|
4
|
+
* Navigates from a starting object through a schema relative path to reach the entity array.
|
|
5
|
+
* Returns the array at the end of the path, or throws an error if the path is invalid.
|
|
6
|
+
*/
|
|
7
|
+
function navigateToEntityArrayFromSchemaPath(obj, relativePath, pathPrefix) {
|
|
8
|
+
let current = obj;
|
|
9
|
+
const path = [...pathPrefix];
|
|
10
|
+
for (const element of relativePath) {
|
|
11
|
+
switch (element.type) {
|
|
12
|
+
case 'object-key': {
|
|
13
|
+
if (!isPlainObject(current)) {
|
|
14
|
+
throw new TypeError(`Expected object at path "${path.join('.')}" but got ${typeof current}`);
|
|
15
|
+
}
|
|
16
|
+
current = current[element.key];
|
|
17
|
+
path.push(element.key);
|
|
18
|
+
break;
|
|
19
|
+
}
|
|
20
|
+
case 'tuple-index': {
|
|
21
|
+
if (!Array.isArray(current)) {
|
|
22
|
+
throw new TypeError(`Expected array at path "${path.join('.')}" but got ${typeof current}`);
|
|
23
|
+
}
|
|
24
|
+
current = current[element.index];
|
|
25
|
+
path.push(element.index);
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
case 'discriminated-union-array': {
|
|
29
|
+
// Enter the array and find the unique element matching the discriminator
|
|
30
|
+
if (!Array.isArray(current)) {
|
|
31
|
+
throw new TypeError(`Expected array at path "${path.join('.')}" but got ${typeof current}`);
|
|
32
|
+
}
|
|
33
|
+
const match = current.findIndex((item) => {
|
|
34
|
+
if (!isPlainObject(item)) {
|
|
35
|
+
throw new TypeError(`Expected object at path "${path.join('.')}" but got ${typeof item}`);
|
|
36
|
+
}
|
|
37
|
+
return item[element.discriminatorKey] === element.value;
|
|
38
|
+
});
|
|
39
|
+
if (match === -1) {
|
|
40
|
+
throw new Error(`No element found in array at path "${path.join('.')}" with discriminator key "${element.discriminatorKey}" and value "${element.value}"`);
|
|
41
|
+
}
|
|
42
|
+
current = current[match];
|
|
43
|
+
path.push(match);
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (!Array.isArray(current)) {
|
|
49
|
+
throw new TypeError(`Expected array at path "${path.join('.')}" but got ${typeof current}`);
|
|
50
|
+
}
|
|
51
|
+
return { array: current, path };
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Finds the entity array containing entities of the given type.
|
|
55
|
+
*
|
|
56
|
+
* For top-level types: navigates from the definition root.
|
|
57
|
+
* For nested types: finds the parent entity by ID, then navigates from there.
|
|
58
|
+
*/
|
|
59
|
+
export function resolveEntityArray(entityTypeName, parentEntityId, { entityTypeMap, lookupEntity, serializedDefinition }) {
|
|
60
|
+
const metadata = entityTypeMap.get(entityTypeName);
|
|
61
|
+
if (!metadata) {
|
|
62
|
+
throw new Error(`Unknown entity type: ${entityTypeName}`);
|
|
63
|
+
}
|
|
64
|
+
let startPath = [];
|
|
65
|
+
if (metadata.parentEntityTypeName) {
|
|
66
|
+
// Nested entity: find the parent first
|
|
67
|
+
if (!parentEntityId) {
|
|
68
|
+
throw new Error(`Entity type "${entityTypeName}" requires a parent entity ID (parent type: "${metadata.parentEntityTypeName}")`);
|
|
69
|
+
}
|
|
70
|
+
const parentResult = lookupEntity(parentEntityId);
|
|
71
|
+
if (!parentResult) {
|
|
72
|
+
throw new Error(`Parent entity "${parentEntityId}" not found for entity type "${entityTypeName}"`);
|
|
73
|
+
}
|
|
74
|
+
startPath = parentResult.path;
|
|
75
|
+
}
|
|
76
|
+
const parentEntity = (startPath.length === 0
|
|
77
|
+
? serializedDefinition
|
|
78
|
+
: get(serializedDefinition, startPath));
|
|
79
|
+
if (!isPlainObject(parentEntity)) {
|
|
80
|
+
throw new Error(`Parent entity at path "${startPath.join('.')}" is not a plain object`);
|
|
81
|
+
}
|
|
82
|
+
return navigateToEntityArrayFromSchemaPath(parentEntity, metadata.relativePath, startPath);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=entity-navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-navigation.js","sourceRoot":"","sources":["../../../src/tools/entity-service/entity-navigation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { EntityServiceContext } from './types.js';
|
|
2
|
+
export interface ListEntitiesInput {
|
|
3
|
+
entityTypeName: string;
|
|
4
|
+
parentEntityId?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Lightweight entity stub returned by listEntities.
|
|
8
|
+
*/
|
|
9
|
+
export interface EntityStub {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
type: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Lists all entities of a given type, returning lightweight stubs.
|
|
16
|
+
*
|
|
17
|
+
* For nested entity types, `parentEntityId` is required to scope the listing
|
|
18
|
+
* to entities within a specific parent.
|
|
19
|
+
*
|
|
20
|
+
* @param container - The project definition container
|
|
21
|
+
* @param entityTypeMap - The entity type map built from the schema
|
|
22
|
+
* @param entityTypeName - The entity type to list
|
|
23
|
+
* @param parentEntityId - Required for nested entity types
|
|
24
|
+
* @returns Array of entity stubs with id, name, and type
|
|
25
|
+
*/
|
|
26
|
+
export declare function listEntities({ entityTypeName, parentEntityId }: ListEntitiesInput, context: EntityServiceContext): EntityStub[];
|
|
27
|
+
/**
|
|
28
|
+
* Gets a single entity by ID, returning its full serialized (name-based) data.
|
|
29
|
+
*
|
|
30
|
+
* @param container - The project definition container
|
|
31
|
+
* @param entityTypeMap - The entity type map built from the schema
|
|
32
|
+
* @param serializedDef - The serialized project definition (with names)
|
|
33
|
+
* @param entityTypeName - The entity type to get
|
|
34
|
+
* @param entityId - The entity ID
|
|
35
|
+
* @returns The serialized entity data, or undefined if not found
|
|
36
|
+
*/
|
|
37
|
+
export declare function getEntity(entityId: string, context: EntityServiceContext): Record<string, unknown> | undefined;
|
|
38
|
+
//# sourceMappingURL=entity-read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-read.d.ts","sourceRoot":"","sources":["../../../src/tools/entity-service/entity-read.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAKvD,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,EAAE,cAAc,EAAE,cAAc,EAAE,EAAE,iBAAiB,EACrD,OAAO,EAAE,oBAAoB,GAC5B,UAAU,EAAE,CA2Bd;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAYrC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { isPlainObject } from 'es-toolkit';
|
|
2
|
+
import { get } from 'es-toolkit/compat';
|
|
3
|
+
import { getEntityName } from '../merge-schema/entity-utils.js';
|
|
4
|
+
import { resolveEntityArray } from './entity-navigation.js';
|
|
5
|
+
/**
|
|
6
|
+
* Lists all entities of a given type, returning lightweight stubs.
|
|
7
|
+
*
|
|
8
|
+
* For nested entity types, `parentEntityId` is required to scope the listing
|
|
9
|
+
* to entities within a specific parent.
|
|
10
|
+
*
|
|
11
|
+
* @param container - The project definition container
|
|
12
|
+
* @param entityTypeMap - The entity type map built from the schema
|
|
13
|
+
* @param entityTypeName - The entity type to list
|
|
14
|
+
* @param parentEntityId - Required for nested entity types
|
|
15
|
+
* @returns Array of entity stubs with id, name, and type
|
|
16
|
+
*/
|
|
17
|
+
export function listEntities({ entityTypeName, parentEntityId }, context) {
|
|
18
|
+
const metadata = context.entityTypeMap.get(entityTypeName);
|
|
19
|
+
if (!metadata) {
|
|
20
|
+
throw new Error(`Unknown entity type: ${entityTypeName}`);
|
|
21
|
+
}
|
|
22
|
+
const { array, path } = resolveEntityArray(entityTypeName, parentEntityId, context);
|
|
23
|
+
return array.map((item, index) => {
|
|
24
|
+
if (!isPlainObject(item)) {
|
|
25
|
+
throw new TypeError(`Expected plain object at path "${path.join('.')}[${index}]" but got ${typeof item}`);
|
|
26
|
+
}
|
|
27
|
+
const id = get(item, metadata.entityMeta.idPath);
|
|
28
|
+
if (typeof id !== 'string') {
|
|
29
|
+
throw new TypeError(`Expected string id at path "${metadata.entityMeta.idPath.join('.')}" but got ${typeof id}`);
|
|
30
|
+
}
|
|
31
|
+
const name = getEntityName(metadata.entityMeta, item);
|
|
32
|
+
return { id, name, type: entityTypeName };
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Gets a single entity by ID, returning its full serialized (name-based) data.
|
|
37
|
+
*
|
|
38
|
+
* @param container - The project definition container
|
|
39
|
+
* @param entityTypeMap - The entity type map built from the schema
|
|
40
|
+
* @param serializedDef - The serialized project definition (with names)
|
|
41
|
+
* @param entityTypeName - The entity type to get
|
|
42
|
+
* @param entityId - The entity ID
|
|
43
|
+
* @returns The serialized entity data, or undefined if not found
|
|
44
|
+
*/
|
|
45
|
+
export function getEntity(entityId, context) {
|
|
46
|
+
const result = context.lookupEntity(entityId);
|
|
47
|
+
if (!result) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
const item = get(context.serializedDefinition, result.path);
|
|
51
|
+
if (!isPlainObject(item)) {
|
|
52
|
+
throw new TypeError(`Expected plain object at path "${result.path.join('.')}" but got ${typeof item}`);
|
|
53
|
+
}
|
|
54
|
+
return item;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=entity-read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-read.js","sourceRoot":"","sources":["../../../src/tools/entity-service/entity-read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAIxC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAgB5D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAC1B,EAAE,cAAc,EAAE,cAAc,EAAqB,EACrD,OAA6B;IAE7B,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,cAAc,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,kBAAkB,CACxC,cAAc,EACd,cAAc,EACd,OAAO,CACR,CAAC;IAEF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,SAAS,CACjB,kCAAkC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,cAAc,OAAO,IAAI,EAAE,CACrF,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAY,CAAC;QAC5D,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,SAAS,CACjB,+BAA+B,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,OAAO,EAAE,EAAE,CAC5F,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACtD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CACvB,QAAgB,EAChB,OAA6B;IAE7B,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAY,CAAC;IACvE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CACjB,kCAAkC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,OAAO,IAAI,EAAE,CAClF,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import type { EntityTypeMap } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Collects entity metadata from a Zod schema by walking its structure.
|
|
5
|
+
*
|
|
6
|
+
* Walks the schema once, detecting entity arrays (via `definitionRefRegistry`
|
|
7
|
+
* annotations) and building metadata for each entity type including its
|
|
8
|
+
* relative path from the parent entity (or root) and parent entity type linkage.
|
|
9
|
+
*
|
|
10
|
+
* Parent relationships are determined by `entityType.parentType` on the
|
|
11
|
+
* `DefinitionEntityType` instance — when a parent type is set, the walker
|
|
12
|
+
* finds the matching ancestor entity in its stack and computes the relative
|
|
13
|
+
* path from there.
|
|
14
|
+
*
|
|
15
|
+
* Call once per schema and reuse the result.
|
|
16
|
+
*/
|
|
17
|
+
export declare function collectEntityMetadata(schema: z.ZodType): EntityTypeMap;
|
|
18
|
+
//# sourceMappingURL=entity-type-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-type-map.d.ts","sourceRoot":"","sources":["../../../src/tools/entity-service/entity-type-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAO7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG,aAAa,CAyEtE"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { getSchemaChildren } from '#src/parser/schema-structure.js';
|
|
2
|
+
import { walkSchemaStructure } from '#src/parser/walk-schema-structure.js';
|
|
3
|
+
import { getEntityMeta } from '../merge-schema/entity-utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* Collects entity metadata from a Zod schema by walking its structure.
|
|
6
|
+
*
|
|
7
|
+
* Walks the schema once, detecting entity arrays (via `definitionRefRegistry`
|
|
8
|
+
* annotations) and building metadata for each entity type including its
|
|
9
|
+
* relative path from the parent entity (or root) and parent entity type linkage.
|
|
10
|
+
*
|
|
11
|
+
* Parent relationships are determined by `entityType.parentType` on the
|
|
12
|
+
* `DefinitionEntityType` instance — when a parent type is set, the walker
|
|
13
|
+
* finds the matching ancestor entity in its stack and computes the relative
|
|
14
|
+
* path from there.
|
|
15
|
+
*
|
|
16
|
+
* Call once per schema and reuse the result.
|
|
17
|
+
*/
|
|
18
|
+
export function collectEntityMetadata(schema) {
|
|
19
|
+
const map = new Map();
|
|
20
|
+
// Stack of entity types encountered during the walk, used to determine
|
|
21
|
+
// parent-child relationships and compute relative paths.
|
|
22
|
+
const entityStack = [];
|
|
23
|
+
walkSchemaStructure(schema, [
|
|
24
|
+
{
|
|
25
|
+
visit(innerSchema, ctx) {
|
|
26
|
+
const children = getSchemaChildren(innerSchema, undefined, []);
|
|
27
|
+
if (children.kind !== 'array') {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
const entityMeta = getEntityMeta(children.elementSchema);
|
|
31
|
+
if (!entityMeta) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
const entityTypeName = entityMeta.type.name;
|
|
35
|
+
const { parentType } = entityMeta.type;
|
|
36
|
+
let parentEntityTypeName;
|
|
37
|
+
let relativePath;
|
|
38
|
+
if (parentType) {
|
|
39
|
+
// Find the parent entity in the stack
|
|
40
|
+
const parentEntry = entityStack.findLast((entry) => entry.entityTypeName === parentType.name);
|
|
41
|
+
if (!parentEntry) {
|
|
42
|
+
throw new Error(`Entity type "${entityTypeName}" declares parent type "${parentType.name}" ` +
|
|
43
|
+
`but no such entity was found in the ancestor chain`);
|
|
44
|
+
}
|
|
45
|
+
parentEntityTypeName = parentType.name;
|
|
46
|
+
relativePath = ctx.path.slice(parentEntry.pathAtEntity.length);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// Top-level entity: relative path is the full path
|
|
50
|
+
relativePath = ctx.path;
|
|
51
|
+
}
|
|
52
|
+
map.set(entityTypeName, {
|
|
53
|
+
name: entityTypeName,
|
|
54
|
+
entityType: entityMeta.type,
|
|
55
|
+
entityMeta,
|
|
56
|
+
elementSchema: children.elementSchema,
|
|
57
|
+
relativePath,
|
|
58
|
+
parentEntityTypeName,
|
|
59
|
+
});
|
|
60
|
+
// Push onto entity stack. Child relative paths are computed by
|
|
61
|
+
// slicing from this position — the walker adds discriminated-union-array
|
|
62
|
+
// elements when descending into array branches.
|
|
63
|
+
entityStack.push({
|
|
64
|
+
entityTypeName,
|
|
65
|
+
pathAtEntity: ctx.path,
|
|
66
|
+
});
|
|
67
|
+
return () => {
|
|
68
|
+
entityStack.pop();
|
|
69
|
+
};
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
]);
|
|
73
|
+
return map;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=entity-type-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-type-map.js","sourceRoot":"","sources":["../../../src/tools/entity-service/entity-type-map.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAI3E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,GAAG,GAAkB,IAAI,GAAG,EAAE,CAAC;IAErC,uEAAuE;IACvE,yDAAyD;IACzD,MAAM,WAAW,GAGX,EAAE,CAAC;IAET,mBAAmB,CAAC,MAAM,EAAE;QAC1B;YACE,KAAK,CAAC,WAAW,EAAE,GAAG;gBACpB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;gBAC/D,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC9B,OAAO,SAAS,CAAC;gBACnB,CAAC;gBAED,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBACzD,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,SAAS,CAAC;gBACnB,CAAC;gBAED,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5C,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC;gBAEvC,IAAI,oBAAwC,CAAC;gBAC7C,IAAI,YAAgD,CAAC;gBAErD,IAAI,UAAU,EAAE,CAAC;oBACf,sCAAsC;oBACtC,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CACtC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,KAAK,UAAU,CAAC,IAAI,CACpD,CAAC;oBAEF,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,MAAM,IAAI,KAAK,CACb,gBAAgB,cAAc,2BAA2B,UAAU,CAAC,IAAI,IAAI;4BAC1E,oDAAoD,CACvD,CAAC;oBACJ,CAAC;oBAED,oBAAoB,GAAG,UAAU,CAAC,IAAI,CAAC;oBACvC,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACjE,CAAC;qBAAM,CAAC;oBACN,mDAAmD;oBACnD,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC;gBAC1B,CAAC;gBAED,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE;oBACtB,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE,UAAU,CAAC,IAAI;oBAC3B,UAAU;oBACV,aAAa,EAAE,QAAQ,CAAC,aAAa;oBACrC,YAAY;oBACZ,oBAAoB;iBACrB,CAAC,CAAC;gBAEH,+DAA+D;gBAC/D,yEAAyE;gBACzE,gDAAgD;gBAChD,WAAW,CAAC,IAAI,CAAC;oBACf,cAAc;oBACd,YAAY,EAAE,GAAG,CAAC,IAAI;iBACvB,CAAC,CAAC;gBACH,OAAO,GAAG,EAAE;oBACV,WAAW,CAAC,GAAG,EAAE,CAAC;gBACpB,CAAC,CAAC;YACJ,CAAC;SACF;KACF,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { EntityServiceContext } from './types.js';
|
|
2
|
+
export interface CreateEntityInput {
|
|
3
|
+
entityTypeName: string;
|
|
4
|
+
entityData: Record<string, unknown>;
|
|
5
|
+
parentEntityId?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Creates a new entity in the definition.
|
|
9
|
+
*
|
|
10
|
+
* Generates a new ID for the entity using the entity type's ID generation.
|
|
11
|
+
* For nested entity types, `parentEntityId` specifies which parent to add to.
|
|
12
|
+
*
|
|
13
|
+
* @returns A new definition with the entity added (original is not modified)
|
|
14
|
+
*/
|
|
15
|
+
export declare function createEntity({ entityTypeName, entityData, parentEntityId }: CreateEntityInput, context: EntityServiceContext): Record<string, unknown>;
|
|
16
|
+
export interface UpdateEntityInput {
|
|
17
|
+
entityTypeName: string;
|
|
18
|
+
entityId: string;
|
|
19
|
+
entityData: Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Updates an existing entity by ID.
|
|
23
|
+
*
|
|
24
|
+
* Replaces the entity data while preserving the entity's ID.
|
|
25
|
+
*
|
|
26
|
+
* @returns A new definition with the entity updated (original is not modified)
|
|
27
|
+
*/
|
|
28
|
+
export declare function updateEntity({ entityTypeName, entityId, entityData }: UpdateEntityInput, context: EntityServiceContext): Record<string, unknown>;
|
|
29
|
+
export interface DeleteEntityInput {
|
|
30
|
+
entityTypeName: string;
|
|
31
|
+
entityId: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Deletes an entity by ID.
|
|
35
|
+
*
|
|
36
|
+
* @returns A new definition with the entity removed (original is not modified)
|
|
37
|
+
*/
|
|
38
|
+
export declare function deleteEntity({ entityTypeName, entityId }: DeleteEntityInput, context: EntityServiceContext): Record<string, unknown>;
|
|
39
|
+
//# sourceMappingURL=entity-write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-write.d.ts","sourceRoot":"","sources":["../../../src/tools/entity-service/entity-write.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAKvD,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,iBAAiB,EACjE,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqBzB;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAC3D,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4CzB;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAC/C,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiCzB"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { isPlainObject } from 'es-toolkit';
|
|
2
|
+
import { get } from 'es-toolkit/compat';
|
|
3
|
+
import { produce } from 'immer';
|
|
4
|
+
import { assignEntityIds } from '../assign-entity-ids.js';
|
|
5
|
+
import { resolveEntityArray } from './entity-navigation.js';
|
|
6
|
+
/**
|
|
7
|
+
* Creates a new entity in the definition.
|
|
8
|
+
*
|
|
9
|
+
* Generates a new ID for the entity using the entity type's ID generation.
|
|
10
|
+
* For nested entity types, `parentEntityId` specifies which parent to add to.
|
|
11
|
+
*
|
|
12
|
+
* @returns A new definition with the entity added (original is not modified)
|
|
13
|
+
*/
|
|
14
|
+
export function createEntity({ entityTypeName, entityData, parentEntityId }, context) {
|
|
15
|
+
const metadata = context.entityTypeMap.get(entityTypeName);
|
|
16
|
+
if (!metadata) {
|
|
17
|
+
throw new Error(`Unknown entity type: ${entityTypeName}`);
|
|
18
|
+
}
|
|
19
|
+
// Resolve the array path on the original definition
|
|
20
|
+
const { path } = resolveEntityArray(entityTypeName, parentEntityId, context);
|
|
21
|
+
// Assign IDs to the entity and all nested child entities
|
|
22
|
+
const entityWithIds = assignEntityIds(metadata.elementSchema, entityData);
|
|
23
|
+
return produce(context.serializedDefinition, (draft) => {
|
|
24
|
+
const array = get(draft, path);
|
|
25
|
+
if (!Array.isArray(array)) {
|
|
26
|
+
throw new TypeError(`Expected array at path "${path.join('.')}" but got ${typeof array}`);
|
|
27
|
+
}
|
|
28
|
+
array.push(entityWithIds);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Updates an existing entity by ID.
|
|
33
|
+
*
|
|
34
|
+
* Replaces the entity data while preserving the entity's ID.
|
|
35
|
+
*
|
|
36
|
+
* @returns A new definition with the entity updated (original is not modified)
|
|
37
|
+
*/
|
|
38
|
+
export function updateEntity({ entityTypeName, entityId, entityData }, context) {
|
|
39
|
+
const metadata = context.entityTypeMap.get(entityTypeName);
|
|
40
|
+
if (!metadata) {
|
|
41
|
+
throw new Error(`Unknown entity type: ${entityTypeName}`);
|
|
42
|
+
}
|
|
43
|
+
// Verify the entity exists and get its path
|
|
44
|
+
const entity = context.lookupEntity(entityId);
|
|
45
|
+
if (!entity) {
|
|
46
|
+
throw new Error(`Entity "${entityId}" of type "${entityTypeName}" not found`);
|
|
47
|
+
}
|
|
48
|
+
// Preserve the ID in the updated data but populate any children entities with new IDs if they don't have an ID yet.
|
|
49
|
+
const updatedEntity = assignEntityIds(metadata.elementSchema, entityData, {
|
|
50
|
+
isExistingId: (id) => !!context.lookupEntity(id),
|
|
51
|
+
});
|
|
52
|
+
return produce(context.serializedDefinition, (draft) => {
|
|
53
|
+
const target = get(draft, entity.path);
|
|
54
|
+
if (!isPlainObject(target)) {
|
|
55
|
+
throw new TypeError(`Expected plain object at path "${entity.path.join('.')}" but got ${typeof target}`);
|
|
56
|
+
}
|
|
57
|
+
// Find the parent array and the entity's index within it
|
|
58
|
+
const parentPath = entity.path.slice(0, -1);
|
|
59
|
+
const entityIndex = entity.path.at(-1);
|
|
60
|
+
if (typeof entityIndex !== 'number') {
|
|
61
|
+
throw new TypeError(`Expected numeric index at end of entity path "${entity.path.join('.')}"`);
|
|
62
|
+
}
|
|
63
|
+
const parentArray = get(draft, parentPath);
|
|
64
|
+
if (!Array.isArray(parentArray)) {
|
|
65
|
+
throw new TypeError(`Expected array at path "${parentPath.join('.')}" but got ${typeof parentArray}`);
|
|
66
|
+
}
|
|
67
|
+
parentArray[entityIndex] = updatedEntity;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Deletes an entity by ID.
|
|
72
|
+
*
|
|
73
|
+
* @returns A new definition with the entity removed (original is not modified)
|
|
74
|
+
*/
|
|
75
|
+
export function deleteEntity({ entityTypeName, entityId }, context) {
|
|
76
|
+
const metadata = context.entityTypeMap.get(entityTypeName);
|
|
77
|
+
if (!metadata) {
|
|
78
|
+
throw new Error(`Unknown entity type: ${entityTypeName}`);
|
|
79
|
+
}
|
|
80
|
+
// Verify the entity exists and get its path
|
|
81
|
+
const entity = context.lookupEntity(entityId);
|
|
82
|
+
if (!entity) {
|
|
83
|
+
throw new Error(`Entity "${entityId}" of type "${entityTypeName}" not found`);
|
|
84
|
+
}
|
|
85
|
+
// Find the parent array and remove the entity by index
|
|
86
|
+
const parentPath = entity.path.slice(0, -1);
|
|
87
|
+
const entityIndex = entity.path.at(-1);
|
|
88
|
+
if (typeof entityIndex !== 'number') {
|
|
89
|
+
throw new TypeError(`Expected numeric index at end of entity path "${entity.path.join('.')}"`);
|
|
90
|
+
}
|
|
91
|
+
return produce(context.serializedDefinition, (draft) => {
|
|
92
|
+
const parentArray = get(draft, parentPath);
|
|
93
|
+
if (!Array.isArray(parentArray)) {
|
|
94
|
+
throw new TypeError(`Expected array at path "${parentPath.join('.')}" but got ${typeof parentArray}`);
|
|
95
|
+
}
|
|
96
|
+
parentArray.splice(entityIndex, 1);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=entity-write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-write.js","sourceRoot":"","sources":["../../../src/tools/entity-service/entity-write.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { getEntity, listEntities } from './entity-read.js';
|
|
2
|
+
export { collectEntityMetadata } from './entity-type-map.js';
|
|
3
|
+
export { createEntity, deleteEntity, updateEntity } from './entity-write.js';
|
|
4
|
+
export type { EntityServiceContext, EntityTypeMap, EntityTypeMetadata, } from './types.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/entity-service/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/entity-service/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|