@baseplate-dev/project-builder-server 0.4.4 → 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/actions/registry.d.ts +10 -0
- package/dist/actions/registry.d.ts.map +1 -1
- package/dist/actions/registry.js +2 -1
- package/dist/actions/registry.js.map +1 -1
- package/dist/actions/sync/index.d.ts +1 -0
- package/dist/actions/sync/index.d.ts.map +1 -1
- package/dist/actions/sync/index.js +1 -0
- package/dist/actions/sync/index.js.map +1 -1
- package/dist/actions/sync/sync-file.action.d.ts +21 -0
- package/dist/actions/sync/sync-file.action.d.ts.map +1 -0
- package/dist/actions/sync/sync-file.action.js +106 -0
- package/dist/actions/sync/sync-file.action.js.map +1 -0
- package/dist/actions/sync/sync-project.action.d.ts +1 -0
- package/dist/actions/sync/sync-project.action.d.ts.map +1 -1
- package/dist/actions/sync/sync-project.action.js +6 -1
- package/dist/actions/sync/sync-project.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/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 +2 -2
- package/dist/compiler/compile-packages.d.ts.map +1 -1
- package/dist/compiler/compile-packages.js +8 -2
- package/dist/compiler/compile-packages.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/library/index.d.ts +3 -0
- package/dist/compiler/library/index.d.ts.map +1 -0
- package/dist/compiler/library/index.js +3 -0
- package/dist/compiler/library/index.js.map +1 -0
- package/dist/compiler/library/library-compiler.d.ts +3 -0
- package/dist/compiler/library/library-compiler.d.ts.map +1 -0
- package/dist/compiler/library/library-compiler.js +10 -0
- package/dist/compiler/library/library-compiler.js.map +1 -0
- 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 +17 -10
- 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 -23
- 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 -45
- package/dist/compiler/web/admin/crud/columns.js.map +1 -1
- package/dist/compiler/web/admin/crud/index.d.ts.map +1 -1
- package/dist/compiler/web/admin/crud/index.js +13 -5
- package/dist/compiler/web/admin/crud/index.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 -141
- 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 +2 -2
- 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/dev-server/api/router.d.ts +1 -0
- package/dist/dev-server/api/router.d.ts.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/project-definition/load-project-definition.js +3 -3
- package/dist/project-definition/load-project-definition.js.map +1 -1
- package/dist/sync/sync-file.d.ts +27 -0
- package/dist/sync/sync-file.d.ts.map +1 -0
- package/dist/sync/sync-file.js +78 -0
- package/dist/sync/sync-file.js.map +1 -0
- package/dist/sync/sync-project.d.ts +5 -1
- package/dist/sync/sync-project.d.ts.map +1 -1
- package/dist/sync/sync-project.js +16 -4
- package/dist/sync/sync-project.js.map +1 -1
- package/package.json +10 -10
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ProjectDefinitionContainer } from '@baseplate-dev/project-builder-lib';
|
|
2
2
|
import { sortBy } from 'es-toolkit';
|
|
3
3
|
import { BackendPackageCompiler } from './backend/index.js';
|
|
4
|
+
import { createLibraryCompilerFromSpec } from './library/index.js';
|
|
4
5
|
import { RootPackageCompiler } from './root/index.js';
|
|
5
6
|
import { WebPackageCompiler } from './web/index.js';
|
|
6
7
|
/**
|
|
@@ -26,11 +27,11 @@ function createAppCompiler(definitionContainer, app) {
|
|
|
26
27
|
/**
|
|
27
28
|
* Compile all packages in a project definition
|
|
28
29
|
*
|
|
29
|
-
* Root package is compiled first, then backend apps, then other apps.
|
|
30
|
+
* Root package is compiled first, then backend apps, then other apps, then library packages.
|
|
30
31
|
*
|
|
31
32
|
* @param projectJson - Serialized project definition JSON
|
|
32
33
|
* @param context - Schema parser context
|
|
33
|
-
* @returns Array of compiled package entries with generator bundles (root first, then apps)
|
|
34
|
+
* @returns Array of compiled package entries with generator bundles (root first, then apps, then libraries)
|
|
34
35
|
*/
|
|
35
36
|
export function compilePackages(projectJson, context) {
|
|
36
37
|
const definitionContainer = ProjectDefinitionContainer.fromSerializedConfig(projectJson, context);
|
|
@@ -38,10 +39,15 @@ export function compilePackages(projectJson, context) {
|
|
|
38
39
|
(a) => (a.type === 'backend' ? 0 : 1),
|
|
39
40
|
(a) => a.name,
|
|
40
41
|
]);
|
|
42
|
+
// Get libraries sorted by name
|
|
43
|
+
const libraryConfigs = sortBy(definitionContainer.definition.libraries, [
|
|
44
|
+
(lib) => lib.name,
|
|
45
|
+
]);
|
|
41
46
|
// Instantiate all package compilers
|
|
42
47
|
const compilers = [
|
|
43
48
|
new RootPackageCompiler(definitionContainer),
|
|
44
49
|
...appConfigs.map((app) => createAppCompiler(definitionContainer, app)),
|
|
50
|
+
...libraryConfigs.map((lib) => createLibraryCompilerFromSpec(definitionContainer, lib)),
|
|
45
51
|
];
|
|
46
52
|
const compilerContext = {
|
|
47
53
|
compilers,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-packages.js","sourceRoot":"","sources":["../../src/compiler/compile-packages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compile-packages.js","sourceRoot":"","sources":["../../src/compiler/compile-packages.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;;;GAMG;AACH,SAAS,iBAAiB,CACxB,mBAA+C,EAC/C,GAAc;IAEd,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,OAAO,IAAI,sBAAsB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,OAAO,IAAI,kBAAkB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,qBAAsB,GAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAoB,EACpB,OAA4B;IAE5B,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,oBAAoB,CACzE,WAAW,EACX,OAAO,CACR,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,EAAE;QAC7D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;KACd,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,SAAS,EAAE;QACtE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI;KAClB,CAAC,CAAC;IAEH,oCAAoC;IACpC,MAAM,SAAS,GAAG;QAChB,IAAI,mBAAmB,CAAC,mBAAmB,CAAC;QAC5C,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACvE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC5B,6BAA6B,CAAC,mBAAmB,EAAE,GAAG,CAAC,CACxD;KACF,CAAC;IAEF,MAAM,eAAe,GAA2B;QAC9C,SAAS;KACV,CAAC;IAEF,uBAAuB;IACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC1C,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAClC,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/compiler/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
|
package/dist/compiler/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compiler/library/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/compiler/library/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { BaseLibraryDefinition, PackageCompiler, ProjectDefinitionContainer } from '@baseplate-dev/project-builder-lib';
|
|
2
|
+
export declare function createLibraryCompilerFromSpec(definitionContainer: ProjectDefinitionContainer, packageConfig: BaseLibraryDefinition): PackageCompiler;
|
|
3
|
+
//# sourceMappingURL=library-compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library-compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/library/library-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,eAAe,EACf,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAI5C,wBAAgB,6BAA6B,CAC3C,mBAAmB,EAAE,0BAA0B,EAC/C,aAAa,EAAE,qBAAqB,GACnC,eAAe,CAOjB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { libraryTypeSpec } from '@baseplate-dev/project-builder-lib';
|
|
2
|
+
export function createLibraryCompilerFromSpec(definitionContainer, packageConfig) {
|
|
3
|
+
const typeSpec = definitionContainer.pluginStore.use(libraryTypeSpec);
|
|
4
|
+
const compilerCreator = typeSpec.compilerCreators.get(packageConfig.type);
|
|
5
|
+
if (!compilerCreator) {
|
|
6
|
+
throw new Error(`Unknown library type: ${packageConfig.type}`);
|
|
7
|
+
}
|
|
8
|
+
return compilerCreator.createCompiler(definitionContainer, packageConfig);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=library-compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library-compiler.js","sourceRoot":"","sources":["../../../src/compiler/library/library-compiler.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,MAAM,UAAU,6BAA6B,CAC3C,mBAA+C,EAC/C,aAAoC;IAEpC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACtE,MAAM,eAAe,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1E,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,eAAe,CAAC,cAAc,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-library-package-compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/library/node-library-package-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EAEvB,MAAM,oCAAoC,CAAC;AAyC5C,eAAO,MAAM,0BAA0B,EAAE,sBAIxC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { composeNodeGenerator, nodeLibraryGenerator, vitestGenerator, } from '@baseplate-dev/core-generators';
|
|
2
|
+
import { LibraryCompiler, nodeLibraryDefinitionSchemaEntry, } from '@baseplate-dev/project-builder-lib';
|
|
3
|
+
class NodeLibraryPackageCompiler extends LibraryCompiler {
|
|
4
|
+
compile() {
|
|
5
|
+
const { packageConfig, definitionContainer } = this;
|
|
6
|
+
const projectDefinition = definitionContainer.definition;
|
|
7
|
+
const generalSettings = projectDefinition.settings.general;
|
|
8
|
+
const packageName = this.getPackageName();
|
|
9
|
+
const packageDirectory = this.getPackageDirectory();
|
|
10
|
+
const rootBundle = composeNodeGenerator({
|
|
11
|
+
name: `${generalSettings.name}-${packageConfig.name}`,
|
|
12
|
+
packageName,
|
|
13
|
+
description: `Library package for ${generalSettings.name}`,
|
|
14
|
+
version: '1.0.0',
|
|
15
|
+
children: {
|
|
16
|
+
library: nodeLibraryGenerator({ includePlaceholderIndexFile: true }),
|
|
17
|
+
vitest: vitestGenerator({ includeTestHelpers: false }),
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
return {
|
|
21
|
+
id: packageConfig.id,
|
|
22
|
+
name: packageConfig.name,
|
|
23
|
+
packageDirectory,
|
|
24
|
+
generatorBundle: rootBundle,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export const nodeLibraryCompilerCreator = {
|
|
29
|
+
name: nodeLibraryDefinitionSchemaEntry.name,
|
|
30
|
+
createCompiler: (definitionContainer, packageConfig) => new NodeLibraryPackageCompiler(definitionContainer, packageConfig),
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=node-library-package-compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-library-package-compiler.js","sourceRoot":"","sources":["../../../src/compiler/library/node-library-package-compiler.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,GAChB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,eAAe,EACf,gCAAgC,GACjC,MAAM,oCAAoC,CAAC;AAE5C,MAAM,0BAA2B,SAAQ,eAAsC;IAC7E,OAAO;QACL,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;QACpD,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,UAAU,CAAC;QACzD,MAAM,eAAe,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC;QAE3D,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEpD,MAAM,UAAU,GAAG,oBAAoB,CAAC;YACtC,IAAI,EAAE,GAAG,eAAe,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,EAAE;YACrD,WAAW;YACX,WAAW,EAAE,uBAAuB,eAAe,CAAC,IAAI,EAAE;YAC1D,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE;gBACR,OAAO,EAAE,oBAAoB,CAAC,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC;gBACpE,MAAM,EAAE,eAAe,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC;aACvD;SACF,CAAC,CAAC;QAEH,OAAO;YACL,EAAE,EAAE,aAAa,CAAC,EAAE;YACpB,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,gBAAgB;YAChB,eAAe,EAAE,UAAU;SAC5B,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,0BAA0B,GAA2B;IAChE,IAAI,EAAE,gCAAgC,CAAC,IAAI;IAC3C,cAAc,EAAE,CAAC,mBAAmB,EAAE,aAAa,EAAE,EAAE,CACrD,IAAI,0BAA0B,CAAC,mBAAmB,EAAE,aAAa,CAAC;CACrE,CAAC"}
|
|
@@ -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,8 +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
|
|
41
|
+
const appsFolder = monorepoSettings?.appsFolder ?? DEFAULT_APPS_FOLDER;
|
|
42
|
+
const librariesFolder = monorepoSettings?.librariesFolder ?? DEFAULT_LIBRARIES_FOLDER;
|
|
43
|
+
const workspacePackages = [`${appsFolder}/*`, `${librariesFolder}/*`];
|
|
43
44
|
const tasks = context.compilers.map((compiler) => compiler.getTasks());
|
|
44
45
|
const mergedTasks = {
|
|
45
46
|
dev: uniq(tasks.flatMap((task) => task.dev)),
|
|
@@ -84,8 +85,12 @@ export class RootPackageCompiler extends PackageCompiler {
|
|
|
84
85
|
private: true,
|
|
85
86
|
rootPackage: true,
|
|
86
87
|
scripts: {
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
...(buildTasks.length > 0
|
|
89
|
+
? {
|
|
90
|
+
build: `turbo run ${buildTasks}`,
|
|
91
|
+
'build:affected': `turbo run ${buildTasks} --affected`,
|
|
92
|
+
}
|
|
93
|
+
: {}),
|
|
89
94
|
typecheck: `turbo run typecheck`,
|
|
90
95
|
lint: `turbo run lint`,
|
|
91
96
|
'lint:affected': `turbo run lint --affected`,
|
|
@@ -94,12 +99,12 @@ export class RootPackageCompiler extends PackageCompiler {
|
|
|
94
99
|
'prettier:check': `turbo run prettier:check && pnpm run prettier:check:root`,
|
|
95
100
|
'prettier:check:affected': `turbo run prettier:check --affected`,
|
|
96
101
|
'prettier:write': `turbo run prettier:write && pnpm run prettier:write:root`,
|
|
97
|
-
dev: `turbo run ${devTasks}
|
|
98
|
-
watch: `turbo run ${watchTasks}
|
|
102
|
+
...(devTasks.length > 0 ? { dev: `turbo run ${devTasks}` } : {}),
|
|
103
|
+
...(watchTasks.length > 0 ? { watch: `turbo run ${watchTasks}` } : {}),
|
|
99
104
|
'baseplate:serve': 'baseplate serve',
|
|
100
105
|
'baseplate:generate': 'baseplate generate',
|
|
101
|
-
'prettier:check:root': `prettier --check . "!${appsFolder}/**"`,
|
|
102
|
-
'prettier:write:root': `prettier --write . "!${appsFolder}/**"`,
|
|
106
|
+
'prettier:check:root': `prettier --check . "!${appsFolder}/**" "!${librariesFolder}/**"`,
|
|
107
|
+
'prettier:write:root': `prettier --write . "!${appsFolder}/**" "!${librariesFolder}/**"`,
|
|
103
108
|
},
|
|
104
109
|
additionalPackages: {
|
|
105
110
|
dev: {
|
|
@@ -109,6 +114,8 @@ export class RootPackageCompiler extends PackageCompiler {
|
|
|
109
114
|
: {
|
|
110
115
|
'@baseplate-dev/project-builder-cli': cliVersion,
|
|
111
116
|
}),
|
|
117
|
+
// Include Typescript to allow tsconfig plugins like gql.tada to be used
|
|
118
|
+
typescript: CORE_PACKAGES.typescript,
|
|
112
119
|
},
|
|
113
120
|
},
|
|
114
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,28 +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 }) => adminCrudDeleteActionGenerator({
|
|
13
|
-
order,
|
|
14
|
-
position: definition.position,
|
|
15
|
-
modelName: model.name,
|
|
16
|
-
nameField: definitionContainer.nameFromId(modelCrudSection.nameFieldRef),
|
|
17
|
-
}),
|
|
18
|
-
};
|
|
19
|
-
const builtInCompilers = [
|
|
20
|
-
adminCrudEditActionCompiler,
|
|
21
|
-
adminCrudDeleteActionCompiler,
|
|
22
|
-
];
|
|
23
2
|
export function compileAdminCrudAction(action, modelId, builder, modelCrudSection, order) {
|
|
24
|
-
const actionCompiler = builder.pluginStore.
|
|
25
|
-
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
|
+
}
|
|
26
8
|
const model = builder.projectDefinition.models.find((m) => m.id === modelId);
|
|
27
9
|
if (!model) {
|
|
28
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,54 +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 localField = definitionContainer.nameFromId(relation.references[0].localRef);
|
|
26
|
-
const foreignModelName = definitionContainer.nameFromId(relation.modelRef);
|
|
27
|
-
return adminCrudForeignColumnGenerator({
|
|
28
|
-
id: column.id,
|
|
29
|
-
label: column.label,
|
|
30
|
-
order,
|
|
31
|
-
localField,
|
|
32
|
-
isOptional: ModelFieldUtils.isRelationOptional(model, relation),
|
|
33
|
-
foreignModelName,
|
|
34
|
-
labelExpression: column.labelExpression,
|
|
35
|
-
valueExpression: column.valueExpression,
|
|
36
|
-
});
|
|
37
|
-
},
|
|
38
|
-
}),
|
|
39
|
-
];
|
|
1
|
+
import { adminCrudColumnCompilerSpec, ModelUtils, } from '@baseplate-dev/project-builder-lib';
|
|
40
2
|
/**
|
|
41
3
|
* Compiles an admin CRUD column definition into generator bundles
|
|
42
4
|
*/
|
|
43
5
|
export function compileAdminCrudColumn(column, modelId, builder, modelCrudSection, order) {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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);
|
|
48
12
|
return compiler.compileColumn(column, {
|
|
49
13
|
order,
|
|
50
|
-
|
|
51
|
-
|
|
14
|
+
definitionContainer: builder.definitionContainer,
|
|
15
|
+
model,
|
|
52
16
|
modelCrudSection,
|
|
53
17
|
});
|
|
54
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":"index.d.ts","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EACtB,YAAY,EACb,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EACtB,YAAY,EACb,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAY3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAuE1E,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,sBAAsB,EACnC,OAAO,EAAE,eAAe,CAAC,YAAY,CAAC,EACtC,QAAQ,EAAE,MAAM,GACf,eAAe,CAqFjB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ModelUtils } from '@baseplate-dev/project-builder-lib';
|
|
2
|
-
import { adminCrudEditGenerator, adminCrudEmbeddedFormGenerator, adminCrudListGenerator,
|
|
2
|
+
import { adminCrudEditGenerator, adminCrudEmbeddedFormGenerator, adminCrudListGenerator, adminCrudSectionGenerator, reactRoutesGenerator, } from '@baseplate-dev/react-generators';
|
|
3
3
|
import inflection from 'inflection';
|
|
4
4
|
import { compileAdminCrudAction } from './actions.js';
|
|
5
5
|
import { compileAdminCrudColumn } from './columns.js';
|
|
@@ -39,6 +39,16 @@ export function compileAdminCrudSection(crudSection, builder, parentId) {
|
|
|
39
39
|
const crudSectionId = `${parentId}.${sectionName}.$section`;
|
|
40
40
|
const modelName = builder.nameFromId(crudSection.modelRef);
|
|
41
41
|
const { disableCreate } = crudSection;
|
|
42
|
+
const model = ModelUtils.byIdOrThrow(builder.projectDefinition, crudSection.modelRef);
|
|
43
|
+
const idFieldRefs = model.model.primaryKeyFieldRefs;
|
|
44
|
+
if (idFieldRefs.length !== 1) {
|
|
45
|
+
throw new Error(`Section ${crudSection.name} has ${idFieldRefs.length} primary keys, but only one is allowed`);
|
|
46
|
+
}
|
|
47
|
+
const idField = builder.nameFromId(idFieldRefs[0]);
|
|
48
|
+
const idFieldType = model.model.fields.find((field) => field.id === idFieldRefs[0])?.type;
|
|
49
|
+
if (!idFieldType || (idFieldType !== 'uuid' && idFieldType !== 'string')) {
|
|
50
|
+
throw new Error(`Section ${crudSection.name} has a primary key that is not a Uuid or String`);
|
|
51
|
+
}
|
|
42
52
|
return reactRoutesGenerator({
|
|
43
53
|
name: sectionName,
|
|
44
54
|
children: {
|
|
@@ -49,6 +59,8 @@ export function compileAdminCrudSection(crudSection, builder, parentId) {
|
|
|
49
59
|
modelName,
|
|
50
60
|
disableCreate,
|
|
51
61
|
nameField: builder.nameFromId(crudSection.nameFieldRef),
|
|
62
|
+
idField,
|
|
63
|
+
idFieldGraphqlType: idFieldType === 'uuid' ? 'Uuid' : 'String',
|
|
52
64
|
children: {
|
|
53
65
|
inputs: crudSection.form.fields.map((field, idx) => compileAdminCrudInput(field, crudSection.modelRef, builder, crudSectionId, idx)),
|
|
54
66
|
embeddedForms: crudSection.embeddedForms?.map((form) => compileAdminCrudEmbeddedForm(builder, form, crudSection)),
|
|
@@ -63,10 +75,6 @@ export function compileAdminCrudSection(crudSection, builder, parentId) {
|
|
|
63
75
|
actions: crudSection.table.actions?.map((action, idx) => compileAdminCrudAction(action, crudSection.modelRef, builder, crudSection, idx)),
|
|
64
76
|
},
|
|
65
77
|
}),
|
|
66
|
-
queries: adminCrudQueriesGenerator({
|
|
67
|
-
modelId: crudSection.modelRef,
|
|
68
|
-
modelName,
|
|
69
|
-
}),
|
|
70
78
|
},
|
|
71
79
|
}),
|
|
72
80
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC9B,sBAAsB,EACtB,yBAAyB,EACzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/compiler/web/admin/crud/index.ts"],"names":[],"mappings":"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"}
|