@baseplate-dev/project-builder-lib 0.6.4 → 0.6.6
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 +52 -0
- package/dist/compiler/admin-crud-action-compiler.js +1 -1
- package/dist/compiler/admin-crud-action-compiler.js.map +1 -1
- package/dist/compiler/admin-crud-column-compiler-spec.js +1 -1
- package/dist/compiler/admin-crud-column-compiler-spec.js.map +1 -1
- package/dist/compiler/admin-crud-input-spec.js +1 -1
- package/dist/compiler/admin-crud-input-spec.js.map +1 -1
- package/dist/compiler/app-compiler-spec.js +1 -1
- package/dist/compiler/app-compiler-spec.js.map +1 -1
- package/dist/compiler/index.d.ts +1 -0
- package/dist/compiler/index.d.ts.map +1 -1
- package/dist/compiler/index.js +1 -0
- package/dist/compiler/index.js.map +1 -1
- package/dist/compiler/model-transformer-compiler-spec.js +1 -1
- package/dist/compiler/model-transformer-compiler-spec.js.map +1 -1
- package/dist/compiler/root-compiler-spec.d.ts +25 -0
- package/dist/compiler/root-compiler-spec.d.ts.map +1 -0
- package/dist/compiler/root-compiler-spec.js +23 -0
- package/dist/compiler/root-compiler-spec.js.map +1 -0
- package/dist/constants/theme-colors.d.ts +0 -48
- package/dist/constants/theme-colors.d.ts.map +1 -1
- package/dist/constants/theme-colors.js +0 -32
- package/dist/constants/theme-colors.js.map +1 -1
- package/dist/definition/feature/feature-utils.d.ts +2 -2
- package/dist/definition/feature/feature-utils.d.ts.map +1 -1
- package/dist/definition/feature/feature-utils.js +3 -3
- package/dist/definition/feature/feature-utils.js.map +1 -1
- package/dist/definition/plugins/plugin-utils.d.ts +15 -0
- package/dist/definition/plugins/plugin-utils.d.ts.map +1 -1
- package/dist/definition/plugins/plugin-utils.js +50 -1
- package/dist/definition/plugins/plugin-utils.js.map +1 -1
- package/dist/definition/project-definition-container.d.ts.map +1 -1
- package/dist/definition/project-definition-container.js +3 -1
- package/dist/definition/project-definition-container.js.map +1 -1
- package/dist/{schema/models → expression-parsers}/authorizer/authorizer-expression-acorn-parser.d.ts +2 -0
- package/dist/expression-parsers/authorizer/authorizer-expression-acorn-parser.d.ts.map +1 -0
- package/dist/{schema/models → expression-parsers}/authorizer/authorizer-expression-acorn-parser.js +107 -52
- package/dist/expression-parsers/authorizer/authorizer-expression-acorn-parser.js.map +1 -0
- package/dist/{schema/models → expression-parsers}/authorizer/authorizer-expression-ast.d.ts +69 -1
- package/dist/expression-parsers/authorizer/authorizer-expression-ast.d.ts.map +1 -0
- package/dist/{schema/models → expression-parsers}/authorizer/authorizer-expression-ast.js +2 -0
- package/dist/expression-parsers/authorizer/authorizer-expression-ast.js.map +1 -0
- package/dist/{schema/models → expression-parsers}/authorizer/authorizer-expression-parser.d.ts +13 -14
- package/dist/expression-parsers/authorizer/authorizer-expression-parser.d.ts.map +1 -0
- package/dist/expression-parsers/authorizer/authorizer-expression-parser.js +292 -0
- package/dist/expression-parsers/authorizer/authorizer-expression-parser.js.map +1 -0
- package/dist/{schema/models → expression-parsers}/authorizer/authorizer-expression-validator.d.ts +37 -17
- package/dist/expression-parsers/authorizer/authorizer-expression-validator.d.ts.map +1 -0
- package/dist/expression-parsers/authorizer/authorizer-expression-validator.js +379 -0
- package/dist/expression-parsers/authorizer/authorizer-expression-validator.js.map +1 -0
- package/dist/expression-parsers/authorizer/authorizer-expression-visitor.d.ts +54 -0
- package/dist/expression-parsers/authorizer/authorizer-expression-visitor.d.ts.map +1 -0
- package/dist/expression-parsers/authorizer/authorizer-expression-visitor.js +52 -0
- package/dist/expression-parsers/authorizer/authorizer-expression-visitor.js.map +1 -0
- package/dist/expression-parsers/authorizer/index.d.ts +6 -0
- package/dist/expression-parsers/authorizer/index.d.ts.map +1 -0
- package/dist/expression-parsers/authorizer/index.js +6 -0
- package/dist/expression-parsers/authorizer/index.js.map +1 -0
- package/dist/expression-parsers/register-core-module.d.ts +6 -0
- package/dist/expression-parsers/register-core-module.d.ts.map +1 -0
- package/dist/expression-parsers/register-core-module.js +29 -0
- package/dist/expression-parsers/register-core-module.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- 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-029-admin-role-and-auto-assigned.d.ts +25 -0
- package/dist/migrations/migration-029-admin-role-and-auto-assigned.d.ts.map +1 -0
- package/dist/migrations/migration-029-admin-role-and-auto-assigned.js +72 -0
- package/dist/migrations/migration-029-admin-role-and-auto-assigned.js.map +1 -0
- package/dist/migrations/migration-030-remove-theme-hover-colors.d.ts +17 -0
- package/dist/migrations/migration-030-remove-theme-hover-colors.d.ts.map +1 -0
- package/dist/migrations/migration-030-remove-theme-hover-colors.js +41 -0
- package/dist/migrations/migration-030-remove-theme-hover-colors.js.map +1 -0
- package/dist/migrations/migration-031-uuid-default-generation.d.ts +24 -0
- package/dist/migrations/migration-031-uuid-default-generation.d.ts.map +1 -0
- package/dist/migrations/migration-031-uuid-default-generation.js +40 -0
- package/dist/migrations/migration-031-uuid-default-generation.js.map +1 -0
- package/dist/migrations/transform-json-path.d.ts.map +1 -1
- package/dist/migrations/transform-json-path.js +2 -3
- package/dist/migrations/transform-json-path.js.map +1 -1
- package/dist/parser/collect-definition-issues.d.ts.map +1 -1
- package/dist/parser/collect-definition-issues.js +10 -2
- package/dist/parser/collect-definition-issues.js.map +1 -1
- package/dist/parser/collect-expression-issues.d.ts +17 -9
- package/dist/parser/collect-expression-issues.d.ts.map +1 -1
- package/dist/parser/collect-expression-issues.js +21 -15
- package/dist/parser/collect-expression-issues.js.map +1 -1
- package/dist/parser/definition-issue-checkers/plugin-dependency-checker.d.ts +11 -0
- package/dist/parser/definition-issue-checkers/plugin-dependency-checker.d.ts.map +1 -0
- package/dist/parser/definition-issue-checkers/plugin-dependency-checker.js +41 -0
- package/dist/parser/definition-issue-checkers/plugin-dependency-checker.js.map +1 -0
- package/dist/parser/definition-issue-checkers/plugin-implementation-checker.d.ts +16 -0
- package/dist/parser/definition-issue-checkers/plugin-implementation-checker.d.ts.map +1 -0
- package/dist/parser/definition-issue-checkers/plugin-implementation-checker.js +69 -0
- package/dist/parser/definition-issue-checkers/plugin-implementation-checker.js.map +1 -0
- package/dist/parser/definition-issue-utils.d.ts +28 -1
- package/dist/parser/definition-issue-utils.d.ts.map +1 -1
- package/dist/parser/definition-issue-utils.js +59 -0
- package/dist/parser/definition-issue-utils.js.map +1 -1
- package/dist/parser/find-orphaned-union-items.d.ts +30 -0
- package/dist/parser/find-orphaned-union-items.d.ts.map +1 -0
- package/dist/parser/find-orphaned-union-items.js +47 -0
- package/dist/parser/find-orphaned-union-items.js.map +1 -0
- package/dist/parser/index.d.ts +3 -1
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +3 -1
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/parser.d.ts.map +1 -1
- package/dist/parser/parser.js +3 -0
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/transform-data-with-schema.js +1 -1
- package/dist/parser/transform-data-with-schema.js.map +1 -1
- package/dist/plugins/imports/index.d.ts +1 -0
- package/dist/plugins/imports/index.d.ts.map +1 -1
- package/dist/plugins/imports/index.js +1 -0
- package/dist/plugins/imports/index.js.map +1 -1
- package/dist/plugins/imports/validate-plugin-dependencies.d.ts +42 -0
- package/dist/plugins/imports/validate-plugin-dependencies.d.ts.map +1 -0
- package/dist/plugins/imports/validate-plugin-dependencies.js +80 -0
- package/dist/plugins/imports/validate-plugin-dependencies.js.map +1 -0
- package/dist/plugins/metadata/types.d.ts +13 -0
- package/dist/plugins/metadata/types.d.ts.map +1 -1
- package/dist/plugins/metadata/types.js +15 -0
- package/dist/plugins/metadata/types.js.map +1 -1
- package/dist/plugins/spec/auth-config-spec.d.ts +1 -0
- package/dist/plugins/spec/auth-config-spec.d.ts.map +1 -1
- package/dist/plugins/spec/auth-config-spec.js.map +1 -1
- package/dist/references/definition-ref-builder.d.ts +2 -0
- package/dist/references/definition-ref-builder.d.ts.map +1 -1
- package/dist/references/definition-ref-registry.d.ts +2 -0
- package/dist/references/definition-ref-registry.d.ts.map +1 -1
- package/dist/references/definition-ref-registry.js.map +1 -1
- package/dist/references/expression-parser-ref.d.ts +51 -0
- package/dist/references/expression-parser-ref.d.ts.map +1 -0
- package/dist/references/expression-parser-ref.js +14 -0
- package/dist/references/expression-parser-ref.js.map +1 -0
- package/dist/references/expression-parser-spec.d.ts +29 -0
- package/dist/references/expression-parser-spec.d.ts.map +1 -0
- package/dist/references/expression-parser-spec.js +29 -0
- package/dist/references/expression-parser-spec.js.map +1 -0
- package/dist/references/expression-types.d.ts +20 -22
- package/dist/references/expression-types.d.ts.map +1 -1
- package/dist/references/expression-types.js +1 -2
- package/dist/references/expression-types.js.map +1 -1
- package/dist/references/extend-parser-context-with-refs.d.ts +7 -2
- package/dist/references/extend-parser-context-with-refs.d.ts.map +1 -1
- package/dist/references/extend-parser-context-with-refs.js +42 -12
- package/dist/references/extend-parser-context-with-refs.js.map +1 -1
- package/dist/references/extract-definition-refs.js +1 -1
- package/dist/references/extract-definition-refs.js.map +1 -1
- package/dist/references/fix-definition-refs.d.ts +22 -0
- package/dist/references/fix-definition-refs.d.ts.map +1 -0
- package/dist/references/fix-definition-refs.js +29 -0
- package/dist/references/fix-definition-refs.js.map +1 -0
- package/dist/references/fix-expression-renames.d.ts +20 -0
- package/dist/references/fix-expression-renames.d.ts.map +1 -0
- package/dist/references/fix-expression-renames.js +87 -0
- package/dist/references/fix-expression-renames.js.map +1 -0
- package/dist/references/index.d.ts +4 -0
- package/dist/references/index.d.ts.map +1 -1
- package/dist/references/index.js +4 -0
- package/dist/references/index.js.map +1 -1
- package/dist/references/parse-schema-with-references.d.ts +2 -1
- package/dist/references/parse-schema-with-references.d.ts.map +1 -1
- package/dist/references/parse-schema-with-references.js.map +1 -1
- package/dist/schema/apps/web/admin/sections/crud.d.ts.map +1 -1
- package/dist/schema/apps/web/admin/sections/crud.js +3 -2
- package/dist/schema/apps/web/admin/sections/crud.js.map +1 -1
- package/dist/schema/creator/definition-issue-checkers.d.ts +15 -0
- package/dist/schema/creator/definition-issue-checkers.d.ts.map +1 -1
- package/dist/schema/creator/definition-issue-checkers.js +33 -0
- package/dist/schema/creator/definition-issue-checkers.js.map +1 -1
- package/dist/schema/creator/schema-creator.js +1 -1
- package/dist/schema/creator/schema-creator.js.map +1 -1
- package/dist/schema/features/feature.js +1 -1
- package/dist/schema/features/feature.js.map +1 -1
- package/dist/schema/libraries/library.d.ts.map +1 -1
- package/dist/schema/libraries/library.js +1 -0
- package/dist/schema/libraries/library.js.map +1 -1
- package/dist/schema/models/authorizer/authorizer-expression-ref.d.ts +11 -0
- package/dist/schema/models/authorizer/authorizer-expression-ref.d.ts.map +1 -0
- package/dist/schema/models/authorizer/authorizer-expression-ref.js +10 -0
- package/dist/schema/models/authorizer/authorizer-expression-ref.js.map +1 -0
- package/dist/schema/models/authorizer/authorizer.js +2 -2
- package/dist/schema/models/authorizer/authorizer.js.map +1 -1
- package/dist/schema/models/authorizer/index.d.ts +1 -4
- package/dist/schema/models/authorizer/index.d.ts.map +1 -1
- package/dist/schema/models/authorizer/index.js +1 -4
- package/dist/schema/models/authorizer/index.js.map +1 -1
- package/dist/schema/models/enums.d.ts +12 -0
- package/dist/schema/models/enums.d.ts.map +1 -1
- package/dist/schema/models/enums.js +5 -2
- package/dist/schema/models/enums.js.map +1 -1
- package/dist/schema/models/graphql.js +3 -3
- package/dist/schema/models/graphql.js.map +1 -1
- package/dist/schema/models/models.d.ts +12 -24
- package/dist/schema/models/models.d.ts.map +1 -1
- package/dist/schema/models/models.js +6 -4
- package/dist/schema/models/models.js.map +1 -1
- package/dist/schema/plugins/definition.d.ts.map +1 -1
- package/dist/schema/plugins/definition.js +2 -0
- package/dist/schema/plugins/definition.js.map +1 -1
- package/dist/schema/project-definition.d.ts +10 -18
- package/dist/schema/project-definition.d.ts.map +1 -1
- package/dist/schema/project-definition.js +5 -1
- package/dist/schema/project-definition.js.map +1 -1
- package/dist/schema/settings/settings.d.ts +2 -10
- package/dist/schema/settings/settings.d.ts.map +1 -1
- package/dist/schema/settings/theme.d.ts +3 -15
- package/dist/schema/settings/theme.d.ts.map +1 -1
- package/dist/schema/utils/validation.d.ts.map +1 -1
- package/dist/schema/utils/validation.js +16 -3
- package/dist/schema/utils/validation.js.map +1 -1
- package/dist/specs/packages/library-type-spec.d.ts +4 -0
- package/dist/specs/packages/library-type-spec.d.ts.map +1 -1
- package/dist/specs/packages/library-type-spec.js +2 -2
- package/dist/specs/packages/library-type-spec.js.map +1 -1
- package/dist/testing/definition-helpers.test-helper.js +2 -2
- package/dist/testing/definition-helpers.test-helper.js.map +1 -1
- package/dist/testing/expression-stub-parser.test-helper.d.ts +2 -4
- package/dist/testing/expression-stub-parser.test-helper.d.ts.map +1 -1
- package/dist/testing/expression-stub-parser.test-helper.js +2 -10
- package/dist/testing/expression-stub-parser.test-helper.js.map +1 -1
- package/dist/testing/expression-warning-parser.test-helper.d.ts +2 -4
- package/dist/testing/expression-warning-parser.test-helper.d.ts.map +1 -1
- package/dist/testing/expression-warning-parser.test-helper.js +2 -8
- package/dist/testing/expression-warning-parser.test-helper.js.map +1 -1
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +1 -0
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/parser-context.test-helper.d.ts.map +1 -1
- package/dist/testing/parser-context.test-helper.js +2 -1
- package/dist/testing/parser-context.test-helper.js.map +1 -1
- package/dist/testing/plugin-store.test-helper.d.ts +11 -0
- package/dist/testing/plugin-store.test-helper.d.ts.map +1 -0
- package/dist/testing/plugin-store.test-helper.js +32 -0
- package/dist/testing/plugin-store.test-helper.js.map +1 -0
- package/dist/testing/project-definition-container.test-helper.d.ts.map +1 -1
- package/dist/testing/project-definition-container.test-helper.js +2 -1
- package/dist/testing/project-definition-container.test-helper.js.map +1 -1
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/sort-entity-arrays.d.ts +15 -0
- package/dist/tools/sort-entity-arrays.d.ts.map +1 -0
- package/dist/tools/sort-entity-arrays.js +31 -0
- package/dist/tools/sort-entity-arrays.js.map +1 -0
- package/dist/utils/color-conversions.d.ts +12 -0
- package/dist/utils/color-conversions.d.ts.map +1 -1
- package/dist/utils/color-conversions.js +17 -1
- package/dist/utils/color-conversions.js.map +1 -1
- package/dist/utils/color-names.d.ts.map +1 -1
- package/dist/utils/color-names.js +6 -5
- package/dist/utils/color-names.js.map +1 -1
- package/dist/utils/definition-diff/definition-diff.js +2 -2
- package/dist/utils/definition-diff/definition-diff.js.map +1 -1
- package/dist/utils/theme.d.ts +1 -0
- package/dist/utils/theme.d.ts.map +1 -1
- package/dist/utils/theme.js +18 -10
- package/dist/utils/theme.js.map +1 -1
- package/dist/web/components/definition-diff-alert.js +2 -2
- package/dist/web/components/definition-diff-alert.js.map +1 -1
- package/dist/web/specs/admin-crud-action-web-spec.js +1 -1
- package/dist/web/specs/admin-crud-action-web-spec.js.map +1 -1
- package/dist/web/specs/admin-crud-column-web-spec.js +1 -1
- package/dist/web/specs/admin-crud-column-web-spec.js.map +1 -1
- package/dist/web/specs/admin-crud-input-web-spec.js +1 -1
- package/dist/web/specs/admin-crud-input-web-spec.js.map +1 -1
- package/dist/web/specs/model-transformer-web-spec.d.ts +19 -2
- package/dist/web/specs/model-transformer-web-spec.d.ts.map +1 -1
- package/dist/web/specs/model-transformer-web-spec.js +1 -1
- package/dist/web/specs/model-transformer-web-spec.js.map +1 -1
- package/package.json +8 -8
- package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.d.ts.map +0 -1
- package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.js.map +0 -1
- package/dist/schema/models/authorizer/authorizer-expression-ast.d.ts.map +0 -1
- package/dist/schema/models/authorizer/authorizer-expression-ast.js.map +0 -1
- package/dist/schema/models/authorizer/authorizer-expression-parser.d.ts.map +0 -1
- package/dist/schema/models/authorizer/authorizer-expression-parser.js +0 -145
- package/dist/schema/models/authorizer/authorizer-expression-parser.js.map +0 -1
- package/dist/schema/models/authorizer/authorizer-expression-validator.d.ts.map +0 -1
- package/dist/schema/models/authorizer/authorizer-expression-validator.js +0 -284
- package/dist/schema/models/authorizer/authorizer-expression-validator.js.map +0 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
interface PluginConfig {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
config?: {
|
|
5
|
+
initialUserRoles?: unknown;
|
|
6
|
+
userAdminRoles?: unknown;
|
|
7
|
+
additionalUserAdminRoles?: unknown;
|
|
8
|
+
[key: string]: unknown;
|
|
9
|
+
};
|
|
10
|
+
[key: string]: unknown;
|
|
11
|
+
}
|
|
12
|
+
interface OldConfig {
|
|
13
|
+
plugins?: PluginConfig[];
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Migration to:
|
|
18
|
+
* 1. Add `autoAssigned` flag to existing roles (true for public/user/system, false for others)
|
|
19
|
+
* 2. Add built-in `admin` role if not already present
|
|
20
|
+
* 3. Rename `userAdminRoles` → `additionalUserAdminRoles` in local-auth and better-auth plugin configs
|
|
21
|
+
* 4. Remove `initialUserRoles` from plugin configs
|
|
22
|
+
*/
|
|
23
|
+
export declare const migration029AdminRoleAndAutoAssigned: import("./types.js").SchemaMigration<OldConfig, OldConfig>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=migration-029-admin-role-and-auto-assigned.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-029-admin-role-and-auto-assigned.d.ts","sourceRoot":"","sources":["../../src/migrations/migration-029-admin-role-and-auto-assigned.ts"],"names":[],"mappings":"AAUA,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QACP,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAOD,UAAU,SAAS;IACjB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD;;;;;;GAMG;AACH,eAAO,MAAM,oCAAoC,4DA0E/C,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { createSchemaMigration } from './types.js';
|
|
2
|
+
const AUTH_PLUGIN_NAME = 'auth';
|
|
3
|
+
const LOCAL_AUTH_PLUGIN_ID = 'plugin:baseplate-dev_plugin-auth_local-auth';
|
|
4
|
+
const BETTER_AUTH_PLUGIN_ID = 'plugin:baseplate-dev_plugin-auth_better-auth';
|
|
5
|
+
/**
|
|
6
|
+
* Migration to:
|
|
7
|
+
* 1. Add `autoAssigned` flag to existing roles (true for public/user/system, false for others)
|
|
8
|
+
* 2. Add built-in `admin` role if not already present
|
|
9
|
+
* 3. Rename `userAdminRoles` → `additionalUserAdminRoles` in local-auth and better-auth plugin configs
|
|
10
|
+
* 4. Remove `initialUserRoles` from plugin configs
|
|
11
|
+
*/
|
|
12
|
+
export const migration029AdminRoleAndAutoAssigned = createSchemaMigration({
|
|
13
|
+
version: 29,
|
|
14
|
+
name: 'adminRoleAndAutoAssigned',
|
|
15
|
+
description: 'Add built-in admin role, autoAssigned flag, rename userAdminRoles to additionalUserAdminRoles',
|
|
16
|
+
migrate: (config) => {
|
|
17
|
+
const plugins = config.plugins ? [...config.plugins] : [];
|
|
18
|
+
// Find the auth plugin and update roles
|
|
19
|
+
const authPlugin = plugins.find((p) => p.name === AUTH_PLUGIN_NAME);
|
|
20
|
+
if (authPlugin?.config) {
|
|
21
|
+
const authConfig = authPlugin.config;
|
|
22
|
+
if (authConfig.roles) {
|
|
23
|
+
const autoAssignedRoles = new Set(['public', 'user', 'system']);
|
|
24
|
+
// Add autoAssigned flag to existing roles
|
|
25
|
+
authConfig.roles = authConfig.roles.map((role) => ({
|
|
26
|
+
...role,
|
|
27
|
+
autoAssigned: autoAssignedRoles.has(role.name),
|
|
28
|
+
}));
|
|
29
|
+
// Add admin role if not already present
|
|
30
|
+
if (authConfig.roles.some((r) => r.name === 'admin')) {
|
|
31
|
+
// If admin exists but isn't builtIn, make it builtIn
|
|
32
|
+
authConfig.roles = authConfig.roles.map((role) => role.name === 'admin'
|
|
33
|
+
? { ...role, builtIn: true, autoAssigned: false }
|
|
34
|
+
: role);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
authConfig.roles.push({
|
|
38
|
+
id: `auth-role:${crypto.randomUUID()}`,
|
|
39
|
+
name: 'admin',
|
|
40
|
+
comment: 'Administrator with full access',
|
|
41
|
+
builtIn: true,
|
|
42
|
+
autoAssigned: false,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Update local-auth and better-auth plugin configs
|
|
48
|
+
for (const plugin of plugins) {
|
|
49
|
+
if (plugin.id !== LOCAL_AUTH_PLUGIN_ID &&
|
|
50
|
+
plugin.id !== BETTER_AUTH_PLUGIN_ID) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (!plugin.config) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
// Rename userAdminRoles → additionalUserAdminRoles
|
|
57
|
+
if ('userAdminRoles' in plugin.config) {
|
|
58
|
+
plugin.config.additionalUserAdminRoles = plugin.config.userAdminRoles;
|
|
59
|
+
delete plugin.config.userAdminRoles;
|
|
60
|
+
}
|
|
61
|
+
// Remove initialUserRoles
|
|
62
|
+
if ('initialUserRoles' in plugin.config) {
|
|
63
|
+
delete plugin.config.initialUserRoles;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
...config,
|
|
68
|
+
plugins,
|
|
69
|
+
};
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=migration-029-admin-role-and-auto-assigned.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-029-admin-role-and-auto-assigned.js","sourceRoot":"","sources":["../../src/migrations/migration-029-admin-role-and-auto-assigned.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type ThemeColors = Record<string, unknown>;
|
|
2
|
+
interface OldConfig {
|
|
3
|
+
settings?: {
|
|
4
|
+
theme?: {
|
|
5
|
+
colors?: {
|
|
6
|
+
light?: ThemeColors;
|
|
7
|
+
dark?: ThemeColors;
|
|
8
|
+
};
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
};
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
};
|
|
13
|
+
[key: string]: unknown;
|
|
14
|
+
}
|
|
15
|
+
export declare const migration030RemoveThemeHoverColors: import("./types.js").SchemaMigration<OldConfig, OldConfig>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=migration-030-remove-theme-hover-colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-030-remove-theme-hover-colors.d.ts","sourceRoot":"","sources":["../../src/migrations/migration-030-remove-theme-hover-colors.ts"],"names":[],"mappings":"AAWA,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C,UAAU,SAAS;IACjB,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE;gBACP,KAAK,CAAC,EAAE,WAAW,CAAC;gBACpB,IAAI,CAAC,EAAE,WAAW,CAAC;aACpB,CAAC;YACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC;QACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD,eAAO,MAAM,kCAAkC,4DAiC7C,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { omit } from 'es-toolkit';
|
|
2
|
+
import { createSchemaMigration } from './types.js';
|
|
3
|
+
const REMOVED_THEME_COLOR_KEYS = [
|
|
4
|
+
'primaryHover',
|
|
5
|
+
'secondaryHover',
|
|
6
|
+
'destructiveHover',
|
|
7
|
+
'linkVisited',
|
|
8
|
+
];
|
|
9
|
+
function stripRemovedKeys(colors) {
|
|
10
|
+
return omit(colors, REMOVED_THEME_COLOR_KEYS);
|
|
11
|
+
}
|
|
12
|
+
export const migration030RemoveThemeHoverColors = createSchemaMigration({
|
|
13
|
+
version: 30,
|
|
14
|
+
name: 'removeThemeHoverColors',
|
|
15
|
+
description: 'Remove primaryHover, secondaryHover, destructiveHover, and linkVisited from theme colors (now computed via color-mix)',
|
|
16
|
+
migrate: (config) => {
|
|
17
|
+
const theme = config.settings?.theme;
|
|
18
|
+
if (!theme?.colors) {
|
|
19
|
+
return config;
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
...config,
|
|
23
|
+
settings: {
|
|
24
|
+
...config.settings,
|
|
25
|
+
theme: {
|
|
26
|
+
...theme,
|
|
27
|
+
colors: {
|
|
28
|
+
...theme.colors,
|
|
29
|
+
...(theme.colors.light
|
|
30
|
+
? { light: stripRemovedKeys(theme.colors.light) }
|
|
31
|
+
: {}),
|
|
32
|
+
...(theme.colors.dark
|
|
33
|
+
? { dark: stripRemovedKeys(theme.colors.dark) }
|
|
34
|
+
: {}),
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=migration-030-remove-theme-hover-colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-030-remove-theme-hover-colors.js","sourceRoot":"","sources":["../../src/migrations/migration-030-remove-theme-hover-colors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,wBAAwB,GAAG;IAC/B,cAAc;IACd,gBAAgB;IAChB,kBAAkB;IAClB,aAAa;CACL,CAAC;AAkBX,SAAS,gBAAgB,CAAC,MAAmB;IAC3C,OAAO,IAAI,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,MAAM,kCAAkC,GAAG,qBAAqB,CAGrE;IACA,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,uHAAuH;IACzH,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO;YACL,GAAG,MAAM;YACT,QAAQ,EAAE;gBACR,GAAG,MAAM,CAAC,QAAQ;gBAClB,KAAK,EAAE;oBACL,GAAG,KAAK;oBACR,MAAM,EAAE;wBACN,GAAG,KAAK,CAAC,MAAM;wBACf,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;4BACpB,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;4BACjD,CAAC,CAAC,EAAE,CAAC;wBACP,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI;4BACnB,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;4BAC/C,CAAC,CAAC,EAAE,CAAC;qBACR;iBACF;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
interface UuidFieldOptions {
|
|
2
|
+
genUuid?: boolean;
|
|
3
|
+
default?: string;
|
|
4
|
+
defaultGeneration?: 'none' | 'uuidv4' | 'uuidv7';
|
|
5
|
+
}
|
|
6
|
+
interface ScalarField {
|
|
7
|
+
type: string;
|
|
8
|
+
options?: UuidFieldOptions;
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
interface Model {
|
|
12
|
+
model?: {
|
|
13
|
+
fields?: ScalarField[];
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
};
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
}
|
|
18
|
+
interface OldConfig {
|
|
19
|
+
models?: Model[];
|
|
20
|
+
[key: string]: unknown;
|
|
21
|
+
}
|
|
22
|
+
export declare const migration031UuidDefaultGeneration: import("./types.js").SchemaMigration<OldConfig, OldConfig>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=migration-031-uuid-default-generation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-031-uuid-default-generation.d.ts","sourceRoot":"","sources":["../../src/migrations/migration-031-uuid-default-generation.ts"],"names":[],"mappings":"AAEA,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAClD;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,KAAK;IACb,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;QACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAkBD,eAAO,MAAM,iCAAiC,4DA8B5C,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { createSchemaMigration } from './types.js';
|
|
2
|
+
function migrateUuidField(field) {
|
|
3
|
+
if (field.type !== 'uuid' || !field.options) {
|
|
4
|
+
return field;
|
|
5
|
+
}
|
|
6
|
+
const { genUuid, default: _default, ...restOptions } = field.options;
|
|
7
|
+
return {
|
|
8
|
+
...field,
|
|
9
|
+
options: {
|
|
10
|
+
...restOptions,
|
|
11
|
+
defaultGeneration: genUuid ? 'uuidv4' : 'none',
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export const migration031UuidDefaultGeneration = createSchemaMigration({
|
|
16
|
+
version: 31,
|
|
17
|
+
name: 'uuidDefaultGeneration',
|
|
18
|
+
description: 'Replace genUuid boolean with defaultGeneration enum (none | uuidv4 | uuidv7) on UUID fields',
|
|
19
|
+
migrate: (config) => {
|
|
20
|
+
if (!config.models) {
|
|
21
|
+
return config;
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
...config,
|
|
25
|
+
models: config.models.map((model) => {
|
|
26
|
+
if (!model.model?.fields) {
|
|
27
|
+
return model;
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
...model,
|
|
31
|
+
model: {
|
|
32
|
+
...model.model,
|
|
33
|
+
fields: model.model.fields.map(migrateUuidField),
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}),
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=migration-031-uuid-default-generation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-031-uuid-default-generation.js","sourceRoot":"","sources":["../../src/migrations/migration-031-uuid-default-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AA2BnD,SAAS,gBAAgB,CAAC,KAAkB;IAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAErE,OAAO;QACL,GAAG,KAAK;QACR,OAAO,EAAE;YACP,GAAG,WAAW;YACd,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;SAC/C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,iCAAiC,GAAG,qBAAqB,CAGpE;IACA,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,6FAA6F;IAC/F,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO;YACL,GAAG,MAAM;YACT,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBAClC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;oBACzB,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,OAAO;oBACL,GAAG,KAAK;oBACR,KAAK,EAAE;wBACL,GAAG,KAAK,CAAC,KAAK;wBACd,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;qBACjD;iBACF,CAAC;YACJ,CAAC,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-json-path.d.ts","sourceRoot":"","sources":["../../src/migrations/transform-json-path.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transform-json-path.d.ts","sourceRoot":"","sources":["../../src/migrations/transform-json-path.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,CAAC,IAAI,GAAG,OAAO,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;AAErE;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EAEZ,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,GAC5B,OAAO,CAwDT;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,WAAW,CAUb"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { cloneDeep } from 'es-toolkit';
|
|
2
1
|
/**
|
|
3
2
|
* Transform a value at a specific path in a JSON object.
|
|
4
3
|
*
|
|
@@ -8,7 +7,7 @@ import { cloneDeep } from 'es-toolkit';
|
|
|
8
7
|
* @returns The transformed JSON object.
|
|
9
8
|
*/
|
|
10
9
|
export function transformJsonPath(data, path,
|
|
11
|
-
//
|
|
10
|
+
// oxlint-disable-next-line typescript/no-explicit-any -- make it easier to use any transform functions
|
|
12
11
|
transformFn) {
|
|
13
12
|
// Split the path into parts
|
|
14
13
|
const pathParts = path.split('.');
|
|
@@ -16,7 +15,7 @@ transformFn) {
|
|
|
16
15
|
const navigateAndTransform = (current, parts) => {
|
|
17
16
|
if (parts.length === 0) {
|
|
18
17
|
// If at the end of the path, apply the transformation function
|
|
19
|
-
return transformFn(
|
|
18
|
+
return transformFn(structuredClone(current));
|
|
20
19
|
}
|
|
21
20
|
const [currentPart, ...remainingParts] = parts;
|
|
22
21
|
if (currentPart === '*') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-json-path.js","sourceRoot":"","sources":["../../src/migrations/transform-json-path.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transform-json-path.js","sourceRoot":"","sources":["../../src/migrations/transform-json-path.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAa,EACb,IAAY;AACZ,uGAAuG;AACvG,WAA6B;IAE7B,4BAA4B;IAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAElC,wDAAwD;IACxD,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,KAAe,EAAW,EAAE;QAC1E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,+DAA+D;YAC/D,OAAO,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,CAAC,WAAW,EAAE,GAAG,cAAc,CAAC,GAAG,KAAK,CAAC;QAE/C,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;YACxB,yCAAyC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,SAAS,CAAC,wBAAwB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,iDAAiD;YACjD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,SAAS,CACjB,yBAAyB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,OAAO,OAAO,EAAE,CACtE,CAAC;YACJ,CAAC;YACD,kBAAkB;YAClB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;gBACzB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;oBAC5C,GAAG;oBACH,oBAAoB,CAAC,KAAK,EAAE,cAAc,CAAC;iBAC5C,CAAC,CACH,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,EAAE,CAAC;gBAC9B,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,OAAO;gBACL,GAAG,OAAO;gBACV,CAAC,WAAW,CAAC,EAAE,oBAAoB,CAChC,OAAmC,CAAC,WAAW,CAAC,EACjD,cAAc,CACf;aACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,kDAAkD;IAClD,OAAO,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,OAA+B;IAE/B,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,SAAS,CAAC,2BAA2B,OAAO,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CACzE,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +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;
|
|
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;AAuBrF;;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"}
|
|
@@ -2,6 +2,8 @@ import { definitionIssueCheckerSpec } from '#src/schema/creator/definition-issue
|
|
|
2
2
|
import { definitionFieldIssueRegistry } from '#src/schema/creator/definition-issue-registry.js';
|
|
3
3
|
import { collectExpressionIssues } from './collect-expression-issues.js';
|
|
4
4
|
import { checkMutationRoles } from './definition-issue-checkers/mutation-roles-checker.js';
|
|
5
|
+
import { checkPluginDependencies } from './definition-issue-checkers/plugin-dependency-checker.js';
|
|
6
|
+
import { checkPluginImplementations } from './definition-issue-checkers/plugin-implementation-checker.js';
|
|
5
7
|
import { checkRelationTypeMismatch } from './definition-issue-checkers/relation-type-mismatch-checker.js';
|
|
6
8
|
import { walkDataWithSchema } from './walk-data-with-schema.js';
|
|
7
9
|
/**
|
|
@@ -11,6 +13,8 @@ import { walkDataWithSchema } from './walk-data-with-schema.js';
|
|
|
11
13
|
const BUILT_IN_CHECKERS = [
|
|
12
14
|
checkRelationTypeMismatch,
|
|
13
15
|
checkMutationRoles,
|
|
16
|
+
checkPluginDependencies,
|
|
17
|
+
checkPluginImplementations,
|
|
14
18
|
];
|
|
15
19
|
/**
|
|
16
20
|
* Splits issues into errors (block save) and warnings (block sync only).
|
|
@@ -86,8 +90,12 @@ export function collectDefinitionIssues(container) {
|
|
|
86
90
|
const result = checker(container);
|
|
87
91
|
issues.push(...result);
|
|
88
92
|
}
|
|
89
|
-
// Collect expression validation issues
|
|
90
|
-
const expressionIssues = collectExpressionIssues(
|
|
93
|
+
// Collect expression validation issues (uses container's pre-resolved expressions)
|
|
94
|
+
const expressionIssues = collectExpressionIssues({
|
|
95
|
+
definition,
|
|
96
|
+
pluginStore,
|
|
97
|
+
expressions: container.refPayload.expressions,
|
|
98
|
+
});
|
|
91
99
|
issues.push(...expressionIssues);
|
|
92
100
|
return issues;
|
|
93
101
|
}
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"collect-definition-issues.js","sourceRoot":"","sources":["../../src/parser/collect-definition-issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,25 @@
|
|
|
1
|
-
import type { z } from 'zod';
|
|
2
1
|
import type { PluginSpecStore } from '#src/plugins/index.js';
|
|
2
|
+
import type { DefinitionExpression } from '#src/references/expression-types.js';
|
|
3
3
|
import type { DefinitionIssue } from '#src/schema/creator/definition-issue-types.js';
|
|
4
|
+
import type { ProjectDefinition } from '#src/schema/project-definition.js';
|
|
4
5
|
/**
|
|
5
|
-
*
|
|
6
|
+
* Input for expression issue collection.
|
|
7
|
+
* Satisfied by ProjectDefinitionContainer and by lightweight test fixtures.
|
|
8
|
+
*/
|
|
9
|
+
export interface CollectExpressionIssuesInput {
|
|
10
|
+
definition: ProjectDefinition;
|
|
11
|
+
pluginStore: PluginSpecStore;
|
|
12
|
+
expressions: readonly DefinitionExpression[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Collects validation issues from expression parsers in the definition.
|
|
6
16
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* `DefinitionIssue` objects
|
|
17
|
+
* Uses pre-resolved expressions to avoid redundant schema walks.
|
|
18
|
+
* Each parser's `validate()` method is called with the expression value and
|
|
19
|
+
* resolved slots. Warnings are mapped to `DefinitionIssue` objects.
|
|
10
20
|
*
|
|
11
|
-
* @param
|
|
12
|
-
* @param data - The parsed definition data
|
|
13
|
-
* @param pluginStore - The plugin spec store for validation context
|
|
21
|
+
* @param input - The definition, plugin store, and pre-resolved expressions
|
|
14
22
|
* @returns Array of definition issues from expression validation
|
|
15
23
|
*/
|
|
16
|
-
export declare function collectExpressionIssues(
|
|
24
|
+
export declare function collectExpressionIssues(input: CollectExpressionIssuesInput): DefinitionIssue[];
|
|
17
25
|
//# sourceMappingURL=collect-expression-issues.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect-expression-issues.d.ts","sourceRoot":"","sources":["../../src/parser/collect-expression-issues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"collect-expression-issues.d.ts","sourceRoot":"","sources":["../../src/parser/collect-expression-issues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,iBAAiB,CAAC;IAC9B,WAAW,EAAE,eAAe,CAAC;IAC7B,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC9C;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,4BAA4B,GAClC,eAAe,EAAE,CAoCnB"}
|
|
@@ -1,28 +1,34 @@
|
|
|
1
|
-
import { extractDefinitionRefs } from '#src/references/extract-definition-refs.js';
|
|
2
1
|
/**
|
|
3
|
-
* Collects validation issues from expression parsers
|
|
2
|
+
* Collects validation issues from expression parsers in the definition.
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* `DefinitionIssue` objects
|
|
4
|
+
* Uses pre-resolved expressions to avoid redundant schema walks.
|
|
5
|
+
* Each parser's `validate()` method is called with the expression value and
|
|
6
|
+
* resolved slots. Warnings are mapped to `DefinitionIssue` objects.
|
|
8
7
|
*
|
|
9
|
-
* @param
|
|
10
|
-
* @param data - The parsed definition data
|
|
11
|
-
* @param pluginStore - The plugin spec store for validation context
|
|
8
|
+
* @param input - The definition, plugin store, and pre-resolved expressions
|
|
12
9
|
* @returns Array of definition issues from expression validation
|
|
13
10
|
*/
|
|
14
|
-
export function collectExpressionIssues(
|
|
15
|
-
const
|
|
11
|
+
export function collectExpressionIssues(input) {
|
|
12
|
+
const { definition, pluginStore, expressions } = input;
|
|
16
13
|
const context = {
|
|
17
|
-
definition
|
|
14
|
+
definition,
|
|
18
15
|
pluginStore,
|
|
19
16
|
};
|
|
20
17
|
const issues = [];
|
|
21
|
-
for (const expression of
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
for (const expression of expressions) {
|
|
19
|
+
try {
|
|
20
|
+
const warnings = expression.parser.validate(expression.value, definition, context, expression.resolvedSlots);
|
|
21
|
+
for (const warning of warnings) {
|
|
22
|
+
issues.push({
|
|
23
|
+
message: warning.message,
|
|
24
|
+
path: expression.path,
|
|
25
|
+
severity: 'warning',
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
24
30
|
issues.push({
|
|
25
|
-
message:
|
|
31
|
+
message: `Expression parser "${expression.parser.name}" threw an error: ${error instanceof Error ? error.message : String(error)}`,
|
|
26
32
|
path: expression.path,
|
|
27
33
|
severity: 'warning',
|
|
28
34
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect-expression-issues.js","sourceRoot":"","sources":["../../src/parser/collect-expression-issues.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"collect-expression-issues.js","sourceRoot":"","sources":["../../src/parser/collect-expression-issues.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAmC;IAEnC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAEvD,MAAM,OAAO,GAAgC;QAC3C,UAAU;QACV,WAAW;KACZ,CAAC;IAEF,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CACzC,UAAU,CAAC,KAAK,EAChB,UAAU,EACV,OAAO,EACP,UAAU,CAAC,aAAa,CACzB,CAAC;YAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,QAAQ,EAAE,SAAS;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,sBAAsB,UAAU,CAAC,MAAM,CAAC,IAAI,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAClI,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 all enabled plugins have their required plugin dependencies met.
|
|
5
|
+
*
|
|
6
|
+
* For each enabled plugin, resolves its metadata and checks `pluginDependencies`.
|
|
7
|
+
* Required (non-optional) dependencies that are not enabled produce error-severity
|
|
8
|
+
* issues (blocking save) with an auto-fix that enables the missing plugin.
|
|
9
|
+
*/
|
|
10
|
+
export declare function checkPluginDependencies(container: ProjectDefinitionContainer): DefinitionIssue[];
|
|
11
|
+
//# sourceMappingURL=plugin-dependency-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-dependency-checker.d.ts","sourceRoot":"","sources":["../../../src/parser/definition-issue-checkers/plugin-dependency-checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAYrF;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,0BAA0B,GACpC,eAAe,EAAE,CAkCnB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { PluginUtils } from '#src/definition/plugins/plugin-utils.js';
|
|
2
|
+
import { getPluginMetadataByKey } from '#src/plugins/imports/utils.js';
|
|
3
|
+
import { buildEnabledPluginFqnSet, getUnmetPluginDependencies, } from '#src/plugins/imports/validate-plugin-dependencies.js';
|
|
4
|
+
import { pluginEntityType } from '#src/schema/plugins/entity-types.js';
|
|
5
|
+
import { createEntityIssue } from '../definition-issue-utils.js';
|
|
6
|
+
/**
|
|
7
|
+
* Checks that all enabled plugins have their required plugin dependencies met.
|
|
8
|
+
*
|
|
9
|
+
* For each enabled plugin, resolves its metadata and checks `pluginDependencies`.
|
|
10
|
+
* Required (non-optional) dependencies that are not enabled produce error-severity
|
|
11
|
+
* issues (blocking save) with an auto-fix that enables the missing plugin.
|
|
12
|
+
*/
|
|
13
|
+
export function checkPluginDependencies(container) {
|
|
14
|
+
const { definition, parserContext } = container;
|
|
15
|
+
const { pluginStore } = parserContext;
|
|
16
|
+
const enabledPlugins = definition.plugins ?? [];
|
|
17
|
+
const issues = [];
|
|
18
|
+
const enabledFqns = buildEnabledPluginFqnSet(pluginStore, enabledPlugins);
|
|
19
|
+
for (const plugin of enabledPlugins) {
|
|
20
|
+
const key = pluginEntityType.keyFromId(plugin.id);
|
|
21
|
+
const metadata = getPluginMetadataByKey(pluginStore, key);
|
|
22
|
+
if (!metadata?.pluginDependencies) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const unmetDeps = getUnmetPluginDependencies(pluginStore, key, enabledFqns);
|
|
26
|
+
for (const depMetadata of unmetDeps) {
|
|
27
|
+
issues.push(createEntityIssue(container, plugin.id, [], {
|
|
28
|
+
message: `Plugin '${metadata.displayName}' requires '${depMetadata.displayName}' to be enabled`,
|
|
29
|
+
severity: 'error',
|
|
30
|
+
fix: {
|
|
31
|
+
label: `Enable ${depMetadata.displayName}`,
|
|
32
|
+
applySetter: (draft) => {
|
|
33
|
+
PluginUtils.setPluginConfig(draft, depMetadata, {}, container);
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return issues;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=plugin-dependency-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-dependency-checker.js","sourceRoot":"","sources":["../../../src/parser/definition-issue-checkers/plugin-dependency-checker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EACL,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAqC;IAErC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAChD,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC;IACtC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;IAChD,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,MAAM,WAAW,GAAG,wBAAwB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAE1E,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,0BAA0B,CAAC,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;QAE5E,KAAK,MAAM,WAAW,IAAI,SAAS,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CACT,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;gBAC1C,OAAO,EAAE,WAAW,QAAQ,CAAC,WAAW,eAAe,WAAW,CAAC,WAAW,iBAAiB;gBAC/F,QAAQ,EAAE,OAAO;gBACjB,GAAG,EAAE;oBACH,KAAK,EAAE,UAAU,WAAW,CAAC,WAAW,EAAE;oBAC1C,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;wBACrB,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;oBACjE,CAAC;iBACF;aACF,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
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 base plugins with managed implementations have a valid
|
|
5
|
+
* implementation plugin selected and enabled.
|
|
6
|
+
*
|
|
7
|
+
* A "base plugin" is one that has managed plugins (e.g., auth manages
|
|
8
|
+
* better-auth and local-auth). These base plugins store their selected
|
|
9
|
+
* implementation in `config.implementationPluginKey`.
|
|
10
|
+
*
|
|
11
|
+
* Produces warning-severity issues (blocks sync, allows save) because
|
|
12
|
+
* the initial enable flow requires saving before the implementation
|
|
13
|
+
* can be configured.
|
|
14
|
+
*/
|
|
15
|
+
export declare function checkPluginImplementations(container: ProjectDefinitionContainer): DefinitionIssue[];
|
|
16
|
+
//# sourceMappingURL=plugin-implementation-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-implementation-checker.d.ts","sourceRoot":"","sources":["../../../src/parser/definition-issue-checkers/plugin-implementation-checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAWrF;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,0BAA0B,GACpC,eAAe,EAAE,CAsEnB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { PluginUtils } from '#src/definition/plugins/plugin-utils.js';
|
|
2
|
+
import { getManagedPluginsForPlugin, getPluginMetadataByKey, } from '#src/plugins/imports/utils.js';
|
|
3
|
+
import { pluginEntityType } from '#src/schema/plugins/entity-types.js';
|
|
4
|
+
import { createEntityIssue } from '../definition-issue-utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* Checks that base plugins with managed implementations have a valid
|
|
7
|
+
* implementation plugin selected and enabled.
|
|
8
|
+
*
|
|
9
|
+
* A "base plugin" is one that has managed plugins (e.g., auth manages
|
|
10
|
+
* better-auth and local-auth). These base plugins store their selected
|
|
11
|
+
* implementation in `config.implementationPluginKey`.
|
|
12
|
+
*
|
|
13
|
+
* Produces warning-severity issues (blocks sync, allows save) because
|
|
14
|
+
* the initial enable flow requires saving before the implementation
|
|
15
|
+
* can be configured.
|
|
16
|
+
*/
|
|
17
|
+
export function checkPluginImplementations(container) {
|
|
18
|
+
const { definition, parserContext } = container;
|
|
19
|
+
const { pluginStore } = parserContext;
|
|
20
|
+
const enabledPlugins = definition.plugins ?? [];
|
|
21
|
+
const issues = [];
|
|
22
|
+
for (const plugin of enabledPlugins) {
|
|
23
|
+
const key = pluginEntityType.keyFromId(plugin.id);
|
|
24
|
+
const metadata = getPluginMetadataByKey(pluginStore, key);
|
|
25
|
+
if (!metadata) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
// Only check base plugins that have managed plugins (implementations)
|
|
29
|
+
const managedPlugins = getManagedPluginsForPlugin(pluginStore, key);
|
|
30
|
+
if (managedPlugins.length === 0) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
// Duck-type check for implementationPluginKey in config
|
|
34
|
+
const { config } = plugin;
|
|
35
|
+
if (typeof config !== 'object' ||
|
|
36
|
+
config === null ||
|
|
37
|
+
!('implementationPluginKey' in config)) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const implKey = config.implementationPluginKey;
|
|
41
|
+
if (typeof implKey !== 'string' || implKey === '') {
|
|
42
|
+
issues.push(createEntityIssue(container, plugin.id, [], {
|
|
43
|
+
message: `Plugin '${metadata.displayName}' requires an implementation to be selected`,
|
|
44
|
+
severity: 'warning',
|
|
45
|
+
}));
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
// Check if the selected implementation is enabled
|
|
49
|
+
const implPlugin = PluginUtils.byKey(definition, implKey);
|
|
50
|
+
if (!implPlugin) {
|
|
51
|
+
const implMetadata = getPluginMetadataByKey(pluginStore, implKey);
|
|
52
|
+
const implDisplayName = implMetadata?.displayName ?? implKey;
|
|
53
|
+
issues.push(createEntityIssue(container, plugin.id, [], {
|
|
54
|
+
message: `Plugin '${metadata.displayName}' has implementation '${implDisplayName}' selected but it is not enabled`,
|
|
55
|
+
severity: 'warning',
|
|
56
|
+
fix: implMetadata
|
|
57
|
+
? {
|
|
58
|
+
label: `Enable ${implDisplayName}`,
|
|
59
|
+
applySetter: (draft) => {
|
|
60
|
+
PluginUtils.setPluginConfig(draft, implMetadata, {}, container);
|
|
61
|
+
},
|
|
62
|
+
}
|
|
63
|
+
: undefined,
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return issues;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=plugin-implementation-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-implementation-checker.js","sourceRoot":"","sources":["../../../src/parser/definition-issue-checkers/plugin-implementation-checker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,0BAA0B,CACxC,SAAqC;IAErC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAChD,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC;IACtC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;IAChD,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QAED,sEAAsE;QACtE,MAAM,cAAc,GAAG,0BAA0B,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACpE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QAED,wDAAwD;QACxD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAC1B,IACE,OAAO,MAAM,KAAK,QAAQ;YAC1B,MAAM,KAAK,IAAI;YACf,CAAC,CAAC,yBAAyB,IAAI,MAAM,CAAC,EACtC,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAI,MAAkC,CAAC,uBAAuB,CAAC;QAE5E,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CACT,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;gBAC1C,OAAO,EAAE,WAAW,QAAQ,CAAC,WAAW,6CAA6C;gBACrF,QAAQ,EAAE,SAAS;aACpB,CAAC,CACH,CAAC;YACF,SAAS;QACX,CAAC;QAED,kDAAkD;QAClD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,YAAY,GAAG,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAClE,MAAM,eAAe,GAAG,YAAY,EAAE,WAAW,IAAI,OAAO,CAAC;YAE7D,MAAM,CAAC,IAAI,CACT,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;gBAC1C,OAAO,EAAE,WAAW,QAAQ,CAAC,WAAW,yBAAyB,eAAe,kCAAkC;gBAClH,QAAQ,EAAE,SAAS;gBACnB,GAAG,EAAE,YAAY;oBACf,CAAC,CAAC;wBACE,KAAK,EAAE,UAAU,eAAe,EAAE;wBAClC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;4BACrB,WAAW,CAAC,eAAe,CACzB,KAAK,EACL,YAAY,EACZ,EAAE,EACF,SAAS,CACV,CAAC;wBACJ,CAAC;qBACF;oBACH,CAAC,CAAC,SAAS;aACd,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|