create-fullstack-scaffold 0.4.1 → 0.4.3
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/cli/index.js +34 -18
- package/dist/cli/index.js.map +1 -1
- package/package.json +2 -2
- package/template/package.json +1 -1
- package/template/src/client/App.tsx +3 -1
- package/template/src/client/pages/ContentListPage.tsx +36 -4
- package/template/src/client/pages/PluginsPage.tsx +112 -20
- package/template/src/client/pages/TodoPage.tsx +9 -1
- package/template/src/client/preset-ui-config.ts +79 -2
- package/template/src/server/db/init.ts +389 -0
- package/template/src/server/module-content/routes/topics-routes.ts +250 -0
- package/template/src/server/module-content/services/content-service.ts +1 -1
- package/template/src/server/module-todos/services/todo-service.ts +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -283,10 +283,7 @@ function getGeneratedFiles(resolved) {
|
|
|
283
283
|
if (!resolved.modules.has("admin") && resolved.hasPermission) {
|
|
284
284
|
files.push("src/server/utils/auth.ts");
|
|
285
285
|
}
|
|
286
|
-
|
|
287
|
-
if (seedModules.some((m) => !resolved.modules.has(m)) || !resolved.hasPermission) {
|
|
288
|
-
files.push("src/server/db/init.ts");
|
|
289
|
-
}
|
|
286
|
+
files.push("src/server/db/init.ts");
|
|
290
287
|
return files;
|
|
291
288
|
}
|
|
292
289
|
|
|
@@ -699,25 +696,35 @@ function generateDbSchemaBarrel(resolved) {
|
|
|
699
696
|
|
|
700
697
|
// src/generators/db-init.ts
|
|
701
698
|
var SEED_MODULES = [
|
|
699
|
+
{
|
|
700
|
+
module: "todos",
|
|
701
|
+
importLine: "",
|
|
702
|
+
call: "import('../module-todos/services/todo-service').then(m => m.seedTodosIfEmpty())"
|
|
703
|
+
},
|
|
702
704
|
{
|
|
703
705
|
module: "order",
|
|
704
|
-
importLine: "
|
|
705
|
-
call: "seedOrdersIfEmpty()"
|
|
706
|
+
importLine: "",
|
|
707
|
+
call: "import('../module-order/services/order-service').then(m => m.seedOrdersIfEmpty())"
|
|
706
708
|
},
|
|
707
709
|
{
|
|
708
710
|
module: "ticket",
|
|
709
|
-
importLine: "
|
|
710
|
-
call: "seedTicketsIfEmpty()"
|
|
711
|
+
importLine: "",
|
|
712
|
+
call: "import('../module-ticket/services/ticket-service').then(m => m.seedTicketsIfEmpty())"
|
|
711
713
|
},
|
|
712
714
|
{
|
|
713
715
|
module: "dispute",
|
|
714
|
-
importLine: "
|
|
715
|
-
call: "seedDisputesIfEmpty()"
|
|
716
|
+
importLine: "",
|
|
717
|
+
call: "import('../module-dispute/services/dispute-service').then(m => m.seedDisputesIfEmpty())"
|
|
716
718
|
},
|
|
717
719
|
{
|
|
718
720
|
module: "content",
|
|
719
|
-
importLine: "
|
|
720
|
-
call: "seedContentsIfEmpty()"
|
|
721
|
+
importLine: "",
|
|
722
|
+
call: "import('../module-content/services/content-service').then(m => m.seedContentsIfEmpty())"
|
|
723
|
+
},
|
|
724
|
+
{
|
|
725
|
+
module: "tenant",
|
|
726
|
+
importLine: "",
|
|
727
|
+
call: "import('../module-tenant/services/tenant-service').then(m => m.seedTenantsIfEmpty())"
|
|
721
728
|
}
|
|
722
729
|
];
|
|
723
730
|
var INITIAL_PERMISSIONS = `const initialPermissions = [
|
|
@@ -1067,11 +1074,18 @@ var INITIAL_ROLE_PERMISSIONS = `const initialRolePermissions = [
|
|
|
1067
1074
|
function generateDbInit(resolved) {
|
|
1068
1075
|
const activeSeeds = SEED_MODULES.filter((s) => resolved.modules.has(s.module));
|
|
1069
1076
|
if (!resolved.hasPermission) {
|
|
1070
|
-
return generateMinimalDbInit();
|
|
1077
|
+
return generateMinimalDbInit(activeSeeds);
|
|
1071
1078
|
}
|
|
1072
1079
|
return generateFullDbInit(activeSeeds);
|
|
1073
1080
|
}
|
|
1074
|
-
function generateMinimalDbInit() {
|
|
1081
|
+
function generateMinimalDbInit(activeSeeds) {
|
|
1082
|
+
const seedCalls = activeSeeds.map((s) => ` ${s.call},`).join("\n");
|
|
1083
|
+
const seedBlock = activeSeeds.length > 0 ? `
|
|
1084
|
+
log.info({}, 'Seeding module data...')
|
|
1085
|
+
await Promise.all([
|
|
1086
|
+
${seedCalls}
|
|
1087
|
+
])
|
|
1088
|
+
log.info({}, 'Module data seeding complete!')` : "";
|
|
1075
1089
|
return `import { getDb } from './driver'
|
|
1076
1090
|
import { logger } from '../utils/logger'
|
|
1077
1091
|
|
|
@@ -1081,13 +1095,13 @@ export async function initializeDatabase() {
|
|
|
1081
1095
|
await getDb()
|
|
1082
1096
|
|
|
1083
1097
|
log.info({}, 'Initializing database...')
|
|
1084
|
-
|
|
1098
|
+
|
|
1099
|
+
log.info({}, 'Database initialization complete!')${seedBlock}
|
|
1085
1100
|
}
|
|
1086
1101
|
`;
|
|
1087
1102
|
}
|
|
1088
1103
|
function generateFullDbInit(activeSeeds) {
|
|
1089
|
-
const
|
|
1090
|
-
const seedCalls = activeSeeds.map((s) => ` ${s.call}(),`).join("\n");
|
|
1104
|
+
const seedCalls = activeSeeds.map((s) => ` ${s.call},`).join("\n");
|
|
1091
1105
|
const seedBlock = activeSeeds.length > 0 ? `
|
|
1092
1106
|
log.info({}, 'Seeding module data...')
|
|
1093
1107
|
await Promise.all([
|
|
@@ -1097,7 +1111,6 @@ ${seedCalls}
|
|
|
1097
1111
|
return `import { getDb } from './driver'
|
|
1098
1112
|
import { permissions, roles, rolePermissions } from './schema'
|
|
1099
1113
|
import { logger } from '../utils/logger'
|
|
1100
|
-
${seedImports}
|
|
1101
1114
|
|
|
1102
1115
|
const log = logger.db()
|
|
1103
1116
|
|
|
@@ -2380,6 +2393,7 @@ function filterPackageJson(pkg, resolved) {
|
|
|
2380
2393
|
delete scripts["dev:plugin"];
|
|
2381
2394
|
delete scripts["dev:ecommerce"];
|
|
2382
2395
|
delete scripts["dev:community"];
|
|
2396
|
+
delete scripts["dev:forum"];
|
|
2383
2397
|
delete scripts["dev:saas"];
|
|
2384
2398
|
delete scripts["dev:cf"];
|
|
2385
2399
|
delete scripts["deploy:cf"];
|
|
@@ -2410,6 +2424,7 @@ function getPresetType(presetId) {
|
|
|
2410
2424
|
"xbrowser-marketplace": "plugin",
|
|
2411
2425
|
ecommerce: "ecommerce",
|
|
2412
2426
|
"fullstack-admin": "saas",
|
|
2427
|
+
forum: "community",
|
|
2413
2428
|
minimal: "todo"
|
|
2414
2429
|
};
|
|
2415
2430
|
return map[presetId] || "todo";
|
|
@@ -2894,6 +2909,7 @@ function getPresetType2(presetId) {
|
|
|
2894
2909
|
"xbrowser-marketplace": "plugin",
|
|
2895
2910
|
ecommerce: "ecommerce",
|
|
2896
2911
|
"fullstack-admin": "saas",
|
|
2912
|
+
forum: "community",
|
|
2897
2913
|
minimal: "todo"
|
|
2898
2914
|
};
|
|
2899
2915
|
return map[presetId] || "todo";
|