irgen 0.2.0
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/CHANGELOG.md +113 -0
- package/LICENSE +21 -0
- package/README.md +161 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +312 -0
- package/dist/cli.js.map +1 -0
- package/dist/dsl/aggregator.d.ts +8 -0
- package/dist/dsl/aggregator.d.ts.map +1 -0
- package/dist/dsl/aggregator.js +64 -0
- package/dist/dsl/aggregator.js.map +1 -0
- package/dist/dsl/frontend-runtime.d.ts +486 -0
- package/dist/dsl/frontend-runtime.d.ts.map +1 -0
- package/dist/dsl/frontend-runtime.js +232 -0
- package/dist/dsl/frontend-runtime.js.map +1 -0
- package/dist/dsl/runtime.d.ts +33 -0
- package/dist/dsl/runtime.d.ts.map +1 -0
- package/dist/dsl/runtime.js +120 -0
- package/dist/dsl/runtime.js.map +1 -0
- package/dist/emit/backend/adapters.d.ts +11 -0
- package/dist/emit/backend/adapters.d.ts.map +1 -0
- package/dist/emit/backend/adapters.js +374 -0
- package/dist/emit/backend/adapters.js.map +1 -0
- package/dist/emit/backend/backend-tsmorph.d.ts +5 -0
- package/dist/emit/backend/backend-tsmorph.d.ts.map +1 -0
- package/dist/emit/backend/backend-tsmorph.js +858 -0
- package/dist/emit/backend/backend-tsmorph.js.map +1 -0
- package/dist/emit/backend/fake-backend.d.ts +2 -0
- package/dist/emit/backend/fake-backend.d.ts.map +1 -0
- package/dist/emit/backend/fake-backend.js +19 -0
- package/dist/emit/backend/fake-backend.js.map +1 -0
- package/dist/emit/backend/packaging.d.ts +3 -0
- package/dist/emit/backend/packaging.d.ts.map +1 -0
- package/dist/emit/backend/packaging.js +71 -0
- package/dist/emit/backend/packaging.js.map +1 -0
- package/dist/emit/backend/server.d.ts +4 -0
- package/dist/emit/backend/server.d.ts.map +1 -0
- package/dist/emit/backend/server.js +169 -0
- package/dist/emit/backend/server.js.map +1 -0
- package/dist/emit/cli/cli-fake.d.ts +2 -0
- package/dist/emit/cli/cli-fake.d.ts.map +1 -0
- package/dist/emit/cli/cli-fake.js +33 -0
- package/dist/emit/cli/cli-fake.js.map +1 -0
- package/dist/emit/electron/electron-shell.d.ts +3 -0
- package/dist/emit/electron/electron-shell.d.ts.map +1 -0
- package/dist/emit/electron/electron-shell.js +454 -0
- package/dist/emit/electron/electron-shell.js.map +1 -0
- package/dist/emit/engine.d.ts +14 -0
- package/dist/emit/engine.d.ts.map +1 -0
- package/dist/emit/engine.js +25 -0
- package/dist/emit/engine.js.map +1 -0
- package/dist/emit/format.d.ts +2 -0
- package/dist/emit/format.d.ts.map +1 -0
- package/dist/emit/format.js +23 -0
- package/dist/emit/format.js.map +1 -0
- package/dist/emit/frontend/frontend-react.d.ts +4 -0
- package/dist/emit/frontend/frontend-react.d.ts.map +1 -0
- package/dist/emit/frontend/frontend-react.js +2021 -0
- package/dist/emit/frontend/frontend-react.js.map +1 -0
- package/dist/emit/frontend/registry.d.ts +20 -0
- package/dist/emit/frontend/registry.d.ts.map +1 -0
- package/dist/emit/frontend/registry.js +46 -0
- package/dist/emit/frontend/registry.js.map +1 -0
- package/dist/emit/frontend/runtime-emitter.d.ts +4 -0
- package/dist/emit/frontend/runtime-emitter.d.ts.map +1 -0
- package/dist/emit/frontend/runtime-emitter.js +435 -0
- package/dist/emit/frontend/runtime-emitter.js.map +1 -0
- package/dist/emit/frontend/runtime-template.d.ts +28 -0
- package/dist/emit/frontend/runtime-template.d.ts.map +1 -0
- package/dist/emit/frontend/runtime-template.js +218 -0
- package/dist/emit/frontend/runtime-template.js.map +1 -0
- package/dist/emit/frontend/ssg.d.ts +8 -0
- package/dist/emit/frontend/ssg.d.ts.map +1 -0
- package/dist/emit/frontend/ssg.js +219 -0
- package/dist/emit/frontend/ssg.js.map +1 -0
- package/dist/emit/registry.d.ts +17 -0
- package/dist/emit/registry.d.ts.map +1 -0
- package/dist/emit/registry.js +38 -0
- package/dist/emit/registry.js.map +1 -0
- package/dist/emit/static-site/css.d.ts +5 -0
- package/dist/emit/static-site/css.d.ts.map +1 -0
- package/dist/emit/static-site/css.js +872 -0
- package/dist/emit/static-site/css.js.map +1 -0
- package/dist/emit/static-site/enhancements.d.ts +11 -0
- package/dist/emit/static-site/enhancements.d.ts.map +1 -0
- package/dist/emit/static-site/enhancements.js +266 -0
- package/dist/emit/static-site/enhancements.js.map +1 -0
- package/dist/emit/static-site/static-site-html.d.ts +3 -0
- package/dist/emit/static-site/static-site-html.d.ts.map +1 -0
- package/dist/emit/static-site/static-site-html.js +1172 -0
- package/dist/emit/static-site/static-site-html.js.map +1 -0
- package/dist/emit/utils/sdk.d.ts +15 -0
- package/dist/emit/utils/sdk.d.ts.map +1 -0
- package/dist/emit/utils/sdk.js +34 -0
- package/dist/emit/utils/sdk.js.map +1 -0
- package/dist/extensions/context.d.ts +23 -0
- package/dist/extensions/context.d.ts.map +1 -0
- package/dist/extensions/context.js +43 -0
- package/dist/extensions/context.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +135 -0
- package/dist/index.js.map +1 -0
- package/dist/ir/decl/backend.raw.schema.d.ts +128 -0
- package/dist/ir/decl/backend.raw.schema.d.ts.map +1 -0
- package/dist/ir/decl/backend.raw.schema.js +24 -0
- package/dist/ir/decl/backend.raw.schema.js.map +1 -0
- package/dist/ir/decl/bundle.d.ts +15 -0
- package/dist/ir/decl/bundle.d.ts.map +1 -0
- package/dist/ir/decl/bundle.js +8 -0
- package/dist/ir/decl/bundle.js.map +1 -0
- package/dist/ir/decl/cli.raw.schema.d.ts +133 -0
- package/dist/ir/decl/cli.raw.schema.d.ts.map +1 -0
- package/dist/ir/decl/cli.raw.schema.js +20 -0
- package/dist/ir/decl/cli.raw.schema.js.map +1 -0
- package/dist/ir/decl/frontend.raw.schema.d.ts +6631 -0
- package/dist/ir/decl/frontend.raw.schema.d.ts.map +1 -0
- package/dist/ir/decl/frontend.raw.schema.js +272 -0
- package/dist/ir/decl/frontend.raw.schema.js.map +1 -0
- package/dist/ir/decl/index.d.ts +6 -0
- package/dist/ir/decl/index.d.ts.map +1 -0
- package/dist/ir/decl/index.js +6 -0
- package/dist/ir/decl/index.js.map +1 -0
- package/dist/ir/decl/normalize.schema.d.ts +9154 -0
- package/dist/ir/decl/normalize.schema.d.ts.map +1 -0
- package/dist/ir/decl/normalize.schema.js +71 -0
- package/dist/ir/decl/normalize.schema.js.map +1 -0
- package/dist/ir/domain/backend.d.ts +19 -0
- package/dist/ir/domain/backend.d.ts.map +1 -0
- package/dist/ir/domain/backend.js +3 -0
- package/dist/ir/domain/backend.js.map +1 -0
- package/dist/ir/domain/cli.d.ts +18 -0
- package/dist/ir/domain/cli.d.ts.map +1 -0
- package/dist/ir/domain/cli.js +2 -0
- package/dist/ir/domain/cli.js.map +1 -0
- package/dist/ir/domain/frontend/index.d.ts +190 -0
- package/dist/ir/domain/frontend/index.d.ts.map +1 -0
- package/dist/ir/domain/frontend/index.js +2 -0
- package/dist/ir/domain/frontend/index.js.map +1 -0
- package/dist/ir/domain/frontend.d.ts +2 -0
- package/dist/ir/domain/frontend.d.ts.map +1 -0
- package/dist/ir/domain/frontend.js +3 -0
- package/dist/ir/domain/frontend.js.map +1 -0
- package/dist/ir/frontend-contract.d.ts +187 -0
- package/dist/ir/frontend-contract.d.ts.map +1 -0
- package/dist/ir/frontend-contract.js +6 -0
- package/dist/ir/frontend-contract.js.map +1 -0
- package/dist/ir/target/backend.d.ts +11 -0
- package/dist/ir/target/backend.d.ts.map +1 -0
- package/dist/ir/target/backend.js +2 -0
- package/dist/ir/target/backend.js.map +1 -0
- package/dist/ir/target/backend.policy.d.ts +896 -0
- package/dist/ir/target/backend.policy.d.ts.map +1 -0
- package/dist/ir/target/backend.policy.js +106 -0
- package/dist/ir/target/backend.policy.js.map +1 -0
- package/dist/ir/target/cli.d.ts +3 -0
- package/dist/ir/target/cli.d.ts.map +1 -0
- package/dist/ir/target/cli.js +2 -0
- package/dist/ir/target/cli.js.map +1 -0
- package/dist/ir/target/electron.d.ts +99 -0
- package/dist/ir/target/electron.d.ts.map +1 -0
- package/dist/ir/target/electron.js +2 -0
- package/dist/ir/target/electron.js.map +1 -0
- package/dist/ir/target/electron.policy.d.ts +7015 -0
- package/dist/ir/target/electron.policy.d.ts.map +1 -0
- package/dist/ir/target/electron.policy.js +119 -0
- package/dist/ir/target/electron.policy.js.map +1 -0
- package/dist/ir/target/frontend.d.ts +12 -0
- package/dist/ir/target/frontend.d.ts.map +1 -0
- package/dist/ir/target/frontend.js +2 -0
- package/dist/ir/target/frontend.js.map +1 -0
- package/dist/ir/target/frontend.policy.d.ts +268 -0
- package/dist/ir/target/frontend.policy.d.ts.map +1 -0
- package/dist/ir/target/frontend.policy.js +33 -0
- package/dist/ir/target/frontend.policy.js.map +1 -0
- package/dist/ir/target/index.d.ts +6 -0
- package/dist/ir/target/index.d.ts.map +1 -0
- package/dist/ir/target/index.js +6 -0
- package/dist/ir/target/index.js.map +1 -0
- package/dist/ir/target/static-site.d.ts +18 -0
- package/dist/ir/target/static-site.d.ts.map +1 -0
- package/dist/ir/target/static-site.js +2 -0
- package/dist/ir/target/static-site.js.map +1 -0
- package/dist/ir/target/static-site.policy.d.ts +2911 -0
- package/dist/ir/target/static-site.policy.d.ts.map +1 -0
- package/dist/ir/target/static-site.policy.js +127 -0
- package/dist/ir/target/static-site.policy.js.map +1 -0
- package/dist/lowering/backend.d.ts +4 -0
- package/dist/lowering/backend.d.ts.map +1 -0
- package/dist/lowering/backend.js +57 -0
- package/dist/lowering/backend.js.map +1 -0
- package/dist/lowering/cli.d.ts +4 -0
- package/dist/lowering/cli.d.ts.map +1 -0
- package/dist/lowering/cli.js +22 -0
- package/dist/lowering/cli.js.map +1 -0
- package/dist/lowering/engine.d.ts +18 -0
- package/dist/lowering/engine.d.ts.map +1 -0
- package/dist/lowering/engine.js +47 -0
- package/dist/lowering/engine.js.map +1 -0
- package/dist/lowering/frontend.d.ts +9 -0
- package/dist/lowering/frontend.d.ts.map +1 -0
- package/dist/lowering/frontend.js +246 -0
- package/dist/lowering/frontend.js.map +1 -0
- package/dist/lowering/targets/to-backend.d.ts +9 -0
- package/dist/lowering/targets/to-backend.d.ts.map +1 -0
- package/dist/lowering/targets/to-backend.js +55 -0
- package/dist/lowering/targets/to-backend.js.map +1 -0
- package/dist/lowering/targets/to-cli.d.ts +4 -0
- package/dist/lowering/targets/to-cli.d.ts.map +1 -0
- package/dist/lowering/targets/to-cli.js +11 -0
- package/dist/lowering/targets/to-cli.js.map +1 -0
- package/dist/lowering/targets/to-electron.d.ts +30 -0
- package/dist/lowering/targets/to-electron.d.ts.map +1 -0
- package/dist/lowering/targets/to-electron.js +87 -0
- package/dist/lowering/targets/to-electron.js.map +1 -0
- package/dist/lowering/targets/to-frontend.d.ts +4 -0
- package/dist/lowering/targets/to-frontend.d.ts.map +1 -0
- package/dist/lowering/targets/to-frontend.js +30 -0
- package/dist/lowering/targets/to-frontend.js.map +1 -0
- package/dist/lowering/targets/to-static-site.d.ts +16 -0
- package/dist/lowering/targets/to-static-site.d.ts.map +1 -0
- package/dist/lowering/targets/to-static-site.js +30 -0
- package/dist/lowering/targets/to-static-site.js.map +1 -0
- package/dist/mappers/index.d.ts +12 -0
- package/dist/mappers/index.d.ts.map +1 -0
- package/dist/mappers/index.js +60 -0
- package/dist/mappers/index.js.map +1 -0
- package/dist/types/extension.d.ts +3 -0
- package/dist/types/extension.d.ts.map +1 -0
- package/dist/types/extension.js +2 -0
- package/dist/types/extension.js.map +1 -0
- package/dist/utils/array.d.ts +2 -0
- package/dist/utils/array.d.ts.map +1 -0
- package/dist/utils/array.js +4 -0
- package/dist/utils/array.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/string.d.ts +13 -0
- package/dist/utils/string.d.ts.map +1 -0
- package/dist/utils/string.js +56 -0
- package/dist/utils/string.js.map +1 -0
- package/package.json +112 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { pathToFileURL } from "node:url";
|
|
3
|
+
import { DeclFrontendAppSchema } from "../ir/decl/frontend.raw.schema.js";
|
|
4
|
+
let CURRENT_FRONTEND = null;
|
|
5
|
+
function assert(cond, msg) {
|
|
6
|
+
if (!cond)
|
|
7
|
+
throw new Error(msg);
|
|
8
|
+
}
|
|
9
|
+
function mergePolicy(target, value) {
|
|
10
|
+
if (!CURRENT_FRONTEND)
|
|
11
|
+
return;
|
|
12
|
+
CURRENT_FRONTEND.meta = CURRENT_FRONTEND.meta ?? {};
|
|
13
|
+
const existing = (CURRENT_FRONTEND.meta.policies ?? {});
|
|
14
|
+
CURRENT_FRONTEND.meta.policies = { ...existing, [target]: { ...(existing[target] ?? {}), ...value } };
|
|
15
|
+
}
|
|
16
|
+
const RUNTIME_HELPERS = [
|
|
17
|
+
"field",
|
|
18
|
+
"prop",
|
|
19
|
+
"agentChat",
|
|
20
|
+
"cliUsage",
|
|
21
|
+
"hero",
|
|
22
|
+
"features",
|
|
23
|
+
"testimonials",
|
|
24
|
+
"faq",
|
|
25
|
+
"logos",
|
|
26
|
+
"cta",
|
|
27
|
+
"stats",
|
|
28
|
+
"timeline",
|
|
29
|
+
"enableThemeToggle",
|
|
30
|
+
"code",
|
|
31
|
+
"table",
|
|
32
|
+
];
|
|
33
|
+
function stripRuntimeHelpers(comp) {
|
|
34
|
+
for (const key of RUNTIME_HELPERS) {
|
|
35
|
+
if (typeof comp[key] === "function") {
|
|
36
|
+
delete comp[key];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export function datasource(id, config) {
|
|
41
|
+
assert(CURRENT_FRONTEND, "datasource() harus di dalam frontend()");
|
|
42
|
+
CURRENT_FRONTEND.datasources.push({ id, ...config });
|
|
43
|
+
}
|
|
44
|
+
export function operation(id, config) {
|
|
45
|
+
assert(CURRENT_FRONTEND, "operation() harus di dalam frontend()");
|
|
46
|
+
CURRENT_FRONTEND.operations.push({ id, ...config });
|
|
47
|
+
}
|
|
48
|
+
export function resource(id, config) {
|
|
49
|
+
assert(CURRENT_FRONTEND, "resource() harus di dalam frontend()");
|
|
50
|
+
CURRENT_FRONTEND.resources.push({ id, ...config });
|
|
51
|
+
}
|
|
52
|
+
export function meta(key, value) {
|
|
53
|
+
assert(CURRENT_FRONTEND, "meta() harus di dalam frontend()");
|
|
54
|
+
CURRENT_FRONTEND.meta = CURRENT_FRONTEND.meta ?? {};
|
|
55
|
+
CURRENT_FRONTEND.meta[key] = value;
|
|
56
|
+
}
|
|
57
|
+
export function policy(target, value) {
|
|
58
|
+
assert(CURRENT_FRONTEND, "policy() harus di dalam frontend()");
|
|
59
|
+
mergePolicy(target, value);
|
|
60
|
+
}
|
|
61
|
+
export function page(pName, opts, cb) {
|
|
62
|
+
assert(CURRENT_FRONTEND, "page() harus di dalam frontend()");
|
|
63
|
+
const page = {
|
|
64
|
+
type: "page",
|
|
65
|
+
name: pName,
|
|
66
|
+
path: opts.path,
|
|
67
|
+
hideHeader: opts.hideHeader,
|
|
68
|
+
description: opts.description,
|
|
69
|
+
docsLayout: opts.docsLayout,
|
|
70
|
+
docsGroupLabel: opts.docsGroupLabel,
|
|
71
|
+
components: []
|
|
72
|
+
};
|
|
73
|
+
if (typeof cb === "function") {
|
|
74
|
+
cb({
|
|
75
|
+
component(cName, cCb) {
|
|
76
|
+
const comp = { type: "component", name: cName, props: {}, form: { fields: [] } };
|
|
77
|
+
// add convenience methods to the comp object for DSL users: field() and prop()
|
|
78
|
+
comp.field = function (fieldName, type, label, validators, config) {
|
|
79
|
+
comp.form = comp.form ?? { fields: [] };
|
|
80
|
+
comp.form.fields.push({ name: fieldName, type, label, validators, ...config });
|
|
81
|
+
};
|
|
82
|
+
comp.prop = function (key, value) {
|
|
83
|
+
comp.props = comp.props ?? {};
|
|
84
|
+
comp.props[key] = value;
|
|
85
|
+
};
|
|
86
|
+
comp.agentChat = function (data) {
|
|
87
|
+
comp.agentChat = data;
|
|
88
|
+
};
|
|
89
|
+
comp.cliUsage = function (data) {
|
|
90
|
+
comp.cliUsage = data;
|
|
91
|
+
};
|
|
92
|
+
comp.hero = function (data) { comp.marketing = { kind: "hero", ...data }; };
|
|
93
|
+
comp.features = function (items, opts) { comp.marketing = { kind: "features", items, ...opts }; };
|
|
94
|
+
comp.testimonials = function (items, opts) { comp.marketing = { kind: "testimonials", items, ...opts }; };
|
|
95
|
+
comp.faq = function (items, opts) { comp.marketing = { kind: "faq", items, ...opts }; };
|
|
96
|
+
comp.logos = function (items, opts) { comp.marketing = { kind: "logos", items, ...opts }; };
|
|
97
|
+
comp.cta = function (title, subtitle, actions) { comp.marketing = { kind: "cta", title, subtitle, actions }; };
|
|
98
|
+
comp.stats = function (items, opts) { comp.marketing = { kind: "stats", items, ...opts }; };
|
|
99
|
+
comp.timeline = function (items, opts) { comp.marketing = { kind: "timeline", items, ...opts }; };
|
|
100
|
+
comp.enableThemeToggle = function () { comp.themeToggle = true; };
|
|
101
|
+
comp.code = function (snippet, language = "typescript", options) {
|
|
102
|
+
comp.codeBlock = { snippet, language, showLineNumbers: options?.showLineNumbers ?? true };
|
|
103
|
+
};
|
|
104
|
+
comp.table = function (data) { comp.table = data; };
|
|
105
|
+
if (typeof cCb === "function")
|
|
106
|
+
cCb(comp);
|
|
107
|
+
stripRuntimeHelpers(comp);
|
|
108
|
+
if (comp.html) {
|
|
109
|
+
throw new Error(`component.html is not allowed (component: ${comp.name}). Use component.content with Markdown instead.`);
|
|
110
|
+
}
|
|
111
|
+
const finalized = comp;
|
|
112
|
+
page.components.push(finalized);
|
|
113
|
+
if (CURRENT_FRONTEND)
|
|
114
|
+
CURRENT_FRONTEND.components.push(finalized);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
if (CURRENT_FRONTEND)
|
|
119
|
+
CURRENT_FRONTEND.pages.push(page);
|
|
120
|
+
}
|
|
121
|
+
export function component(name, cb) {
|
|
122
|
+
assert(CURRENT_FRONTEND, "component() harus di dalam frontend()");
|
|
123
|
+
const comp = { type: "component", name: name, props: {}, form: { fields: [] } };
|
|
124
|
+
// add convenience methods to the comp object for DSL users: field() and prop()
|
|
125
|
+
comp.field = function (fieldName, type, label, validators, config) {
|
|
126
|
+
comp.form = comp.form ?? { fields: [] };
|
|
127
|
+
comp.form.fields.push({ name: fieldName, type, label, validators, ...config });
|
|
128
|
+
};
|
|
129
|
+
comp.prop = function (key, value) {
|
|
130
|
+
comp.props = comp.props ?? {};
|
|
131
|
+
comp.props[key] = value;
|
|
132
|
+
};
|
|
133
|
+
comp.agentChat = function (data) {
|
|
134
|
+
comp.agentChat = data;
|
|
135
|
+
};
|
|
136
|
+
comp.cliUsage = function (data) {
|
|
137
|
+
comp.cliUsage = data;
|
|
138
|
+
};
|
|
139
|
+
comp.hero = function (data) { comp.marketing = { kind: "hero", ...data }; };
|
|
140
|
+
comp.features = function (items, opts) { comp.marketing = { kind: "features", items, ...opts }; };
|
|
141
|
+
comp.testimonials = function (items, opts) { comp.marketing = { kind: "testimonials", items, ...opts }; };
|
|
142
|
+
comp.faq = function (items, opts) { comp.marketing = { kind: "faq", items, ...opts }; };
|
|
143
|
+
comp.logos = function (items, opts) { comp.marketing = { kind: "logos", items, ...opts }; };
|
|
144
|
+
comp.cta = function (title, subtitle, actions) { comp.marketing = { kind: "cta", title, subtitle, actions }; };
|
|
145
|
+
comp.stats = function (items, opts) { comp.marketing = { kind: "stats", items, ...opts }; };
|
|
146
|
+
comp.timeline = function (items, opts) { comp.marketing = { kind: "timeline", items, ...opts }; };
|
|
147
|
+
comp.enableThemeToggle = function () { comp.themeToggle = true; };
|
|
148
|
+
comp.code = function (snippet, language = "typescript", options) {
|
|
149
|
+
comp.codeBlock = { snippet, language, showLineNumbers: options?.showLineNumbers ?? true };
|
|
150
|
+
};
|
|
151
|
+
comp.table = function (data) { comp.table = data; };
|
|
152
|
+
if (typeof cb === "function")
|
|
153
|
+
cb(comp);
|
|
154
|
+
stripRuntimeHelpers(comp);
|
|
155
|
+
if (comp.html) {
|
|
156
|
+
throw new Error(`component.html is not allowed (component: ${comp.name}). Use component.content with Markdown instead.`);
|
|
157
|
+
}
|
|
158
|
+
if (CURRENT_FRONTEND)
|
|
159
|
+
CURRENT_FRONTEND.components.push(comp);
|
|
160
|
+
}
|
|
161
|
+
export function frontend(name, optsOrFn, maybeFn) {
|
|
162
|
+
assert(typeof name === "string" && name.length > 0, "frontend(name) harus string");
|
|
163
|
+
const opts = (typeof optsOrFn === "function" ? {} : optsOrFn) ?? {};
|
|
164
|
+
const fn = (typeof optsOrFn === "function" ? optsOrFn : maybeFn);
|
|
165
|
+
assert(typeof fn === "function", "frontend(..., fn) fn harus function");
|
|
166
|
+
const baseMeta = opts?.meta ?? {};
|
|
167
|
+
CURRENT_FRONTEND = {
|
|
168
|
+
type: "frontend",
|
|
169
|
+
name,
|
|
170
|
+
basePath: opts?.basePath ?? "/",
|
|
171
|
+
pages: [],
|
|
172
|
+
components: [],
|
|
173
|
+
datasources: opts?.datasources ?? [],
|
|
174
|
+
operations: opts?.operations ?? [],
|
|
175
|
+
resources: opts?.resources ?? [],
|
|
176
|
+
...(opts?.pwa ? { pwa: opts.pwa } : {}),
|
|
177
|
+
meta: { ...baseMeta },
|
|
178
|
+
};
|
|
179
|
+
if (opts?.policies) {
|
|
180
|
+
for (const [target, value] of Object.entries(opts.policies)) {
|
|
181
|
+
mergePolicy(target, value);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
fn({
|
|
185
|
+
datasource,
|
|
186
|
+
operation,
|
|
187
|
+
resource,
|
|
188
|
+
page,
|
|
189
|
+
component,
|
|
190
|
+
meta,
|
|
191
|
+
policy,
|
|
192
|
+
});
|
|
193
|
+
const parsed = DeclFrontendAppSchema.parse(CURRENT_FRONTEND);
|
|
194
|
+
CURRENT_FRONTEND = parsed;
|
|
195
|
+
return parsed;
|
|
196
|
+
}
|
|
197
|
+
export async function loadFrontendDsl(entry) {
|
|
198
|
+
const abs = path.resolve(process.cwd(), entry);
|
|
199
|
+
const url = pathToFileURL(abs).href;
|
|
200
|
+
// reset
|
|
201
|
+
CURRENT_FRONTEND = null;
|
|
202
|
+
try {
|
|
203
|
+
await import(url);
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
// Some environments (tsx ESM loader) may fail resolving .ts imports via file URL.
|
|
207
|
+
// Fall back to transpile the TypeScript file to a temporary .mjs and import that.
|
|
208
|
+
console.warn("frontend loader dynamic import failed, attempting transpile fallback:", err?.message ?? err);
|
|
209
|
+
try {
|
|
210
|
+
const ts = await import("typescript");
|
|
211
|
+
const src = await (await import("node:fs/promises")).readFile(abs, "utf-8");
|
|
212
|
+
const transpiled = ts.transpileModule(src, { compilerOptions: { module: ts.ModuleKind.ESNext, target: ts.ScriptTarget.ES2022, esModuleInterop: true } }).outputText;
|
|
213
|
+
// keep temp file in same dir so relative imports remain valid
|
|
214
|
+
const tmp = path.join(path.dirname(abs), `.dsl-tmp-${Date.now()}.mjs`);
|
|
215
|
+
await (await import("node:fs/promises")).writeFile(tmp, transpiled, "utf-8");
|
|
216
|
+
await import(pathToFileURL(tmp).href);
|
|
217
|
+
// best-effort cleanup
|
|
218
|
+
try {
|
|
219
|
+
await (await import("node:fs/promises")).unlink(tmp);
|
|
220
|
+
}
|
|
221
|
+
catch (_) { }
|
|
222
|
+
}
|
|
223
|
+
catch (err2) {
|
|
224
|
+
throw new Error(`Failed to load frontend DSL (${entry}): ${err2?.message ?? err2}`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (!CURRENT_FRONTEND)
|
|
228
|
+
throw new Error(`Frontend DSL did not call frontend(...)`);
|
|
229
|
+
const parsed = DeclFrontendAppSchema.parse(CURRENT_FRONTEND);
|
|
230
|
+
return parsed;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=frontend-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontend-runtime.js","sourceRoot":"","sources":["../../src/dsl/frontend-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { DeclApp } from "../ir/decl/backend.raw.schema.js";
|
|
2
|
+
type EntityBuilder = {
|
|
3
|
+
create(opName?: string): void;
|
|
4
|
+
get(opName?: string): void;
|
|
5
|
+
list(opName?: string): void;
|
|
6
|
+
update(opName?: string): void;
|
|
7
|
+
remove(opName?: string): void;
|
|
8
|
+
model(fields: Record<string, string>): void;
|
|
9
|
+
plural(p: string): void;
|
|
10
|
+
op(kind: "create" | "get" | "list" | "update" | "remove", options?: {
|
|
11
|
+
name?: string;
|
|
12
|
+
enabled?: boolean;
|
|
13
|
+
}): void;
|
|
14
|
+
};
|
|
15
|
+
type AppBuilder = {
|
|
16
|
+
entity(name: string, fn: (e: EntityBuilder) => void): void;
|
|
17
|
+
meta(key: string, value: unknown): void;
|
|
18
|
+
policy(target: string, value: Record<string, any>): void;
|
|
19
|
+
};
|
|
20
|
+
type AppOptions = {
|
|
21
|
+
meta?: Record<string, any>;
|
|
22
|
+
policies?: Record<string, any>;
|
|
23
|
+
};
|
|
24
|
+
export declare function app(name: string, fn: (a: AppBuilder) => void): void;
|
|
25
|
+
export declare function app(name: string, opts: AppOptions, fn: (a: AppBuilder) => void): void;
|
|
26
|
+
/**
|
|
27
|
+
* Load DSL file (TS/JS) by dynamic import.
|
|
28
|
+
* - Untuk proyek ini: jalankan CLI via `tsx` (default).
|
|
29
|
+
* - Jika ingin `node dist/cli.js`, file DSL tetap bisa TS karena tsconfig include, tapi runtime Node butuh JS/ESM.
|
|
30
|
+
*/
|
|
31
|
+
export declare function loadDsl(entry: string): Promise<DeclApp>;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/dsl/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAA6B,MAAM,kCAAkC,CAAC;AAEtF,KAAK,aAAa,GAAG;IACnB,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAE5C,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CACjH,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;CAC1D,CAAC;AAcF,KAAK,UAAU,GAAG;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC,CAAC;AASF,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;AACrE,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;AAmEvF;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA+B7D"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { pathToFileURL } from "node:url";
|
|
3
|
+
import { DeclAppSchema } from "../ir/decl/backend.raw.schema.js";
|
|
4
|
+
let CURRENT = null;
|
|
5
|
+
function assert(cond, msg) {
|
|
6
|
+
if (!cond)
|
|
7
|
+
throw new Error(msg);
|
|
8
|
+
}
|
|
9
|
+
import { kebab } from "../utils/index.js";
|
|
10
|
+
function defaultEntityId(name) {
|
|
11
|
+
return `${kebab(name)}`;
|
|
12
|
+
}
|
|
13
|
+
function mergePolicy(target, value) {
|
|
14
|
+
if (!CURRENT)
|
|
15
|
+
return;
|
|
16
|
+
CURRENT.meta = CURRENT.meta ?? {};
|
|
17
|
+
const existing = (CURRENT.meta.policies ?? {});
|
|
18
|
+
CURRENT.meta.policies = { ...existing, [target]: { ...(existing[target] ?? {}), ...value } };
|
|
19
|
+
}
|
|
20
|
+
export function app(name, optsOrFn, maybeFn) {
|
|
21
|
+
assert(typeof name === "string" && name.length > 0, "app(name) harus string");
|
|
22
|
+
const opts = (typeof optsOrFn === "function" ? {} : optsOrFn) ?? {};
|
|
23
|
+
const fn = (typeof optsOrFn === "function" ? optsOrFn : maybeFn);
|
|
24
|
+
assert(typeof fn === "function", "app(..., fn) fn harus function");
|
|
25
|
+
CURRENT = { type: "app", name, entities: [], meta: { ...(opts.meta ?? {}) } };
|
|
26
|
+
if (opts.policies) {
|
|
27
|
+
for (const [target, value] of Object.entries(opts.policies)) {
|
|
28
|
+
mergePolicy(target, value);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
fn({
|
|
32
|
+
entity(entityName, entityFn) {
|
|
33
|
+
assert(CURRENT, "entity() harus di dalam app()");
|
|
34
|
+
const entity = {
|
|
35
|
+
type: "entity",
|
|
36
|
+
name: entityName,
|
|
37
|
+
id: defaultEntityId(entityName),
|
|
38
|
+
operations: [],
|
|
39
|
+
};
|
|
40
|
+
const eb = {
|
|
41
|
+
create(opName) {
|
|
42
|
+
entity.operations.push({ kind: "create", name: opName ?? "create" });
|
|
43
|
+
},
|
|
44
|
+
get(opName) {
|
|
45
|
+
entity.operations.push({ kind: "get", name: opName ?? "get" });
|
|
46
|
+
},
|
|
47
|
+
list(opName) {
|
|
48
|
+
entity.operations.push({ kind: "list", name: opName ?? "list" });
|
|
49
|
+
},
|
|
50
|
+
update(opName) {
|
|
51
|
+
entity.operations.push({ kind: "update", name: opName ?? "update" });
|
|
52
|
+
},
|
|
53
|
+
remove(opName) {
|
|
54
|
+
entity.operations.push({ kind: "remove", name: opName ?? "remove" });
|
|
55
|
+
},
|
|
56
|
+
model(fields) {
|
|
57
|
+
// shallow copy
|
|
58
|
+
entity.model = { ...(entity.model ?? {}), ...fields };
|
|
59
|
+
},
|
|
60
|
+
plural(p) {
|
|
61
|
+
entity.plural = p;
|
|
62
|
+
},
|
|
63
|
+
op(kind, options) {
|
|
64
|
+
if (options?.enabled === false)
|
|
65
|
+
return;
|
|
66
|
+
entity.operations.push({ kind, name: options?.name ?? kind });
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
entityFn(eb);
|
|
70
|
+
CURRENT.entities.push(entity);
|
|
71
|
+
},
|
|
72
|
+
meta(key, value) {
|
|
73
|
+
assert(CURRENT, "meta() harus di dalam app()");
|
|
74
|
+
CURRENT.meta[key] = value;
|
|
75
|
+
},
|
|
76
|
+
policy(target, value) {
|
|
77
|
+
assert(CURRENT, "policy() harus di dalam app()");
|
|
78
|
+
mergePolicy(target, value);
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Load DSL file (TS/JS) by dynamic import.
|
|
84
|
+
* - Untuk proyek ini: jalankan CLI via `tsx` (default).
|
|
85
|
+
* - Jika ingin `node dist/cli.js`, file DSL tetap bisa TS karena tsconfig include, tapi runtime Node butuh JS/ESM.
|
|
86
|
+
*/
|
|
87
|
+
export async function loadDsl(entry) {
|
|
88
|
+
const abs = path.resolve(process.cwd(), entry);
|
|
89
|
+
const url = pathToFileURL(abs).href;
|
|
90
|
+
// reset
|
|
91
|
+
CURRENT = null;
|
|
92
|
+
try {
|
|
93
|
+
await import(url);
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
const errMessage = err instanceof Error ? err.message : String(err);
|
|
97
|
+
console.warn("backend loader dynamic import failed, attempting transpile fallback:", errMessage);
|
|
98
|
+
try {
|
|
99
|
+
const ts = await import("typescript");
|
|
100
|
+
const src = await (await import("node:fs/promises")).readFile(abs, "utf-8");
|
|
101
|
+
const transpiled = ts.transpileModule(src, { compilerOptions: { module: ts.ModuleKind.ESNext, target: ts.ScriptTarget.ES2022, esModuleInterop: true } }).outputText;
|
|
102
|
+
const tmp = path.join(path.dirname(abs), `.dsl-tmp-${Date.now()}.mjs`);
|
|
103
|
+
await (await import("node:fs/promises")).writeFile(tmp, transpiled, "utf-8");
|
|
104
|
+
await import(pathToFileURL(tmp).href);
|
|
105
|
+
try {
|
|
106
|
+
await (await import("node:fs/promises")).unlink(tmp);
|
|
107
|
+
}
|
|
108
|
+
catch (_) { }
|
|
109
|
+
}
|
|
110
|
+
catch (err2) {
|
|
111
|
+
const errMessage2 = err2 instanceof Error ? err2.message : String(err2);
|
|
112
|
+
throw new Error(`Failed to load DSL (${entry}): ${errMessage2}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
assert(CURRENT, `DSL tidak memanggil app(...) — file: ${entry}`);
|
|
116
|
+
// validate + normalize
|
|
117
|
+
const parsed = DeclAppSchema.parse(CURRENT);
|
|
118
|
+
return parsed;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/dsl/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Project } from "ts-morph";
|
|
2
|
+
export declare function emitIdAdapter(project: Project, outDir: string, policies?: any): void;
|
|
3
|
+
export declare function emitLoggerAdapter(project: Project, outDir: string, policies?: any): void;
|
|
4
|
+
export declare function emitContextAdapter(project: Project, outDir: string, policies?: any): void;
|
|
5
|
+
export declare function emitHttpAdapter(project: Project, outDir: string, policies?: any): void;
|
|
6
|
+
export declare function emitErrorAdapter(project: Project, outDir: string, policies?: any): void;
|
|
7
|
+
export declare function emitPaginationAdapter(project: Project, outDir: string, policies?: any): void;
|
|
8
|
+
export declare function emitValidationAdapter(project: Project, outDir: string, policies?: any): void;
|
|
9
|
+
export declare function emitResponseAdapter(project: Project, outDir: string, policies?: any): void;
|
|
10
|
+
export declare function emitAuthAdapter(project: Project, outDir: string, policies?: any): void;
|
|
11
|
+
//# sourceMappingURL=adapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../../src/emit/backend/adapters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,QAgC7E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,QAsCjF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,QA6BlF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,QA+C/E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,QAsChF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,QA4BrF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,QAiDrF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,QA0CnF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,QA8D/E"}
|