@baseplate-dev/project-builder-server 0.5.0 → 0.5.2
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 +571 -0
- package/dist/actions/generators/create-generator.action.d.ts.map +1 -1
- package/dist/actions/generators/create-generator.action.js.map +1 -1
- package/dist/actions/snapshot/snapshot-add.action.d.ts.map +1 -1
- package/dist/actions/snapshot/snapshot-add.action.js.map +1 -1
- package/dist/actions/snapshot/snapshot-remove.action.d.ts.map +1 -1
- package/dist/actions/snapshot/snapshot-remove.action.js.map +1 -1
- package/dist/actions/snapshot/snapshot-save.action.d.ts.map +1 -1
- package/dist/actions/snapshot/snapshot-save.action.js.map +1 -1
- package/dist/actions/snapshot/snapshot-show.action.d.ts.map +1 -1
- package/dist/actions/snapshot/snapshot-show.action.js.map +1 -1
- package/dist/actions/template-extractor/discover-generators.action.d.ts.map +1 -1
- package/dist/actions/template-extractor/discover-generators.action.js.map +1 -1
- package/dist/actions/template-extractor/extract-templates.action.d.ts.map +1 -1
- package/dist/actions/template-extractor/extract-templates.action.js.map +1 -1
- package/dist/actions/template-extractor/generate-templates.action.d.ts.map +1 -1
- package/dist/actions/template-extractor/generate-templates.action.js.map +1 -1
- package/dist/actions/templates/configure-raw-template.action.d.ts.map +1 -1
- package/dist/actions/templates/configure-raw-template.action.js.map +1 -1
- package/dist/actions/templates/configure-text-template.action.d.ts.map +1 -1
- package/dist/actions/templates/configure-text-template.action.js.map +1 -1
- package/dist/actions/templates/configure-ts-template.action.d.ts.map +1 -1
- package/dist/actions/templates/configure-ts-template.action.js.map +1 -1
- package/dist/actions/templates/delete-template.action.d.ts.map +1 -1
- package/dist/actions/templates/delete-template.action.js.map +1 -1
- package/dist/actions/templates/list-templates.action.d.ts.map +1 -1
- package/dist/actions/templates/list-templates.action.js.map +1 -1
- package/dist/actions/templates/show-template-metadata.action.d.ts.map +1 -1
- package/dist/actions/templates/show-template-metadata.action.js.map +1 -1
- package/dist/compiler/app-compiler.d.ts +1 -1
- package/dist/compiler/app-compiler.d.ts.map +1 -1
- package/dist/compiler/app-compiler.js +2 -3
- package/dist/compiler/app-compiler.js.map +1 -1
- package/dist/compiler/app-entry-builder.d.ts +2 -2
- package/dist/compiler/app-entry-builder.d.ts.map +1 -1
- package/dist/compiler/app-entry-builder.js +1 -1
- package/dist/compiler/app-entry-builder.js.map +1 -1
- package/dist/compiler/backend/authorizers.d.ts +20 -0
- package/dist/compiler/backend/authorizers.d.ts.map +1 -0
- package/dist/compiler/backend/authorizers.js +75 -0
- package/dist/compiler/backend/authorizers.js.map +1 -0
- package/dist/compiler/backend/backend-compiler.d.ts +1 -2
- package/dist/compiler/backend/backend-compiler.d.ts.map +1 -1
- package/dist/compiler/backend/backend-compiler.js +2 -2
- package/dist/compiler/backend/backend-compiler.js.map +1 -1
- package/dist/compiler/backend/fastify.d.ts.map +1 -1
- package/dist/compiler/backend/fastify.js +1 -2
- package/dist/compiler/backend/fastify.js.map +1 -1
- package/dist/compiler/backend/feature.d.ts.map +1 -1
- package/dist/compiler/backend/feature.js +2 -0
- package/dist/compiler/backend/feature.js.map +1 -1
- package/dist/compiler/backend/graphql.js +5 -5
- package/dist/compiler/backend/graphql.js.map +1 -1
- package/dist/compiler/backend/services.d.ts.map +1 -1
- package/dist/compiler/backend/services.js +9 -23
- package/dist/compiler/backend/services.js.map +1 -1
- package/dist/compiler/compile-packages.d.ts.map +1 -1
- package/dist/compiler/compile-packages.js +5 -24
- package/dist/compiler/compile-packages.js.map +1 -1
- package/dist/compiler/library/index.d.ts +1 -0
- package/dist/compiler/library/index.d.ts.map +1 -1
- package/dist/compiler/library/index.js +1 -0
- package/dist/compiler/library/index.js.map +1 -1
- package/dist/compiler/library/library-compiler.d.ts +2 -30
- package/dist/compiler/library/library-compiler.d.ts.map +1 -1
- package/dist/compiler/library/library-compiler.js +8 -63
- package/dist/compiler/library/library-compiler.js.map +1 -1
- package/dist/compiler/library/node-library-package-compiler.d.ts +3 -0
- package/dist/compiler/library/node-library-package-compiler.d.ts.map +1 -0
- package/dist/compiler/library/node-library-package-compiler.js +39 -0
- package/dist/compiler/library/node-library-package-compiler.js.map +1 -0
- package/dist/compiler/package-compiler.d.ts +0 -69
- package/dist/compiler/package-compiler.d.ts.map +1 -1
- package/dist/compiler/package-compiler.js +0 -51
- package/dist/compiler/package-compiler.js.map +1 -1
- package/dist/compiler/root/root-package-compiler.d.ts +2 -2
- package/dist/compiler/root/root-package-compiler.d.ts.map +1 -1
- package/dist/compiler/root/root-package-compiler.js +10 -7
- package/dist/compiler/root/root-package-compiler.js.map +1 -1
- package/dist/compiler/web/admin/crud/actions.d.ts.map +1 -1
- package/dist/compiler/web/admin/crud/actions.js +5 -29
- package/dist/compiler/web/admin/crud/actions.js.map +1 -1
- package/dist/compiler/web/admin/crud/columns.d.ts.map +1 -1
- package/dist/compiler/web/admin/crud/columns.js +9 -43
- package/dist/compiler/web/admin/crud/columns.js.map +1 -1
- package/dist/compiler/web/admin/crud/inputs.d.ts.map +1 -1
- package/dist/compiler/web/admin/crud/inputs.js +6 -150
- package/dist/compiler/web/admin/crud/inputs.js.map +1 -1
- package/dist/compiler/web/web-compiler.d.ts +1 -2
- package/dist/compiler/web/web-compiler.d.ts.map +1 -1
- package/dist/compiler/web/web-compiler.js +4 -3
- package/dist/compiler/web/web-compiler.js.map +1 -1
- package/dist/core-modules/admin-crud-action-compiler.d.ts +4 -0
- package/dist/core-modules/admin-crud-action-compiler.d.ts.map +1 -0
- package/dist/core-modules/admin-crud-action-compiler.js +37 -0
- package/dist/core-modules/admin-crud-action-compiler.js.map +1 -0
- package/dist/core-modules/admin-crud-column-compiler.d.ts +4 -0
- package/dist/core-modules/admin-crud-column-compiler.d.ts.map +1 -0
- package/dist/core-modules/admin-crud-column-compiler.js +47 -0
- package/dist/core-modules/admin-crud-column-compiler.js.map +1 -0
- package/dist/core-modules/admin-crud-input-compiler.d.ts +4 -0
- package/dist/core-modules/admin-crud-input-compiler.d.ts.map +1 -0
- package/dist/core-modules/admin-crud-input-compiler.js +157 -0
- package/dist/core-modules/admin-crud-input-compiler.js.map +1 -0
- package/dist/core-modules/index.d.ts +3 -0
- package/dist/core-modules/index.d.ts.map +1 -0
- package/dist/core-modules/index.js +17 -0
- package/dist/core-modules/index.js.map +1 -0
- package/dist/core-modules/library-type-spec.d.ts +10 -0
- package/dist/core-modules/library-type-spec.d.ts.map +1 -0
- package/dist/core-modules/library-type-spec.js +18 -0
- package/dist/core-modules/library-type-spec.js.map +1 -0
- package/dist/core-modules/model-transformer-compiler.d.ts +4 -0
- package/dist/core-modules/model-transformer-compiler.d.ts.map +1 -0
- package/dist/core-modules/model-transformer-compiler.js +31 -0
- package/dist/core-modules/model-transformer-compiler.js.map +1 -0
- package/dist/diff/diff-utils.d.ts.map +1 -1
- package/dist/diff/diff-utils.js +6 -2
- package/dist/diff/diff-utils.js.map +1 -1
- package/dist/diff/formatters.d.ts.map +1 -1
- package/dist/diff/formatters.js +9 -3
- package/dist/diff/formatters.js.map +1 -1
- package/dist/diff/snapshot/snapshot-management.js +3 -3
- package/dist/diff/snapshot/snapshot-management.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/plugins/node-plugin-store.d.ts.map +1 -1
- package/dist/plugins/node-plugin-store.js +3 -10
- package/dist/plugins/node-plugin-store.js.map +1 -1
- package/dist/plugins/plugin-discovery.js +1 -1
- package/dist/plugins/plugin-discovery.js.map +1 -1
- package/dist/project-definition/load-project-definition.js +3 -3
- package/dist/project-definition/load-project-definition.js.map +1 -1
- package/dist/sync/file-id-map.js +1 -1
- package/dist/sync/file-id-map.js.map +1 -1
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACb,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAI3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,CAAC,YAAY,CAAC,EACtC,gBAAgB,EAAE,sBAAsB,EACxC,KAAK,EAAE,MAAM,GACZ,eAAe,CAoBjB"}
|
|
@@ -1,34 +1,10 @@
|
|
|
1
1
|
import { adminCrudActionCompilerSpec } from '@baseplate-dev/project-builder-lib';
|
|
2
|
-
import { adminCrudDeleteActionGenerator, adminCrudEditActionGenerator, } from '@baseplate-dev/react-generators';
|
|
3
|
-
const adminCrudEditActionCompiler = {
|
|
4
|
-
name: 'edit',
|
|
5
|
-
compileAction: (definition, { order }) => adminCrudEditActionGenerator({
|
|
6
|
-
order,
|
|
7
|
-
position: definition.position,
|
|
8
|
-
}),
|
|
9
|
-
};
|
|
10
|
-
const adminCrudDeleteActionCompiler = {
|
|
11
|
-
name: 'delete',
|
|
12
|
-
compileAction: (definition, { order, model, modelCrudSection, definitionContainer }) => {
|
|
13
|
-
if (model.model.primaryKeyFieldRefs.length !== 1) {
|
|
14
|
-
throw new Error(`Model ${model.name} must have exactly one primary key field`);
|
|
15
|
-
}
|
|
16
|
-
return adminCrudDeleteActionGenerator({
|
|
17
|
-
order,
|
|
18
|
-
position: definition.position,
|
|
19
|
-
modelName: model.name,
|
|
20
|
-
nameField: definitionContainer.nameFromId(modelCrudSection.nameFieldRef),
|
|
21
|
-
idField: definitionContainer.nameFromId(model.model.primaryKeyFieldRefs[0]),
|
|
22
|
-
});
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
const builtInCompilers = [
|
|
26
|
-
adminCrudEditActionCompiler,
|
|
27
|
-
adminCrudDeleteActionCompiler,
|
|
28
|
-
];
|
|
29
2
|
export function compileAdminCrudAction(action, modelId, builder, modelCrudSection, order) {
|
|
30
|
-
const actionCompiler = builder.pluginStore.
|
|
31
|
-
const compiler = actionCompiler.
|
|
3
|
+
const actionCompiler = builder.pluginStore.use(adminCrudActionCompilerSpec);
|
|
4
|
+
const compiler = actionCompiler.actions.get(action.type);
|
|
5
|
+
if (!compiler) {
|
|
6
|
+
throw new Error(`Compiler for action type ${action.type} not found`);
|
|
7
|
+
}
|
|
32
8
|
const model = builder.projectDefinition.models.find((m) => m.id === modelId);
|
|
33
9
|
if (!model) {
|
|
34
10
|
throw new Error(`Model with id ${modelId} not found`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/actions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/actions.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAIjF,MAAM,UAAU,sBAAsB,CACpC,MAA4B,EAC5B,OAAe,EACf,OAAsC,EACtC,gBAAwC,EACxC,KAAa;IAEb,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEzD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAC,IAAI,YAAY,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC7E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE;QACpC,KAAK;QACL,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,KAAK;QACL,gBAAgB;KACjB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/columns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,
|
|
1
|
+
{"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/columns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,sBAAsB,EACtB,YAAY,EACb,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAO3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,yBAAyB,EACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,CAAC,YAAY,CAAC,EACtC,gBAAgB,EAAE,sBAAsB,EACxC,KAAK,EAAE,MAAM,GACZ,eAAe,CAiBjB"}
|
|
@@ -1,52 +1,18 @@
|
|
|
1
|
-
import { adminCrudColumnCompilerSpec,
|
|
2
|
-
import { adminCrudForeignColumnGenerator, adminCrudTextColumnGenerator, } from '@baseplate-dev/react-generators';
|
|
3
|
-
// Built-in column compilers
|
|
4
|
-
const BUILT_IN_COLUMN_COMPILERS = [
|
|
5
|
-
createAdminCrudColumnCompiler({
|
|
6
|
-
name: 'text',
|
|
7
|
-
compileColumn: (column, options) => adminCrudTextColumnGenerator({
|
|
8
|
-
id: column.id,
|
|
9
|
-
label: column.label,
|
|
10
|
-
order: options.order,
|
|
11
|
-
modelField: options.definitionContainer.nameFromId(column.modelFieldRef),
|
|
12
|
-
}),
|
|
13
|
-
}),
|
|
14
|
-
createAdminCrudColumnCompiler({
|
|
15
|
-
name: 'foreign',
|
|
16
|
-
compileColumn: (column, { definitionContainer, model, order }) => {
|
|
17
|
-
const relation = model.model.relations?.find((r) => r.id === column.localRelationRef);
|
|
18
|
-
const localRelationName = definitionContainer.nameFromId(column.localRelationRef);
|
|
19
|
-
if (!relation) {
|
|
20
|
-
throw new Error(`Could not find relation ${localRelationName} in model ${model.name}`);
|
|
21
|
-
}
|
|
22
|
-
if (relation.references.length !== 1) {
|
|
23
|
-
throw new Error(`Only relations with a single reference are supported`);
|
|
24
|
-
}
|
|
25
|
-
const foreignModelIdFields = ModelUtils.byIdOrThrow(definitionContainer.definition, relation.modelRef).model.primaryKeyFieldRefs.map((ref) => definitionContainer.nameFromId(ref));
|
|
26
|
-
return adminCrudForeignColumnGenerator({
|
|
27
|
-
id: column.id,
|
|
28
|
-
label: column.label,
|
|
29
|
-
order,
|
|
30
|
-
relationName: localRelationName,
|
|
31
|
-
foreignModelIdFields,
|
|
32
|
-
isOptional: ModelFieldUtils.isRelationOptional(model, relation),
|
|
33
|
-
labelExpression: column.labelExpression,
|
|
34
|
-
});
|
|
35
|
-
},
|
|
36
|
-
}),
|
|
37
|
-
];
|
|
1
|
+
import { adminCrudColumnCompilerSpec, ModelUtils, } from '@baseplate-dev/project-builder-lib';
|
|
38
2
|
/**
|
|
39
3
|
* Compiles an admin CRUD column definition into generator bundles
|
|
40
4
|
*/
|
|
41
5
|
export function compileAdminCrudColumn(column, modelId, builder, modelCrudSection, order) {
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
6
|
+
const columnCompiler = builder.pluginStore.use(adminCrudColumnCompilerSpec);
|
|
7
|
+
const compiler = columnCompiler.columns.get(column.type);
|
|
8
|
+
if (!compiler) {
|
|
9
|
+
throw new Error(`Compiler for column type ${column.type} not found`);
|
|
10
|
+
}
|
|
11
|
+
const model = ModelUtils.byIdOrThrow(builder.projectDefinition, modelId);
|
|
46
12
|
return compiler.compileColumn(column, {
|
|
47
13
|
order,
|
|
48
|
-
|
|
49
|
-
|
|
14
|
+
definitionContainer: builder.definitionContainer,
|
|
15
|
+
model,
|
|
50
16
|
modelCrudSection,
|
|
51
17
|
});
|
|
52
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columns.js","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/columns.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"columns.js","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/columns.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,2BAA2B,EAC3B,UAAU,GACX,MAAM,oCAAoC,CAAC;AAI5C;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAiC,EACjC,OAAe,EACf,OAAsC,EACtC,gBAAwC,EACxC,KAAa;IAEb,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEzD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAC,IAAI,YAAY,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAEzE,OAAO,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE;QACpC,KAAK;QACL,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,KAAK;QACL,gBAAgB;KACjB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/inputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/inputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,YAAY,EACb,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAO3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,wBAAwB,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,CAAC,YAAY,CAAC,EACtC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,GACZ,eAAe,CAejB"}
|
|
@@ -1,154 +1,10 @@
|
|
|
1
|
-
import { adminCrudInputCompilerSpec,
|
|
2
|
-
import { adminCrudEmbeddedInputGenerator, adminCrudEnumInputGenerator, adminCrudForeignInputGenerator, adminCrudPasswordInputGenerator, adminCrudTextInputGenerator, } from '@baseplate-dev/react-generators';
|
|
3
|
-
const adminEnumInputCompiler = {
|
|
4
|
-
name: 'enum',
|
|
5
|
-
compileInput: (definition, { order, definitionContainer, model }) => {
|
|
6
|
-
const fieldConfig = model.model.fields.find((f) => f.id === definition.modelFieldRef);
|
|
7
|
-
if (fieldConfig?.type !== 'enum' || !fieldConfig.options.enumRef) {
|
|
8
|
-
throw new Error(`Admin enum input ${definition.modelFieldRef} is not an enum`);
|
|
9
|
-
}
|
|
10
|
-
const enumBlock = EnumUtils.byId(definitionContainer.definition, fieldConfig.options.enumRef);
|
|
11
|
-
if (!enumBlock) {
|
|
12
|
-
throw new Error(`Could not find enum type ${fieldConfig.options.enumRef ?? ''}`);
|
|
13
|
-
}
|
|
14
|
-
const fieldName = definitionContainer.nameFromId(definition.modelFieldRef);
|
|
15
|
-
return adminCrudEnumInputGenerator({
|
|
16
|
-
order,
|
|
17
|
-
modelField: fieldName,
|
|
18
|
-
label: definition.label,
|
|
19
|
-
isOptional: fieldConfig.isOptional,
|
|
20
|
-
options: enumBlock.values.map((v) => ({
|
|
21
|
-
label: v.friendlyName,
|
|
22
|
-
value: v.name,
|
|
23
|
-
})),
|
|
24
|
-
});
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
const adminForeignInputCompiler = {
|
|
28
|
-
name: 'foreign',
|
|
29
|
-
compileInput: (definition, { order, definitionContainer, model }) => {
|
|
30
|
-
const relation = model.model.relations?.find((r) => r.id === definition.localRelationRef);
|
|
31
|
-
if (!relation) {
|
|
32
|
-
throw new Error(`Could not find relation ${definition.localRelationRef} in model ${model.name}`);
|
|
33
|
-
}
|
|
34
|
-
if (relation.references.length !== 1) {
|
|
35
|
-
throw new Error(`Only relations with a single reference are supported`);
|
|
36
|
-
}
|
|
37
|
-
const localField = definitionContainer.nameFromId(relation.references[0].localRef);
|
|
38
|
-
const localFieldType = model.model.fields.find((f) => f.id === relation.references[0].localRef)?.type;
|
|
39
|
-
if (!localFieldType ||
|
|
40
|
-
(localFieldType !== 'string' && localFieldType !== 'uuid')) {
|
|
41
|
-
throw new Error(`Only string and uuid primary keys are supported for foreign inputs`);
|
|
42
|
-
}
|
|
43
|
-
return adminCrudForeignInputGenerator({
|
|
44
|
-
order,
|
|
45
|
-
label: definition.label,
|
|
46
|
-
localRelationName: relation.name,
|
|
47
|
-
isOptional: ModelFieldUtils.isRelationOptional(model, relation),
|
|
48
|
-
localField,
|
|
49
|
-
foreignModelName: definitionContainer.nameFromId(relation.modelRef),
|
|
50
|
-
labelExpression: definition.labelExpression,
|
|
51
|
-
valueExpression: definition.valueExpression,
|
|
52
|
-
valueType: localFieldType,
|
|
53
|
-
defaultLabel: definition.defaultLabel,
|
|
54
|
-
nullLabel: definition.nullLabel,
|
|
55
|
-
});
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
function getInputType(fieldConfig) {
|
|
59
|
-
switch (fieldConfig.type) {
|
|
60
|
-
case 'boolean': {
|
|
61
|
-
return 'checked';
|
|
62
|
-
}
|
|
63
|
-
case 'date': {
|
|
64
|
-
return 'date';
|
|
65
|
-
}
|
|
66
|
-
case 'dateTime': {
|
|
67
|
-
return 'dateTime';
|
|
68
|
-
}
|
|
69
|
-
default: {
|
|
70
|
-
return 'text';
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
function getIsNumber(fieldConfig) {
|
|
75
|
-
return fieldConfig.type === 'int' || fieldConfig.type === 'float';
|
|
76
|
-
}
|
|
77
|
-
const adminCrudTextInputCompiler = {
|
|
78
|
-
name: 'text',
|
|
79
|
-
compileInput: (definition, { order, definitionContainer, model }) => {
|
|
80
|
-
const fieldConfig = model.model.fields.find((f) => f.id === definition.modelFieldRef);
|
|
81
|
-
if (!fieldConfig) {
|
|
82
|
-
throw new Error(`Field ${definition.modelFieldRef} cannot be found in ${model.name}`);
|
|
83
|
-
}
|
|
84
|
-
const fieldName = definitionContainer.nameFromId(definition.modelFieldRef);
|
|
85
|
-
return adminCrudTextInputGenerator({
|
|
86
|
-
order,
|
|
87
|
-
label: definition.label,
|
|
88
|
-
modelField: fieldName,
|
|
89
|
-
type: getInputType(fieldConfig),
|
|
90
|
-
validation: definition.validation
|
|
91
|
-
? definition.validation
|
|
92
|
-
: ModelFieldUtils.getModelFieldValidation(definitionContainer.definition, model.id, fieldConfig.id, true),
|
|
93
|
-
isNumber: getIsNumber(fieldConfig),
|
|
94
|
-
});
|
|
95
|
-
},
|
|
96
|
-
};
|
|
97
|
-
const adminCrudEmbeddedInputCompiler = {
|
|
98
|
-
name: 'embedded',
|
|
99
|
-
compileInput: (definition, { order, definitionContainer, model }) => {
|
|
100
|
-
const relationName = definitionContainer.nameFromId(definition.modelRelationRef);
|
|
101
|
-
const relation = ModelUtils.getRelationsToModel(definitionContainer.definition, model.id).find((r) => r.relation.foreignId === definition.modelRelationRef);
|
|
102
|
-
if (!relation) {
|
|
103
|
-
throw new Error(`Could not find relation ${definition.modelRelationRef} in model ${model.name}`);
|
|
104
|
-
}
|
|
105
|
-
const idFields = ModelUtils.getPrimaryKeyFields(relation.model).map((f) => definitionContainer.nameFromId(f.id));
|
|
106
|
-
return adminCrudEmbeddedInputGenerator({
|
|
107
|
-
order,
|
|
108
|
-
id: definition.modelRelationRef,
|
|
109
|
-
idFields,
|
|
110
|
-
label: definition.label,
|
|
111
|
-
modelRelation: relationName,
|
|
112
|
-
embeddedFormRef: definition.embeddedFormRef,
|
|
113
|
-
});
|
|
114
|
-
},
|
|
115
|
-
};
|
|
116
|
-
const adminCrudEmbeddedLocalInputCompiler = {
|
|
117
|
-
name: 'embeddedLocal',
|
|
118
|
-
compileInput(definition, { order, definitionContainer, model }) {
|
|
119
|
-
const localRelation = ModelFieldUtils.relationByIdOrThrow(model, definition.localRelationRef);
|
|
120
|
-
const foreignModel = ModelUtils.byIdOrThrow(definitionContainer.definition, localRelation.modelRef);
|
|
121
|
-
const idFields = ModelUtils.getPrimaryKeyFields(foreignModel).map((f) => definitionContainer.nameFromId(f.id));
|
|
122
|
-
const localRelationName = definitionContainer.nameFromId(definition.localRelationRef);
|
|
123
|
-
return adminCrudEmbeddedInputGenerator({
|
|
124
|
-
order,
|
|
125
|
-
id: definition.localRelationRef,
|
|
126
|
-
idFields,
|
|
127
|
-
label: definition.label,
|
|
128
|
-
modelRelation: localRelationName,
|
|
129
|
-
isRequired: !ModelFieldUtils.isRelationOptional(model, localRelation),
|
|
130
|
-
embeddedFormRef: definition.embeddedFormRef,
|
|
131
|
-
});
|
|
132
|
-
},
|
|
133
|
-
};
|
|
134
|
-
const adminCrudPasswordInputCompiler = {
|
|
135
|
-
name: 'password',
|
|
136
|
-
compileInput: (definition, { order }) => adminCrudPasswordInputGenerator({
|
|
137
|
-
order,
|
|
138
|
-
label: definition.label,
|
|
139
|
-
}),
|
|
140
|
-
};
|
|
141
|
-
const builtInCompilers = [
|
|
142
|
-
adminEnumInputCompiler,
|
|
143
|
-
adminForeignInputCompiler,
|
|
144
|
-
adminCrudTextInputCompiler,
|
|
145
|
-
adminCrudEmbeddedInputCompiler,
|
|
146
|
-
adminCrudEmbeddedLocalInputCompiler,
|
|
147
|
-
adminCrudPasswordInputCompiler,
|
|
148
|
-
];
|
|
1
|
+
import { adminCrudInputCompilerSpec, ModelUtils, } from '@baseplate-dev/project-builder-lib';
|
|
149
2
|
export function compileAdminCrudInput(field, modelId, builder, crudSectionId, order) {
|
|
150
|
-
const inputCompiler = builder.pluginStore.
|
|
151
|
-
const compiler = inputCompiler.
|
|
3
|
+
const inputCompiler = builder.pluginStore.use(adminCrudInputCompilerSpec);
|
|
4
|
+
const compiler = inputCompiler.inputs.get(field.type);
|
|
5
|
+
if (!compiler) {
|
|
6
|
+
throw new Error(`Compiler for input type ${field.type} not found`);
|
|
7
|
+
}
|
|
152
8
|
return compiler.compileInput(field, {
|
|
153
9
|
order,
|
|
154
10
|
definitionContainer: builder.definitionContainer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/inputs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/inputs.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,0BAA0B,EAC1B,UAAU,GACX,MAAM,oCAAoC,CAAC;AAI5C,MAAM,UAAU,qBAAqB,CACnC,KAA+B,EAC/B,OAAe,EACf,OAAsC,EACtC,aAAqB,EACrB,KAAa;IAEb,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,YAAY,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE;QAClC,KAAK;QACL,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;QACjE,aAAa;KACd,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { WebAppConfig } from '@baseplate-dev/project-builder-lib';
|
|
2
|
-
import type { PackageTasks } from '../package-compiler.js';
|
|
1
|
+
import type { PackageTasks, WebAppConfig } from '@baseplate-dev/project-builder-lib';
|
|
3
2
|
import type { PackageEntry } from '../package-entry.js';
|
|
4
3
|
import { AppCompiler } from '../app-compiler.js';
|
|
5
4
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/web/web-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"web-compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/web/web-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACb,MAAM,oCAAoC,CAAC;AAkC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAuIjD;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,SAAQ,WAAW,CAAC,YAAY,CAAC;IAC/D,OAAO,IAAI,YAAY;IAwBvB,QAAQ,IAAI,YAAY;CAOzB"}
|
|
@@ -66,7 +66,7 @@ function buildAdminRoutes(builder) {
|
|
|
66
66
|
*
|
|
67
67
|
* Combines React Router, Apollo Client, Tailwind, Sentry, and admin panel
|
|
68
68
|
*/
|
|
69
|
-
function buildReact(builder) {
|
|
69
|
+
function buildReact(builder, devWebPort) {
|
|
70
70
|
const { projectDefinition, appConfig, appCompiler } = builder;
|
|
71
71
|
const backendApp = AppUtils.getBackendApp(projectDefinition);
|
|
72
72
|
const backendRelativePath = AppUtils.getBackendRelativePath(appConfig, backendApp);
|
|
@@ -102,7 +102,8 @@ function buildReact(builder) {
|
|
|
102
102
|
: {}),
|
|
103
103
|
},
|
|
104
104
|
}, {
|
|
105
|
-
devBackendHost: `http://localhost:${
|
|
105
|
+
devBackendHost: `http://localhost:${backendApp.devPort}`,
|
|
106
|
+
devWebPort,
|
|
106
107
|
});
|
|
107
108
|
}
|
|
108
109
|
/**
|
|
@@ -126,7 +127,7 @@ export class WebPackageCompiler extends AppCompiler {
|
|
|
126
127
|
description: `Web app for ${generalSettings.name}`,
|
|
127
128
|
version: '1.0.0',
|
|
128
129
|
children: {
|
|
129
|
-
react: buildReact(appBuilder),
|
|
130
|
+
react: buildReact(appBuilder, this.appConfig.devPort),
|
|
130
131
|
vitest: vitestGenerator({}),
|
|
131
132
|
},
|
|
132
133
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-compiler.js","sourceRoot":"","sources":["../../../src/compiler/web/web-compiler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web-compiler.js","sourceRoot":"","sources":["../../../src/compiler/web/web-compiler.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,oBAAoB,EACpB,eAAe,GAChB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,eAAe,GAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;GAIG;AACH,SAAS,yBAAyB,CAChC,OAAsC;IAEtC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IACvC,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;IAEtC,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC7C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,QAAQ;QAC9B,IAAI,EAAE,GAAG,QAAQ,CAAC,UAAU,IAC1B,YAAY,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,OAAO,CAAC,UAAU,CAAC;aACtE,IACL,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;KAC9B,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CACvB,OAAsC;IAEtC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IACvC,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IAExC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,oBAAoB,CAAC;QAC1B,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE;YACR,WAAW,EAAE,oBAAoB,CAAC;gBAChC,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,MAAM;wBACb,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,QAAQ,CAAC,UAAU;wBACzB,aAAa,EAAE;4BACb,KAAK,EAAE,IAAI;yBACZ;qBACF;oBACD,GAAG,yBAAyB,CAAC,OAAO,CAAC;iBACtC;gBACD,aAAa,EACX,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACpC,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC,CACvC,IAAI,EAAE;aACV,CAAC;YACF,KAAK,EAAE,kBAAkB,CAAC,EAAE,CAAC;YAC7B,MAAM,EAAE,oBAAoB,CAAC,OAAO,CAAC;SACtC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CACjB,OAAsC,EACtC,UAAkB;IAElB,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAE9D,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,sBAAsB,CACzD,SAAS,EACT,UAAU,CACX,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;IACnD,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE9C,MAAM,cAAc,GAAG,SAAS,CAC9B;QACE,QAAQ,EAAE,kBAAkB,CAAC,OAAO,CAAC;QACrC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,EACD,YAAY,CACb,CAAC;IAEF,OAAO,sBAAsB,CAC3B;QACE,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,QAAQ,EAAE;YACR,WAAW,EAAE,oBAAoB,CAAC;gBAChC,QAAQ,EAAE,cAAc;gBACxB,sBAAsB,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;aACnD,CAAC;YACF,eAAe,EAAE,wBAAwB,CAAC,EAAE,CAAC;YAC7C,aAAa,EAAE,sBAAsB,CAAC,EAAE,CAAC;YACzC,WAAW,EAAE,oBAAoB,CAAC,EAAE,CAAC;YACrC,WAAW,EAAE,oBAAoB,CAAC;gBAChC,cAAc,EAAE,cAAc;gBAC9B,cAAc,EAAE,GAAG,mBAAmB,iBAAiB;gBACvD,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;gBAClD,QAAQ,EAAE;oBACR,eAAe,EAAE,wBAAwB,CAAC,EAAE,CAAC;oBAC7C,YAAY,EAAE,qBAAqB,CAAC,EAAE,CAAC;iBACxC;aACF,CAAC;YACF,WAAW,EAAE,oBAAoB,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO;gBAC7B,CAAC,CAAC,EAAE,eAAe,EAAE,wBAAwB,CAAC,EAAE,CAAC,EAAE;gBACnD,CAAC,CAAC,EAAE,CAAC;SACR;KACF,EACD;QACE,cAAc,EAAE,oBAAoB,UAAU,CAAC,OAAO,EAAE;QACxD,UAAU;KACX,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAmB,SAAQ,WAAyB;IAC/D,OAAO;QACL,MAAM,UAAU,GAAG,+BAA+B,CAChD,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,SAAS,EACd,eAAe,CAChB,CAAC;QAEF,MAAM,EAAE,iBAAiB,EAAE,GAAG,UAAU,CAAC;QACzC,MAAM,eAAe,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC;QAE3D,MAAM,UAAU,GAAG,oBAAoB,CAAC;YACtC,IAAI,EAAE,GAAG,eAAe,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YACtD,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;YAClC,WAAW,EAAE,eAAe,eAAe,CAAC,IAAI,EAAE;YAClD,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE;gBACR,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBACrD,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;aAC5B;SACF,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,QAAQ;QACN,OAAO;YACL,KAAK,EAAE,CAAC,OAAO,CAAC;YAChB,GAAG,EAAE,CAAC,KAAK,CAAC;YACZ,KAAK,EAAE,EAAE;SACV,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-crud-action-compiler.d.ts","sourceRoot":"","sources":["../../src/core-modules/admin-crud-action-compiler.ts"],"names":[],"mappings":"AAmDA,eAAO,MAAM,yBAAyB;;EAWpC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { adminCrudActionCompilerSpec, createPluginModule, } from '@baseplate-dev/project-builder-lib';
|
|
2
|
+
import { adminCrudDeleteActionGenerator, adminCrudEditActionGenerator, } from '@baseplate-dev/react-generators';
|
|
3
|
+
const adminCrudEditActionCompiler = {
|
|
4
|
+
name: 'edit',
|
|
5
|
+
compileAction: (definition, { order }) => adminCrudEditActionGenerator({
|
|
6
|
+
order,
|
|
7
|
+
position: definition.position,
|
|
8
|
+
}),
|
|
9
|
+
};
|
|
10
|
+
const adminCrudDeleteActionCompiler = {
|
|
11
|
+
name: 'delete',
|
|
12
|
+
compileAction: (definition, { order, model, modelCrudSection, definitionContainer }) => {
|
|
13
|
+
if (model.model.primaryKeyFieldRefs.length !== 1) {
|
|
14
|
+
throw new Error(`Model ${model.name} must have exactly one primary key field`);
|
|
15
|
+
}
|
|
16
|
+
return adminCrudDeleteActionGenerator({
|
|
17
|
+
order,
|
|
18
|
+
position: definition.position,
|
|
19
|
+
modelName: model.name,
|
|
20
|
+
nameField: definitionContainer.nameFromId(modelCrudSection.nameFieldRef),
|
|
21
|
+
idField: definitionContainer.nameFromId(model.model.primaryKeyFieldRefs[0]),
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
export const adminCrudActionCoreModule = createPluginModule({
|
|
26
|
+
name: 'admin-crud-action-compiler',
|
|
27
|
+
dependencies: {
|
|
28
|
+
adminCrudActionCompiler: adminCrudActionCompilerSpec,
|
|
29
|
+
},
|
|
30
|
+
initialize: ({ adminCrudActionCompiler }) => {
|
|
31
|
+
adminCrudActionCompiler.actions.addMany([
|
|
32
|
+
adminCrudEditActionCompiler,
|
|
33
|
+
adminCrudDeleteActionCompiler,
|
|
34
|
+
]);
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=admin-crud-action-compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-crud-action-compiler.js","sourceRoot":"","sources":["../../src/core-modules/admin-crud-action-compiler.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC;AAEzC,MAAM,2BAA2B,GAC/B;IACE,IAAI,EAAE,MAAM;IACZ,aAAa,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACvC,4BAA4B,CAAC;QAC3B,KAAK;QACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;KAC9B,CAAC;CACL,CAAC;AAEJ,MAAM,6BAA6B,GACjC;IACE,IAAI,EAAE,QAAQ;IACd,aAAa,EAAE,CACb,UAAU,EACV,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,EACvD,EAAE;QACF,IAAI,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CACb,SAAS,KAAK,CAAC,IAAI,0CAA0C,CAC9D,CAAC;QACJ,CAAC;QACD,OAAO,8BAA8B,CAAC;YACpC,KAAK;YACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,SAAS,EAAE,mBAAmB,CAAC,UAAU,CACvC,gBAAgB,CAAC,YAAY,CAC9B;YACD,OAAO,EAAE,mBAAmB,CAAC,UAAU,CACrC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CACnC;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEJ,MAAM,CAAC,MAAM,yBAAyB,GAAG,kBAAkB,CAAC;IAC1D,IAAI,EAAE,4BAA4B;IAClC,YAAY,EAAE;QACZ,uBAAuB,EAAE,2BAA2B;KACrD;IACD,UAAU,EAAE,CAAC,EAAE,uBAAuB,EAAE,EAAE,EAAE;QAC1C,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC;YACtC,2BAA2B;YAC3B,6BAA6B;SAC9B,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-crud-column-compiler.d.ts","sourceRoot":"","sources":["../../src/core-modules/admin-crud-column-compiler.ts"],"names":[],"mappings":"AAuEA,eAAO,MAAM,yBAAyB;;EAWpC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { adminCrudColumnCompilerSpec, createPluginModule, ModelFieldUtils, ModelUtils, } from '@baseplate-dev/project-builder-lib';
|
|
2
|
+
import { adminCrudForeignColumnGenerator, adminCrudTextColumnGenerator, } from '@baseplate-dev/react-generators';
|
|
3
|
+
const adminCrudTextColumnCompiler = {
|
|
4
|
+
name: 'text',
|
|
5
|
+
compileColumn: (column, options) => adminCrudTextColumnGenerator({
|
|
6
|
+
id: column.id,
|
|
7
|
+
label: column.label,
|
|
8
|
+
order: options.order,
|
|
9
|
+
modelField: options.definitionContainer.nameFromId(column.modelFieldRef),
|
|
10
|
+
}),
|
|
11
|
+
};
|
|
12
|
+
const adminCrudForeignColumnCompiler = {
|
|
13
|
+
name: 'foreign',
|
|
14
|
+
compileColumn: (column, { definitionContainer, model, order }) => {
|
|
15
|
+
const relation = model.model.relations?.find((r) => r.id === column.localRelationRef);
|
|
16
|
+
const localRelationName = definitionContainer.nameFromId(column.localRelationRef);
|
|
17
|
+
if (!relation) {
|
|
18
|
+
throw new Error(`Could not find relation ${localRelationName} in model ${model.name}`);
|
|
19
|
+
}
|
|
20
|
+
if (relation.references.length !== 1) {
|
|
21
|
+
throw new Error(`Only relations with a single reference are supported`);
|
|
22
|
+
}
|
|
23
|
+
const foreignModelIdFields = ModelUtils.byIdOrThrow(definitionContainer.definition, relation.modelRef).model.primaryKeyFieldRefs.map((ref) => definitionContainer.nameFromId(ref));
|
|
24
|
+
return adminCrudForeignColumnGenerator({
|
|
25
|
+
id: column.id,
|
|
26
|
+
label: column.label,
|
|
27
|
+
order,
|
|
28
|
+
relationName: localRelationName,
|
|
29
|
+
foreignModelIdFields,
|
|
30
|
+
isOptional: ModelFieldUtils.isRelationOptional(model, relation),
|
|
31
|
+
labelExpression: column.labelExpression,
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
export const adminCrudColumnCoreModule = createPluginModule({
|
|
36
|
+
name: 'admin-crud-column-compiler',
|
|
37
|
+
dependencies: {
|
|
38
|
+
adminCrudColumnCompiler: adminCrudColumnCompilerSpec,
|
|
39
|
+
},
|
|
40
|
+
initialize: ({ adminCrudColumnCompiler }) => {
|
|
41
|
+
adminCrudColumnCompiler.columns.addMany([
|
|
42
|
+
adminCrudTextColumnCompiler,
|
|
43
|
+
adminCrudForeignColumnCompiler,
|
|
44
|
+
]);
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=admin-crud-column-compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-crud-column-compiler.js","sourceRoot":"","sources":["../../src/core-modules/admin-crud-column-compiler.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,eAAe,EACf,UAAU,GACX,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC;AAEzC,MAAM,2BAA2B,GAC/B;IACE,IAAI,EAAE,MAAM;IACZ,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CACjC,4BAA4B,CAAC;QAC3B,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAChD,MAAM,CAAC,aAAa,CACrB;KACF,CAAC;CACL,CAAC;AAEJ,MAAM,8BAA8B,GAClC;IACE,IAAI,EAAE,SAAS;IACf,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,gBAAgB,CACxC,CAAC;QACF,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,UAAU,CACtD,MAAM,CAAC,gBAAgB,CACxB,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,2BAA2B,iBAAiB,aAAa,KAAK,CAAC,IAAI,EAAE,CACtE,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,oBAAoB,GAAG,UAAU,CAAC,WAAW,CACjD,mBAAmB,CAAC,UAAU,EAC9B,QAAQ,CAAC,QAAQ,CAClB,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACtC,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,CACpC,CAAC;QAEF,OAAO,+BAA+B,CAAC;YACrC,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK;YACL,YAAY,EAAE,iBAAiB;YAC/B,oBAAoB;YACpB,UAAU,EAAE,eAAe,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAC/D,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEJ,MAAM,CAAC,MAAM,yBAAyB,GAAG,kBAAkB,CAAC;IAC1D,IAAI,EAAE,4BAA4B;IAClC,YAAY,EAAE;QACZ,uBAAuB,EAAE,2BAA2B;KACrD;IACD,UAAU,EAAE,CAAC,EAAE,uBAAuB,EAAE,EAAE,EAAE;QAC1C,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC;YACtC,2BAA2B;YAC3B,8BAA8B;SAC/B,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-crud-input-compiler.d.ts","sourceRoot":"","sources":["../../src/core-modules/admin-crud-input-compiler.ts"],"names":[],"mappings":"AAoPA,eAAO,MAAM,wBAAwB;;EAenC,CAAC"}
|