@akanjs/cli 0.9.48 → 0.9.49

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.
Files changed (128) hide show
  1. package/cjs/index.js +63 -52
  2. package/cjs/src/guidelines/___library/sharedUiStructureDescription.en.md +1 -1
  3. package/cjs/src/guidelines/databaseModule/databaseModule.instruction.md +9 -21
  4. package/cjs/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +0 -5
  5. package/cjs/src/guidelines/framework/framework.instruction.md +10 -12
  6. package/cjs/src/guidelines/modelConstant/modelConstant.generate.json +0 -7
  7. package/cjs/src/guidelines/modelConstant/modelConstant.instruction.md +14 -19
  8. package/cjs/src/guidelines/modelDocument/modelDocument.instruction.md +0 -24
  9. package/cjs/src/guidelines/modelService/modelService.generate.json +4 -11
  10. package/cjs/src/guidelines/modelService/modelService.instruction.md +12 -75
  11. package/cjs/src/guidelines/modelSignal/modelSignal.generate.json +0 -1
  12. package/cjs/src/guidelines/modelSignal/modelSignal.instruction.md +2 -38
  13. package/cjs/src/guidelines/modelStore/modelStore.instruction.md +1 -3
  14. package/cjs/src/guidelines/modelTemplate/modelTemplate.instruction.md +2 -2
  15. package/cjs/src/guidelines/modelUnit/modelUnit.instruction.md +2 -2
  16. package/cjs/src/guidelines/scalarConstant/scalarConstant.instruction.md +6 -11
  17. package/cjs/src/templates/__scalar/__model__/__model__.constant.js +5 -6
  18. package/cjs/src/templates/__scalar/__model__/__model__.dictionary.js +1 -1
  19. package/cjs/src/templates/app/app/[lang]/layout.js +0 -1
  20. package/cjs/src/templates/app/app/csr.js +3 -1
  21. package/cjs/src/templates/app/lib/___appName__/__appName__.dictionary.js +1 -1
  22. package/cjs/src/templates/app/lib/___appName__/__appName__.service.js +2 -3
  23. package/cjs/src/templates/app/lib/___appName__/__appName__.signal.js +2 -3
  24. package/cjs/src/templates/app/lib/___appName__/__appName__.store.js +2 -3
  25. package/cjs/src/templates/client.js +4 -4
  26. package/cjs/src/templates/crudPages/[__model__Id]/edit/page.js +1 -1
  27. package/cjs/src/templates/crudPages/[__model__Id]/page.js +1 -1
  28. package/cjs/src/templates/crudPages/new/page.js +1 -1
  29. package/cjs/src/templates/crudPages/page.js +1 -1
  30. package/cjs/src/templates/index.js +0 -1
  31. package/cjs/src/templates/lib/__lib/lib.constant.js +0 -1
  32. package/cjs/src/templates/lib/__lib/lib.dictionary.js +7 -4
  33. package/cjs/src/templates/lib/__lib/lib.document.js +4 -3
  34. package/cjs/src/templates/lib/__lib/lib.service.js +1 -1
  35. package/cjs/src/templates/lib/__lib/lib.signal.js +23 -4
  36. package/cjs/src/templates/lib/__lib/lib.store.js +19 -2
  37. package/cjs/src/templates/lib/cnst.js +12 -6
  38. package/cjs/src/templates/lib/db.js +10 -3
  39. package/cjs/src/templates/lib/dict.js +12 -4
  40. package/cjs/src/templates/lib/sig.js +20 -9
  41. package/cjs/src/templates/lib/srv.js +7 -6
  42. package/cjs/src/templates/lib/st.js +10 -8
  43. package/cjs/src/templates/lib/useClient.js +39 -0
  44. package/cjs/src/templates/lib/{usePage.js → useServer.js} +6 -8
  45. package/cjs/src/templates/libRoot/lib/___libName__/__libName__.service.js +2 -3
  46. package/cjs/src/templates/libRoot/lib/___libName__/__libName__.store.js +2 -3
  47. package/cjs/src/templates/module/__model__.constant.js +10 -30
  48. package/cjs/src/templates/module/__model__.dictionary.js +2 -2
  49. package/cjs/src/templates/module/__model__.document.js +2 -8
  50. package/cjs/src/templates/module/__model__.service.js +2 -3
  51. package/cjs/src/templates/module/__model__.signal.js +4 -5
  52. package/cjs/src/templates/module/__model__.store.js +3 -4
  53. package/cjs/src/templates/server.js +5 -4
  54. package/cjs/src/templates/workspaceRoot/.gitignore.template +5 -3
  55. package/esm/index.js +63 -52
  56. package/esm/src/guidelines/___library/sharedUiStructureDescription.en.md +1 -1
  57. package/esm/src/guidelines/databaseModule/databaseModule.instruction.md +9 -21
  58. package/esm/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +0 -5
  59. package/esm/src/guidelines/framework/framework.instruction.md +10 -12
  60. package/esm/src/guidelines/modelConstant/modelConstant.generate.json +0 -7
  61. package/esm/src/guidelines/modelConstant/modelConstant.instruction.md +14 -19
  62. package/esm/src/guidelines/modelDocument/modelDocument.instruction.md +0 -24
  63. package/esm/src/guidelines/modelService/modelService.generate.json +4 -11
  64. package/esm/src/guidelines/modelService/modelService.instruction.md +12 -75
  65. package/esm/src/guidelines/modelSignal/modelSignal.generate.json +0 -1
  66. package/esm/src/guidelines/modelSignal/modelSignal.instruction.md +2 -38
  67. package/esm/src/guidelines/modelStore/modelStore.instruction.md +1 -3
  68. package/esm/src/guidelines/modelTemplate/modelTemplate.instruction.md +2 -2
  69. package/esm/src/guidelines/modelUnit/modelUnit.instruction.md +2 -2
  70. package/esm/src/guidelines/scalarConstant/scalarConstant.instruction.md +6 -11
  71. package/esm/src/templates/__scalar/__model__/__model__.constant.js +5 -6
  72. package/esm/src/templates/__scalar/__model__/__model__.dictionary.js +1 -1
  73. package/esm/src/templates/app/app/[lang]/layout.js +0 -1
  74. package/esm/src/templates/app/app/csr.js +3 -1
  75. package/esm/src/templates/app/lib/___appName__/__appName__.dictionary.js +1 -1
  76. package/esm/src/templates/app/lib/___appName__/__appName__.service.js +2 -3
  77. package/esm/src/templates/app/lib/___appName__/__appName__.signal.js +2 -3
  78. package/esm/src/templates/app/lib/___appName__/__appName__.store.js +2 -3
  79. package/esm/src/templates/client.js +4 -4
  80. package/esm/src/templates/crudPages/[__model__Id]/edit/page.js +1 -1
  81. package/esm/src/templates/crudPages/[__model__Id]/page.js +1 -1
  82. package/esm/src/templates/crudPages/new/page.js +1 -1
  83. package/esm/src/templates/crudPages/page.js +1 -1
  84. package/esm/src/templates/index.js +0 -1
  85. package/esm/src/templates/lib/__lib/lib.constant.js +0 -1
  86. package/esm/src/templates/lib/__lib/lib.dictionary.js +7 -4
  87. package/esm/src/templates/lib/__lib/lib.document.js +4 -3
  88. package/esm/src/templates/lib/__lib/lib.service.js +1 -1
  89. package/esm/src/templates/lib/__lib/lib.signal.js +23 -4
  90. package/esm/src/templates/lib/__lib/lib.store.js +19 -2
  91. package/esm/src/templates/lib/cnst.js +12 -6
  92. package/esm/src/templates/lib/db.js +10 -3
  93. package/esm/src/templates/lib/dict.js +12 -4
  94. package/esm/src/templates/lib/sig.js +20 -9
  95. package/esm/src/templates/lib/srv.js +7 -6
  96. package/esm/src/templates/lib/st.js +10 -8
  97. package/esm/src/templates/lib/useClient.js +19 -0
  98. package/esm/src/templates/lib/useServer.js +11 -0
  99. package/esm/src/templates/libRoot/lib/___libName__/__libName__.service.js +2 -3
  100. package/esm/src/templates/libRoot/lib/___libName__/__libName__.store.js +2 -3
  101. package/esm/src/templates/module/__model__.constant.js +10 -30
  102. package/esm/src/templates/module/__model__.dictionary.js +2 -2
  103. package/esm/src/templates/module/__model__.document.js +2 -8
  104. package/esm/src/templates/module/__model__.service.js +2 -3
  105. package/esm/src/templates/module/__model__.signal.js +4 -5
  106. package/esm/src/templates/module/__model__.store.js +3 -4
  107. package/esm/src/templates/server.js +5 -4
  108. package/esm/src/templates/workspaceRoot/.gitignore.template +5 -3
  109. package/package.json +1 -1
  110. package/src/application/application.command.d.ts +7 -7
  111. package/src/application/application.script.d.ts +3 -1
  112. package/src/guidelines/___library/sharedUiStructureDescription.en.md +1 -1
  113. package/src/guidelines/databaseModule/databaseModule.instruction.md +9 -21
  114. package/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +0 -5
  115. package/src/guidelines/framework/framework.instruction.md +10 -12
  116. package/src/guidelines/modelConstant/modelConstant.instruction.md +14 -19
  117. package/src/guidelines/modelDocument/modelDocument.instruction.md +0 -24
  118. package/src/guidelines/modelService/modelService.instruction.md +12 -75
  119. package/src/guidelines/modelSignal/modelSignal.instruction.md +2 -38
  120. package/src/guidelines/modelStore/modelStore.instruction.md +1 -3
  121. package/src/guidelines/modelTemplate/modelTemplate.instruction.md +2 -2
  122. package/src/guidelines/modelUnit/modelUnit.instruction.md +2 -2
  123. package/src/guidelines/scalarConstant/scalarConstant.instruction.md +6 -11
  124. package/src/templates/lib/useServer.d.ts +4 -0
  125. package/src/workspace/workspace.command.d.ts +1 -0
  126. package/src/workspace/workspace.script.d.ts +1 -0
  127. package/esm/src/templates/lib/usePage.js +0 -13
  128. /package/src/templates/lib/{usePage.d.ts → useClient.d.ts} +0 -0
@@ -14,14 +14,17 @@ function getContent(scanInfo, dict = {}) {
14
14
  ).filter(([_, libNames]) => libNames.length > 0)
15
15
  );
16
16
  return `
17
- ${libs.length === 0 ? `import { dictionary as base } from "@akanjs/dictionary";` : ""}
18
- ${libs.map((lib) => `import { dictionary as ${lib} } from "@${lib}/server";`).join("\n")}
17
+ ${libs.length === 0 ? `import * as base from "@akanjs/dictionary";` : ""}
18
+ ${libs.map((lib) => `import { dict as ${lib} } from "@${lib}/server";`).join("\n")}
19
19
 
20
20
  ${Object.entries(extendedModels).map(([modelName, extendedModels2]) => {
21
- return `export const ${modelName} = Object.assign({}, ${extendedModels2.map((libName) => `${libName}.${modelName}`).join(", ")});`;
21
+ return `export const ${modelName} = {
22
+ models: Object.assign({}, ${extendedModels2.map((libName) => `${libName}.${modelName}.modelDictionary`).join(", ")}),
23
+ signals: Object.assign({}, ${extendedModels2.map((libName) => `${libName}.${modelName}.signalDictionary`).join(", ")}),
24
+ };`;
22
25
  }).join("\n")}
23
26
 
24
- export const allLibs = [${libs.length === 0 ? "base" : libs.join(", ")}] as const;
27
+ export const allLibs = [${libs.length === 0 ? "base.dictionary" : libs.map((lib) => `${lib}.dictionary`).join(", ")}] as const;
25
28
  `;
26
29
  }
27
30
  export {
@@ -18,9 +18,10 @@ ${libs.map((lib) => `export { db as ${lib} } from "@${lib}/server";`).join("\n")
18
18
 
19
19
  ${Object.entries(extendedModels).map(
20
20
  ([modelName, extendedModels2]) => `export const ${modelName} = {
21
- inputs: [${extendedModels2.map((libName) => `${libName}.${modelName}Db.Input`).join(", ")}] as const,
22
- docs: [${extendedModels2.map((libName) => `${libName}.${modelName}Db.Doc`).join(", ")}] as const,
23
- models: [${extendedModels2.map((libName) => `${libName}.${modelName}Db.Model`).join(", ")}] as const,
21
+ inputs: [${extendedModels2.map((libName) => `${libName}.${modelName}.Input`).join(", ")}] as const,
22
+ docs: [${extendedModels2.map((libName) => `${libName}.${modelName}.Doc`).join(", ")}] as const,
23
+ models: [${extendedModels2.map((libName) => `${libName}.${modelName}.Model`).join(", ")}] as const,
24
+ filters: [${extendedModels2.map((libName) => `${libName}.${modelName}.Filter`).join(", ")}] as const,
24
25
  }`
25
26
  ).join("\n")}
26
27
  export const allLibs = [${libs.join(", ")}] as const;
@@ -14,7 +14,7 @@ function getContent(scanInfo, dict = {}) {
14
14
  ).filter(([_, libNames]) => libNames.length > 0)
15
15
  );
16
16
  return `
17
- ${libs.length ? `import { DbService, Srv } from "@akanjs/service";` : `import type { BackendEnv } from "@akanjs/base";`}
17
+ ${libs.length ? `import { serve, Srv } from "@akanjs/service";` : `import type { BackendEnv } from "@akanjs/base";`}
18
18
  ${libs.map((lib) => `import { option as ${lib}Option, srv as ${lib} } from "@${lib}/server";`).join("\n")}
19
19
 
20
20
  import * as db from "../db";
@@ -1,15 +1,34 @@
1
1
  // pkgs/@akanjs/cli/src/templates/lib/__lib/lib.signal.ts
2
+ var capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1);
2
3
  function getContent(scanInfo, dict = {}) {
3
4
  if (!scanInfo)
4
5
  return null;
5
6
  const libs = scanInfo.getLibs();
6
7
  const rootLib = scanInfo.akanConfig.rootLib;
8
+ const libInfos = [...scanInfo.getLibInfos().values()];
9
+ const extendedModels = Object.fromEntries(
10
+ [...scanInfo.file.signal.databases].map(
11
+ (modelName) => [
12
+ modelName,
13
+ libInfos.filter((libInfo) => libInfo.file.signal.databases.has(modelName)).map((libInfo) => libInfo.name)
14
+ ]
15
+ ).filter(([_, libNames]) => libNames.length > 0)
16
+ );
7
17
  return `
8
- ${libs.length > 0 ? "" : `import { fetch as base } from "@akanjs/signal";`}
9
- ${libs.map((lib) => `import { fetch as ${lib} } from "@${lib}";`).join("\n")}
18
+ ${libs.length > 0 ? "" : `import { fetch as baseFetch } from "@akanjs/signal";`}
19
+ ${libs.map((lib) => `import { sig as ${lib} } from "@${lib}/server";`).join("\n")}
10
20
 
11
- export const root = ${libs.length ? rootLib ?? libs[0] : "base"};
12
- export const libFetches = [${libs.length ? libs.join(", ") : "base"}] as const;
21
+ ${Object.entries(extendedModels).map(([modelName, extendedModels2]) => {
22
+ const ModelName = capitalize(modelName);
23
+ return `export const ${modelName} = {
24
+ internals: [${extendedModels2.map((libName) => `${libName}.${ModelName}Internal`).join(", ")}] as const,
25
+ slices: [${extendedModels2.map((libName) => `${libName}.${ModelName}Slice`).join(", ")}] as const,
26
+ endpoints: [${extendedModels2.map((libName) => `${libName}.${ModelName}Endpoint`).join(", ")}] as const,
27
+ }`;
28
+ }).join("\n")}
29
+
30
+ export const root = ${libs.length ? rootLib ?? libs[0] : "baseFetch"};
31
+ export const libFetches = [${libs.length ? libs.map((lib) => `${lib}.fetch`).join(", ") : "baseFetch"}] as const;
13
32
  `;
14
33
  }
15
34
  export {
@@ -1,13 +1,30 @@
1
1
  // pkgs/@akanjs/cli/src/templates/lib/__lib/lib.store.ts
2
+ var capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1);
2
3
  function getContent(scanInfo, dict = {}) {
3
4
  if (!scanInfo)
4
5
  return null;
5
6
  const libs = scanInfo.getLibs();
7
+ const libInfos = [...scanInfo.getLibInfos().values()];
8
+ const extendedModels = Object.fromEntries(
9
+ [...scanInfo.file.store.databases].map(
10
+ (modelName) => [
11
+ modelName,
12
+ libInfos.filter((libInfo) => libInfo.file.store.databases.has(modelName)).map((libInfo) => libInfo.name)
13
+ ]
14
+ ).filter(([_, libNames]) => libNames.length > 0)
15
+ );
6
16
  return `
7
- import { store as base } from "@akanjs/store";
17
+ import * as base from "@akanjs/store";
8
18
  ${libs.map((lib) => `import { store as ${lib} } from "@${lib}/client";`).join("\n")}
9
19
 
10
- export const libStores = [${[...libs, "base"].join(", ")}] as const;
20
+ ${Object.entries(extendedModels).map(([modelName, extendedModels2]) => {
21
+ const ModelName = capitalize(modelName);
22
+ return `export const ${modelName} = {
23
+ stores: [${extendedModels2.map((libName) => `${libName}.${ModelName}Store`).join(", ")}] as const,
24
+ }`;
25
+ }).join("\n")}
26
+
27
+ export const libStores = [${[...libs, "base"].map((lib) => `${lib}.RootStore`).join(", ")}] as const;
11
28
  `;
12
29
  }
13
30
  export {
@@ -5,11 +5,19 @@ function getContent(scanInfo, dict = {}) {
5
5
  return null;
6
6
  const databaseModules = scanInfo.getDatabaseModules();
7
7
  const scalarModules = scanInfo.getScalarModules();
8
+ const libInfos = scanInfo.getLibInfos();
9
+ const extendedModelMap = new Map(
10
+ [...scanInfo.file.constant.databases].map(
11
+ (modelName) => [
12
+ modelName,
13
+ [...libInfos.values()].filter((libInfo) => libInfo.file.constant.databases.has(modelName)).map((libInfo) => libInfo.name)
14
+ ]
15
+ ).filter(([_, libNames]) => libNames.length > 0)
16
+ );
8
17
  return `
9
- import type { AllSrvs } from "./srv";
10
18
  import { cnstOf, scalarCnstOf } from "@akanjs/constant";
11
19
 
12
- ${databaseModules.map((module) => `import * as ${module} from "./${module}/${module}.constant";`).join("\n")}
20
+ ${databaseModules.map((module) => `import * as ${module}Cnst from "./${module}/${module}.constant";`).join("\n")}
13
21
  ${scalarModules.map((module) => `import { ${capitalize(module)} } from "./__scalar/${module}/${module}.constant";`).join("\n")}
14
22
 
15
23
  export * from "./__lib/lib.constant";
@@ -18,11 +26,9 @@ ${scalarModules.map((module) => `export * from "./__scalar/${module}/${module}.c
18
26
 
19
27
  ${databaseModules.map((module) => {
20
28
  const names = { Module: capitalize(module) };
21
- return `export const ${module}Cnst = cnstOf("${module}" as const, ${module}.${names.Module}Input, ${module}.${names.Module}, ${module}.Light${names.Module}, ${module}.${names.Module}Insight, ${module}.${names.Module}Filter);`;
29
+ return `export const ${module} = cnstOf("${module}" as const, ${module}Cnst.${names.Module}Input, ${module}Cnst.${names.Module}, ${module}Cnst.Light${names.Module}, ${module}Cnst.${names.Module}Insight${extendedModelMap.has(module) ? ", { overwrite: true }" : ""});`;
22
30
  }).join("\n")}
23
- ${scalarModules.map((module) => `export const ${module}Cnst = scalarCnstOf("${module}" as const, ${capitalize(module)});`).join("\n")}
24
-
25
- export const Srvs = {} as AllSrvs;
31
+ ${scalarModules.map((module) => `export const ${module} = scalarCnstOf("${module}" as const, ${capitalize(module)});`).join("\n")}
26
32
  `;
27
33
  }
28
34
  export {
@@ -1,24 +1,31 @@
1
1
  // pkgs/@akanjs/cli/src/templates/lib/db.ts
2
+ var capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1);
2
3
  function getContent(scanInfo, dict = {}) {
3
4
  if (!scanInfo)
4
5
  return null;
5
6
  const databaseModules = scanInfo.getDatabaseModules();
6
7
  const scalarModules = scanInfo.getScalarModules();
7
8
  return `
8
- import { dbOf } from "@akanjs/document";
9
+ import { by, dbOf, scalarDbOf } from "@akanjs/document";
9
10
 
10
11
  import * as cnst from "./cnst";
11
12
 
12
- ${databaseModules.map((module) => `import * as ${module} from "./${module}/${module}.document";`).join("\n")}
13
+ ${databaseModules.map((module) => `import * as ${module}Db from "./${module}/${module}.document";`).join("\n")}
14
+ ${scalarModules.map((module) => `import { ${capitalize(module)} } from "./__scalar/${module}/${module}.document";`).join("\n")}
15
+
16
+ ${databaseModules.map((module) => `class ${capitalize(module)}Input extends by(cnst.${capitalize(module)}Input) {}`).join("\n")}
17
+ export type { ${databaseModules.map((module) => `${capitalize(module)}Input`).join(", ")} };
13
18
 
14
19
  export type * from "./__lib/lib.document";
20
+
15
21
  ${databaseModules.map((module) => `export type * from "./${module}/${module}.document";`).join("\n")}
16
22
  ${scalarModules.map((module) => `export type * from "./__scalar/${module}/${module}.document";`).join("\n")}
17
23
 
18
24
  ${databaseModules.map((module) => {
19
25
  const names = { Module: module.charAt(0).toUpperCase() + module.slice(1) };
20
- return `export const ${module}Db = dbOf("${module}" as const, ${module}.${names.Module}Input, ${module}.${names.Module}, ${module}.${names.Module}Model, ${module}.${names.Module}Middleware, cnst.${names.Module}, cnst.${names.Module}Insight, cnst.${names.Module}Filter);`;
26
+ return `export const ${module} = dbOf("${module}" as const, ${names.Module}Input, ${module}Db.${names.Module}, ${module}Db.${names.Module}Model, ${module}Db.${names.Module}Middleware, cnst.${names.Module}, cnst.${names.Module}Insight, ${module}Db.${names.Module}Filter);`;
21
27
  }).join("\n")}
28
+ ${scalarModules.map((module) => `export const ${module} = scalarDbOf("${module}" as const, ${capitalize(module)});`).join("\n")}
22
29
  `;
23
30
  }
24
31
  export {
@@ -9,12 +9,20 @@ function getContent(scanInfo, dict = {}) {
9
9
  import { makeDictionary, makeTrans } from "@akanjs/dictionary";
10
10
 
11
11
  import { allLibs } from "./__lib/lib.dictionary";
12
- ${databaseModules.map((module) => `import { ${module}Dictionary } from "./${module}/${module}.dictionary";`).join("\n")}
13
- ${serviceModules.map((module) => `import { ${module}Dictionary } from "./_${module}/${module}.dictionary";`).join("\n")}
14
- ${scalarModules.map((module) => `import { ${module}Dictionary } from "./__scalar/${module}/${module}.dictionary";`).join("\n")}
12
+ ${databaseModules.map((module) => `import * as ${module} from "./${module}/${module}.dictionary";`).join("\n")}
13
+ ${serviceModules.map((module) => `import * as ${module} from "./_${module}/${module}.dictionary";`).join("\n")}
14
+ ${scalarModules.map((module) => `import * as ${module} from "./__scalar/${module}/${module}.dictionary";`).join("\n")}
15
+
16
+ ${databaseModules.map((module) => `export * as ${module} from "./${module}/${module}.dictionary";`).join("\n")}
17
+ ${serviceModules.map((module) => `export * as ${module} from "./_${module}/${module}.dictionary";`).join("\n")}
18
+ ${scalarModules.map((module) => `export * as ${module} from "./__scalar/${module}/${module}.dictionary";`).join("\n")}
15
19
 
16
20
  export const dictionary = makeDictionary(...allLibs, {
17
- ${[...databaseModules, ...scalarModules, ...serviceModules].map((module) => `${module}: ${module}Dictionary`).join(",\n ")}
21
+ ${[
22
+ ...databaseModules.map((module) => `${module}: { ...${module}.modelDictionary, ...${module}.signalDictionary }`),
23
+ ...scalarModules.map((module) => `${module}: ${module}.dictionary`),
24
+ ...serviceModules.map((module) => `${module}: ${module}.dictionary`)
25
+ ].join(",\n ")}
18
26
  } as const);
19
27
 
20
28
  export const { Revert, translate, msg } = makeTrans(dictionary);
@@ -7,24 +7,35 @@ function getContent(scanInfo, dict = {}) {
7
7
  const scalarConstantModules = [...scanInfo.scalar.entries()].filter(([_, files]) => files.has("constant")).map(([module]) => module);
8
8
  const serviceModules = [...scanInfo.service.entries()].filter(([_, files]) => files.has("signal")).map(([module]) => module);
9
9
  return `
10
- import { fetchOf, gqlOf, makeFetch, scalarUtilOf } from "@akanjs/signal";
10
+ import { fetchOf, gqlOf, makeFetch, mergeSignals, signalInfo } from "@akanjs/signal";
11
11
 
12
12
  import { root, libFetches } from "./__lib/lib.signal";
13
13
  import * as cnst from "./cnst";
14
+ import * as db from "./db";
14
15
 
15
- ${[...scanInfo.database.entries()].filter(([_, files]) => files.has("signal")).map(([module]) => `import { ${capitalize(module)}Signal } from "./${module}/${module}.signal";`).join("\n")}
16
- ${[...scanInfo.service.entries()].filter(([_, files]) => files.has("signal")).map(([module]) => `import { ${capitalize(module)}Signal } from "./_${module}/${module}.signal";`).join("\n")}
16
+ ${[...scanInfo.database.entries()].filter(([_, files]) => files.has("signal")).map(([module]) => `import * as ${module}Sig from "./${module}/${module}.signal";`).join("\n")}
17
+ ${[...scanInfo.service.entries()].filter(([_, files]) => files.has("signal")).map(([module]) => `import * as ${module}Sig from "./_${module}/${module}.signal";`).join("\n")}
17
18
 
18
- ${[...scanInfo.database.entries()].filter(([_, files]) => files.has("signal")).map(([module]) => `export { ${capitalize(module)}Signal } from "./${module}/${module}.signal";`).join("\n")}
19
- ${[...scanInfo.service.entries()].filter(([_, files]) => files.has("signal")).map(([module]) => `export { ${capitalize(module)}Signal } from "./_${module}/${module}.signal";`).join("\n")}
19
+ ${[...scanInfo.database.entries()].filter(([_, files]) => files.has("signal")).map(([module]) => `export * from "./${module}/${module}.signal";`).join("\n")}
20
+ ${[...scanInfo.service.entries()].filter(([_, files]) => files.has("signal")).map(([module]) => `export * from "./_${module}/${module}.signal";`).join("\n")}
20
21
 
21
- ${databaseModules.map((module) => `${["user", "setting", "summary"].includes(module) ? "export " : ""}const ${module}Gql = gqlOf(cnst.${module}Cnst, ${capitalize(module)}Signal${scanInfo.name !== "shared" && ["user", "setting", "summary"].includes(module) ? `, { overwrite: root.${module}Gql }` : ""});`).join("\n")}
22
+ ${[...scanInfo.database.entries()].filter(([_, files]) => files.has("signal")).map(
23
+ ([module]) => `export class ${capitalize(module)}Signal extends mergeSignals(${module}Sig.${capitalize(module)}Endpoint, ${module}Sig.${capitalize(module)}Internal, ${module}Sig.${capitalize(module)}Slice) {}`
24
+ ).join("\n")}
25
+ ${[...scanInfo.service.entries()].filter(([_, files]) => files.has("signal")).map(
26
+ ([module]) => `export const ${capitalize(module)}Signal = mergeSignals(${module}Sig.${capitalize(module)}Endpoint, ${module}Sig.${capitalize(module)}Internal);`
27
+ ).join("\n")}
28
+
29
+ const signals = signalInfo.registerSignals(
30
+ ${[...databaseModules, ...serviceModules].map((module) => ` ${capitalize(module)}Signal,`).join("\n")}
31
+ );
32
+ export const serializedSignals = signals.map((signal) => signalInfo.serialize(signal));
33
+
34
+ ${databaseModules.map((module) => `export const ${module} = gqlOf(cnst.${module}, db.${module}.Filter, ${capitalize(module)}Signal${scanInfo.name !== "shared" && ["user", "setting", "summary"].includes(module) ? `, { overwrite: root.${module} }` : ""});`).join("\n")}
22
35
 
23
36
  export const fetch = makeFetch(...libFetches, {
24
- ${databaseModules.map((module) => `...${module}Gql,`).join("\n")}
25
- ${scalarConstantModules.map((module) => `...scalarUtilOf(cnst.${module}Cnst),`).join("\n")}
37
+ ${databaseModules.map((module) => `...${module},`).join("\n")}
26
38
  ${serviceModules.map((module) => `...fetchOf(${capitalize(module)}Signal),`).join("\n")}
27
- ${databaseModules.map((module) => `${module}Gql,`).join("\n")}
28
39
  });
29
40
  `;
30
41
  }
@@ -6,8 +6,9 @@ function getContent(scanInfo, dict = {}) {
6
6
  const databaseModules = [...scanInfo.database.entries()].filter(([_, files]) => files.has("service")).map(([module]) => module);
7
7
  const serviceModules = [...scanInfo.service.entries()].filter(([_, files]) => files.has("service")).map(([module]) => module);
8
8
  return `
9
- import { GetServices } from "@akanjs/service";
9
+ import { GetServices, ServiceModule, serviceInfo } from "@akanjs/service";
10
10
 
11
+ import * as cnst from "./cnst";
11
12
  import { libAllSrvs } from "./__lib/lib.service";
12
13
  ${databaseModules.map((module) => `import { ${capitalize(module)}Service } from "./${module}/${module}.service";`).join("\n")}
13
14
  ${serviceModules.map((module) => `import { ${capitalize(module)}Service } from "./_${module}/${module}.service";`).join("\n")}
@@ -16,12 +17,12 @@ export * from "./__lib/lib.service";
16
17
  ${databaseModules.map((module) => `export { ${capitalize(module)}Service } from "./${module}/${module}.service";`).join("\n")}
17
18
  ${serviceModules.map((module) => `export { ${capitalize(module)}Service } from "./_${module}/${module}.service";`).join("\n")}
18
19
 
19
- export const allSrvs = {
20
- ...libAllSrvs,
20
+ export const srvs = serviceInfo.registerServices({
21
21
  ${[...databaseModules, ...serviceModules].map((module) => `${capitalize(module)}Service`).join(",\n ")}
22
- } as const;
23
-
24
- export type AllSrvs = GetServices<typeof allSrvs>;
22
+ });
23
+ export const allSrvs = { ...libAllSrvs, ...srvs } as const;
24
+ ${databaseModules.map((module) => `export const ${module} = new ServiceModule("${module}" as const, { ${capitalize(module)}Service }, cnst.${module});`).join("\n")}
25
+ ${serviceModules.map((module) => `export const ${module} = new ServiceModule("${module}" as const, { ${capitalize(module)}Service });`).join("\n")}
25
26
  `;
26
27
  }
27
28
  export {
@@ -7,20 +7,22 @@ function getContent(scanInfo, dict = {}) {
7
7
  const serviceModules = [...scanInfo.service.entries()].filter(([_, fileTypes]) => fileTypes.has("store")).map(([key]) => key);
8
8
  return `
9
9
  "use client";
10
- import { makeStore, st as baseSt } from "@akanjs/store";
11
- import { MixStore, rootStoreOf } from "@akanjs/store";
10
+ import { st as baseSt, StoreOf } from "@akanjs/store";
11
+ import { MixStore, storeInfo } from "@akanjs/store";
12
12
 
13
13
  import { libStores } from "./__lib/lib.store";
14
14
  ${databaseModules.map((module) => `import { ${capitalize(module)}Store } from "./${module}/${module}.store";`).join("\n")}
15
15
  ${serviceModules.map((module) => `import { ${capitalize(module)}Store } from "./_${module}/${module}.store";`).join("\n")}
16
16
 
17
- export class RootStore extends MixStore(
18
- ...libStores,
19
- ${[...databaseModules, ...serviceModules].map((module) => `${capitalize(module)}Store`).join(",\n ")}
20
- ) {}
17
+ ${databaseModules.map((module) => `export { ${capitalize(module)}Store } from "./${module}/${module}.store";`).join("\n")}
18
+ ${serviceModules.map((module) => `export { ${capitalize(module)}Store } from "./_${module}/${module}.store";`).join("\n")}
19
+
20
+ ${databaseModules.map((module) => `export const ${module} = storeInfo.register("${module}" as const, ${capitalize(module)}Store);`).join("\n")}
21
+ ${serviceModules.map((module) => `export const ${module} = storeInfo.register("${module}" as const, ${capitalize(module)}Store);`).join("\n")}
22
+
23
+ export class RootStore extends MixStore(...libStores, ${[...databaseModules, ...serviceModules].join(",\n ")}) {}
21
24
 
22
- export const store = rootStoreOf(RootStore);
23
- export const st = makeStore(baseSt, store${scanInfo.type === "lib" ? `, { library: true }` : ""});
25
+ export const st = baseSt as StoreOf<RootStore>;
24
26
  `;
25
27
  }
26
28
  export {
@@ -0,0 +1,19 @@
1
+ // pkgs/@akanjs/cli/src/templates/lib/useClient.ts
2
+ function getContent(scanInfo, dict = {}) {
3
+ return `
4
+ import { makePageProto } from "@akanjs/client";
5
+ import type * as signal from "./sig";
6
+ import * as cnst from "./cnst";
7
+
8
+ import type { dictionary } from "./dict";
9
+
10
+ export const { msg, Revert, usePage, sig, fetch, registerClient } = makePageProto<
11
+ typeof dictionary,
12
+ typeof signal.fetch,
13
+ typeof signal
14
+ >(cnst);
15
+ `;
16
+ }
17
+ export {
18
+ getContent as default
19
+ };
@@ -0,0 +1,11 @@
1
+ // pkgs/@akanjs/cli/src/templates/lib/useServer.ts
2
+ function getContent(scanInfo, dict = {}) {
3
+ return `
4
+ import type { fetch as sigFetch } from "./sig";
5
+
6
+ export const fetch = global.fetch as unknown as typeof sigFetch;
7
+ `;
8
+ }
9
+ export {
10
+ getContent as default
11
+ };
@@ -1,12 +1,11 @@
1
1
  // pkgs/@akanjs/cli/src/templates/libRoot/lib/___libName__/__libName__.service.ts
2
2
  function getContent(scanInfo, dict) {
3
3
  return `
4
- import { LogService, Service } from "@akanjs/service";
4
+ import { serve } from "@akanjs/service";
5
5
 
6
6
  // import type * as srv from "../srv";
7
7
 
8
- @Service("${dict.libName}Service", { serverMode: "batch" })
9
- export class ${dict.LibName}Service extends LogService("${dict.libName}Service") {}
8
+ export class ${dict.LibName}Service extends serve("${dict.libName}" as const, { serverMode: "batch" }) {}
10
9
  `;
11
10
  }
12
11
  export {
@@ -1,10 +1,9 @@
1
1
  // pkgs/@akanjs/cli/src/templates/libRoot/lib/___libName__/__libName__.store.ts
2
2
  function getContent(scanInfo, dict) {
3
3
  return `
4
- import { scalarStateOf, Store } from "@akanjs/store";
4
+ import { store } from "@akanjs/store";
5
5
 
6
- @Store({ name: "${dict.libName}" })
7
- export class ${dict.LibName}Store extends scalarStateOf("${dict.libName}" as const, {
6
+ export class ${dict.LibName}Store extends store("${dict.libName}" as const, {
8
7
  // state
9
8
  }) {
10
9
  // action
@@ -2,44 +2,24 @@
2
2
  function getContent(scanInfo, dict) {
3
3
  return `
4
4
  import { enumOf, Int } from "@akanjs/base";
5
- import { Field, Filter, Model, sortOf, via } from "@akanjs/constant";
5
+ import { via } from "@akanjs/constant";
6
6
 
7
7
  export const ${dict.Model}Status = enumOf(["active"] as const);
8
8
  export type ${dict.Model}Status = enumOf<typeof ${dict.Model}Status>;
9
9
 
10
- @Model.Input("${dict.Model}Input")
11
- export class ${dict.Model}Input {
12
- @Field.Prop(() => String, { nullable: true })
13
- field: string | null;
14
- }
10
+ export class ${dict.Model}Input extends via((field) => ({
11
+ field: field(String).optional(),
12
+ })) {}
15
13
 
16
- @Model.Object("${dict.Model}Object")
17
- export class ${dict.Model}Object extends via(${dict.Model}Input) {
18
- @Field.Prop(() => String, { enum: ${dict.Model}Status, default: "active" })
19
- status: ${dict.Model}Status;
20
- }
14
+ export class ${dict.Model}Object extends via(${dict.Model}Input, (field) => ({
15
+ status: field(${dict.Model}Status, { default: "active" }),
16
+ })) {}
21
17
 
22
- @Model.Light("Light${dict.Model}")
23
- export class Light${dict.Model} extends via(${dict.Model}Object, ["status"] as const) {}
18
+ export class Light${dict.Model} extends via(${dict.Model}Object, ["status"] as const, (resolve) => ({})) {}
24
19
 
25
- @Model.Full("${dict.Model}")
26
- export class ${dict.Model} extends via(${dict.Model}Object, Light${dict.Model}) {}
20
+ export class ${dict.Model} extends via(${dict.Model}Object, Light${dict.Model}, (resolve) => ({})) {}
27
21
 
28
- @Model.Insight("${dict.Model}Insight")
29
- export class ${dict.Model}Insight {
30
- @Field.Prop(() => Int, { default: 0, accumulate: { $sum: 1 } })
31
- count: number;
32
- }
33
-
34
- @Model.Filter("${dict.Model}Filter")
35
- export class ${dict.Model}Filter extends sortOf(${dict.Model}, {}) {
36
- @Filter.Mongo()
37
- inStatus(
38
- @Filter.Arg("status", () => String) status: ${dict.Model}Status,
39
- ) {
40
- return { status };
41
- }
42
- }
22
+ export class ${dict.Model}Insight extends via(${dict.Model}, (field) => ({})) {}
43
23
  `;
44
24
  }
45
25
  export {
@@ -6,7 +6,7 @@ import { baseTrans, getBaseSignalTrans, ModelDictionary, SignalDictionary } from
6
6
  import type { ${dict.Model}, ${dict.Model}Filter, ${dict.Model}Insight, ${dict.Model}Summary } from "./${dict.model}.constant";
7
7
  import type { ${dict.Model}Signal } from "./${dict.model}.signal";
8
8
 
9
- const modelDictionary = {
9
+ export const modelDictionary = {
10
10
  ...baseTrans,
11
11
  modelName: ["${dict.Model}", "${dict.Model}"],
12
12
  modelDesc: [
@@ -37,7 +37,7 @@ const modelDictionary = {
37
37
  // * ==================== Etc ==================== * //
38
38
  } satisfies ModelDictionary<${dict.Model}, ${dict.Model}Insight, ${dict.Model}Filter>;
39
39
 
40
- const signalDictionary = {
40
+ export const signalDictionary = {
41
41
  ...getBaseSignalTrans("${dict.model}" as const),
42
42
  // * ==================== Endpoint ==================== * //
43
43
  "api-${dict.model}ListInPublic": ["${dict.Model} List In Public", "\uACF5\uAC1C\uB41C ${dict.Model} \uB9AC\uC2A4\uD2B8"],
@@ -1,20 +1,14 @@
1
1
  // pkgs/@akanjs/cli/src/templates/module/__model__.document.ts
2
2
  function getContent(scanInfo, dict) {
3
3
  return `
4
- import { beyond, by, Database, into, type SchemaOf } from "@akanjs/document";
4
+ import { beyond, by, into, type SchemaOf } from "@akanjs/document";
5
5
 
6
6
  import * as cnst from "../cnst";
7
7
 
8
- @Database.Input(() => cnst.${dict.Model}Input)
9
- export class ${dict.Model}Input extends by(cnst.${dict.Model}Input) {}
10
-
11
- @Database.Document(() => cnst.${dict.Model})
12
8
  export class ${dict.Model} extends by(cnst.${dict.Model}) {}
13
9
 
14
- @Database.Model(() => cnst.${dict.Model})
15
- export class ${dict.Model}Model extends into(${dict.Model}, cnst.${dict.model}Cnst) {}
10
+ export class ${dict.Model}Model extends into(${dict.Model}, cnst.${dict.model}) {}
16
11
 
17
- @Database.Middleware(() => cnst.${dict.Model})
18
12
  export class ${dict.Model}Middleware extends beyond(${dict.Model}Model, ${dict.Model}) {
19
13
  onSchema(schema: SchemaOf<${dict.Model}Model, ${dict.Model}>) {
20
14
  // schema.index({ status: 1 })
@@ -1,13 +1,12 @@
1
1
  // pkgs/@akanjs/cli/src/templates/module/__model__.service.ts
2
2
  function getContent(scanInfo, dict) {
3
3
  return `
4
- import { DbService, Service } from "@akanjs/service";
4
+ import { serve } from "@akanjs/service";
5
5
 
6
6
  import * as cnst from "../cnst";
7
7
  import * as db from "../db";
8
8
 
9
- @Service("${dict.Model}Service")
10
- export class ${dict.Model}Service extends DbService(db.${dict.model}Db) {}
9
+ export class ${dict.Model}Service extends serve(db.${dict.model}) {}
11
10
  `;
12
11
  }
13
12
  export {
@@ -2,14 +2,13 @@
2
2
  function getContent(scanInfo, dict) {
3
3
  return `
4
4
  import { Int } from "@akanjs/base";
5
- import { SortOf } from "@akanjs/constant";
6
- import { Arg, DbSignal, Mutation, Query, resolve, Signal } from "@akanjs/signal";
5
+ import type { SortOf } from "@akanjs/document";
6
+ import { Arg, signal, Mutation, Query, resolve } from "@akanjs/signal";
7
7
 
8
8
  import * as cnst from "../cnst";
9
9
 
10
- @Signal(() => cnst.${dict.Model})
11
- export class ${dict.Model}Signal extends DbSignal(cnst.${dict.model}Cnst, cnst.Srvs, {
12
- guards: { get: Query.Public, cru: Mutation.Public },
10
+ export class ${dict.Model}Signal extends signal(cnst.${dict.model}, cnst.Srvs, {
11
+ guards: { get: "Public", cru: "Public },
13
12
  }) {
14
13
  // * /////////////////////////////////////
15
14
  // * Public Slice
@@ -1,13 +1,12 @@
1
1
  // pkgs/@akanjs/cli/src/templates/module/__model__.store.ts
2
2
  function getContent(scanInfo, dict) {
3
3
  return `
4
- import { stateOf, Store } from "@akanjs/store";
4
+ import { store } from "@akanjs/store";
5
5
 
6
6
  import * as cnst from "../cnst";
7
- import { fetch } from "../sig";
7
+ import { fetch, sig } from "../useClient";
8
8
 
9
- @Store(() => cnst.${dict.Model})
10
- export class ${dict.Model}Store extends stateOf(fetch.${dict.model}Gql, {
9
+ export class ${dict.Model}Store extends store(sig.${dict.model}, {
11
10
  // state
12
11
  }) {
13
12
  // action
@@ -11,17 +11,17 @@ function getContent(scanInfo, dict = {}) {
11
11
  import { databaseModuleOf, scalarModulesOf, serviceModuleOf, type Module } from "@akanjs/server";
12
12
  ${libs.map((lib) => `import { registerModules as register${capitalize(lib)}Modules } from "@${lib}/server";`).join("\n")}
13
13
 
14
- import * as db from "./lib/db";
15
- import { allSrvs } from "./lib/srv";
16
14
  import * as cnst from "./lib/cnst";
15
+ import * as db from "./lib/db";
17
16
  import * as srv from "./lib/srv";
17
+ import { allSrvs } from "./lib/srv";
18
18
  import * as sig from "./lib/sig";
19
19
  import { type ModulesOptions, registerGlobalModule } from "./lib/option";
20
20
 
21
21
  // database modules
22
22
  ${databaseModules.map(([model]) => {
23
23
  const Model = capitalize(model);
24
- return `const register${Model}Module = () => databaseModuleOf({ constant: cnst.${model}Cnst, database: db.${model}Db, signal: sig.${Model}Signal, service: srv.${Model}Service }, allSrvs);`;
24
+ return `const register${Model}Module = () => databaseModuleOf({ constant: cnst.${model}, database: db.${model}, signal: sig.${Model}Signal, service: srv.${Model}Service }, allSrvs);`;
25
25
  }).join("\n")}
26
26
 
27
27
  // service modules
@@ -47,10 +47,11 @@ ${databaseModules.map(([model]) => ` register${capitalize(model)}Module(),`).
47
47
  export { env } from "./env/env.server.testing";
48
48
  export * as db from "./lib/db";
49
49
  export * as srv from "./lib/srv";
50
+ export * as sig from "./lib/sig";
50
51
  export * as option from "./lib/option";
51
52
  export * as cnst from "./lib/cnst";
52
53
  export { fetch } from "./lib/sig";
53
- export * from "./lib/dict";
54
+ export * as dict from "./lib/dict";
54
55
  `;
55
56
  }
56
57
  export {
@@ -90,7 +90,8 @@ apps/*/lib/db.ts
90
90
  apps/*/lib/srv.ts
91
91
  apps/*/lib/st.ts
92
92
  apps/*/lib/sig.ts
93
- apps/*/lib/usePage.ts
93
+ apps/*/lib/useClient.ts
94
+ apps/*/lib/useServer.ts
94
95
  apps/*/lib/*/index.tsx
95
96
  apps/*/client.ts
96
97
  apps/*/server.ts
@@ -100,8 +101,9 @@ libs/*/lib/db.ts
100
101
  libs/*/lib/srv.ts
101
102
  libs/*/lib/st.ts
102
103
  libs/*/lib/sig.ts
103
- libs/*/lib/usePage.ts
104
- apps/*/lib/*/index.tsx
104
+ libs/*/lib/useClient.ts
105
+ libs/*/lib/useServer.ts
106
+ libs/*/lib/*/index.tsx
105
107
  libs/*/client.ts
106
108
  libs/*/server.ts
107
109
  libs/*/index.ts
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "type": "module",
3
3
  "sourceType": "module",
4
4
  "name": "@akanjs/cli",
5
- "version": "0.9.48",
5
+ "version": "0.9.49",
6
6
  "bin": {
7
7
  "akan": "esm/index.js"
8
8
  },