@akanjs/cli 0.9.47 → 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.
- package/cjs/index.js +63 -52
- package/cjs/src/guidelines/___library/sharedUiStructureDescription.en.md +1 -1
- package/cjs/src/guidelines/databaseModule/databaseModule.instruction.md +9 -21
- package/cjs/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +0 -5
- package/cjs/src/guidelines/framework/framework.instruction.md +10 -12
- package/cjs/src/guidelines/modelConstant/modelConstant.generate.json +0 -7
- package/cjs/src/guidelines/modelConstant/modelConstant.instruction.md +14 -19
- package/cjs/src/guidelines/modelDocument/modelDocument.instruction.md +0 -24
- package/cjs/src/guidelines/modelService/modelService.generate.json +4 -11
- package/cjs/src/guidelines/modelService/modelService.instruction.md +12 -75
- package/cjs/src/guidelines/modelSignal/modelSignal.generate.json +0 -1
- package/cjs/src/guidelines/modelSignal/modelSignal.instruction.md +2 -38
- package/cjs/src/guidelines/modelStore/modelStore.instruction.md +1 -3
- package/cjs/src/guidelines/modelTemplate/modelTemplate.instruction.md +2 -2
- package/cjs/src/guidelines/modelUnit/modelUnit.instruction.md +2 -2
- package/cjs/src/guidelines/scalarConstant/scalarConstant.instruction.md +6 -11
- package/cjs/src/templates/__scalar/__model__/__model__.constant.js +5 -6
- package/cjs/src/templates/__scalar/__model__/__model__.dictionary.js +1 -1
- package/cjs/src/templates/app/app/[lang]/layout.js +0 -1
- package/cjs/src/templates/app/app/csr.js +3 -1
- package/cjs/src/templates/app/lib/___appName__/__appName__.dictionary.js +1 -1
- package/cjs/src/templates/app/lib/___appName__/__appName__.service.js +2 -3
- package/cjs/src/templates/app/lib/___appName__/__appName__.signal.js +2 -3
- package/cjs/src/templates/app/lib/___appName__/__appName__.store.js +2 -3
- package/cjs/src/templates/client.js +4 -4
- package/cjs/src/templates/crudPages/[__model__Id]/edit/page.js +1 -1
- package/cjs/src/templates/crudPages/[__model__Id]/page.js +1 -1
- package/cjs/src/templates/crudPages/new/page.js +1 -1
- package/cjs/src/templates/crudPages/page.js +1 -1
- package/cjs/src/templates/index.js +0 -1
- package/cjs/src/templates/lib/__lib/lib.constant.js +0 -1
- package/cjs/src/templates/lib/__lib/lib.dictionary.js +7 -4
- package/cjs/src/templates/lib/__lib/lib.document.js +4 -3
- package/cjs/src/templates/lib/__lib/lib.service.js +1 -1
- package/cjs/src/templates/lib/__lib/lib.signal.js +23 -4
- package/cjs/src/templates/lib/__lib/lib.store.js +19 -2
- package/cjs/src/templates/lib/cnst.js +12 -6
- package/cjs/src/templates/lib/db.js +10 -3
- package/cjs/src/templates/lib/dict.js +12 -4
- package/cjs/src/templates/lib/sig.js +20 -9
- package/cjs/src/templates/lib/srv.js +7 -6
- package/cjs/src/templates/lib/st.js +10 -8
- package/cjs/src/templates/lib/useClient.js +39 -0
- package/cjs/src/templates/lib/{usePage.js → useServer.js} +6 -8
- package/cjs/src/templates/libRoot/lib/___libName__/__libName__.service.js +2 -3
- package/cjs/src/templates/libRoot/lib/___libName__/__libName__.store.js +2 -3
- package/cjs/src/templates/module/__model__.constant.js +10 -30
- package/cjs/src/templates/module/__model__.dictionary.js +2 -2
- package/cjs/src/templates/module/__model__.document.js +2 -8
- package/cjs/src/templates/module/__model__.service.js +2 -3
- package/cjs/src/templates/module/__model__.signal.js +4 -5
- package/cjs/src/templates/module/__model__.store.js +3 -4
- package/cjs/src/templates/server.js +4 -4
- package/cjs/src/templates/workspaceRoot/.gitignore.template +5 -3
- package/esm/index.js +63 -52
- package/esm/src/guidelines/___library/sharedUiStructureDescription.en.md +1 -1
- package/esm/src/guidelines/databaseModule/databaseModule.instruction.md +9 -21
- package/esm/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +0 -5
- package/esm/src/guidelines/framework/framework.instruction.md +10 -12
- package/esm/src/guidelines/modelConstant/modelConstant.generate.json +0 -7
- package/esm/src/guidelines/modelConstant/modelConstant.instruction.md +14 -19
- package/esm/src/guidelines/modelDocument/modelDocument.instruction.md +0 -24
- package/esm/src/guidelines/modelService/modelService.generate.json +4 -11
- package/esm/src/guidelines/modelService/modelService.instruction.md +12 -75
- package/esm/src/guidelines/modelSignal/modelSignal.generate.json +0 -1
- package/esm/src/guidelines/modelSignal/modelSignal.instruction.md +2 -38
- package/esm/src/guidelines/modelStore/modelStore.instruction.md +1 -3
- package/esm/src/guidelines/modelTemplate/modelTemplate.instruction.md +2 -2
- package/esm/src/guidelines/modelUnit/modelUnit.instruction.md +2 -2
- package/esm/src/guidelines/scalarConstant/scalarConstant.instruction.md +6 -11
- package/esm/src/templates/__scalar/__model__/__model__.constant.js +5 -6
- package/esm/src/templates/__scalar/__model__/__model__.dictionary.js +1 -1
- package/esm/src/templates/app/app/[lang]/layout.js +0 -1
- package/esm/src/templates/app/app/csr.js +3 -1
- package/esm/src/templates/app/lib/___appName__/__appName__.dictionary.js +1 -1
- package/esm/src/templates/app/lib/___appName__/__appName__.service.js +2 -3
- package/esm/src/templates/app/lib/___appName__/__appName__.signal.js +2 -3
- package/esm/src/templates/app/lib/___appName__/__appName__.store.js +2 -3
- package/esm/src/templates/client.js +4 -4
- package/esm/src/templates/crudPages/[__model__Id]/edit/page.js +1 -1
- package/esm/src/templates/crudPages/[__model__Id]/page.js +1 -1
- package/esm/src/templates/crudPages/new/page.js +1 -1
- package/esm/src/templates/crudPages/page.js +1 -1
- package/esm/src/templates/index.js +0 -1
- package/esm/src/templates/lib/__lib/lib.constant.js +0 -1
- package/esm/src/templates/lib/__lib/lib.dictionary.js +7 -4
- package/esm/src/templates/lib/__lib/lib.document.js +4 -3
- package/esm/src/templates/lib/__lib/lib.service.js +1 -1
- package/esm/src/templates/lib/__lib/lib.signal.js +23 -4
- package/esm/src/templates/lib/__lib/lib.store.js +19 -2
- package/esm/src/templates/lib/cnst.js +12 -6
- package/esm/src/templates/lib/db.js +10 -3
- package/esm/src/templates/lib/dict.js +12 -4
- package/esm/src/templates/lib/sig.js +20 -9
- package/esm/src/templates/lib/srv.js +7 -6
- package/esm/src/templates/lib/st.js +10 -8
- package/esm/src/templates/lib/useClient.js +19 -0
- package/esm/src/templates/lib/useServer.js +11 -0
- package/esm/src/templates/libRoot/lib/___libName__/__libName__.service.js +2 -3
- package/esm/src/templates/libRoot/lib/___libName__/__libName__.store.js +2 -3
- package/esm/src/templates/module/__model__.constant.js +10 -30
- package/esm/src/templates/module/__model__.dictionary.js +2 -2
- package/esm/src/templates/module/__model__.document.js +2 -8
- package/esm/src/templates/module/__model__.service.js +2 -3
- package/esm/src/templates/module/__model__.signal.js +4 -5
- package/esm/src/templates/module/__model__.store.js +3 -4
- package/esm/src/templates/server.js +4 -4
- package/esm/src/templates/workspaceRoot/.gitignore.template +5 -3
- package/package.json +1 -1
- package/src/application/application.command.d.ts +7 -7
- package/src/application/application.script.d.ts +3 -1
- package/src/guidelines/___library/sharedUiStructureDescription.en.md +1 -1
- package/src/guidelines/databaseModule/databaseModule.instruction.md +9 -21
- package/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +0 -5
- package/src/guidelines/framework/framework.instruction.md +10 -12
- package/src/guidelines/modelConstant/modelConstant.instruction.md +14 -19
- package/src/guidelines/modelDocument/modelDocument.instruction.md +0 -24
- package/src/guidelines/modelService/modelService.instruction.md +12 -75
- package/src/guidelines/modelSignal/modelSignal.instruction.md +2 -38
- package/src/guidelines/modelStore/modelStore.instruction.md +1 -3
- package/src/guidelines/modelTemplate/modelTemplate.instruction.md +2 -2
- package/src/guidelines/modelUnit/modelUnit.instruction.md +2 -2
- package/src/guidelines/scalarConstant/scalarConstant.instruction.md +6 -11
- package/src/templates/lib/useServer.d.ts +4 -0
- package/src/workspace/workspace.command.d.ts +1 -0
- package/src/workspace/workspace.script.d.ts +1 -0
- package/esm/src/templates/lib/usePage.js +0 -13
- /package/src/templates/lib/{usePage.d.ts → useClient.d.ts} +0 -0
|
@@ -40,7 +40,7 @@ Model.Template.tsx files are client-side React components that define the form s
|
|
|
40
40
|
"use client";
|
|
41
41
|
import { Field } from "@shared/ui";
|
|
42
42
|
import { st } from "@[project]/client";
|
|
43
|
-
import { usePage } from "@[project]/lib/
|
|
43
|
+
import { usePage } from "@[project]/lib/useClient";
|
|
44
44
|
|
|
45
45
|
export const General = ({ id }: { id?: string }) => {
|
|
46
46
|
const form = st.use.[model]Form();
|
|
@@ -466,7 +466,7 @@ const DockerRegistry = ({ value, onChange }) => (
|
|
|
466
466
|
|
|
467
467
|
```tsx
|
|
468
468
|
// Model.constant.ts
|
|
469
|
-
|
|
469
|
+
|
|
470
470
|
export class ProjectInput {
|
|
471
471
|
@Field.Prop(() => String)
|
|
472
472
|
name: string;
|
|
@@ -148,7 +148,7 @@ Model Units work with LightModel types defined in constant files:
|
|
|
148
148
|
|
|
149
149
|
```tsx
|
|
150
150
|
// In your constant.ts file
|
|
151
|
-
|
|
151
|
+
|
|
152
152
|
export class LightProduct extends via(ProductObject, ["name", "price", "sku", "inStock"] as const) {
|
|
153
153
|
get displayPrice() {
|
|
154
154
|
return `${this.price.toLocaleString()} KRW`;
|
|
@@ -503,7 +503,7 @@ Type error: Property 'description' does not exist on type 'LightProduct'
|
|
|
503
503
|
|
|
504
504
|
```tsx
|
|
505
505
|
// In constant.ts
|
|
506
|
-
|
|
506
|
+
|
|
507
507
|
export class LightProduct extends via(ProductObject, ["name", "price", "sku"] as const) {
|
|
508
508
|
// Only these fields are guaranteed to be available
|
|
509
509
|
}
|
|
@@ -41,7 +41,7 @@ export const Status = enumOf(["active", "inactive"] as const);
|
|
|
41
41
|
export type Status = enumOf<typeof Status>;
|
|
42
42
|
|
|
43
43
|
// 3. Scalar model class (SINGLE CLASS PER FILE)
|
|
44
|
-
|
|
44
|
+
// Must match class name
|
|
45
45
|
export class ScalarName {
|
|
46
46
|
// Field definitions
|
|
47
47
|
@Field.Prop(() => FieldType, { ...options })
|
|
@@ -74,7 +74,7 @@ import { OtherScalar } from "../other-scalar/other-scalar.constant";
|
|
|
74
74
|
### Basic Structure
|
|
75
75
|
|
|
76
76
|
```typescript
|
|
77
|
-
|
|
77
|
+
// String must match class name
|
|
78
78
|
export class ScalarName {
|
|
79
79
|
// Field definitions go here
|
|
80
80
|
}
|
|
@@ -207,7 +207,6 @@ status: Status;
|
|
|
207
207
|
Scalar classes can include static methods for common operations on the scalar type:
|
|
208
208
|
|
|
209
209
|
```typescript
|
|
210
|
-
@Model.Scalar("Coordinate")
|
|
211
210
|
export class Coordinate {
|
|
212
211
|
@Field.Prop(() => [Float], { default: [0, 0] })
|
|
213
212
|
coordinates: number[];
|
|
@@ -305,8 +304,8 @@ export type Status = enumOf<typeof Status>;
|
|
|
305
304
|
|
|
306
305
|
```typescript
|
|
307
306
|
// ❌ Wrong (violates single-responsibility)
|
|
308
|
-
|
|
309
|
-
|
|
307
|
+
class Address { ... }
|
|
308
|
+
class User { ... }
|
|
310
309
|
|
|
311
310
|
// ✅ Correct (separate files)
|
|
312
311
|
// address.constant.ts
|
|
@@ -339,7 +338,7 @@ createdAt: Dayjs;
|
|
|
339
338
|
export class GeoLocation { ... }
|
|
340
339
|
|
|
341
340
|
// ✅ Correct
|
|
342
|
-
|
|
341
|
+
|
|
343
342
|
export class GeoLocation { ... }
|
|
344
343
|
```
|
|
345
344
|
|
|
@@ -352,7 +351,6 @@ export class GeoLocation { ... }
|
|
|
352
351
|
import { Float } from "@akanjs/base";
|
|
353
352
|
import { Field, Model } from "@akanjs/constant";
|
|
354
353
|
|
|
355
|
-
@Model.Scalar("Amount")
|
|
356
354
|
export class Amount {
|
|
357
355
|
@Field.Prop(() => Float, { min: 0, default: 0 })
|
|
358
356
|
value: number;
|
|
@@ -373,7 +371,6 @@ import { Field, Model } from "@akanjs/constant";
|
|
|
373
371
|
export const AccuracyLevel = enumOf(["low", "medium", "high"] as const);
|
|
374
372
|
export type AccuracyLevel = enumOf<typeof AccuracyLevel>;
|
|
375
373
|
|
|
376
|
-
@Model.Scalar("GeoLocation")
|
|
377
374
|
export class GeoLocation {
|
|
378
375
|
@Field.Prop(() => Float, {
|
|
379
376
|
min: -90,
|
|
@@ -418,7 +415,6 @@ import { Int, Float } from "@akanjs/base";
|
|
|
418
415
|
import { Field, Model } from "@akanjs/constant";
|
|
419
416
|
import { Dimension } from "../dimension/dimension.constant";
|
|
420
417
|
|
|
421
|
-
@Model.Scalar("ProductSpec")
|
|
422
418
|
export class ProductSpec {
|
|
423
419
|
@Field.Prop(() => String)
|
|
424
420
|
sku: string;
|
|
@@ -450,7 +446,6 @@ export class ProductSpec {
|
|
|
450
446
|
import { Float } from "@akanjs/base";
|
|
451
447
|
import { Field, Model } from "@akanjs/constant";
|
|
452
448
|
|
|
453
|
-
@Model.Scalar("Coordinate")
|
|
454
449
|
export class Coordinate {
|
|
455
450
|
@Field.Prop(() => [Float], { default: [0, 0], example: [127.114367, 37.497114] })
|
|
456
451
|
coordinates: number[];
|
|
@@ -477,7 +472,7 @@ export class Coordinate {
|
|
|
477
472
|
1. **Location**: `__scalar/<camelCase>/<camelCase>.constant.ts`
|
|
478
473
|
2. **Structure**: Single `@Model.Scalar` class per file
|
|
479
474
|
3. **Naming**: Class name = PascalCase directory name
|
|
480
|
-
4. **Decorator**:
|
|
475
|
+
4. **Decorator**: `` with exact class name match
|
|
481
476
|
5. **Enum Values**: Always camelCase (`active`, not `ACTIVE`)
|
|
482
477
|
6. **Fields**: Use `@Field.Prop` with arrow function types
|
|
483
478
|
7. **Arrays**: Wrap in `[]` (e.g., `[Int]`)
|
|
@@ -24,12 +24,11 @@ __export(model_constant_exports, {
|
|
|
24
24
|
module.exports = __toCommonJS(model_constant_exports);
|
|
25
25
|
function getContent(scanInfo, dict) {
|
|
26
26
|
return `
|
|
27
|
-
import {
|
|
27
|
+
import { via } from "@akanjs/constant";
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
export class ${dict.Model} {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
29
|
+
|
|
30
|
+
export class ${dict.Model} extends via((field) => ({
|
|
31
|
+
field: field(String),
|
|
32
|
+
})) {}
|
|
34
33
|
`;
|
|
35
34
|
}
|
|
@@ -28,7 +28,7 @@ import { ModelDictionary } from "@akanjs/dictionary";
|
|
|
28
28
|
|
|
29
29
|
import type { ${dict.Model} } from "./${dict.model}.constant";
|
|
30
30
|
|
|
31
|
-
const modelDictionary = {
|
|
31
|
+
export const modelDictionary = {
|
|
32
32
|
modelName: ["${dict.Model}", "${dict.Model}"],
|
|
33
33
|
modelDesc: ["${dict.Model}", "${dict.Model}"],
|
|
34
34
|
|
|
@@ -28,7 +28,9 @@ function getContent(scanInfo, dict) {
|
|
|
28
28
|
content: `
|
|
29
29
|
import { bootCsr } from "@akanjs/next";
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
import { registerClient } from "../client";
|
|
32
|
+
|
|
33
|
+
void bootCsr(import.meta.glob("./**/*.tsx"), registerClient);
|
|
32
34
|
`
|
|
33
35
|
};
|
|
34
36
|
}
|
|
@@ -29,7 +29,7 @@ import type { ${dict.AppName}Signal } from "./${dict.appName}.signal";
|
|
|
29
29
|
|
|
30
30
|
const dictionary = {} as const;
|
|
31
31
|
|
|
32
|
-
const signalDictionary = {} satisfies SignalDictionary<${dict.AppName}Signal>;
|
|
32
|
+
export const signalDictionary = {} satisfies SignalDictionary<${dict.AppName}Signal>;
|
|
33
33
|
|
|
34
34
|
export const ${dict.appName}Dictionary = { ...dictionary, ...signalDictionary };
|
|
35
35
|
`;
|
|
@@ -24,9 +24,8 @@ __export(appName_service_exports, {
|
|
|
24
24
|
module.exports = __toCommonJS(appName_service_exports);
|
|
25
25
|
function getContent(scanInfo, dict) {
|
|
26
26
|
return `
|
|
27
|
-
import {
|
|
27
|
+
import { serve } from "@akanjs/service";
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
export class ${dict.AppName}Service extends LogService("${dict.AppName}Service") {}
|
|
29
|
+
export class ${dict.AppName}Service extends serve("${dict.appName}" as const, { serverMode: "batch" }) {}
|
|
31
30
|
`;
|
|
32
31
|
}
|
|
@@ -24,11 +24,10 @@ __export(appName_signal_exports, {
|
|
|
24
24
|
module.exports = __toCommonJS(appName_signal_exports);
|
|
25
25
|
function getContent(scanInfo, dict) {
|
|
26
26
|
return `
|
|
27
|
-
import {
|
|
27
|
+
import { signal } from "@akanjs/signal";
|
|
28
28
|
|
|
29
29
|
import * as cnst from "../cnst";
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
export class ${dict.AppName}Signal extends LogSignal(cnst.Srvs) {}
|
|
31
|
+
export class ${dict.AppName}Signal extends signal("${dict.AppName}" as const, cnst.Srvs) {}
|
|
33
32
|
`;
|
|
34
33
|
}
|
|
@@ -24,10 +24,9 @@ __export(appName_store_exports, {
|
|
|
24
24
|
module.exports = __toCommonJS(appName_store_exports);
|
|
25
25
|
function getContent(scanInfo, dict) {
|
|
26
26
|
return `
|
|
27
|
-
import {
|
|
27
|
+
import { store } from "@akanjs/store";
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
export class ${dict.AppName}Store extends scalarStateOf("${dict.appName}" as const, {
|
|
29
|
+
export class ${dict.AppName}Store extends store("${dict.appName}" as const, {
|
|
31
30
|
// state
|
|
32
31
|
}) {
|
|
33
32
|
// action
|
|
@@ -36,10 +36,10 @@ function getContent(scanInfo, dict = {}) {
|
|
|
36
36
|
([_, fileTypes]) => fileTypes.has("template") || fileTypes.has("unit") || fileTypes.has("util") || fileTypes.has("view") || fileTypes.has("zone")
|
|
37
37
|
).map(([key]) => key);
|
|
38
38
|
return `
|
|
39
|
-
export
|
|
40
|
-
export {
|
|
41
|
-
export {
|
|
42
|
-
export * as
|
|
39
|
+
export * as cnst from "./lib/cnst";
|
|
40
|
+
export { msg, Revert, usePage, fetch, sig, registerClient } from "./lib/useClient";
|
|
41
|
+
export { st, RootStore } from "./lib/st";
|
|
42
|
+
export * as store from "./lib/st";
|
|
43
43
|
${scalarModules.map((module2) => `export { ${capitalize(module2)} } from "./lib/__scalar/${module2}";`).join("\n")}
|
|
44
44
|
${serviceModules.map((module2) => `export { ${capitalize(module2)} } from "./lib/_${module2}";`).join("\n")}
|
|
45
45
|
${databaseModules.map((module2) => `export { ${capitalize(module2)} } from "./lib/${module2}";`).join("\n")}
|
|
@@ -48,7 +48,7 @@ export default function Page({ params }: PageProps) {
|
|
|
48
48
|
<div className="container">
|
|
49
49
|
<div className="flex justify-between m-4 mt-8">
|
|
50
50
|
<div className="text-xl text-primary flex gap-2 items-center">
|
|
51
|
-
{l("
|
|
51
|
+
{l("base.updateModel", { model: l("${dict.model}.modelName") })}
|
|
52
52
|
</div>
|
|
53
53
|
</div>
|
|
54
54
|
<Load.Edit
|
|
@@ -63,7 +63,7 @@ export default function Page({ params }: PageProps) {
|
|
|
63
63
|
<${dict.Model}.Zone.View view={${dict.model}View} />
|
|
64
64
|
<Link href={\`/${dict.model}/\${${dict.model}.id}/edit\`}>
|
|
65
65
|
<button className="btn">
|
|
66
|
-
{l("
|
|
66
|
+
{l("base.updateModel", { model: l("${dict.model}.modelName") })}
|
|
67
67
|
</button>
|
|
68
68
|
</Link>
|
|
69
69
|
</div>
|
|
@@ -43,7 +43,7 @@ export default function Page() {
|
|
|
43
43
|
<div className="container">
|
|
44
44
|
<div className="flex justify-between m-4 mt-8">
|
|
45
45
|
<div className="text-xl text-primary flex gap-2 items-center">
|
|
46
|
-
+ {l("
|
|
46
|
+
+ {l("base.createModel", { model: l("${dict.model}.modelName") })}
|
|
47
47
|
</div>
|
|
48
48
|
</div>
|
|
49
49
|
<Load.Edit
|
|
@@ -46,7 +46,7 @@ export default function Page() {
|
|
|
46
46
|
<div className="animate-fadeIn px-4 pt-4 flex gap-4 items-center">
|
|
47
47
|
<div className="font-bold text-lg md:text-4xl">${dict.Model}s</div>
|
|
48
48
|
<Link href={\`/${dict.model}/new\`}>
|
|
49
|
-
<button className="btn">+ {l("
|
|
49
|
+
<button className="btn">+ {l("base.createModel", { model: l("${dict.model}.modelName") })}</button>
|
|
50
50
|
</Link>
|
|
51
51
|
</div>
|
|
52
52
|
<div>{l("${dict.model}.modelDesc")}</div>
|
|
@@ -50,7 +50,6 @@ ${Object.entries(extendedModels).map(([modelName, extendedModels2]) => {
|
|
|
50
50
|
lights: [${extendedModels2.map((libName) => `${libName}.Light${ModelName}`).join(", ")}] as const,
|
|
51
51
|
models: [${extendedModels2.map((libName) => `${libName}.${ModelName}`).join(", ")}] as const,
|
|
52
52
|
insights: [${extendedModels2.map((libName) => `${libName}.${ModelName}Insight`).join(", ")}] as const,
|
|
53
|
-
filters: [${extendedModels2.map((libName) => `${libName}.${ModelName}Filter`).join(", ")}] as const,
|
|
54
53
|
}`;
|
|
55
54
|
}).join("\n")}
|
|
56
55
|
|
|
@@ -37,13 +37,16 @@ function getContent(scanInfo, dict = {}) {
|
|
|
37
37
|
).filter(([_, libNames]) => libNames.length > 0)
|
|
38
38
|
);
|
|
39
39
|
return `
|
|
40
|
-
${libs.length === 0 ? `import
|
|
41
|
-
${libs.map((lib) => `import {
|
|
40
|
+
${libs.length === 0 ? `import * as base from "@akanjs/dictionary";` : ""}
|
|
41
|
+
${libs.map((lib) => `import { dict as ${lib} } from "@${lib}/server";`).join("\n")}
|
|
42
42
|
|
|
43
43
|
${Object.entries(extendedModels).map(([modelName, extendedModels2]) => {
|
|
44
|
-
return `export const ${modelName} =
|
|
44
|
+
return `export const ${modelName} = {
|
|
45
|
+
models: Object.assign({}, ${extendedModels2.map((libName) => `${libName}.${modelName}.modelDictionary`).join(", ")}),
|
|
46
|
+
signals: Object.assign({}, ${extendedModels2.map((libName) => `${libName}.${modelName}.signalDictionary`).join(", ")}),
|
|
47
|
+
};`;
|
|
45
48
|
}).join("\n")}
|
|
46
49
|
|
|
47
|
-
export const allLibs = [${libs.length === 0 ? "base" : libs.join(", ")}] as const;
|
|
50
|
+
export const allLibs = [${libs.length === 0 ? "base.dictionary" : libs.map((lib) => `${lib}.dictionary`).join(", ")}] as const;
|
|
48
51
|
`;
|
|
49
52
|
}
|
|
@@ -41,9 +41,10 @@ ${libs.map((lib) => `export { db as ${lib} } from "@${lib}/server";`).join("\n")
|
|
|
41
41
|
|
|
42
42
|
${Object.entries(extendedModels).map(
|
|
43
43
|
([modelName, extendedModels2]) => `export const ${modelName} = {
|
|
44
|
-
inputs: [${extendedModels2.map((libName) => `${libName}.${modelName}
|
|
45
|
-
docs: [${extendedModels2.map((libName) => `${libName}.${modelName}
|
|
46
|
-
models: [${extendedModels2.map((libName) => `${libName}.${modelName}
|
|
44
|
+
inputs: [${extendedModels2.map((libName) => `${libName}.${modelName}.Input`).join(", ")}] as const,
|
|
45
|
+
docs: [${extendedModels2.map((libName) => `${libName}.${modelName}.Doc`).join(", ")}] as const,
|
|
46
|
+
models: [${extendedModels2.map((libName) => `${libName}.${modelName}.Model`).join(", ")}] as const,
|
|
47
|
+
filters: [${extendedModels2.map((libName) => `${libName}.${modelName}.Filter`).join(", ")}] as const,
|
|
47
48
|
}`
|
|
48
49
|
).join("\n")}
|
|
49
50
|
export const allLibs = [${libs.join(", ")}] as const;
|
|
@@ -37,7 +37,7 @@ function getContent(scanInfo, dict = {}) {
|
|
|
37
37
|
).filter(([_, libNames]) => libNames.length > 0)
|
|
38
38
|
);
|
|
39
39
|
return `
|
|
40
|
-
${libs.length ? `import {
|
|
40
|
+
${libs.length ? `import { serve, Srv } from "@akanjs/service";` : `import type { BackendEnv } from "@akanjs/base";`}
|
|
41
41
|
${libs.map((lib) => `import { option as ${lib}Option, srv as ${lib} } from "@${lib}/server";`).join("\n")}
|
|
42
42
|
|
|
43
43
|
import * as db from "../db";
|
|
@@ -22,16 +22,35 @@ __export(lib_signal_exports, {
|
|
|
22
22
|
default: () => getContent
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(lib_signal_exports);
|
|
25
|
+
var capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
25
26
|
function getContent(scanInfo, dict = {}) {
|
|
26
27
|
if (!scanInfo)
|
|
27
28
|
return null;
|
|
28
29
|
const libs = scanInfo.getLibs();
|
|
29
30
|
const rootLib = scanInfo.akanConfig.rootLib;
|
|
31
|
+
const libInfos = [...scanInfo.getLibInfos().values()];
|
|
32
|
+
const extendedModels = Object.fromEntries(
|
|
33
|
+
[...scanInfo.file.signal.databases].map(
|
|
34
|
+
(modelName) => [
|
|
35
|
+
modelName,
|
|
36
|
+
libInfos.filter((libInfo) => libInfo.file.signal.databases.has(modelName)).map((libInfo) => libInfo.name)
|
|
37
|
+
]
|
|
38
|
+
).filter(([_, libNames]) => libNames.length > 0)
|
|
39
|
+
);
|
|
30
40
|
return `
|
|
31
|
-
${libs.length > 0 ? "" : `import { fetch as
|
|
32
|
-
${libs.map((lib) => `import {
|
|
41
|
+
${libs.length > 0 ? "" : `import { fetch as baseFetch } from "@akanjs/signal";`}
|
|
42
|
+
${libs.map((lib) => `import { sig as ${lib} } from "@${lib}/server";`).join("\n")}
|
|
33
43
|
|
|
34
|
-
|
|
35
|
-
|
|
44
|
+
${Object.entries(extendedModels).map(([modelName, extendedModels2]) => {
|
|
45
|
+
const ModelName = capitalize(modelName);
|
|
46
|
+
return `export const ${modelName} = {
|
|
47
|
+
internals: [${extendedModels2.map((libName) => `${libName}.${ModelName}Internal`).join(", ")}] as const,
|
|
48
|
+
slices: [${extendedModels2.map((libName) => `${libName}.${ModelName}Slice`).join(", ")}] as const,
|
|
49
|
+
endpoints: [${extendedModels2.map((libName) => `${libName}.${ModelName}Endpoint`).join(", ")}] as const,
|
|
50
|
+
}`;
|
|
51
|
+
}).join("\n")}
|
|
52
|
+
|
|
53
|
+
export const root = ${libs.length ? rootLib ?? libs[0] : "baseFetch"};
|
|
54
|
+
export const libFetches = [${libs.length ? libs.map((lib) => `${lib}.fetch`).join(", ") : "baseFetch"}] as const;
|
|
36
55
|
`;
|
|
37
56
|
}
|
|
@@ -22,14 +22,31 @@ __export(lib_store_exports, {
|
|
|
22
22
|
default: () => getContent
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(lib_store_exports);
|
|
25
|
+
var capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
25
26
|
function getContent(scanInfo, dict = {}) {
|
|
26
27
|
if (!scanInfo)
|
|
27
28
|
return null;
|
|
28
29
|
const libs = scanInfo.getLibs();
|
|
30
|
+
const libInfos = [...scanInfo.getLibInfos().values()];
|
|
31
|
+
const extendedModels = Object.fromEntries(
|
|
32
|
+
[...scanInfo.file.store.databases].map(
|
|
33
|
+
(modelName) => [
|
|
34
|
+
modelName,
|
|
35
|
+
libInfos.filter((libInfo) => libInfo.file.store.databases.has(modelName)).map((libInfo) => libInfo.name)
|
|
36
|
+
]
|
|
37
|
+
).filter(([_, libNames]) => libNames.length > 0)
|
|
38
|
+
);
|
|
29
39
|
return `
|
|
30
|
-
import
|
|
40
|
+
import * as base from "@akanjs/store";
|
|
31
41
|
${libs.map((lib) => `import { store as ${lib} } from "@${lib}/client";`).join("\n")}
|
|
32
42
|
|
|
33
|
-
|
|
43
|
+
${Object.entries(extendedModels).map(([modelName, extendedModels2]) => {
|
|
44
|
+
const ModelName = capitalize(modelName);
|
|
45
|
+
return `export const ${modelName} = {
|
|
46
|
+
stores: [${extendedModels2.map((libName) => `${libName}.${ModelName}Store`).join(", ")}] as const,
|
|
47
|
+
}`;
|
|
48
|
+
}).join("\n")}
|
|
49
|
+
|
|
50
|
+
export const libStores = [${[...libs, "base"].map((lib) => `${lib}.RootStore`).join(", ")}] as const;
|
|
34
51
|
`;
|
|
35
52
|
}
|
|
@@ -28,11 +28,19 @@ function getContent(scanInfo, dict = {}) {
|
|
|
28
28
|
return null;
|
|
29
29
|
const databaseModules = scanInfo.getDatabaseModules();
|
|
30
30
|
const scalarModules = scanInfo.getScalarModules();
|
|
31
|
+
const libInfos = scanInfo.getLibInfos();
|
|
32
|
+
const extendedModelMap = new Map(
|
|
33
|
+
[...scanInfo.file.constant.databases].map(
|
|
34
|
+
(modelName) => [
|
|
35
|
+
modelName,
|
|
36
|
+
[...libInfos.values()].filter((libInfo) => libInfo.file.constant.databases.has(modelName)).map((libInfo) => libInfo.name)
|
|
37
|
+
]
|
|
38
|
+
).filter(([_, libNames]) => libNames.length > 0)
|
|
39
|
+
);
|
|
31
40
|
return `
|
|
32
|
-
import type { AllSrvs } from "./srv";
|
|
33
41
|
import { cnstOf, scalarCnstOf } from "@akanjs/constant";
|
|
34
42
|
|
|
35
|
-
${databaseModules.map((module2) => `import * as ${module2} from "./${module2}/${module2}.constant";`).join("\n")}
|
|
43
|
+
${databaseModules.map((module2) => `import * as ${module2}Cnst from "./${module2}/${module2}.constant";`).join("\n")}
|
|
36
44
|
${scalarModules.map((module2) => `import { ${capitalize(module2)} } from "./__scalar/${module2}/${module2}.constant";`).join("\n")}
|
|
37
45
|
|
|
38
46
|
export * from "./__lib/lib.constant";
|
|
@@ -41,10 +49,8 @@ ${scalarModules.map((module2) => `export * from "./__scalar/${module2}/${module2
|
|
|
41
49
|
|
|
42
50
|
${databaseModules.map((module2) => {
|
|
43
51
|
const names = { Module: capitalize(module2) };
|
|
44
|
-
return `export const ${module2}
|
|
52
|
+
return `export const ${module2} = cnstOf("${module2}" as const, ${module2}Cnst.${names.Module}Input, ${module2}Cnst.${names.Module}, ${module2}Cnst.Light${names.Module}, ${module2}Cnst.${names.Module}Insight${extendedModelMap.has(module2) ? ", { overwrite: true }" : ""});`;
|
|
45
53
|
}).join("\n")}
|
|
46
|
-
${scalarModules.map((module2) => `export const ${module2}
|
|
47
|
-
|
|
48
|
-
export const Srvs = {} as AllSrvs;
|
|
54
|
+
${scalarModules.map((module2) => `export const ${module2} = scalarCnstOf("${module2}" as const, ${capitalize(module2)});`).join("\n")}
|
|
49
55
|
`;
|
|
50
56
|
}
|
|
@@ -22,25 +22,32 @@ __export(db_exports, {
|
|
|
22
22
|
default: () => getContent
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(db_exports);
|
|
25
|
+
var capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
25
26
|
function getContent(scanInfo, dict = {}) {
|
|
26
27
|
if (!scanInfo)
|
|
27
28
|
return null;
|
|
28
29
|
const databaseModules = scanInfo.getDatabaseModules();
|
|
29
30
|
const scalarModules = scanInfo.getScalarModules();
|
|
30
31
|
return `
|
|
31
|
-
import { dbOf } from "@akanjs/document";
|
|
32
|
+
import { by, dbOf, scalarDbOf } from "@akanjs/document";
|
|
32
33
|
|
|
33
34
|
import * as cnst from "./cnst";
|
|
34
35
|
|
|
35
|
-
${databaseModules.map((module2) => `import * as ${module2} from "./${module2}/${module2}.document";`).join("\n")}
|
|
36
|
+
${databaseModules.map((module2) => `import * as ${module2}Db from "./${module2}/${module2}.document";`).join("\n")}
|
|
37
|
+
${scalarModules.map((module2) => `import { ${capitalize(module2)} } from "./__scalar/${module2}/${module2}.document";`).join("\n")}
|
|
38
|
+
|
|
39
|
+
${databaseModules.map((module2) => `class ${capitalize(module2)}Input extends by(cnst.${capitalize(module2)}Input) {}`).join("\n")}
|
|
40
|
+
export type { ${databaseModules.map((module2) => `${capitalize(module2)}Input`).join(", ")} };
|
|
36
41
|
|
|
37
42
|
export type * from "./__lib/lib.document";
|
|
43
|
+
|
|
38
44
|
${databaseModules.map((module2) => `export type * from "./${module2}/${module2}.document";`).join("\n")}
|
|
39
45
|
${scalarModules.map((module2) => `export type * from "./__scalar/${module2}/${module2}.document";`).join("\n")}
|
|
40
46
|
|
|
41
47
|
${databaseModules.map((module2) => {
|
|
42
48
|
const names = { Module: module2.charAt(0).toUpperCase() + module2.slice(1) };
|
|
43
|
-
return `export const ${module2}
|
|
49
|
+
return `export const ${module2} = dbOf("${module2}" as const, ${names.Module}Input, ${module2}Db.${names.Module}, ${module2}Db.${names.Module}Model, ${module2}Db.${names.Module}Middleware, cnst.${names.Module}, cnst.${names.Module}Insight, ${module2}Db.${names.Module}Filter);`;
|
|
44
50
|
}).join("\n")}
|
|
51
|
+
${scalarModules.map((module2) => `export const ${module2} = scalarDbOf("${module2}" as const, ${capitalize(module2)});`).join("\n")}
|
|
45
52
|
`;
|
|
46
53
|
}
|
|
@@ -32,12 +32,20 @@ function getContent(scanInfo, dict = {}) {
|
|
|
32
32
|
import { makeDictionary, makeTrans } from "@akanjs/dictionary";
|
|
33
33
|
|
|
34
34
|
import { allLibs } from "./__lib/lib.dictionary";
|
|
35
|
-
${databaseModules.map((module2) => `import
|
|
36
|
-
${serviceModules.map((module2) => `import
|
|
37
|
-
${scalarModules.map((module2) => `import
|
|
35
|
+
${databaseModules.map((module2) => `import * as ${module2} from "./${module2}/${module2}.dictionary";`).join("\n")}
|
|
36
|
+
${serviceModules.map((module2) => `import * as ${module2} from "./_${module2}/${module2}.dictionary";`).join("\n")}
|
|
37
|
+
${scalarModules.map((module2) => `import * as ${module2} from "./__scalar/${module2}/${module2}.dictionary";`).join("\n")}
|
|
38
|
+
|
|
39
|
+
${databaseModules.map((module2) => `export * as ${module2} from "./${module2}/${module2}.dictionary";`).join("\n")}
|
|
40
|
+
${serviceModules.map((module2) => `export * as ${module2} from "./_${module2}/${module2}.dictionary";`).join("\n")}
|
|
41
|
+
${scalarModules.map((module2) => `export * as ${module2} from "./__scalar/${module2}/${module2}.dictionary";`).join("\n")}
|
|
38
42
|
|
|
39
43
|
export const dictionary = makeDictionary(...allLibs, {
|
|
40
|
-
${[
|
|
44
|
+
${[
|
|
45
|
+
...databaseModules.map((module2) => `${module2}: { ...${module2}.modelDictionary, ...${module2}.signalDictionary }`),
|
|
46
|
+
...scalarModules.map((module2) => `${module2}: ${module2}.dictionary`),
|
|
47
|
+
...serviceModules.map((module2) => `${module2}: ${module2}.dictionary`)
|
|
48
|
+
].join(",\n ")}
|
|
41
49
|
} as const);
|
|
42
50
|
|
|
43
51
|
export const { Revert, translate, msg } = makeTrans(dictionary);
|
|
@@ -30,24 +30,35 @@ function getContent(scanInfo, dict = {}) {
|
|
|
30
30
|
const scalarConstantModules = [...scanInfo.scalar.entries()].filter(([_, files]) => files.has("constant")).map(([module2]) => module2);
|
|
31
31
|
const serviceModules = [...scanInfo.service.entries()].filter(([_, files]) => files.has("signal")).map(([module2]) => module2);
|
|
32
32
|
return `
|
|
33
|
-
import { fetchOf, gqlOf, makeFetch,
|
|
33
|
+
import { fetchOf, gqlOf, makeFetch, mergeSignals, signalInfo } from "@akanjs/signal";
|
|
34
34
|
|
|
35
35
|
import { root, libFetches } from "./__lib/lib.signal";
|
|
36
36
|
import * as cnst from "./cnst";
|
|
37
|
+
import * as db from "./db";
|
|
37
38
|
|
|
38
|
-
${[...scanInfo.database.entries()].filter(([_, files]) => files.has("signal")).map(([module2]) => `import
|
|
39
|
-
${[...scanInfo.service.entries()].filter(([_, files]) => files.has("signal")).map(([module2]) => `import
|
|
39
|
+
${[...scanInfo.database.entries()].filter(([_, files]) => files.has("signal")).map(([module2]) => `import * as ${module2}Sig from "./${module2}/${module2}.signal";`).join("\n")}
|
|
40
|
+
${[...scanInfo.service.entries()].filter(([_, files]) => files.has("signal")).map(([module2]) => `import * as ${module2}Sig from "./_${module2}/${module2}.signal";`).join("\n")}
|
|
40
41
|
|
|
41
|
-
${[...scanInfo.database.entries()].filter(([_, files]) => files.has("signal")).map(([module2]) => `export
|
|
42
|
-
${[...scanInfo.service.entries()].filter(([_, files]) => files.has("signal")).map(([module2]) => `export
|
|
42
|
+
${[...scanInfo.database.entries()].filter(([_, files]) => files.has("signal")).map(([module2]) => `export * from "./${module2}/${module2}.signal";`).join("\n")}
|
|
43
|
+
${[...scanInfo.service.entries()].filter(([_, files]) => files.has("signal")).map(([module2]) => `export * from "./_${module2}/${module2}.signal";`).join("\n")}
|
|
43
44
|
|
|
44
|
-
${
|
|
45
|
+
${[...scanInfo.database.entries()].filter(([_, files]) => files.has("signal")).map(
|
|
46
|
+
([module2]) => `export class ${capitalize(module2)}Signal extends mergeSignals(${module2}Sig.${capitalize(module2)}Endpoint, ${module2}Sig.${capitalize(module2)}Internal, ${module2}Sig.${capitalize(module2)}Slice) {}`
|
|
47
|
+
).join("\n")}
|
|
48
|
+
${[...scanInfo.service.entries()].filter(([_, files]) => files.has("signal")).map(
|
|
49
|
+
([module2]) => `export const ${capitalize(module2)}Signal = mergeSignals(${module2}Sig.${capitalize(module2)}Endpoint, ${module2}Sig.${capitalize(module2)}Internal);`
|
|
50
|
+
).join("\n")}
|
|
51
|
+
|
|
52
|
+
const signals = signalInfo.registerSignals(
|
|
53
|
+
${[...databaseModules, ...serviceModules].map((module2) => ` ${capitalize(module2)}Signal,`).join("\n")}
|
|
54
|
+
);
|
|
55
|
+
export const serializedSignals = signals.map((signal) => signalInfo.serialize(signal));
|
|
56
|
+
|
|
57
|
+
${databaseModules.map((module2) => `export const ${module2} = gqlOf(cnst.${module2}, db.${module2}.Filter, ${capitalize(module2)}Signal${scanInfo.name !== "shared" && ["user", "setting", "summary"].includes(module2) ? `, { overwrite: root.${module2} }` : ""});`).join("\n")}
|
|
45
58
|
|
|
46
59
|
export const fetch = makeFetch(...libFetches, {
|
|
47
|
-
${databaseModules.map((module2) => `...${module2}
|
|
48
|
-
${scalarConstantModules.map((module2) => `...scalarUtilOf(cnst.${module2}Cnst),`).join("\n")}
|
|
60
|
+
${databaseModules.map((module2) => `...${module2},`).join("\n")}
|
|
49
61
|
${serviceModules.map((module2) => `...fetchOf(${capitalize(module2)}Signal),`).join("\n")}
|
|
50
|
-
${databaseModules.map((module2) => `${module2}Gql,`).join("\n")}
|
|
51
62
|
});
|
|
52
63
|
`;
|
|
53
64
|
}
|
|
@@ -29,8 +29,9 @@ function getContent(scanInfo, dict = {}) {
|
|
|
29
29
|
const databaseModules = [...scanInfo.database.entries()].filter(([_, files]) => files.has("service")).map(([module2]) => module2);
|
|
30
30
|
const serviceModules = [...scanInfo.service.entries()].filter(([_, files]) => files.has("service")).map(([module2]) => module2);
|
|
31
31
|
return `
|
|
32
|
-
import { GetServices } from "@akanjs/service";
|
|
32
|
+
import { GetServices, ServiceModule, serviceInfo } from "@akanjs/service";
|
|
33
33
|
|
|
34
|
+
import * as cnst from "./cnst";
|
|
34
35
|
import { libAllSrvs } from "./__lib/lib.service";
|
|
35
36
|
${databaseModules.map((module2) => `import { ${capitalize(module2)}Service } from "./${module2}/${module2}.service";`).join("\n")}
|
|
36
37
|
${serviceModules.map((module2) => `import { ${capitalize(module2)}Service } from "./_${module2}/${module2}.service";`).join("\n")}
|
|
@@ -39,11 +40,11 @@ export * from "./__lib/lib.service";
|
|
|
39
40
|
${databaseModules.map((module2) => `export { ${capitalize(module2)}Service } from "./${module2}/${module2}.service";`).join("\n")}
|
|
40
41
|
${serviceModules.map((module2) => `export { ${capitalize(module2)}Service } from "./_${module2}/${module2}.service";`).join("\n")}
|
|
41
42
|
|
|
42
|
-
export const
|
|
43
|
-
...libAllSrvs,
|
|
43
|
+
export const srvs = serviceInfo.registerServices({
|
|
44
44
|
${[...databaseModules, ...serviceModules].map((module2) => `${capitalize(module2)}Service`).join(",\n ")}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export
|
|
45
|
+
});
|
|
46
|
+
export const allSrvs = { ...libAllSrvs, ...srvs } as const;
|
|
47
|
+
${databaseModules.map((module2) => `export const ${module2} = new ServiceModule("${module2}" as const, { ${capitalize(module2)}Service }, cnst.${module2});`).join("\n")}
|
|
48
|
+
${serviceModules.map((module2) => `export const ${module2} = new ServiceModule("${module2}" as const, { ${capitalize(module2)}Service });`).join("\n")}
|
|
48
49
|
`;
|
|
49
50
|
}
|