@akanjs/cli 0.0.40 → 0.0.42
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/index.d.ts +2 -2
- package/index.js +3787 -3286
- package/package.json +33 -2
- package/src/application/application.command.d.ts +26 -0
- package/src/application/application.prompt.d.ts +2 -0
- package/src/application/application.runner.d.ts +35 -0
- package/src/application/application.script.d.ts +36 -0
- package/src/cloud/cloud.command.d.ts +8 -0
- package/src/cloud/cloud.runner.d.ts +7 -0
- package/src/cloud/cloud.script.d.ts +7 -0
- package/src/library/library.command.d.ts +8 -0
- package/src/library/library.runner.d.ts +4 -0
- package/src/library/library.script.d.ts +8 -0
- package/src/module/module.command.d.ts +13 -0
- package/src/module/module.prompt.d.ts +15 -0
- package/src/module/module.runner.d.ts +17 -0
- package/src/module/module.script.d.ts +11 -0
- package/src/package/package.command.d.ts +9 -0
- package/src/package/package.runner.d.ts +6 -0
- package/src/package/package.script.d.ts +7 -0
- package/src/package/page/page.command.d.ts +6 -0
- package/src/package/page/page.runner.d.ts +4 -0
- package/src/package/page/page.script.d.ts +5 -0
- package/src/workspace/workspace.command.d.ts +8 -0
- package/src/workspace/workspace.runner.d.ts +6 -0
- package/src/workspace/workspace.script.d.ts +7 -0
- package/src/templates/__scalar/__model__/__model__.constant.js +0 -34
- package/src/templates/__scalar/__model__/__model__.dictionary.js +0 -45
- package/src/templates/__scalar/__model__/__model__.document.js +0 -32
- package/src/templates/app/akan.config.ts.template +0 -5
- package/src/templates/app/app/[lang]/(__appName__)/(public)/forgotpassword/page.js +0 -43
- package/src/templates/app/app/[lang]/(__appName__)/(public)/page.js +0 -44
- package/src/templates/app/app/[lang]/(__appName__)/(public)/privacy/page.js +0 -38
- package/src/templates/app/app/[lang]/(__appName__)/(public)/signin/page.js +0 -46
- package/src/templates/app/app/[lang]/(__appName__)/(public)/termsofservice/page.js +0 -37
- package/src/templates/app/app/[lang]/(__appName__)/(user)/layout.js +0 -39
- package/src/templates/app/app/[lang]/(__appName__)/(user)/self/page.js +0 -56
- package/src/templates/app/app/[lang]/(__appName__)/layout.js +0 -48
- package/src/templates/app/app/[lang]/admin/layout.js +0 -49
- package/src/templates/app/app/[lang]/admin/page.js +0 -59
- package/src/templates/app/app/csr.js +0 -30
- package/src/templates/app/app/index.html.template +0 -13
- package/src/templates/app/app/layout.js +0 -34
- package/src/templates/app/app/robots.js +0 -39
- package/src/templates/app/app/sitemap.js +0 -35
- package/src/templates/app/base/baseLogic.js +0 -34
- package/src/templates/app/base/index.js +0 -28
- package/src/templates/app/capacitor.config.ts.template +0 -8
- package/src/templates/app/common/commonLogic.js +0 -34
- package/src/templates/app/common/index.js +0 -28
- package/src/templates/app/env/env.client.js +0 -37
- package/src/templates/app/env/env.client.type.js +0 -34
- package/src/templates/app/env/env.server.js +0 -37
- package/src/templates/app/jest.config.js +0 -35
- package/src/templates/app/lib/___appName__/__appName__.dictionary.js +0 -30
- package/src/templates/app/lib/___appName__/__appName__.service.js +0 -41
- package/src/templates/app/lib/___appName__/__appName__.store.js +0 -35
- package/src/templates/app/lib/___appName__/_server.js +0 -33
- package/src/templates/app/lib/option.js +0 -41
- package/src/templates/app/lib/setting/Setting.Template.js +0 -53
- package/src/templates/app/lib/setting/Setting.Unit.js +0 -34
- package/src/templates/app/lib/setting/Setting.Util.js +0 -30
- package/src/templates/app/lib/setting/Setting.View.js +0 -47
- package/src/templates/app/lib/setting/Setting.Zone.js +0 -76
- package/src/templates/app/lib/setting/_server.js +0 -47
- package/src/templates/app/lib/setting/index.js +0 -57
- package/src/templates/app/lib/setting/setting.constant.js +0 -45
- package/src/templates/app/lib/setting/setting.dictionary.js +0 -45
- package/src/templates/app/lib/setting/setting.document.js +0 -47
- package/src/templates/app/lib/setting/setting.service.js +0 -36
- package/src/templates/app/lib/setting/setting.signal.js +0 -33
- package/src/templates/app/lib/setting/setting.store.js +0 -40
- package/src/templates/app/lib/summary/Summary.Template.js +0 -39
- package/src/templates/app/lib/summary/Summary.Unit.js +0 -34
- package/src/templates/app/lib/summary/Summary.Util.js +0 -29
- package/src/templates/app/lib/summary/Summary.View.js +0 -47
- package/src/templates/app/lib/summary/Summary.Zone.js +0 -58
- package/src/templates/app/lib/summary/_server.js +0 -47
- package/src/templates/app/lib/summary/index.js +0 -63
- package/src/templates/app/lib/summary/summary.constant.js +0 -43
- package/src/templates/app/lib/summary/summary.dictionary.js +0 -48
- package/src/templates/app/lib/summary/summary.document.js +0 -47
- package/src/templates/app/lib/summary/summary.service.js +0 -33
- package/src/templates/app/lib/summary/summary.signal.js +0 -33
- package/src/templates/app/lib/summary/summary.store.js +0 -40
- package/src/templates/app/lib/user/User.Template.js +0 -61
- package/src/templates/app/lib/user/User.Unit.js +0 -34
- package/src/templates/app/lib/user/User.Util.js +0 -90
- package/src/templates/app/lib/user/User.View.js +0 -62
- package/src/templates/app/lib/user/User.Zone.js +0 -70
- package/src/templates/app/lib/user/_server.js +0 -47
- package/src/templates/app/lib/user/index.js +0 -57
- package/src/templates/app/lib/user/user.constant.js +0 -66
- package/src/templates/app/lib/user/user.dictionary.js +0 -51
- package/src/templates/app/lib/user/user.document.js +0 -53
- package/src/templates/app/lib/user/user.service.js +0 -41
- package/src/templates/app/lib/user/user.signal.js +0 -33
- package/src/templates/app/lib/user/user.signal.spec.js +0 -36
- package/src/templates/app/lib/user/user.signal.test.js +0 -38
- package/src/templates/app/lib/user/user.store.js +0 -38
- package/src/templates/app/main.js +0 -39
- package/src/templates/app/middleware.js +0 -34
- package/src/templates/app/nest/backendLogic.js +0 -33
- package/src/templates/app/nest/index.js +0 -28
- package/src/templates/app/next/frontendLogic.js +0 -33
- package/src/templates/app/next/index.js +0 -28
- package/src/templates/app/page.test.ts.template +0 -10
- package/src/templates/app/playwright.config.ts.template +0 -6
- package/src/templates/app/postcss.config.js.template +0 -10
- package/src/templates/app/public/favicon.ico +0 -0
- package/src/templates/app/public/icons/icon-128x128.png +0 -0
- package/src/templates/app/public/icons/icon-144x144.png +0 -0
- package/src/templates/app/public/icons/icon-152x152.png +0 -0
- package/src/templates/app/public/icons/icon-192x192.png +0 -0
- package/src/templates/app/public/icons/icon-256x256.png +0 -0
- package/src/templates/app/public/icons/icon-384x384.png +0 -0
- package/src/templates/app/public/icons/icon-48x48.png +0 -0
- package/src/templates/app/public/icons/icon-512x512.png +0 -0
- package/src/templates/app/public/icons/icon-72x72.png +0 -0
- package/src/templates/app/public/icons/icon-96x96.png +0 -0
- package/src/templates/app/public/logo.svg +0 -70
- package/src/templates/app/public/manifest.json.template +0 -67
- package/src/templates/app/tsconfig.json.template +0 -22
- package/src/templates/app/tsconfig.spec.json.template +0 -7
- package/src/templates/app/ui/Footer.js +0 -63
- package/src/templates/app/ui/MainHeader.js +0 -127
- package/src/templates/app/ui/index.js +0 -29
- package/src/templates/client.js +0 -41
- package/src/templates/crudPages/[__model__Id]/edit/page.js +0 -69
- package/src/templates/crudPages/[__model__Id]/page.js +0 -79
- package/src/templates/crudPages/new/page.js +0 -66
- package/src/templates/crudPages/page.js +0 -67
- package/src/templates/index.js +0 -30
- package/src/templates/lib/__lib/extends/summary.constant.js +0 -42
- package/src/templates/lib/__lib/lib.constant.js +0 -52
- package/src/templates/lib/__lib/lib.dictionary.js +0 -41
- package/src/templates/lib/__lib/lib.document.js +0 -40
- package/src/templates/lib/__lib/lib.service.js +0 -82
- package/src/templates/lib/__lib/lib.signal.js +0 -35
- package/src/templates/lib/__lib/lib.store.js +0 -33
- package/src/templates/lib/__scalar/_server.js +0 -38
- package/src/templates/lib/cnst.js +0 -31
- package/src/templates/lib/cnst_.js +0 -50
- package/src/templates/lib/db.js +0 -52
- package/src/templates/lib/dict.js +0 -44
- package/src/templates/lib/fetch.js +0 -47
- package/src/templates/lib/sig.js +0 -36
- package/src/templates/lib/srv.js +0 -51
- package/src/templates/lib/st.js +0 -35
- package/src/templates/lib/store.js +0 -51
- package/src/templates/lib/usePage.js +0 -32
- package/src/templates/libRoot/.gitignore.template +0 -15
- package/src/templates/libRoot/jest.config.js +0 -35
- package/src/templates/libRoot/package.json.template +0 -5
- package/src/templates/libRoot/tsconfig.json.template +0 -11
- package/src/templates/libRoot/tsconfig.spec.json.template +0 -7
- package/src/templates/module/__Model__.Template.js +0 -50
- package/src/templates/module/__Model__.Unit.js +0 -38
- package/src/templates/module/__Model__.Util.js +0 -66
- package/src/templates/module/__Model__.View.js +0 -44
- package/src/templates/module/__Model__.Zone.js +0 -79
- package/src/templates/module/__model__.constant.js +0 -68
- package/src/templates/module/__model__.dictionary.js +0 -97
- package/src/templates/module/__model__.document.js +0 -52
- package/src/templates/module/__model__.service.js +0 -40
- package/src/templates/module/__model__.signal.js +0 -59
- package/src/templates/module/__model__.signal.spec.js +0 -38
- package/src/templates/module/__model__.signal.test.js +0 -47
- package/src/templates/module/__model__.store.js +0 -38
- package/src/templates/module/_server.js +0 -46
- package/src/templates/module/index.js +0 -57
- package/src/templates/pkgRoot/tsconfig.json.template +0 -12
- package/src/templates/server.js +0 -58
- package/src/templates/workplaceRoot/.env.template +0 -20
- package/src/templates/workplaceRoot/.gitignore.template +0 -195
- package/src/templates/workplaceRoot/.prettierignore.template +0 -10
- package/src/templates/workplaceRoot/.prettierrc.json.template +0 -5
- package/src/templates/workplaceRoot/.swcrc.template +0 -9
- package/src/templates/workplaceRoot/README.md.template +0 -37
- package/src/templates/workplaceRoot/eslint.config.js.template +0 -141
- package/src/templates/workplaceRoot/tsconfig.json.template +0 -29
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "commonjs",
|
|
3
3
|
"name": "@akanjs/cli",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.42",
|
|
5
5
|
"bin": {
|
|
6
6
|
"akan": "index.js"
|
|
7
7
|
},
|
|
@@ -17,5 +17,36 @@
|
|
|
17
17
|
"engines": {
|
|
18
18
|
"node": ">=22"
|
|
19
19
|
},
|
|
20
|
-
"dependencies": {
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@inquirer/prompts": "^7.2.1",
|
|
22
|
+
"@langchain/core": "^0.3.27",
|
|
23
|
+
"@langchain/openai": "^0.3.16",
|
|
24
|
+
"@next/bundle-analyzer": "^15.1.3",
|
|
25
|
+
"@nx/devkit": "^20.7.2",
|
|
26
|
+
"@trapezedev/project": "^7.1.3",
|
|
27
|
+
"@vitejs/plugin-react": "^4.4.1",
|
|
28
|
+
"axios": "^1.7.9",
|
|
29
|
+
"chalk": "^5.4.1",
|
|
30
|
+
"commander": "^13.1.0",
|
|
31
|
+
"dayjs": "^1.11.13",
|
|
32
|
+
"dotenv": "^16.4.7",
|
|
33
|
+
"esbuild": "^0.19.2",
|
|
34
|
+
"esbuild-plugin-d.ts": "^1.3.1",
|
|
35
|
+
"form-data": "^4.0.1",
|
|
36
|
+
"js-yaml": "^4.1.0",
|
|
37
|
+
"latest-version": "^9.0.0",
|
|
38
|
+
"lodash": "^4.17.21",
|
|
39
|
+
"next-pwa": "^5.6.0",
|
|
40
|
+
"open": "^10.1.1",
|
|
41
|
+
"ora": "^3.4.0",
|
|
42
|
+
"pluralize": "^8.0.0",
|
|
43
|
+
"qrcode": "^1.5.4",
|
|
44
|
+
"reflect-metadata": "^0.2.2",
|
|
45
|
+
"tunnel-ssh": "^5.2.0",
|
|
46
|
+
"typescript": "^5.8.3",
|
|
47
|
+
"uuid": "^11.0.3",
|
|
48
|
+
"vite": "^6.3.4",
|
|
49
|
+
"vite-plugin-node-polyfills": "^0.23.0",
|
|
50
|
+
"vite-tsconfig-paths": "^5.1.4"
|
|
51
|
+
}
|
|
21
52
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { App, Workspace } from "@akanjs/devkit";
|
|
2
|
+
import { ApplicationScript } from "./application.script";
|
|
3
|
+
export declare class ApplicationCommand {
|
|
4
|
+
applicationScript: ApplicationScript;
|
|
5
|
+
createApplication(name: string, workspace: Workspace): Promise<void>;
|
|
6
|
+
removeApplication(app: App, workspace: Workspace): Promise<void>;
|
|
7
|
+
scanApplication(app: App): Promise<void>;
|
|
8
|
+
build(app: App): Promise<void>;
|
|
9
|
+
buildBackend(app: App): Promise<void>;
|
|
10
|
+
buildFrontend(app: App): Promise<void>;
|
|
11
|
+
buildCsr(app: App): Promise<void>;
|
|
12
|
+
buildIos(app: App): Promise<void>;
|
|
13
|
+
buildAndroid(app: App): Promise<void>;
|
|
14
|
+
serve(app: App): Promise<void>;
|
|
15
|
+
serveBackend(app: App): Promise<void>;
|
|
16
|
+
serveFrontend(app: App): Promise<void>;
|
|
17
|
+
serveCsr(app: App): Promise<void>;
|
|
18
|
+
serveIos(app: App, open: boolean, release: boolean): Promise<void>;
|
|
19
|
+
serveAndroid(app: App, open: boolean, release: boolean): Promise<void>;
|
|
20
|
+
releaseIos(app: App): Promise<void>;
|
|
21
|
+
releaseAndroid(app: App): Promise<void>;
|
|
22
|
+
releaseSource(app: App, rebuild: boolean, buildNum: number, environment: string, local: boolean): Promise<void>;
|
|
23
|
+
dumpDatabase(app: App, environment: string): Promise<void>;
|
|
24
|
+
restoreDatabase(app: App, source: string, target: string): Promise<void>;
|
|
25
|
+
configureApp(app: App): Promise<void>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const requestApplication: () => string;
|
|
2
|
+
export declare const indexPagePrompt = "\uB0B4\uAC00 \uC0AC\uC804\uC5D0 \uC124\uBA85\uD55C index \uD398\uC774\uC9C0 \uD15C\uD50C\uB9BF\uC744 \uC55E\uC11C \uC124\uBA85\uD55C \uD504\uB85C\uC81D\uD2B8\uBA85\uACFC \uD504\uB85C\uC81D\uD2B8 \uC124\uBA85\uC5D0 \uB9DE\uAC8C\uB054 \uB9CC\uB4E4\uC5B4\uC918.";
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { App, DistAppExecutor, type Workspace } from "@akanjs/devkit";
|
|
2
|
+
export interface ReleaseSourceOptions {
|
|
3
|
+
rebuild?: boolean;
|
|
4
|
+
buildNum?: number;
|
|
5
|
+
environment?: string;
|
|
6
|
+
local?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare class ApplicationRunner {
|
|
9
|
+
#private;
|
|
10
|
+
scanSync(app: App): Promise<import("@akanjs/config").AppScanResult | import("@akanjs/config").LibScanResult>;
|
|
11
|
+
buildBackend(app: App, distApp: DistAppExecutor): Promise<void>;
|
|
12
|
+
serveBackend(app: App, distApp: DistAppExecutor): Promise<void>;
|
|
13
|
+
buildFrontend(app: App, distApp: DistAppExecutor): Promise<void>;
|
|
14
|
+
serveFrontend(app: App, distApp: DistAppExecutor): Promise<void>;
|
|
15
|
+
buildCsr(app: App, distApp: DistAppExecutor): Promise<void>;
|
|
16
|
+
serveCsr(app: App, distApp: DistAppExecutor): Promise<void>;
|
|
17
|
+
buildIos(app: App): Promise<void>;
|
|
18
|
+
serveIos(app: App, { open, operation }?: {
|
|
19
|
+
open?: boolean;
|
|
20
|
+
operation?: "local" | "release";
|
|
21
|
+
}): Promise<void>;
|
|
22
|
+
releaseIos(app: App): Promise<void>;
|
|
23
|
+
buildAndroid(app: App): Promise<void>;
|
|
24
|
+
serveAndroid(app: App, { open, operation }?: {
|
|
25
|
+
open?: boolean;
|
|
26
|
+
operation?: "local" | "release";
|
|
27
|
+
}): Promise<void>;
|
|
28
|
+
releaseAndroid(app: App): Promise<void>;
|
|
29
|
+
dumpDatabase(app: App, environment: string): Promise<void>;
|
|
30
|
+
restoreDatabase(app: App, source: string, target: string): Promise<void>;
|
|
31
|
+
configureApp(app: App): Promise<void>;
|
|
32
|
+
releaseSource(app: App, { rebuild, buildNum, environment, local }?: ReleaseSourceOptions): Promise<void>;
|
|
33
|
+
createApplicationTemplate(workspace: Workspace, appName: string): Promise<void>;
|
|
34
|
+
generateApplicationTemplate(app: App): Promise<void>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { App } from "@akanjs/devkit";
|
|
2
|
+
import { DistAppExecutor } from "@akanjs/devkit";
|
|
3
|
+
import { LibraryScript } from "../library/library.script";
|
|
4
|
+
import { type ReleaseSourceOptions } from "./application.runner";
|
|
5
|
+
export declare class ApplicationScript {
|
|
6
|
+
#private;
|
|
7
|
+
libraryScript: LibraryScript;
|
|
8
|
+
scanApplication(app: App): Promise<void>;
|
|
9
|
+
syncApplication(app: App, { recursive }?: {
|
|
10
|
+
recursive?: boolean;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
build(app: App, distApp?: DistAppExecutor): Promise<void>;
|
|
13
|
+
serve(app: App, distApp?: DistAppExecutor): Promise<void>;
|
|
14
|
+
buildBackend(app: App, distApp?: DistAppExecutor): Promise<void>;
|
|
15
|
+
serveBackend(app: App, distApp?: DistAppExecutor): Promise<void>;
|
|
16
|
+
buildFrontend(app: App, distApp?: DistAppExecutor): Promise<void>;
|
|
17
|
+
serveFrontend(app: App, distApp?: DistAppExecutor): Promise<void>;
|
|
18
|
+
buildCsr(app: App, distApp?: DistAppExecutor): Promise<void>;
|
|
19
|
+
serveCsr(app: App, distApp?: DistAppExecutor): Promise<void>;
|
|
20
|
+
buildIos(app: App): Promise<void>;
|
|
21
|
+
serveIos(app: App, { open, operation }?: {
|
|
22
|
+
open?: boolean;
|
|
23
|
+
operation?: "local" | "release";
|
|
24
|
+
}): Promise<void>;
|
|
25
|
+
releaseIos(app: App): Promise<void>;
|
|
26
|
+
buildAndroid(app: App): Promise<void>;
|
|
27
|
+
serveAndroid(app: App, { open, operation }?: {
|
|
28
|
+
open?: boolean;
|
|
29
|
+
operation?: "local" | "release";
|
|
30
|
+
}): Promise<void>;
|
|
31
|
+
releaseAndroid(app: App): Promise<void>;
|
|
32
|
+
dumpDatabase(app: App, environment: string): Promise<void>;
|
|
33
|
+
restoreDatabase(app: App, source: string, target: string): Promise<void>;
|
|
34
|
+
configureApp(app: App): Promise<void>;
|
|
35
|
+
releaseSource(app: App, options: ReleaseSourceOptions): Promise<void>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Lib, Workspace } from "@akanjs/devkit";
|
|
2
|
+
export declare class LibraryCommand {
|
|
3
|
+
createLibrary(name: string, workspace: Workspace): Promise<void>;
|
|
4
|
+
removeLibrary(lib: Lib, workspace: Workspace): Promise<void>;
|
|
5
|
+
scanLibrary(lib: Lib): Promise<void>;
|
|
6
|
+
buildLibrary(lib: Lib): Promise<void>;
|
|
7
|
+
pushLibrary(lib: Lib): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Sys, Workspace } from "@akanjs/devkit";
|
|
2
|
+
import { ModuleScript } from "./module.script";
|
|
3
|
+
export declare class ModuleCommand {
|
|
4
|
+
moduleScript: ModuleScript;
|
|
5
|
+
createModule(name: string, workspace: Workspace): Promise<void>;
|
|
6
|
+
removeModule(name: string, workspace: Workspace): Promise<void>;
|
|
7
|
+
scanModule(name: string, workspace: Workspace): Promise<void>;
|
|
8
|
+
createScalar(sys: Sys, name: string, workspace: Workspace): Promise<void>;
|
|
9
|
+
createService(name: string, workspace: Workspace): Promise<void>;
|
|
10
|
+
createTest(name: string, workspace: Workspace): Promise<void>;
|
|
11
|
+
createView(name: string, workspace: Workspace): Promise<void>;
|
|
12
|
+
createUnit(name: string, workspace: Workspace): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const frameworkDescription = "\uB098\uB294 \uC880 \uB354 \uD6A8\uC728\uC801\uC73C\uB85C \uCF54\uB529\uC744 \uD558\uAE30 \uC704\uD574\uC11C \uC790\uCCB4 \uD504\uB808\uC784\uC6CC\uD06C\uB97C \uC81C\uC791\uD588\uC5B4. \uADF8\uB798\uC11C \uC6B0\uB9AC \uD504\uB808\uC784\uC6CC\uD06C\uC5D0 \uB300\uD55C \uC124\uBA85\uC744 \uD574\uC904\uD14C\uB2C8\uAE4C \uC798 \uC774\uD574\uD558\uB3C4\uB85D \uD574. \uC6B0\uB9AC \uD504\uB808\uC784\uC6CC\uD06C\uB294 next.js 13\uACFC nest.js, capacitor.js, nx, mongoDB \uAE30\uBC18\uC758 \uD504\uB860\uD2B8\uC5D4\uB4DC, \uC571, \uBC31\uC5D4\uB4DC \uD1B5\uD569 \uD504\uB808\uC784\uC6CC\uD06C\uC57C. \uADF8\uB798\uC11C \uBC31\uC5D4\uB4DC, \uD504\uB860\uD2B8\uC5D4\uB4DC, DB Schema\uC5D0 \uB300\uD55C \uCF54\uB4DC\uAC00 \uBAA8\uB450 \uD55C \uD3F4\uB354 \uC548\uC5D0 \uC788\uC5B4. \uADF8\uB798\uC11C \uC790\uBC14\uC2A4\uD06C\uB9BD\uD2B8, \uD0C0\uC785\uC2A4\uD06C\uB9BD\uD2B8, \uADF8\uB9AC\uACE0 \uD504\uB808\uC784\uC6CC\uD06C\uC5D0 \uB300\uD55C \uC774\uD574\uB9CC \uC788\uB2E4\uBA74 \uAD6C\uBD84\uC9D3\uC9C0 \uC54A\uACE0 \uC0AC\uC6A9\uD560 \uC218 \uC788\uB2E4\uB294 \uC7A5\uC810\uC774 \uC788\uC5B4. \n\n\uAC00\uC7A5 \uC678\uBD80\uC758 \uAD6C\uC870\uB294\n- app\n\t- project1\n\t- project2\n\t- project3\n\t- project4\n- lib\n\t- core\n\t- external\n\t- game\n\t- mint\n\t- platform\n\t- shared\n\t- social\n\t- util\napp\uC740 \uAC01 \uD504\uB85C\uC81D\uD2B8\uB97C \uB9CC\uB4DC\uB294 \uACF3\uC774\uC57C\nlib \uD558\uC704 \uD3F4\uB354\uB4E4\uC740 \uC5EC\uB7EC \uD504\uB85C\uC81D\uD2B8\uC5D0\uC11C \uACF5\uC6A9\uC73C\uB85C \uC0AC\uC6A9\uD560 \uC218 \uC788\uACA0\uB2E4 \uB77C\uACE0 \uD310\uB2E8\uD574\uC11C \uBD84\uB9AC\uD574\uB193\uC740 \uACF3\uC774\uC57C.\n\uB2E4\uC74C\uC740 app/project \uB0B4\uBD80\uC758 \uAD6C\uC870\uB97C \uC54C\uB824\uC904\uAC8C.\n\nproject\n- app\n\t- [lang]\n\t\t- (projectName)\n\t\t\t- (user)\n\t\t\t\t- page.tsx\n\t\t\t\t- layout.tsx\n\t\t\t- (public)\n\t\t\t\t- page.tsx\n\t\t\t\t- layout.tsx\n\t\t\t- (admin)\n\t\t\t\t- page.tsx\n\t\t\t\t- layout.tsx\n\n- lib \n\t- dataName1\n\t- dataName2\n\t- dataName3\n\t- dataName4\n\t- dataName5\n\t- dataName6\n\t- dataName7\n\napp\uC740 \uC9C1\uC811\uC801\uC73C\uB85C \uC720\uC800\uAC00 \uBCF4\uB294 \uD398\uC774\uC9C0\uB97C \uC9DC\uB294 \uACF3\uC774\uC57C. \uD3F4\uB354 \uAD6C\uC870\uB294 next 13\uC758 app directory\uB97C \uB530\uB974\uACE0 \uC788\uC5B4.\npublic/page.tsx\uAC00 \uAC00\uC7A5 \uCD5C\uCD08\uB85C \uC811\uADFC\uB418\uB294 Index \uD398\uC774\uC9C0\uAC00 \uB420 \uAC70\uC57C.\n\uC544\uB798\uB294 public/page.tsx\uC758 \uAE30\uBCF8 \uD15C\uD50C\uB9BF \uC18C\uC2A4\uCF54\uB4DC\uC57C.\n```\nimport {{ Image, Link }} from \"@util/ui\";\nimport {{ getSelf }} from \"@akanjs/client\";\n\nexport default function Page() {{\n const self = getSelf();\n return (\n <div className=\"relative w-full h-screen overflow-hidden flex items-center justify-center\">\n <Image\n className=\"absolute left-0 right-0 top-0 bottom-0 w-full h-screen -z-50\"\n width={{1920}}\n height={{1080}}\n src=\"/back.jpg\"\n />\n <div className=\"max-w-md bg-base-100/50 shadow-lg rounded-xl backdrop-blur-xs w-full py-8 px-16 flex flex-col items-center justify-center gap-3\">\n <h1 className=\"text-4xl mt-2\"><%= project %></h1>\n <h2 className=\"text-lg\"><%= project %> description</h2>\n <Link className=\"w-full\" href={{self ? \"/home\" : \"/signin\"}}>\n <button className=\"btn w-full btn-primary\">Go to dashboard</button>\n </Link>\n </div>\n </div>\n );\n}}\n```\n\nlib\uC740 \uC11C\uBE44\uC2A4\uB97C \uB9CC\uB4E4\uB2E4\uBCF4\uBA74 \uD544\uC694\uD55C \uB370\uC774\uD130\uB97C \uC815\uC758\uD558\uB294 \uACF3\uC774\uC57C.\n\uB530\uB77C\uC11C dataName\uC740 DB\uC774\uB984. \uC989 \uB370\uC774\uD130\uBA85\uC744 \uB530\uB77C. \uB2E4\uB9CC \uD3F4\uB354 \uB0B4\uBD80\uC5D0\uB294 backend, Frontend\uC5D0\uC11C \uD1B5\uD569\uC73C\uB85C \uC4F0\uB294 \uC18C\uC2A4\uCF54\uB4DC\uB4E4\uC774 \uC788\uC5B4.\n\n\uC6B0\uB9AC \uD504\uB808\uC784\uC6CC\uD06C\uC758 \uD575\uC2EC\uC740 \uC815\uC758\uD55C \uBA54\uD0C0\uB370\uC774\uD130\uB4E4\uC744 \uC774\uC6A9\uD574\uC11C \uAC01 \uB370\uC774\uD130\uAC04\uC758 \uC5F0\uAD00\uC810\uC774\uB098, \uB370\uC774\uD130 \uD0C0\uC785\uC744 \uBCF4\uACE0 \uBBF8\uB9AC \uC815\uB9AC\uB41C \uACB0\uACFC\uB97C \uB9CC\uB4E4\uC5B4\uC8FC\uACE0 \uD504\uB85C\uC81D\uD2B8\uB97C \uB9CC\uB4E0\uB2E4\uBA74 \uAC70\uC758 \uBAA8\uB450 \uD544\uC694\uD55C \uC791\uC5C5\uB4E4\uC744 \uBBF8\uB9AC \uC815\uB9AC\uD574\uB1A8\uC5B4. \uC608\uB97C \uB4E4\uC5B4 \uB370\uC774\uD130 \uD0C0\uC785\uC5D0 \uC774\uBBF8\uC9C0 \uD30C\uC77C\uC774 \uC788\uB2E4\uACE0 \uD55C\uB2E4\uBA74 \uBC31\uC5D4\uB4DC\uB97C \uD1B5\uD574 \uADF8 \uC774\uBBF8\uC9C0\uB97C \uC11C\uBC84\uC758 \uC2A4\uD1A0\uB9AC\uC9C0\uC5D0 \uC800\uC7A5\uD558\uACE0 \uADF8 \uC800\uC7A5\uB41C \uD30C\uC77C\uC744 \uD2B9\uC815 db\uC5D0 id\uB97C \uCD94\uAC00\uD574\uC8FC\uB294 \uD568\uC218\uB4E4 \uAC19\uC740 \uAC83\uB4E4\uC740 \uC5B4\uB290 \uD504\uB85C\uC81D\uD2B8\uB358 \uAC04\uC5D0 \uBAA8\uB450 \uC0AC\uC6A9\uB418\uB294 \uBC29\uC2DD\uC774\uB77C\uACE0 \uD310\uB2E8\uD588\uC5B4. \uD558\uC9C0\uB9CC \uC6B0\uB9AC\uB294 \uD504\uB85C\uC81D\uD2B8\uB97C \uC791\uC5C5\uD560 \uB54C\uB9C8\uB2E4 \uC774 \uBD88\uD544\uC694\uD55C \uC791\uC5C5\uB4E4\uC744 \uD56D\uC0C1 \uB9CC\uB4E4\uACE0 \uD14C\uC2A4\uD2B8\uB97C\uD558\uB294 \uBD88\uD544\uC694\uD55C \uC77C\uB4E4\uC744 \uD558\uACE0\uC788\uC9C0. \uADF8\uB798\uC11C \uC6B0\uB9AC\uB294 \uAC01 \uD504\uB85C\uC81D\uD2B8\uAC00 \uB9CC\uB4E4 \uB54C\uB9C8\uB2E4 \uD544\uC218\uB85C \uC788\uC5B4\uC57C\uD560 \uC774\uBBF8\uC9C0 \uC5C5\uB85C\uB4DC \uD504\uB85C\uC138\uC2A4\uB97C \uD504\uB808\uC784\uC6CC\uD06C\uB97C \uD1B5\uD574 \uBBF8\uB9AC \uC815\uC758\uB41C \uC0C1\uD0DC\uB85C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC5B4.\n\uACB0\uACFC\uC801\uC73C\uB85C \uC6B0\uB9B0 \uD544\uC694\uD558\uC9C0\uB9CC \uB9E4\uBC88 \uC791\uC5C5\uD558\uAE30\uC5D4 \uC190\uC774 \uB9CE\uC774\uAC00\uB294 \uC791\uC5C5\uB4E4\uC744 \uBBF8\uB9AC \uC815\uC758\uD574\uB1A8\uC5B4.\n\n\uB610\uD55C \uC6B0\uB9B0 Nx\uC5D0\uC11C \uC81C\uACF5\uD558\uB294 \uD15C\uD50C\uB9BF \uC81C\uC791 \uBB38\uBC95\uC744 \uC0AC\uC6A9\uD574\uC11C \uCEE4\uB9E8\uB4DC \uD55C \uC904\uB85C \uD2B9\uC815 \uD504\uB85C\uC81D\uD2B8 \uD3F4\uB354 \uD15C\uD50C\uB9BF\uC744 \uB9CC\uB4E4\uC5B4\uC8FC\uAC70\uB098, \uD2B9\uC815 \uBAA8\uB378\uC758 \uD544\uB4DC\uB4E4\uC744 \uB9CC\uB4E4 \uC218 \uC788\uB3C4\uB85D \uD574\uB1A8\uC5B4. Model\uC774\uB77C\uB294 \uBCC0\uC218\uC758 \uACB0\uACFC\uAC12\uC744 \uBC1B\uACE0 \uC800 \uD15C\uD50C\uB9BF\uC5D0 \uB9DE\uAC8C\uB054 \uC774\uB984\uC744 \uB123\uC5B4\uC8FC\uB294 \uAC70\uC9C0. \uB9CC\uC57D \uB0B4\uAC00 phone\uC774\uB77C\uB294 \uBCC0\uC218\uB97C \uB123\uC5C8\uB2E4\uBA74 \uC800 \uBAA8\uB378\uC5D0 Phone\uACFC \uAC19\uC740 \uACB0\uACFC\uAC12\uC73C\uB85C \uAC12\uC774 \uB4E4\uC5B4\uAC00\uAC8C \uB428\uC73C\uB85C\uC11C \uD15C\uD50C\uB9BF\uC774 \uC0DD\uC131\uB3FC. \uC774\uB294 \uC6B0\uB9AC\uAC00 \uC774\uBBF8 \uB9CC\uB4E4\uC5B4\uB193\uC740 \uCEE4\uB9E8\uB4DC\uAC00 \uC788\uC5B4.\n\n\uC608\uB97C \uB4E4\uC5B4 \uC5F0\uD544\uC774\uB77C\uB294 \uBAA8\uB378\uC744 \uCEE4\uB9E8\uB4DC\uB97C \uD1B5\uD574 \uC0DD\uC131\uD558\uBA74 \uC544\uB798\uC640 \uAC19\uC740 \uD30C\uC77C\uB4E4\uC774 \uC0DD\uC131\uB3FC.\n\npencil\n- pencil.constant.ts ( pencil\uC5D0 \uB300\uD55C db schema, query, sort \uAD6C\uBB38\uC744 \uC815\uC758 )\n- pencil.document.ts ( model\uC5D0\uC11C \uC790\uC8FC \uC0AC\uC6A9\uD558\uB294 method, static function, middleware\uB85C \uAC04\uB2E8\uD55C db \uAD00\uB9AC \uD568\uC218\uB4F1\uC744 \uAD00\uB9AC\uD568.)\n- pencil.dictionary.ts (\uB2E4\uAD6D\uC5B4\uB97C \uC704\uD574\uC11C schema field, enum, service name\uC758 \uB2E4\uAD6D\uC5B4 \uC815\uBCF4 \uB4F1\uC744 \uBAA8\uB450 \uAD00\uB9AC. )\n- pencil.signal.ts (frontend\uC758 fetch\uB97C \uC5F4\uC5B4\uC8FC\uB294 \uC77C\uC885\uC758 \uCC3D\uAD6C, \uAD8C\uD55C\uAD00\uB9AC\uB4F1\uC744 \uD568 nestjs\uC758 resolver\uC640 \uC720\uC0AC )\n- pencil.service.ts (\uC2E4\uC9C8\uC801\uC778 \uC11C\uBE44\uC2A4 \uCF54\uB4DC\uB97C \uC791\uC131\uD558\uB294 \uACF3. \uAC01\uC885 \uBE44\uC988\uB2C8\uC2A4 \uB85C\uC9C1\uC744 \uCC98\uB9AC\uD568.)\n- pencil.store.ts (pencil field\uC5D0 \uB300\uD55C \uC0C1\uD0DC\uAD00\uB9AC \uC800\uC7A5\uC18C.)\n- pencil.Zone.tsx (\uC544\uB798 Templete, Unit, Util, View, Util\uB4F1\uC744 \uC870\uD569\uD574\uC11C \uB2E4\uC74C \uB808\uBCA8 \uCEF4\uD3EC\uB10C\uD2B8\uB97C \uC791\uC131\uD558\uB294 \uACF3 )\n- pencil.Templete.tsx (\uC8FC\uB85C edit\uC5D0 \uC5F0\uAD00\uB41C \uCEF4\uD3EC\uB10C\uD2B8 \uC815\uC758\uD558\uB294 \uACF3 )\n- pencil.Unit.tsx (list \uCC98\uB7FC \uBCF5\uC218\uAC1C\uC758 \uCEF4\uD3EC\uB10C\uD2B8\uB97C \uC815\uC758\uD558\uB294 \uACF3 )\n- pencil.Util.tsx (Action \uBC84\uD2BC\uC744 \uC815\uC758\uD558\uB294 \uACF3 )\n- pencil.View.tsx (\uB2E8\uC77C view \uCEF4\uD3EC\uB10C\uD2B8\uB97C \uC815\uC758\uD558\uB294 \uACF3 )\n\n\n\uC5EC\uAE30\uC11C constant\uC5D0 \uC815\uC758 \uB418\uC5B4\uC788\uB294 schema\uB97C \uAE30\uBCF8\uC73C\uB85C \uD574\uC11C \uAC01 document, dictionary, signal, service, store\uB97C \uC0DD\uC131\uD574.\n\ndocument, signal, service\uB294 \uBC31\uC5D4\uB4DC\uC640 \uC5F0\uAD00\uB418\uC5B4\uC788\uB294 \uC18C\uC2A4\uCF54\uB4DC\uC57C.\n\uC11C\uB85C\uAC04\uC758 \uAD00\uACC4\uB294 \uC8FC\uB85C signal\uC5D0\uC11C \uAC00\uC7A5 \uBA3C\uC800 \uC694\uCCAD\uC744 \uBC1B\uACE0 \uC774\uD6C4 \uB85C\uC9C1\uC758 \uBCF5\uC7A1\uB3C4\uC5D0 \uB530\uB77C\uC11C service\uB85C \uCC98\uB9AC\uD560 \uC9C0, docuemnt\uB85C \uCC98\uB9AC\uD560 \uC9C0\uB97C \uACB0\uC815\uD574.\nsignal - document\nsignal - service - document\n\nstore\uB294 \uD504\uB860\uD2B8\uC5D4\uB4DC\uC5D0\uC11C \uC0C1\uD0DC\uAD00\uB9AC\uB97C \uD560 \uB54C \uC0AC\uC6A9\uB3FC.\n\uC6B0\uB9AC\uB294 signal\uC758 \uCF54\uB4DC\uB85C \uB098\uC628 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uC774\uC6A9\uD574\uC11C store\uC5D0\uC11C \uD754\uD788 \uC0AC\uC6A9\uB420\uB9CC\uD55C \uD568\uC218\uB4E4\uC744 \uBBF8\uB9AC \uC815\uC758\uD558\uAC8C\uB054 \uB9CC\uB4E4\uC5C8\uC5B4.\n\n\uC774\uB807\uAC8C 11\uAC1C\uC758 \uD30C\uC77C\uB85C \uAD6C\uBD84\uD574\uC11C \uC815\uC758\uAC00 \uB3FC. \uC544\uB798\uB294 \uAC01 \uD15C\uD50C\uB9BF \uBCC4\uB85C \uD30C\uC77C\uB9C8\uB2E4 \uC815\uC758\uB418\uC788\uB294 \uC18C\uC2A4\uCF54\uB4DC\uC57C.\n<%=model %> \uC774 \uBD80\uBD84\uC5D0 \uC6B0\uB9AC\uAC00 \uC785\uB825\uD55C \uBAA8\uB378\uC744 \uAE30\uBC18\uC73C\uB85C \uC0DD\uC131\uB418\uB294 \uAC70\uC9C0.\n\nconstant\uB294 \uAE30\uBCF8 \uC2A4\uD0A4\uB9C8\uAC00 \uAD6C\uC131\uB418\uB294 \uACF3\uC774\uC57C. \uADF8\uB798\uC11C \uC774 \uACF3\uC5D0\uC11C DB \uC2A4\uD0A4\uB9C8, \uCFFC\uB9AC, \uC815\uB82C \uAD6C\uBB38\uC744 \uC815\uC758\uD574.\n\uC8FC\uC758\uD574\uC57C\uD560 \uAC74 decorator\uC5D0\uC11C \uC815\uC758\uD558\uB294 \uD0C0\uC785\uACFC \uC544\uB798\uC5D0 \uC815\uC758\uD558\uB294 \uD0C0\uC785\uC774 \uC57D\uAC04 \uB2E4\uB97C \uC218 \uC788\uC5B4\n\uC608\uB97C \uB4E4\uC5B4 decorator\uC5D0\uC11C\uB294 Int\uB85C \uC815\uC758\uD558\uACE0 constant\uC5D0\uC11C\uB294 number\uB85C \uC815\uC758\uD574\uC57C\uD574.\n\uCD94\uAC00\uB85C createdAt\uACFC updatedAt, status\uB294 \uAE30\uBCF8\uC801\uC73C\uB85C \uC0DD\uC131\uB418\uB294 \uD544\uB4DC\uC774\uB2C8\uAE4C \uB530\uB85C \uC815\uC758\uD558\uC9C0 \uC54A\uC544\uB3C4 \uB3FC.\n\uC774\uB294 decorator\uC5D0\uC11C\uB294 GraphQL\uC5D0\uC11C \uC0AC\uC6A9\uD560 \uD0C0\uC785\uC744 \uC815\uC758\uD558\uACE0 constant\uC5D0\uC11C\uB294 \uC2E4\uC81C \uD0C0\uC785\uC744 \uC815\uC758\uD558\uB294 \uAC70\uC9C0.\nmodel.constant.ts\n```\nimport {{ BaseModel, Field, Full, Light, Model, baseQueries, baseSorts }} from \"@akanjs/constant\";\nimport {{ Int, Dayjs, dayjs }} from \"@akanjs/base\";\n\nexport const <%= model %>Statuses = [\"active\"] as const;\nexport type <%= Model %>Status = (typeof <%= model %>Statuses)[number];\n\n//\uB370\uC774\uD130\uB97C \uB9CC\uB4E4 \uB54C \uD544\uC694\uD55C \uB370\uC774\uD130 \uD0C0\uC785\uC744 \uC815\uC758\uD558\uB294 \uACF3\n@Model.Input(\"<%= Model %>Input\")\nexport class <%= Model %>Input {{\n @Field.Prop(() => String)\n field: string;\n\n @Field.Prop(() => Int, {{ nullable: true }})\n fieldInt: number | null;\n\n @Field.Prop(() => Date, {{default: dayjs()}})\n fieldInt: Dayjs;\n}}\n\n//\uB370\uC774\uD130\uAC00 \uB9CC\uB4E4\uC5B4\uC9C4 \uC774\uD6C4 \uC0DD\uC131\uB418\uAC70\uB098 \uC800\uC7A5\uC73C\uB85C \uCD94\uAC00\uD560 \uC218 \uC788\uB294 \uACF3\n@Model.Object(\"<%= Model %>Object\")\nexport class <%= Model %>Object extends BaseModel(<%= Model %>Input) {{\n @Field.Prop(() => String, {{ enum: <%= model %>Statuses, default: \"active\" }})\n status: <%= Model %>Status;\n}}\n\n//\uB370\uC774\uD130\uB97C \uB9AC\uC2A4\uD2B8\uB85C \uBCF4\uC5EC\uC904 \uB54C \uD544\uC694\uD55C \uB370\uC774\uD130\uB9CC \uC81C\uACF5\uD558\uB294 \uACF3\n@Model.Light(\"Light<%= Model %>\")\nexport class Light<%= Model %> extends Light(<%= Model %>Object, [\"field\", \"status\"] as const) {{}}\n\n//\uCD5C\uC885 \uB370\uC774\uD130\uC758 \uD0C0\uC785\uC774 \uC815\uC758\uB418\uB294 \uACF3\n@Model.Full(\"<%= Model %>\")\nexport class <%= Model %> extends Full(<%= Model %>Object, Light<%= Model %>) {{}}\n\n//\uB370\uC774\uD130\uC758 \uC778\uC0AC\uC774\uD2B8\uB97C \uCE21\uC815\uD558\uAE30 \uC704\uD574\uC11C \uD544\uC694\uD55C \uB370\uC774\uD130\uB97C \uC815\uC758\uD558\uB294 \uACF3\n@Model.Insight(\"<%= Model %>Insight\")\nexport class <%= Model %>Insight {{\n @Field.Prop(() => Int, {{ default: 0, accumulate: {{ $sum: 1 }} }})\n count: number;\n}}\n\n//\uB370\uC774\uD130\uC758 \uD1B5\uACC4\uB97C \uACC4\uC0B0\uD558\uB294 \uACF3\n@Model.Summary(\"<%= Model %>Summary\")\nexport class <%= Model %>Summary {{\n @Field.Prop(() => Int, {{ min: 0, default: 0, query: {{ status: {{}} }} }})\n total<%= Model %>: number;\n}}\n\n//\uB370\uC774\uD130\uB97C \uC870\uD68C\uD560 \uB54C \uD544\uC694\uD55C \uCFFC\uB9AC\uB97C \uC815\uC758\uD558\uB294 \uACF3\nexport const <%= model %>Query = {{\n ...baseQueries,\n}};\n//\uB370\uC774\uD130\uB97C \uC815\uB82C\uD560 \uB54C \uD544\uC694\uD55C \uC815\uB82C\uC744 \uC815\uC758\uD558\uB294 \uACF3\nexport const <%= model %>Sort = {{\n ...baseSorts,\n}};\n```\n\n\nmodel.dictonary.ts\n```\nimport {{ ModelDictionary, SignalDictionary, SummaryDictionary, baseTrans, getBaseSignalTrans }} from \"@akanjs/dictionary\";\nimport type {{ <%= Model %>, <%= Model %>Insight, <%= Model %>Summary, <%= model %>Sort }} from \"./<%= model %>.constant\";\nimport type {{ <%= Model %>Signal }} from \"./<%= model %>.signal\";\n\nconst modelDictionary = {{\n ...baseTrans,\n modelName: [\"<%= Model %>\", \"<%= Model %>\"],\n modelDesc: [\n \"<%= Model %> description\",\n \"<%= Model %> \uC124\uBA85\",\n ],\n\n // * ==================== Model ==================== * //\n field: [\"Field\", \"\uD544\uB4DC\"],\n \"desc-field\": [\"Field\", \"\uD544\uB4DC\"],\n // * ==================== Model ==================== * //\n\n // * ==================== Insight ==================== * //\n count: [\"Count\", \"\uAC1C\uC218\"],\n \"desc-count\": [\"<%= Model %> count in current query settting\", \"\uD604\uC7AC \uCFFC\uB9AC \uC124\uC815\uC5D0 \uB9DE\uB294 <%= Model %> \uC218\"],\n // * ==================== Insight ==================== * //\n\n // * ==================== Filter ==================== * //\n // * ==================== Filter ==================== * //\n\n // * ==================== Etc ==================== * //\n \"enum-status-active\": [\"Active\", \"\uD65C\uC131\"],\n \"enumdesc-status-active\": [\"Active status\", \"\uD65C\uC131 \uC0C1\uD0DC\"],\n // * ==================== Etc ==================== * //\n}} satisfies ModelDictionary<<%= Model %>, <%= Model %>Insight, typeof <%= model %>Sort>;\n\nexport const <%= model %>SummaryDictionary = {{\n // * ==================== Summary ==================== * //\n total<%= Model %>: [\"Total <%= Model %>\", \"\uCD1D <%= Model %> \uC218\"],\n \"desc-total<%= Model %>\": [\"Total <%= model %> count in the database\", \"\uB370\uC774\uD130\uBCA0\uC774\uC2A4\uC5D0 \uC800\uC7A5\uB41C \uCD1D <%= Model %> \uC218\"],\n // * ==================== Summary ==================== * //\n}} satisfies SummaryDictionary<<%= Model %>Summary>;\n\nconst signalDictionary = {{\n ...getBaseSignalTrans(\"<%= model %>\" as const),\n // * ==================== Endpoint ==================== * //\n \"api-<%= model %>ListInPublic\": [\"<%= Model %> List In Public\", \"\uACF5\uAC1C\uB41C <%= Model %> \uB9AC\uC2A4\uD2B8\"],\n \"apidesc-<%= model %>ListInPublic\": [\"Get a list of public <%= model %>\", \"\uACF5\uAC1C\uB41C <%= Model %>\uC758 \uB9AC\uC2A4\uD2B8\uB97C \uAC00\uC838\uC635\uB2C8\uB2E4\"],\n \"arg-<%= model %>ListInPublic-statuses\": [\"Statuses\", \"\uC0C1\uD0DC\"],\n \"argdesc-<%= model %>ListInPublic-statuses\": [\"Statuses to filter\", \"\uD544\uD130\uB9C1\uD560 \uC0C1\uD0DC\"],\n \"arg-<%= model %>ListInPublic-skip\": [\"Skip\", \"\uAC74\uB108\uB6F0\uAE30\"],\n \"argdesc-<%= model %>ListInPublic-skip\": [\"Number of items to skip\", \"\uAC74\uB108\uB6F8 \uC544\uC774\uD15C \uC218\"],\n \"arg-<%= model %>ListInPublic-limit\": [\"Limit\", \"\uC81C\uD55C\"],\n \"argdesc-<%= model %>ListInPublic-limit\": [\"Maximum number of items to return\", \"\uBC18\uD658\uD560 \uCD5C\uB300 \uC544\uC774\uD15C \uC218\"],\n \"arg-<%= model %>ListInPublic-sort\": [\"Sort\", \"\uC815\uB82C\"],\n \"argdesc-<%= model %>ListInPublic-sort\": [\"Sort order of the items\", \"\uC544\uC774\uD15C\uC758 \uC815\uB82C \uC21C\uC11C\"],\n\n \"api-<%= model %>InsightInPublic\": [\"<%= Model %> Insight In Public\", \"\uACF5\uAC1C\uB41C <%= Model %> \uC778\uC0AC\uC774\uD2B8\"],\n \"apidesc-<%= model %>InsightInPublic\": [\n \"Get insight data for public <%= model %>\",\n \"\uACF5\uAC1C\uB41C <%= Model %>\uC5D0 \uB300\uD55C \uC778\uC0AC\uC774\uD2B8 \uB370\uC774\uD130\uB97C \uAC00\uC838\uC635\uB2C8\uB2E4\",\n ],\n \"arg-<%= model %>InsightInPublic-statuses\": [\"Statuses\", \"\uC0C1\uD0DC\"],\n \"argdesc-<%= model %>InsightInPublic-statuses\": [\"Statuses to filter\", \"\uD544\uD130\uB9C1\uD560 \uC0C1\uD0DC\"],\n // * ==================== Endpoint ==================== * //\n}} satisfies SignalDictionary<<%= Model %>Signal, <%= Model %>>;\n```\nexport const <%= model %>Dictionary = {{ ...modelDictionary, ...signalDictionary }};\n\n\n\nmodel.document.ts\n```\nimport {{ Database, Document, Input, Middleware, Model, type SchemaOf }} from \"@akanjs/server\";\nimport {{ cnst }} from \"../cnst\";\n\n@Database.Input(() => cnst.<%= Model %>Input)\nexport class <%= Model %>Input extends Input(cnst.<%= Model %>Input) {{}}\n\n@Database.Document(() => cnst.<%= Model %>)\nexport class <%= Model %> extends Document(cnst.<%= Model %>) {{}}\n\n@Database.Model(() => cnst.<%= Model %>)\nexport class <%= Model %>Model extends Model(<%= Model %>, cnst.<%= model %>Cnst) {{\n async getSummary(): Promise<cnst.<%= Model %>Summary> {{\n return {{\n ...(await this.getDefaultSummary()),\n }};\n }}\n}}\n\n@Database.Middleware(() => cnst.<%= Model %>)\nexport class <%= Model %>Middleware extends Middleware(<%= Model %>Model, <%= Model %>) {{\n onSchema(schema: SchemaOf<<%= Model %>Model, <%= Model %>>) {{\n // schema.index({{ status: 1 }})\n }}\n}}\n\n\nmodel.signal.ts\n\nimport {{ Arg, DbSignal, Mutation, Query, Signal, resolve }} from \"@akanjs/signal\";\nimport {{ Int }} from \"@akanjs/base\";\nimport {{ Srvs, cnst }} from \"../cnst\";\n\n@Signal(() => cnst.<%= Model %>)\nexport class <%= Model %>Signal extends DbSignal(cnst.<%= model %>Cnst, Srvs, {{\n guards: {{ get: Query.Public, cru: Mutation.Every }},\n}}) {{\n // * /////////////////////////////////////\n // * Public Slice\n @Query.Public(() => [cnst.<%= Model %>])\n async <%= model %>ListInPublic(\n @Arg.Query(\"statuses\", () => [String], {{ nullable: true }}) statuses: cnst.<%= Model %>Status[] | null,\n @Arg.Query(\"skip\", () => Int, {{ nullable: true }}) skip: number | null,\n @Arg.Query(\"limit\", () => Int, {{ nullable: true }}) limit: number | null,\n @Arg.Query(\"sort\", () => String, {{ nullable: true }}) sort: keyof typeof cnst.<%= model %>Sort | null\n ) {{\n const <%= models %> = await this.<%= model %>Service.listByStatuses(statuses, {{ skip, limit, sort }});\n return resolve<cnst.<%= Model %>[]>(<%= models %>);\n }}\n @Query.Public(() => cnst.<%= Model %>Insight)\n async <%= model %>InsightInPublic(@Arg.Query(\"statuses\", () => [String], {{ nullable: true }}) statuses: cnst.<%= Model %>Status[] | null) {{\n const <%= model %>Insight = await this.<%= model %>Service.insightByStatuses(statuses);\n return resolve<cnst.<%= Model %>Insight>(<%= model %>Insight);\n }}\n // * Public Slice\n // * /////////////////////////////////////\n}}\n```\n\n\nmodel.service.ts\n```\nimport * as db from \"../db\";\nimport {{ DbService, Service }} from \"@akanjs/server\";\nimport {{ cnst }} from \"../cnst\";\n// import type * as srv from \"../srv\";\n\n@Service(\"<%= Model %>Service\")\nexport class <%= Model %>Service extends DbService(db.<%= model %>Db) {{\n // @Use() protected readonly injectedVar: string;\n // @Srv() protected readonly otherService: srv.OtherService;\n \n async summarize(): Promise<cnst.<%= Model %>Summary> {{\n return {{\n ...(await this.<%= model %>Model.getSummary()),\n }};\n }}\n}}\n```\n\n\nmodel.store.ts\n```\nimport {{ Store, stateOf }} from \"@akanjs/client\";\nimport {{ cnst }} from \"../cnst\";\nimport {{ fetch }} from \"../fetch\";\n\n@Store(() => cnst.<%= Model %>)\nexport class <%= Model %>Store extends stateOf(fetch.<%= model %>Gql, {{\n // state\n}}) {{\n // action\n}}\n```\n\n\nmodel.Zone.tsx\n```\n\"use client\";\nimport {{ Data, Load }} from \"@shared/ui\";\nimport {{ ModelsProps }} from \"@akanjs/client\";\nimport {{ cnst, fetch, <%= Model %> }} from \"<%= clientPath %>\";\nimport {{ ClientInit, ClientView, DefaultOf }} from \"@akanjs/signal\";\nimport {{ getQueryMap }} from \"@akanjs/constant\";\n\nexport const Admin = ({{ sliceName = \"<%= model %>\", init, query }}: ModelsProps<cnst.<%= Model %>>) => {{\n return (\n <Data.ListContainer\n init={{init}}\n query={{query}}\n sliceName={{sliceName}}\n renderItem={{<%= Model %>.Unit.Card}}\n renderDashboard={{<%= Model %>.Util.Stat}}\n renderInsight={{<%= Model %>.Util.Insight}}\n renderTemplate={{<%= Model %>.Template.General}}\n renderTitle={{(<%= model %>: DefaultOf<cnst.<%= Model %>>) => `<%= Model %> - ${{<%= model %>.id ? <%= model %>.id : \"New\"}}`}}\n renderView={{(<%= model %>: cnst.<%= Model %>) => <<%= Model %>.View.General <%= model %>={{<%= model %>}} />}}\n queryMap={{getQueryMap(cnst.<%= Model %>Summary)}}\n columns={{[\n \"id\",\n \"status\",\n \"createdAt\",\n \"updatedAt\",\n ]}}\n actions={{(<%= model %>: cnst.Light<%= Model %>, idx) => [\"remove\", \"edit\", \"view\"]}}\n />\n );\n}};\n\ninterface CardProps {{\n className?: string;\n init: ClientInit<\"<%= model %>\", cnst.Light<%= Model %>>;\n}}\nexport const Card = ({{ className, init }}: CardProps) => {{\n return (\n <Load.Units\n className={{className}}\n init={{init}}\n renderItem={{(<%= model %>: cnst.Light<%= Model %>) => (\n <<%= Model %>.Unit.Card key={{<%= model %>.id}} href={{`/<%= model %>${{<%= model %>.id}}`}} <%= model %>={{<%= model %>}} />\n )}}\n />\n );\n}};\n\ninterface ViewProps {{\n className?: string;\n view: ClientView<\"<%= model %>\", cnst.<%= Model %>>;\n}}\nexport const View = ({{ view }}: ViewProps) => {{\n return <Load.View view={{view}} renderView={{(<%= model %>) => <<%= Model %>.View.General <%= model %>={{<%= model %>}} />}} />;\n}};\n```\n\nmodel.Templete.tsx\n```\n\"use client\";\nimport {{ Field }} from \"@shared.ui\";\nimport {{ Layout }} from \"@util.ui\";\nimport {{ cnst, st, usePage }} from \"<%= clientPath %>\";\n\ninterface <%= Model %>EditProps {{\n <%= model %>Id?: string | null;\n}}\n\nexport const General = ({{ <%= model %>Id = undefined }}: <%= Model %>EditProps) => {{\n const <%= model %>Form = st.use.<%= model %>Form();\n const {{ l }} = usePage();\n return (\n <Layout.Template>\n <Field.Text\n label={{l.field(\"<%= model %>\", \"id\")}}\n desc={{l.desc(\"<%= model %>\", \"id\")}}\n value={{<%= model %>Form.id}}\n onChange={{st.do.setIdOn<%= Model %>}}\n />\n </Layout.Template>\n );\n}};\n```\n\n\nmodel.Unit.tsx\n```\nimport {{ Link }} from \"@util.ui\";\nimport {{ cnst, <%= Model %> }} from \"<%= clientPath %>\";\nimport {{ ModelProps }} from \"@akanjs/client\";\n\nexport const Card = ({{ <%= model %>, href }}: ModelProps<\"<%= model %>\", cnst.Light<%= Model %>>) => {{\n return (\n <Link href={{href}} className=\"animate-fadeIn w-full h-36 flex rounded-lg shadow-sm hover:shadow-lg duration-300\">\n <div>{{<%= model %>.id}}</div>\n </Link>\n );\n}};\n```\n\n\nmodel.Util.tsx\n```\n\"use client\";\nimport {{ Data }} from \"@shared.ui\";\nimport {{ ModelDashboardProps, ModelInsightProps }} from \"@akanjs/client\";\nimport {{ cnst, fetch, st, usePage, <%= Model %> }} from \"<%= clientPath %>\";\nimport {{ getQueryMap }} from \"@akanjs/constant\";\n\nexport const Stat = ({{\n className,\n summary,\n sliceName = \"<%= model %>\",\n queryMap = getQueryMap(cnst.<%= Model %>Summary),\n hidePresents,\n}}: ModelDashboardProps<cnst.Summary>) => {{\n return (\n <Data.Dashboard\n className={{className}}\n summary={{summary}}\n sliceName={{sliceName}}\n queryMap={{queryMap}}\n columns={{[\"total<%= Model %>\"]}}\n hidePresents={{hidePresents}}\n />\n );\n}};\n\nexport const Insight = ({{\n className,\n insight,\n sliceName = \"<%= model %>\",\n}}: ModelInsightProps<cnst.<%= Model %>Insight>) => {{\n return (\n <Data.Insight\n className={{className}}\n insight={{insight}}\n sliceName={{sliceName}}\n columns={{[\"count\"]}}\n />\n );\n}};\n```\n\n\nmodel.View.tsx\n```\nimport {{ Image }} from \"@util.ui\";\nimport {{ cnst, <%= Model %> }} from \"<%= clientPath %>\";\nimport {{ clsx }} from \"@akanjs/client\";\n\ninterface <%= Model %>ViewProps {{\n className?: string;\n <%= model %>: cnst.<%= Model %>;\n self?: {{ id?: string }} | null;\n}}\n\nexport const General = ({{ className, <%= model %>, self }}: <%= Model %>ViewProps) => {{\n return (\n <div className={{clsx(className, `animate-fadeIn w-full`)}}>\n <div>{{<%= model %>.id}}</div>\n </div>\n );\n}};\n```\n\uC774\uB7F0\uC2DD\uC73C\uB85C \uC6B0\uB9AC\uAC00 \uC9C1\uC811 \uB9CC\uB4E0 \uD504\uB808\uC784\uC6CC\uD06C\uC5D0 \uAE30\uBC18\uD574\uC11C db\uC640 \uC11C\uBE44\uC2A4 \uC2A4\uD1A0\uC5B4\uAE4C\uC9C0 \uBAA8\uB450 \uC5F0\uB3D9\uD574\uC11C \uD558\uB098\uC758 \uBAA8\uB378\uC5D0 \uB9DE\uAC8C\uB054 \uBAA8\uB4C8\uC744 \uD55C \uD3F4\uB354\uC5D0\uC11C \uC791\uC5C5\uD560 \uC218 \uC788\uAC8C\uB054 \uAD6C\uC870\uB97C \uB9CC\uB4E4\uC5C8\uC5B4.\n\n\uC77C\uB2E8 \uD504\uB808\uC784\uC6CC\uD06C\uC5D0 \uB300\uD55C \uC124\uBA85\uC740 \uC774 \uC815\uB3C4\uB85C \uD558\uACE0 \uC774 \uC815\uBCF4\uB4E4\uC744 \uAE30\uBC18\uC73C\uB85C \uB0B4\uAC00 \uC6D0\uD558\uB294 \uC694\uAD6C\uB97C \uB4E4\uC5B4\uC918.\n";
|
|
2
|
+
export declare const requestModule: () => string;
|
|
3
|
+
interface RequestConstantProps {
|
|
4
|
+
sysName: string;
|
|
5
|
+
modelName: string;
|
|
6
|
+
modelDesc: string;
|
|
7
|
+
modelSchemaDesign: string;
|
|
8
|
+
boilerplate: string;
|
|
9
|
+
otherConstants: {
|
|
10
|
+
path: string;
|
|
11
|
+
content: string;
|
|
12
|
+
}[];
|
|
13
|
+
}
|
|
14
|
+
export declare const requestScalarConstant: ({ sysName, modelName, modelDesc, modelSchemaDesign, boilerplate, otherConstants, }: RequestConstantProps) => string;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type App, type Lib, type Sys, Workspace } from "@akanjs/devkit";
|
|
2
|
+
export declare class ModuleRunner {
|
|
3
|
+
createModule(workspace: Workspace, moduleName: string): Promise<void>;
|
|
4
|
+
removeModule(workspace: Workspace, name: string): Promise<void>;
|
|
5
|
+
createScalarTemplate(sys: Sys, name: string): Promise<{
|
|
6
|
+
constant: {
|
|
7
|
+
filename: string;
|
|
8
|
+
content: string;
|
|
9
|
+
};
|
|
10
|
+
dictionary: {
|
|
11
|
+
filename: string;
|
|
12
|
+
content: string;
|
|
13
|
+
};
|
|
14
|
+
}>;
|
|
15
|
+
createUnit(sys: App | Lib, modelName: string): Promise<void>;
|
|
16
|
+
createView(sys: App | Lib, modelName: string): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Sys, Workspace } from "@akanjs/devkit";
|
|
2
|
+
export declare class ModuleScript {
|
|
3
|
+
#private;
|
|
4
|
+
createModule(workspace: Workspace, name: string): Promise<void>;
|
|
5
|
+
removeModule(workspace: Workspace, name: string): Promise<void>;
|
|
6
|
+
createScalar(sys: Sys, name: string): Promise<void>;
|
|
7
|
+
createService(workspace: Workspace, name: string): Promise<void>;
|
|
8
|
+
createTest(workspace: Workspace, name: string): Promise<void>;
|
|
9
|
+
createUnit(workspace: Workspace, type: "app" | "lib", appOrLibName: string, modelName: string): Promise<void>;
|
|
10
|
+
createView(workspace: Workspace, type: "app" | "lib", appOrLibName: string, modelName: string): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Pkg, Workspace } from "@akanjs/devkit";
|
|
2
|
+
import { PackageScript } from "./package.script";
|
|
3
|
+
export declare class PackageCommand {
|
|
4
|
+
packageScript: PackageScript;
|
|
5
|
+
createPackage(name: string, workspace: Workspace): Promise<void>;
|
|
6
|
+
removePackage(name: string, workspace: Workspace): Promise<void>;
|
|
7
|
+
scanPackage(pkg: Pkg): Promise<void>;
|
|
8
|
+
buildPackage(pkg: Pkg): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type DistPkgExecutor, type Pkg, type Workspace } from "@akanjs/devkit";
|
|
2
|
+
export declare class PackageRunner {
|
|
3
|
+
createPackage(workspace: Workspace, pkgName: string): Promise<void>;
|
|
4
|
+
scanSync(pkg: Pkg): Promise<import("@akanjs/config").PkgScanResult>;
|
|
5
|
+
buildPackage(pkg: Pkg, distPkg: DistPkgExecutor): Promise<void>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DistPkgExecutor, type Pkg, type Workspace } from "@akanjs/devkit";
|
|
2
|
+
export declare class PackageScript {
|
|
3
|
+
#private;
|
|
4
|
+
createPackage(workspace: Workspace, pkgName: string): Promise<void>;
|
|
5
|
+
scanPackage(pkg: Pkg): Promise<void>;
|
|
6
|
+
buildPackage(pkg: Pkg, distPkg?: DistPkgExecutor): Promise<void>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Workspace } from "@akanjs/devkit";
|
|
2
|
+
import { WorkspaceScript } from "./workspace.script";
|
|
3
|
+
export declare class WorkspaceCommand {
|
|
4
|
+
workspaceScript: WorkspaceScript;
|
|
5
|
+
createWorkspace(name: string, dir: string, app: string): Promise<void>;
|
|
6
|
+
installLibrary(name: string, workspace: Workspace): Promise<void>;
|
|
7
|
+
generateMongo(workspace: Workspace): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type Workspace } from "@akanjs/devkit";
|
|
2
|
+
export declare class WorkspaceRunner {
|
|
3
|
+
createWorkspace(repoName: string, appName: string, dirname?: string): Promise<void>;
|
|
4
|
+
generateMongo(workspace: Workspace): Promise<void>;
|
|
5
|
+
installLibrary(workspace: Workspace, libName: string): Promise<void>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { WorkspaceExecutor } from "@akanjs/devkit";
|
|
2
|
+
export declare class WorkspaceScript {
|
|
3
|
+
#private;
|
|
4
|
+
createWorkspace(repoName: string, appName: string, dirname?: string): Promise<void>;
|
|
5
|
+
generateMongo(workspace: WorkspaceExecutor): Promise<void>;
|
|
6
|
+
installLibrary(workspace: WorkspaceExecutor, libName: string): Promise<void>;
|
|
7
|
+
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var model_constant_exports = {};
|
|
19
|
-
__export(model_constant_exports, {
|
|
20
|
-
default: () => getContent
|
|
21
|
-
});
|
|
22
|
-
module.exports = __toCommonJS(model_constant_exports);
|
|
23
|
-
function getContent(scanResult, dict) {
|
|
24
|
-
return `
|
|
25
|
-
import { Field, Model } from "@akanjs/constant";
|
|
26
|
-
|
|
27
|
-
@Model.Scalar("${dict.Model}")
|
|
28
|
-
export class ${dict.Model} {
|
|
29
|
-
@Field.Prop(() => String)
|
|
30
|
-
field: string;
|
|
31
|
-
}
|
|
32
|
-
`;
|
|
33
|
-
}
|
|
34
|
-
module.exports = module.exports.default;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var model_dictionary_exports = {};
|
|
19
|
-
__export(model_dictionary_exports, {
|
|
20
|
-
default: () => getContent
|
|
21
|
-
});
|
|
22
|
-
module.exports = __toCommonJS(model_dictionary_exports);
|
|
23
|
-
function getContent(scanResult, dict) {
|
|
24
|
-
return `
|
|
25
|
-
import { ModelDictionary } from "@akanjs/dictionary";
|
|
26
|
-
|
|
27
|
-
import type { ${dict.Model} } from "./${dict.model}.constant";
|
|
28
|
-
|
|
29
|
-
const modelDictionary = {
|
|
30
|
-
modelName: ["${dict.Model}", "${dict.Model}"],
|
|
31
|
-
modelDesc: ["${dict.Model}", "${dict.Model}"],
|
|
32
|
-
|
|
33
|
-
// * ==================== Model ==================== * //
|
|
34
|
-
field: ["Field", "\uD544\uB4DC"],
|
|
35
|
-
"desc-field": ["Field", "\uD544\uB4DC"],
|
|
36
|
-
// * ==================== Model ==================== * //
|
|
37
|
-
|
|
38
|
-
// * ==================== Etc ==================== * //
|
|
39
|
-
// * ==================== Etc ==================== * //
|
|
40
|
-
} satisfies ModelDictionary<${dict.Model}>;
|
|
41
|
-
|
|
42
|
-
export const ${dict.model}Dictionary = modelDictionary;
|
|
43
|
-
`;
|
|
44
|
-
}
|
|
45
|
-
module.exports = module.exports.default;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var model_document_exports = {};
|
|
19
|
-
__export(model_document_exports, {
|
|
20
|
-
default: () => getContent
|
|
21
|
-
});
|
|
22
|
-
module.exports = __toCommonJS(model_document_exports);
|
|
23
|
-
function getContent(scanResult, dict) {
|
|
24
|
-
return `
|
|
25
|
-
import { by } from "@akanjs/document";
|
|
26
|
-
|
|
27
|
-
import * as cnst from "./${dict.model}.constant";
|
|
28
|
-
|
|
29
|
-
export class ${dict.Model} extends by(cnst.${dict.Model}) {}
|
|
30
|
-
`;
|
|
31
|
-
}
|
|
32
|
-
module.exports = module.exports.default;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var page_exports = {};
|
|
19
|
-
__export(page_exports, {
|
|
20
|
-
default: () => getContent
|
|
21
|
-
});
|
|
22
|
-
module.exports = __toCommonJS(page_exports);
|
|
23
|
-
function getContent(scanResult, dict = {}) {
|
|
24
|
-
return `
|
|
25
|
-
import { Image, Link } from "@util/ui";
|
|
26
|
-
import { User } from "@shared/client";
|
|
27
|
-
|
|
28
|
-
export default function Page() {
|
|
29
|
-
return (
|
|
30
|
-
<div className="relative w-full h-screen overflow-hidden flex items-center justify-center">
|
|
31
|
-
<div className="z-10 md:w-[400px] px-12 pt-12 pb-4 shadow-lg rounded-xl bg-base-100/50 backdrop-blur-xs">
|
|
32
|
-
<User.Util.ForgotPassword />
|
|
33
|
-
<Link.Back className="text-center">
|
|
34
|
-
<button className="mt-2 underline btn btn-ghost">Back</button>
|
|
35
|
-
</Link.Back>
|
|
36
|
-
</div>
|
|
37
|
-
<Image className="absolute left-0 right-0 top-0 bottom-0 -z-50" width={1920} height={1080} src="/back.jpg" />
|
|
38
|
-
</div>
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
`;
|
|
42
|
-
}
|
|
43
|
-
module.exports = module.exports.default;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var page_exports = {};
|
|
19
|
-
__export(page_exports, {
|
|
20
|
-
default: () => getContent
|
|
21
|
-
});
|
|
22
|
-
module.exports = __toCommonJS(page_exports);
|
|
23
|
-
function getContent(scanResult, dict) {
|
|
24
|
-
return `
|
|
25
|
-
import { Image, Link } from "@util/ui";
|
|
26
|
-
import { getSelf } from "@akanjs/client";
|
|
27
|
-
|
|
28
|
-
export default function Page() {
|
|
29
|
-
const self = getSelf();
|
|
30
|
-
return (
|
|
31
|
-
<div className="relative w-full h-screen overflow-hidden flex items-center justify-center">
|
|
32
|
-
<div className="max-w-md bg-base-100/50 shadow-lg rounded-xl backdrop-blur-xs w-full py-8 px-16 flex flex-col items-center justify-center gap-3">
|
|
33
|
-
<h1 className="text-4xl mt-2">${dict.appName}</h1>
|
|
34
|
-
<h2 className="text-lg">${dict.appName} description</h2>
|
|
35
|
-
<Link className="w-full" href={self ? "/self" : "/signin"}>
|
|
36
|
-
<button className="btn w-full btn-primary">Go to dashboard</button>
|
|
37
|
-
</Link>
|
|
38
|
-
</div>
|
|
39
|
-
</div>
|
|
40
|
-
);
|
|
41
|
-
}
|
|
42
|
-
`;
|
|
43
|
-
}
|
|
44
|
-
module.exports = module.exports.default;
|