@baseplate-dev/project-builder-server 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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/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/graphql.js +4 -4
- 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 +6 -20
- 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 +32 -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 +9 -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.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/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/project-definition/load-project-definition.js +3 -3
- package/dist/project-definition/load-project-definition.js.map +1 -1
- package/package.json +8 -8
|
@@ -1,74 +1,5 @@
|
|
|
1
1
|
import type { AppEntryType, BaseAppConfig, ProjectDefinitionContainer } from '@baseplate-dev/project-builder-lib';
|
|
2
|
-
import type { PackageEntry } from './package-entry.js';
|
|
3
2
|
import { AppEntryBuilder } from './app-entry-builder.js';
|
|
4
|
-
export interface PackageTasks {
|
|
5
|
-
build: string[];
|
|
6
|
-
dev: string[];
|
|
7
|
-
watch: string[];
|
|
8
|
-
}
|
|
9
|
-
export interface PackageCompilerContext {
|
|
10
|
-
compilers: PackageCompiler[];
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Abstract base class for package type compilers
|
|
14
|
-
*
|
|
15
|
-
* Each package type (backend, web, library, etc.) extends this class
|
|
16
|
-
* to define how it should be compiled into a PackageEntry with generator bundles.
|
|
17
|
-
*
|
|
18
|
-
* Each child class defines its own constructor requirements based on what
|
|
19
|
-
* information it needs (e.g., app config, definition container).
|
|
20
|
-
*/
|
|
21
|
-
export declare abstract class PackageCompiler {
|
|
22
|
-
protected readonly definitionContainer: ProjectDefinitionContainer;
|
|
23
|
-
constructor(definitionContainer: ProjectDefinitionContainer);
|
|
24
|
-
/**
|
|
25
|
-
* Compile a package configuration into a PackageEntry with generator bundle
|
|
26
|
-
*
|
|
27
|
-
* @returns PackageEntry with generated bundle ready for sync
|
|
28
|
-
*/
|
|
29
|
-
abstract compile(context: PackageCompilerContext): PackageEntry;
|
|
30
|
-
/**
|
|
31
|
-
* Get the formatted package name (e.g., '@scope/backend' or 'project-backend')
|
|
32
|
-
*
|
|
33
|
-
* @returns Formatted package name
|
|
34
|
-
*/
|
|
35
|
-
abstract getPackageName(): string;
|
|
36
|
-
/**
|
|
37
|
-
* Get the package directory path relative to monorepo root
|
|
38
|
-
*
|
|
39
|
-
* @returns Package directory path (e.g., 'apps/backend', '.')
|
|
40
|
-
*/
|
|
41
|
-
abstract getPackageDirectory(): string;
|
|
42
|
-
/**
|
|
43
|
-
* Get the tasks for a package used in turbo configuration
|
|
44
|
-
*
|
|
45
|
-
* @returns Object with build, dev, and watch tasks
|
|
46
|
-
*/
|
|
47
|
-
getTasks(): PackageTasks;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Build a package name following monorepo naming conventions
|
|
51
|
-
*
|
|
52
|
-
* If packageScope is set, creates scoped package: @scope/name
|
|
53
|
-
* Otherwise, creates prefixed package: project-name
|
|
54
|
-
*
|
|
55
|
-
* @param generalSettings - Project general settings
|
|
56
|
-
* @param packageName - The app/package name
|
|
57
|
-
* @returns Formatted package name
|
|
58
|
-
*
|
|
59
|
-
* @example
|
|
60
|
-
* ```typescript
|
|
61
|
-
* buildPackageName({ name: 'blog', packageScope: 'acme' }, 'backend')
|
|
62
|
-
* // Returns: '@acme/backend'
|
|
63
|
-
*
|
|
64
|
-
* buildPackageName({ name: 'blog', packageScope: '' }, 'backend')
|
|
65
|
-
* // Returns: 'blog-backend'
|
|
66
|
-
* ```
|
|
67
|
-
*/
|
|
68
|
-
export declare function buildPackageName(generalSettings: {
|
|
69
|
-
name: string;
|
|
70
|
-
packageScope: string;
|
|
71
|
-
}, packageName: string): string;
|
|
72
3
|
/**
|
|
73
4
|
* Create an AppEntryBuilder for a package
|
|
74
5
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/package-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAE5C,OAAO,
|
|
1
|
+
{"version":3,"file":"package-compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/package-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAC7C,UAAU,SAAS,aAAa,EAEhC,mBAAmB,EAAE,0BAA0B,EAC/C,SAAS,EAAE,UAAU,EACrB,aAAa,EAAE,YAAY,CAAC,UAAU,CAAC,GACtC,eAAe,CAAC,UAAU,CAAC,CAE7B"}
|
|
@@ -1,55 +1,4 @@
|
|
|
1
1
|
import { AppEntryBuilder } from './app-entry-builder.js';
|
|
2
|
-
/**
|
|
3
|
-
* Abstract base class for package type compilers
|
|
4
|
-
*
|
|
5
|
-
* Each package type (backend, web, library, etc.) extends this class
|
|
6
|
-
* to define how it should be compiled into a PackageEntry with generator bundles.
|
|
7
|
-
*
|
|
8
|
-
* Each child class defines its own constructor requirements based on what
|
|
9
|
-
* information it needs (e.g., app config, definition container).
|
|
10
|
-
*/
|
|
11
|
-
export class PackageCompiler {
|
|
12
|
-
definitionContainer;
|
|
13
|
-
constructor(definitionContainer) {
|
|
14
|
-
this.definitionContainer = definitionContainer;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Get the tasks for a package used in turbo configuration
|
|
18
|
-
*
|
|
19
|
-
* @returns Object with build, dev, and watch tasks
|
|
20
|
-
*/
|
|
21
|
-
getTasks() {
|
|
22
|
-
return {
|
|
23
|
-
build: [],
|
|
24
|
-
dev: [],
|
|
25
|
-
watch: [],
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Build a package name following monorepo naming conventions
|
|
31
|
-
*
|
|
32
|
-
* If packageScope is set, creates scoped package: @scope/name
|
|
33
|
-
* Otherwise, creates prefixed package: project-name
|
|
34
|
-
*
|
|
35
|
-
* @param generalSettings - Project general settings
|
|
36
|
-
* @param packageName - The app/package name
|
|
37
|
-
* @returns Formatted package name
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```typescript
|
|
41
|
-
* buildPackageName({ name: 'blog', packageScope: 'acme' }, 'backend')
|
|
42
|
-
* // Returns: '@acme/backend'
|
|
43
|
-
*
|
|
44
|
-
* buildPackageName({ name: 'blog', packageScope: '' }, 'backend')
|
|
45
|
-
* // Returns: 'blog-backend'
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
export function buildPackageName(generalSettings, packageName) {
|
|
49
|
-
return generalSettings.packageScope
|
|
50
|
-
? `@${generalSettings.packageScope}/${packageName}`
|
|
51
|
-
: `${generalSettings.name}-${packageName}`;
|
|
52
|
-
}
|
|
53
2
|
/**
|
|
54
3
|
* Create an AppEntryBuilder for a package
|
|
55
4
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-compiler.js","sourceRoot":"","sources":["../../src/compiler/package-compiler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package-compiler.js","sourceRoot":"","sources":["../../src/compiler/package-compiler.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,+BAA+B,CAG7C,mBAA+C,EAC/C,SAAqB,EACrB,aAAuC;IAEvC,OAAO,IAAI,eAAe,CAAC,mBAAmB,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { PackageCompilerContext } from '
|
|
1
|
+
import type { PackageCompilerContext } from '@baseplate-dev/project-builder-lib';
|
|
2
|
+
import { PackageCompiler } from '@baseplate-dev/project-builder-lib';
|
|
2
3
|
import type { PackageEntry } from '../package-entry.js';
|
|
3
|
-
import { PackageCompiler } from '../package-compiler.js';
|
|
4
4
|
/**
|
|
5
5
|
* Compiler for monorepo root package
|
|
6
6
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root-package-compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/root/root-package-compiler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"root-package-compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/root/root-package-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EAEvB,MAAM,oCAAoC,CAAC;AAc5C,OAAO,EAIL,eAAe,EAChB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAyBxD;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,OAAO,CAAC,OAAO,EAAE,sBAAsB,GAAG,YAAY;IAyHtD,cAAc,IAAI,MAAM;IAMxB,mBAAmB,IAAI,MAAM;CAG9B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { dockerComposeGenerator, nodeGenerator, nodeGitIgnoreGenerator, pathRootsGenerator, pnpmWorkspaceGenerator, prettierGenerator, rootReadmeGenerator, turboGenerator, } from '@baseplate-dev/core-generators';
|
|
1
|
+
import { CORE_PACKAGES, dockerComposeGenerator, nodeGenerator, nodeGitIgnoreGenerator, pathRootsGenerator, pnpmWorkspaceGenerator, prettierGenerator, rootReadmeGenerator, turboGenerator, } from '@baseplate-dev/core-generators';
|
|
2
|
+
import { buildPackageName, DEFAULT_APPS_FOLDER, DEFAULT_LIBRARIES_FOLDER, PackageCompiler, } from '@baseplate-dev/project-builder-lib';
|
|
2
3
|
import { uniq } from 'es-toolkit';
|
|
3
4
|
import { getPostgresSettings, getRedisSettings, isRedisEnabled, } from '../infrastructure-utils.js';
|
|
4
|
-
import { buildPackageName, PackageCompiler } from '../package-compiler.js';
|
|
5
5
|
/**
|
|
6
6
|
* Build Docker Compose configuration at root level
|
|
7
7
|
*
|
|
@@ -38,9 +38,9 @@ export class RootPackageCompiler extends PackageCompiler {
|
|
|
38
38
|
const generalSettings = projectDefinition.settings.general;
|
|
39
39
|
const monorepoSettings = projectDefinition.settings.monorepo;
|
|
40
40
|
// Build workspace patterns from monorepo settings
|
|
41
|
-
const appsFolder = monorepoSettings?.appsFolder ??
|
|
42
|
-
const
|
|
43
|
-
const workspacePackages = [`${appsFolder}/*`, `${
|
|
41
|
+
const appsFolder = monorepoSettings?.appsFolder ?? DEFAULT_APPS_FOLDER;
|
|
42
|
+
const librariesFolder = monorepoSettings?.librariesFolder ?? DEFAULT_LIBRARIES_FOLDER;
|
|
43
|
+
const workspacePackages = [`${appsFolder}/*`, `${librariesFolder}/*`];
|
|
44
44
|
const tasks = context.compilers.map((compiler) => compiler.getTasks());
|
|
45
45
|
const mergedTasks = {
|
|
46
46
|
dev: uniq(tasks.flatMap((task) => task.dev)),
|
|
@@ -103,8 +103,8 @@ export class RootPackageCompiler extends PackageCompiler {
|
|
|
103
103
|
...(watchTasks.length > 0 ? { watch: `turbo run ${watchTasks}` } : {}),
|
|
104
104
|
'baseplate:serve': 'baseplate serve',
|
|
105
105
|
'baseplate:generate': 'baseplate generate',
|
|
106
|
-
'prettier:check:root': `prettier --check . "!${appsFolder}/**" "!${
|
|
107
|
-
'prettier:write:root': `prettier --write . "!${appsFolder}/**" "!${
|
|
106
|
+
'prettier:check:root': `prettier --check . "!${appsFolder}/**" "!${librariesFolder}/**"`,
|
|
107
|
+
'prettier:write:root': `prettier --write . "!${appsFolder}/**" "!${librariesFolder}/**"`,
|
|
108
108
|
},
|
|
109
109
|
additionalPackages: {
|
|
110
110
|
dev: {
|
|
@@ -114,6 +114,8 @@ export class RootPackageCompiler extends PackageCompiler {
|
|
|
114
114
|
: {
|
|
115
115
|
'@baseplate-dev/project-builder-cli': cliVersion,
|
|
116
116
|
}),
|
|
117
|
+
// Include Typescript to allow tsconfig plugins like gql.tada to be used
|
|
118
|
+
typescript: CORE_PACKAGES.typescript,
|
|
117
119
|
},
|
|
118
120
|
},
|
|
119
121
|
children: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root-package-compiler.js","sourceRoot":"","sources":["../../../src/compiler/root/root-package-compiler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"root-package-compiler.js","sourceRoot":"","sources":["../../../src/compiler/root/root-package-compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AAmIjD;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,SAAQ,WAAW,CAAC,YAAY,CAAC;IAC/D,OAAO,IAAI,YAAY;IAwBvB,QAAQ,IAAI,YAAY;CAOzB"}
|
|
@@ -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,CAAC,OAAsC;IACxD,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,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE;KACxF,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,CAAC;gBAC7B,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"}
|