@objectstack/cli 4.0.4 → 4.0.5
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/README.md +12 -25
- package/dist/commands/build.d.ts +5 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +6 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/compile.d.ts +3 -0
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +128 -6
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/create.js +1 -1
- package/dist/commands/data/create.js +2 -2
- package/dist/commands/data/create.js.map +1 -1
- package/dist/commands/data/delete.js +2 -2
- package/dist/commands/data/delete.js.map +1 -1
- package/dist/commands/data/get.js +2 -2
- package/dist/commands/data/get.js.map +1 -1
- package/dist/commands/data/query.js +2 -2
- package/dist/commands/data/query.js.map +1 -1
- package/dist/commands/data/update.js +2 -2
- package/dist/commands/data/update.js.map +1 -1
- package/dist/commands/dev.d.ts +3 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +48 -19
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/generate.js +9 -9
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/i18n/check.d.ts +18 -0
- package/dist/commands/i18n/check.d.ts.map +1 -0
- package/dist/commands/i18n/check.js +153 -0
- package/dist/commands/i18n/check.js.map +1 -0
- package/dist/commands/init.js +2 -2
- package/dist/commands/lint.d.ts +3 -0
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +24 -0
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/login.d.ts +17 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +313 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/{auth/logout.js → logout.js} +14 -2
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/meta/delete.js +2 -2
- package/dist/commands/meta/delete.js.map +1 -1
- package/dist/commands/meta/get.js +2 -2
- package/dist/commands/meta/get.js.map +1 -1
- package/dist/commands/meta/list.js +2 -2
- package/dist/commands/meta/list.js.map +1 -1
- package/dist/commands/meta/register.js +2 -2
- package/dist/commands/meta/register.js.map +1 -1
- package/dist/commands/projects/bind.d.ts +30 -0
- package/dist/commands/projects/bind.d.ts.map +1 -0
- package/dist/commands/projects/bind.js +132 -0
- package/dist/commands/projects/bind.js.map +1 -0
- package/dist/commands/projects/create.d.ts +28 -0
- package/dist/commands/projects/create.d.ts.map +1 -0
- package/dist/commands/projects/create.js +120 -0
- package/dist/commands/projects/create.js.map +1 -0
- package/dist/commands/projects/list.d.ts +21 -0
- package/dist/commands/projects/list.d.ts.map +1 -0
- package/dist/commands/projects/list.js +79 -0
- package/dist/commands/projects/list.js.map +1 -0
- package/dist/commands/projects/projects.test.d.ts +2 -0
- package/dist/commands/projects/projects.test.d.ts.map +1 -0
- package/dist/commands/projects/projects.test.js +56 -0
- package/dist/commands/projects/projects.test.js.map +1 -0
- package/dist/commands/projects/show.d.ts +21 -0
- package/dist/commands/projects/show.d.ts.map +1 -0
- package/dist/commands/projects/show.js +72 -0
- package/dist/commands/projects/show.js.map +1 -0
- package/dist/commands/projects/switch.d.ts +24 -0
- package/dist/commands/projects/switch.d.ts.map +1 -0
- package/dist/commands/projects/switch.js +64 -0
- package/dist/commands/projects/switch.js.map +1 -0
- package/dist/commands/publish.d.ts +14 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +91 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/{auth/login.d.ts → register.d.ts} +3 -2
- package/dist/commands/register.d.ts.map +1 -0
- package/dist/commands/{auth/login.js → register.js} +44 -61
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/serve.d.ts +8 -0
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +606 -44
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/start.d.ts +11 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +43 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/{auth/whoami.js → whoami.js} +5 -5
- package/dist/commands/whoami.js.map +1 -0
- package/dist/index.d.ts +7 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/utils/account.d.ts +31 -0
- package/dist/utils/account.d.ts.map +1 -0
- package/dist/utils/account.js +154 -0
- package/dist/utils/account.js.map +1 -0
- package/dist/utils/api-client.d.ts +10 -4
- package/dist/utils/api-client.d.ts.map +1 -1
- package/dist/utils/api-client.js +13 -7
- package/dist/utils/api-client.js.map +1 -1
- package/dist/utils/auth-config.d.ts +6 -0
- package/dist/utils/auth-config.d.ts.map +1 -1
- package/dist/utils/auth-config.js.map +1 -1
- package/dist/utils/build-runtime.d.ts +45 -0
- package/dist/utils/build-runtime.d.ts.map +1 -0
- package/dist/utils/build-runtime.js +154 -0
- package/dist/utils/build-runtime.js.map +1 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +17 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/console.d.ts +32 -0
- package/dist/utils/console.d.ts.map +1 -0
- package/dist/utils/console.js +169 -0
- package/dist/utils/console.js.map +1 -0
- package/dist/utils/extract-hook-body.d.ts +13 -0
- package/dist/utils/extract-hook-body.d.ts.map +1 -0
- package/dist/utils/extract-hook-body.js +175 -0
- package/dist/utils/extract-hook-body.js.map +1 -0
- package/dist/utils/format.d.ts +8 -0
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +15 -2
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/i18n-coverage.d.ts +61 -0
- package/dist/utils/i18n-coverage.d.ts.map +1 -0
- package/dist/utils/i18n-coverage.js +176 -0
- package/dist/utils/i18n-coverage.js.map +1 -0
- package/dist/utils/lower-callables.d.ts +17 -0
- package/dist/utils/lower-callables.d.ts.map +1 -0
- package/dist/utils/lower-callables.js +181 -0
- package/dist/utils/lower-callables.js.map +1 -0
- package/dist/utils/plugin-detection.d.ts +1 -0
- package/dist/utils/plugin-detection.d.ts.map +1 -1
- package/dist/utils/plugin-detection.js +41 -0
- package/dist/utils/plugin-detection.js.map +1 -1
- package/dist/utils/studio.d.ts +1 -0
- package/dist/utils/studio.d.ts.map +1 -1
- package/dist/utils/studio.js +25 -9
- package/dist/utils/studio.js.map +1 -1
- package/package.json +55 -21
- package/.turbo/turbo-build.log +0 -4
- package/CHANGELOG.md +0 -821
- package/bin/run-dev.js +0 -5
- package/dist/commands/auth/login.d.ts.map +0 -1
- package/dist/commands/auth/login.js.map +0 -1
- package/dist/commands/auth/logout.d.ts.map +0 -1
- package/dist/commands/auth/logout.js.map +0 -1
- package/dist/commands/auth/whoami.d.ts.map +0 -1
- package/dist/commands/auth/whoami.js.map +0 -1
- package/dist/commands/codemod/v2-to-v3.d.ts +0 -10
- package/dist/commands/codemod/v2-to-v3.d.ts.map +0 -1
- package/dist/commands/codemod/v2-to-v3.js +0 -145
- package/dist/commands/codemod/v2-to-v3.js.map +0 -1
- package/dist/commands/plugin/add.d.ts +0 -22
- package/dist/commands/plugin/add.d.ts.map +0 -1
- package/dist/commands/plugin/add.js +0 -93
- package/dist/commands/plugin/add.js.map +0 -1
- package/dist/commands/plugin/build.d.ts +0 -29
- package/dist/commands/plugin/build.d.ts.map +0 -1
- package/dist/commands/plugin/build.js +0 -170
- package/dist/commands/plugin/build.js.map +0 -1
- package/dist/commands/plugin/info.d.ts +0 -10
- package/dist/commands/plugin/info.d.ts.map +0 -1
- package/dist/commands/plugin/info.js +0 -65
- package/dist/commands/plugin/info.js.map +0 -1
- package/dist/commands/plugin/list.d.ts +0 -13
- package/dist/commands/plugin/list.d.ts.map +0 -1
- package/dist/commands/plugin/list.js +0 -78
- package/dist/commands/plugin/list.js.map +0 -1
- package/dist/commands/plugin/publish.d.ts +0 -27
- package/dist/commands/plugin/publish.d.ts.map +0 -1
- package/dist/commands/plugin/publish.js +0 -152
- package/dist/commands/plugin/publish.js.map +0 -1
- package/dist/commands/plugin/remove.d.ts +0 -20
- package/dist/commands/plugin/remove.d.ts.map +0 -1
- package/dist/commands/plugin/remove.js +0 -79
- package/dist/commands/plugin/remove.js.map +0 -1
- package/dist/commands/plugin/validate.d.ts +0 -23
- package/dist/commands/plugin/validate.d.ts.map +0 -1
- package/dist/commands/plugin/validate.js +0 -251
- package/dist/commands/plugin/validate.js.map +0 -1
- package/src/bin.ts +0 -13
- package/src/commands/auth/login.ts +0 -188
- package/src/commands/auth/logout.ts +0 -51
- package/src/commands/auth/whoami.ts +0 -85
- package/src/commands/codemod/v2-to-v3.ts +0 -171
- package/src/commands/compile.ts +0 -114
- package/src/commands/create.ts +0 -281
- package/src/commands/data/create.ts +0 -110
- package/src/commands/data/delete.ts +0 -84
- package/src/commands/data/get.ts +0 -84
- package/src/commands/data/query.ts +0 -127
- package/src/commands/data/update.ts +0 -114
- package/src/commands/dev.ts +0 -83
- package/src/commands/diff.ts +0 -294
- package/src/commands/doctor.ts +0 -572
- package/src/commands/explain.ts +0 -412
- package/src/commands/generate.ts +0 -924
- package/src/commands/info.ts +0 -124
- package/src/commands/init.ts +0 -327
- package/src/commands/lint.ts +0 -315
- package/src/commands/meta/delete.ts +0 -79
- package/src/commands/meta/get.ts +0 -73
- package/src/commands/meta/list.ts +0 -105
- package/src/commands/meta/register.ts +0 -97
- package/src/commands/plugin/add.ts +0 -112
- package/src/commands/plugin/build.ts +0 -193
- package/src/commands/plugin/info.ts +0 -79
- package/src/commands/plugin/list.ts +0 -93
- package/src/commands/plugin/publish.ts +0 -176
- package/src/commands/plugin/remove.ts +0 -97
- package/src/commands/plugin/validate.ts +0 -268
- package/src/commands/serve.ts +0 -411
- package/src/commands/studio.ts +0 -52
- package/src/commands/test.ts +0 -135
- package/src/commands/validate.ts +0 -143
- package/src/index.ts +0 -22
- package/src/utils/api-client.ts +0 -88
- package/src/utils/auth-config.ts +0 -107
- package/src/utils/config.ts +0 -80
- package/src/utils/format.ts +0 -267
- package/src/utils/output-formatter.ts +0 -91
- package/src/utils/plugin-detection.ts +0 -16
- package/src/utils/plugin-helpers.ts +0 -37
- package/src/utils/studio.ts +0 -350
- package/test/commands.test.ts +0 -128
- package/test/create.test.ts +0 -25
- package/test/plugin-commands.test.ts +0 -44
- package/test/plugin.test.ts +0 -169
- package/test/remote-api-commands.test.ts +0 -188
- package/test/remote-api-utils.test.ts +0 -196
- package/test/serve-host-config.test.ts +0 -77
- package/tsconfig.build.json +0 -20
- package/tsconfig.json +0 -25
- package/tsup.config.ts +0 -23
- /package/dist/commands/{auth/logout.d.ts → logout.d.ts} +0 -0
- /package/dist/commands/{auth/whoami.d.ts → whoami.d.ts} +0 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
2
|
+
/**
|
|
3
|
+
* Extract a metadata-only `HookBody` from an inline JS function.
|
|
4
|
+
*
|
|
5
|
+
* The CLI's `lowerCallables` pass already has direct access to every
|
|
6
|
+
* `handler: (ctx) => {...}` value the user wrote in their `defineStack({...})`
|
|
7
|
+
* config. After tsx/esbuild has loaded the config, those callables are real
|
|
8
|
+
* runtime functions whose `.toString()` returns the compiled source — that
|
|
9
|
+
* source is exactly what we want to ship as `body.source` so the runtime can
|
|
10
|
+
* re-evaluate it inside the QuickJS sandbox without needing the .mjs side
|
|
11
|
+
* channel.
|
|
12
|
+
*
|
|
13
|
+
* For v1 we apply a deliberately simple **regex allow-list** over the
|
|
14
|
+
* extracted body — full TypeScript AST analysis is deferred to v2. Anything
|
|
15
|
+
* the regex rejects (top-level `import`, `require(`, `fetch(`, `process.*`,
|
|
16
|
+
* `globalThis.*`, `eval`, `new Function`) makes the build **fail**. There is
|
|
17
|
+
* no silent fallback to the L3 .mjs path because that path is being closed.
|
|
18
|
+
*
|
|
19
|
+
* Capability inference: we scan the body for known `ctx.api.*`, `ctx.log.*`,
|
|
20
|
+
* `ctx.crypto.*` access patterns and add the matching capability tokens to
|
|
21
|
+
* `body.capabilities` automatically. Authors can still override by setting
|
|
22
|
+
* `// @capabilities api.read api.write` as the first line of the function.
|
|
23
|
+
*/
|
|
24
|
+
const FORBIDDEN_PATTERNS = [
|
|
25
|
+
{ rx: /\bimport\s*[\(\*\{]/, reason: 'dynamic `import()` and ES imports are not allowed in hook/action bodies — declare a Connector recipe instead' },
|
|
26
|
+
{ rx: /\brequire\s*\(/, reason: '`require()` is not allowed in hook/action bodies' },
|
|
27
|
+
{ rx: /\bfetch\s*\(/, reason: '`fetch()` is not allowed in hook/action bodies — declare a Connector recipe instead' },
|
|
28
|
+
{ rx: /\bprocess\s*\./, reason: '`process` access is not allowed in hook/action bodies' },
|
|
29
|
+
{ rx: /\bglobalThis\s*\./, reason: '`globalThis` access is not allowed in hook/action bodies' },
|
|
30
|
+
{ rx: /\beval\s*\(/, reason: '`eval()` is not allowed in hook/action bodies' },
|
|
31
|
+
{ rx: /\bnew\s+Function\s*\(/, reason: '`new Function()` is not allowed in hook/action bodies' },
|
|
32
|
+
];
|
|
33
|
+
const CAPABILITY_PATTERNS = [
|
|
34
|
+
// Match `ctx.api.object(...)` directly OR a local alias like
|
|
35
|
+
// `const api = ctx.api;` then `api.object(...)`. We accept any
|
|
36
|
+
// identifier (or chain) ending in `.object(...)` followed by a known
|
|
37
|
+
// read/write method — over-inclusive but safe (false-positive caps
|
|
38
|
+
// get rejected at the runtime by the sandbox if not actually granted).
|
|
39
|
+
{ rx: /\.object\s*\([^)]+\)\s*\.\s*(?:find|findOne|count|aggregate|get|list)\b/, cap: 'api.read' },
|
|
40
|
+
{ rx: /\.object\s*\([^)]+\)\s*\.\s*(?:insert|update|upsert|delete|patch|remove|create)\b/, cap: 'api.write' },
|
|
41
|
+
{ rx: /ctx\.crypto\.randomUUID\b/, cap: 'crypto.uuid' },
|
|
42
|
+
{ rx: /ctx\.crypto\.hash\b/, cap: 'crypto.hash' },
|
|
43
|
+
{ rx: /ctx\.log\.(?:info|warn|error|debug)\b/, cap: 'log' },
|
|
44
|
+
];
|
|
45
|
+
/**
|
|
46
|
+
* Extract the body source from a callable. Throws on forbidden patterns.
|
|
47
|
+
*/
|
|
48
|
+
export function extractHookBody(fn, originLabel) {
|
|
49
|
+
const raw = String(fn);
|
|
50
|
+
// Strip leading function/arrow header and trailing closing brace so the
|
|
51
|
+
// result is a pure block body suitable for `new Function('ctx', body)`.
|
|
52
|
+
const block = peelToBlockBody(raw);
|
|
53
|
+
if (!block) {
|
|
54
|
+
throw new Error(`[hook-body-extract] could not parse the body of ${originLabel}; ` +
|
|
55
|
+
`please rewrite the handler as a single arrow function or named function expression`);
|
|
56
|
+
}
|
|
57
|
+
// Reject any forbidden token before we ship the source as metadata.
|
|
58
|
+
for (const { rx, reason } of FORBIDDEN_PATTERNS) {
|
|
59
|
+
if (rx.test(block.source)) {
|
|
60
|
+
throw new Error(`[hook-body-extract] ${originLabel}: ${reason}\n` +
|
|
61
|
+
`--- offending body source ---\n${block.source.slice(0, 400)}${block.source.length > 400 ? '…' : ''}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Infer capabilities from API surface usage.
|
|
65
|
+
const inferred = new Set();
|
|
66
|
+
for (const { rx, cap } of CAPABILITY_PATTERNS) {
|
|
67
|
+
if (rx.test(block.source))
|
|
68
|
+
inferred.add(cap);
|
|
69
|
+
}
|
|
70
|
+
// Honour an explicit override: `// @capabilities api.read api.write`.
|
|
71
|
+
const overrideMatch = block.source.match(/^[\s\n]*\/\/\s*@capabilities\s+([a-z.\s]+)/m);
|
|
72
|
+
if (overrideMatch) {
|
|
73
|
+
const tokens = overrideMatch[1].split(/\s+/).filter(Boolean);
|
|
74
|
+
for (const t of tokens) {
|
|
75
|
+
if (t === 'api.read' ||
|
|
76
|
+
t === 'api.write' ||
|
|
77
|
+
t === 'crypto.uuid' ||
|
|
78
|
+
t === 'crypto.hash' ||
|
|
79
|
+
t === 'log') {
|
|
80
|
+
inferred.add(t);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
source: block.source,
|
|
86
|
+
capabilities: [...inferred].sort(),
|
|
87
|
+
isExpression: block.isExpression,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Remove the parameter list and outermost braces from a function string,
|
|
92
|
+
* yielding the bare statements (or expression for shorthand arrows).
|
|
93
|
+
*/
|
|
94
|
+
function peelToBlockBody(raw) {
|
|
95
|
+
// Try arrow forms first since they're the dominant authoring style.
|
|
96
|
+
// Match the parameter list followed by `=>` and either `{...}` or expr.
|
|
97
|
+
// We rely on a manual brace scan rather than a single regex so braces
|
|
98
|
+
// inside string/template literals don't confuse us.
|
|
99
|
+
const arrowIdx = findTopLevelArrow(raw);
|
|
100
|
+
if (arrowIdx >= 0) {
|
|
101
|
+
const after = raw.slice(arrowIdx + 2).trimStart();
|
|
102
|
+
if (after.startsWith('{')) {
|
|
103
|
+
const body = sliceBalanced(after, '{', '}');
|
|
104
|
+
if (body)
|
|
105
|
+
return { source: body.inner, isExpression: false };
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// Implicit-return arrow — wrap as `return ...;`
|
|
109
|
+
const expr = after.replace(/[;\s]+$/g, '');
|
|
110
|
+
return { source: `return (${expr});`, isExpression: true };
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// function () { ... } / async function () { ... }
|
|
114
|
+
const fnIdx = raw.search(/\bfunction\b/);
|
|
115
|
+
if (fnIdx >= 0) {
|
|
116
|
+
const braceIdx = raw.indexOf('{', fnIdx);
|
|
117
|
+
if (braceIdx > 0) {
|
|
118
|
+
const body = sliceBalanced(raw.slice(braceIdx), '{', '}');
|
|
119
|
+
if (body)
|
|
120
|
+
return { source: body.inner, isExpression: false };
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Method shorthand inside an object literal: `name(ctx) { ... }`.
|
|
124
|
+
const braceIdx = raw.indexOf('{');
|
|
125
|
+
if (braceIdx > 0) {
|
|
126
|
+
const body = sliceBalanced(raw.slice(braceIdx), '{', '}');
|
|
127
|
+
if (body)
|
|
128
|
+
return { source: body.inner, isExpression: false };
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
function findTopLevelArrow(s) {
|
|
133
|
+
// Skip past balanced parameter list `(...)` then expect `=>`.
|
|
134
|
+
// We scan looking for `(` not preceded by an identifier char and
|
|
135
|
+
// immediately matched by a balanced `)` then optional whitespace then `=>`.
|
|
136
|
+
let i = 0;
|
|
137
|
+
const len = s.length;
|
|
138
|
+
while (i < len) {
|
|
139
|
+
if (s[i] === '(') {
|
|
140
|
+
const closing = matchBalancedIndex(s, i, '(', ')');
|
|
141
|
+
if (closing < 0)
|
|
142
|
+
return -1;
|
|
143
|
+
let j = closing + 1;
|
|
144
|
+
while (j < len && /\s/.test(s[j]))
|
|
145
|
+
j++;
|
|
146
|
+
if (s[j] === '=' && s[j + 1] === '>')
|
|
147
|
+
return j;
|
|
148
|
+
i = closing + 1;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
i++;
|
|
152
|
+
}
|
|
153
|
+
return -1;
|
|
154
|
+
}
|
|
155
|
+
function matchBalancedIndex(s, start, open, close) {
|
|
156
|
+
let depth = 0;
|
|
157
|
+
for (let i = start; i < s.length; i++) {
|
|
158
|
+
const c = s[i];
|
|
159
|
+
if (c === open)
|
|
160
|
+
depth++;
|
|
161
|
+
else if (c === close) {
|
|
162
|
+
depth--;
|
|
163
|
+
if (depth === 0)
|
|
164
|
+
return i;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return -1;
|
|
168
|
+
}
|
|
169
|
+
function sliceBalanced(s, open, close) {
|
|
170
|
+
const end = matchBalancedIndex(s, 0, open, close);
|
|
171
|
+
if (end < 0)
|
|
172
|
+
return null;
|
|
173
|
+
return { inner: s.slice(1, end) };
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=extract-hook-body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-hook-body.js","sourceRoot":"","sources":["../../src/utils/extract-hook-body.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/format.d.ts
CHANGED
|
@@ -46,6 +46,14 @@ export interface ServerReadyOptions {
|
|
|
46
46
|
pluginNames?: string[];
|
|
47
47
|
uiEnabled?: boolean;
|
|
48
48
|
studioPath?: string;
|
|
49
|
+
accountPath?: string;
|
|
50
|
+
consolePath?: string;
|
|
51
|
+
/** Resolved storage driver display name (e.g. "MongoDBDriver", "SqlDriver(pg)"). */
|
|
52
|
+
driverLabel?: string;
|
|
53
|
+
/** Resolved DB URL with credentials redacted. */
|
|
54
|
+
databaseUrl?: string;
|
|
55
|
+
/** Whether the SecurityPlugin was wired in multi-tenant mode (default true). */
|
|
56
|
+
multiTenant?: boolean;
|
|
49
57
|
}
|
|
50
58
|
export declare function printServerReady(opts: ServerReadyOptions): void;
|
|
51
59
|
export declare function printMetadataStats(stats: MetadataStats): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAGpC,eAAO,MAAM,QAAQ,gBAAgB,CAAC;AACtC,eAAO,MAAM,SAAS,OAAO,CAAC;AAI9B,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,QAM1C;AAID,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,QAGxC;AAID,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,QAGzE;AAID,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,QAEvC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,QAEvC;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,QAErC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,QAEpC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,QAEpC;AAID,wBAAgB,WAAW;;;EAM1B;AAID,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,QAwC9C;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,GAAG,GAAG,aAAa,CAwC/D;AAID,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAGpC,eAAO,MAAM,QAAQ,gBAAgB,CAAC;AACtC,eAAO,MAAM,SAAS,OAAO,CAAC;AAI9B,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,QAM1C;AAID,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,QAGxC;AAID,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,QAGzE;AAID,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,QAEvC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,QAEvC;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,QAErC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,QAEpC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,QAEpC;AAID,wBAAgB,WAAW;;;EAM1B;AAID,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,QAwC9C;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,GAAG,GAAG,aAAa,CAwC/D;AAID,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,QAgCxD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,QAwDtD"}
|
package/dist/utils/format.js
CHANGED
|
@@ -127,13 +127,26 @@ export function printServerReady(opts) {
|
|
|
127
127
|
console.log('');
|
|
128
128
|
console.log(chalk.bold.green(' ✓ Server is ready'));
|
|
129
129
|
console.log('');
|
|
130
|
-
console.log(chalk.cyan(' ➜') + chalk.bold(' API:
|
|
130
|
+
console.log(chalk.cyan(' ➜') + chalk.bold(' API: ') + chalk.cyan(base + '/'));
|
|
131
131
|
if (opts.uiEnabled && opts.studioPath) {
|
|
132
|
-
console.log(chalk.cyan(' ➜') + chalk.bold(' Studio:
|
|
132
|
+
console.log(chalk.cyan(' ➜') + chalk.bold(' Studio: ') + chalk.cyan(base + opts.studioPath + '/'));
|
|
133
|
+
}
|
|
134
|
+
if (opts.uiEnabled && opts.accountPath) {
|
|
135
|
+
console.log(chalk.cyan(' ➜') + chalk.bold(' Account: ') + chalk.cyan(base + opts.accountPath + '/'));
|
|
136
|
+
}
|
|
137
|
+
if (opts.uiEnabled && opts.consolePath) {
|
|
138
|
+
console.log(chalk.cyan(' ➜') + chalk.bold(' Console: ') + chalk.cyan(base + opts.consolePath + '/'));
|
|
133
139
|
}
|
|
134
140
|
console.log('');
|
|
135
141
|
console.log(chalk.dim(` Config: ${opts.configFile}`));
|
|
136
142
|
console.log(chalk.dim(` Mode: ${opts.isDev ? 'development' : 'production'}`));
|
|
143
|
+
if (opts.driverLabel) {
|
|
144
|
+
const dbInfo = opts.databaseUrl ? `${opts.driverLabel} ${chalk.dim('→')} ${opts.databaseUrl}` : opts.driverLabel;
|
|
145
|
+
console.log(chalk.dim(` Driver: ${dbInfo}`));
|
|
146
|
+
}
|
|
147
|
+
if (opts.multiTenant !== undefined) {
|
|
148
|
+
console.log(chalk.dim(` Tenancy: ${opts.multiTenant ? 'multi-tenant' : 'single-tenant'}`));
|
|
149
|
+
}
|
|
137
150
|
console.log(chalk.dim(` Plugins: ${opts.pluginCount} loaded`));
|
|
138
151
|
if (opts.pluginNames && opts.pluginNames.length > 0) {
|
|
139
152
|
console.log(chalk.dim(` ${opts.pluginNames.join(', ')}`));
|
package/dist/utils/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,uEAAuE;AACvE,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC;AACtC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC;AAE9B,uEAAuE;AAEvE,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACpI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAsB,EAAE,IAAa;IACxE,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,WAAW;IACzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;QACjC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI;KACzC,CAAC;AACJ,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,eAAe,CAAC,KAAe;IAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAK,KAAa,CAAC,MAAM,IAAI,EAAE,CAAC;IAE3D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,0BAA0B;IAC1B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IACjD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAI,KAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,OAAO,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC;QAC/C,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,MAAM,IAAI,GAAI,KAAa,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAClD,MAAM,IAAI,GAAI,KAAa,CAAC,IAAI,IAAI,EAAE,CAAC;YACvC,MAAM,GAAG,GAAI,KAAa,CAAC,OAAO,IAAI,EAAE,CAAC;YAEzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;YAEhD,yCAAyC;YACzC,IAAK,KAAa,CAAC,QAAQ,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,KAAK,CAAE,KAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YACpF,CAAC;YACD,IAAK,KAAa,CAAC,QAAQ,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,GAAG,CAAE,KAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,4BAA4B,CAAC,CAAC,CAAC;AACzE,CAAC;AA4BD,MAAM,UAAU,oBAAoB,CAAC,MAAW;IAC9C,MAAM,KAAK,GAAG,CAAC,GAAQ,EAAE,EAAE;QACzB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC;QAC1C,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACnE,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,wCAAwC;IACxC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9F,KAAK,MAAM,GAAG,IAAI,OAAgB,EAAE,CAAC;QACnC,IAAI,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjD,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QAC9B,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAChD,MAAM;QACN,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QACxB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;QACpC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QAC9B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QAC9B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1B,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;QAClC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;QAClC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QACxB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1B,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;QACtC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5B,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;QACtC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;QACxC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QAC9B,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;KACrC,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export type CoverageSeverity = 'error' | 'warning';
|
|
2
|
+
export interface CoverageIssue {
|
|
3
|
+
severity: CoverageSeverity;
|
|
4
|
+
/** BCP-47 locale code where the key is missing. */
|
|
5
|
+
locale: string;
|
|
6
|
+
/** Dot-path of the missing key (e.g. `objects.account._views.all_accounts.label`). */
|
|
7
|
+
key: string;
|
|
8
|
+
/** Source kind: object / field / option / view / action / globalAction. */
|
|
9
|
+
source: 'object' | 'field' | 'option' | 'view' | 'action' | 'globalAction';
|
|
10
|
+
/** Human-readable explanation. */
|
|
11
|
+
message: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CoverageStats {
|
|
14
|
+
locale: string;
|
|
15
|
+
expected: number;
|
|
16
|
+
translated: number;
|
|
17
|
+
missing: number;
|
|
18
|
+
/** Coverage percent rounded to one decimal (0–100). */
|
|
19
|
+
coveragePercent: number;
|
|
20
|
+
}
|
|
21
|
+
export interface CoverageReport {
|
|
22
|
+
/** Locales discovered across all bundles attached to the stack. */
|
|
23
|
+
locales: string[];
|
|
24
|
+
/** Default / source-of-truth locale (errors are raised against this one). */
|
|
25
|
+
defaultLocale: string;
|
|
26
|
+
/** Per-locale coverage statistics. */
|
|
27
|
+
stats: CoverageStats[];
|
|
28
|
+
/** Per-issue listing (errors + warnings, locale-scoped). */
|
|
29
|
+
issues: CoverageIssue[];
|
|
30
|
+
/** Aggregate counts. */
|
|
31
|
+
totals: {
|
|
32
|
+
expectedKeys: number;
|
|
33
|
+
issues: number;
|
|
34
|
+
errors: number;
|
|
35
|
+
warnings: number;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export interface CoverageOptions {
|
|
39
|
+
/**
|
|
40
|
+
* The locale that *must* be translated. Missing keys here surface as
|
|
41
|
+
* errors; missing keys in other locales surface as warnings. Defaults to
|
|
42
|
+
* `'en'`.
|
|
43
|
+
*/
|
|
44
|
+
defaultLocale?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Restrict the check to this set of locales (in addition to the default
|
|
47
|
+
* locale). When omitted, every locale that appears in any bundle is
|
|
48
|
+
* checked.
|
|
49
|
+
*/
|
|
50
|
+
locales?: string[];
|
|
51
|
+
/**
|
|
52
|
+
* When `true`, missing keys in non-default locales are also reported as
|
|
53
|
+
* errors. Useful for CI gates that demand full translation parity.
|
|
54
|
+
*/
|
|
55
|
+
strict?: boolean;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Compute a coverage report for a normalized stack config.
|
|
59
|
+
*/
|
|
60
|
+
export declare function computeI18nCoverage(config: any, opts?: CoverageOptions): CoverageReport;
|
|
61
|
+
//# sourceMappingURL=i18n-coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n-coverage.d.ts","sourceRoot":"","sources":["../../src/utils/i18n-coverage.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,GAAG,EAAE,MAAM,CAAC;IACZ,2EAA2E;IAC3E,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAC;IAC3E,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,4DAA4D;IAC5D,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,wBAAwB;IACxB,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA0ID;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,GAAE,eAAoB,GAAG,cAAc,CA8D3F"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
2
|
+
// ─── Bundle helpers ────────────────────────────────────────────────────
|
|
3
|
+
function mergeData(target, source) {
|
|
4
|
+
if (!target)
|
|
5
|
+
return JSON.parse(JSON.stringify(source));
|
|
6
|
+
// shallow object merge across the four well-known sub-records is enough for
|
|
7
|
+
// coverage detection; we never need a deep merge of leaf strings because
|
|
8
|
+
// duplicates are accepted (last-write-wins).
|
|
9
|
+
const out = { ...target };
|
|
10
|
+
if (source.objects) {
|
|
11
|
+
out.objects = { ...(out.objects ?? {}) };
|
|
12
|
+
for (const [name, data] of Object.entries(source.objects)) {
|
|
13
|
+
out.objects[name] = {
|
|
14
|
+
...(out.objects[name] ?? {}),
|
|
15
|
+
...data,
|
|
16
|
+
fields: { ...(out.objects[name]?.fields ?? {}), ...(data.fields ?? {}) },
|
|
17
|
+
_views: { ...(out.objects[name]?._views ?? {}), ...(data._views ?? {}) },
|
|
18
|
+
_actions: { ...(out.objects[name]?._actions ?? {}), ...(data._actions ?? {}) },
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (source.globalActions) {
|
|
23
|
+
out.globalActions = { ...(out.globalActions ?? {}), ...source.globalActions };
|
|
24
|
+
}
|
|
25
|
+
if (source.apps)
|
|
26
|
+
out.apps = { ...(out.apps ?? {}), ...source.apps };
|
|
27
|
+
if (source.messages)
|
|
28
|
+
out.messages = { ...(out.messages ?? {}), ...source.messages };
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
function flattenBundles(bundles) {
|
|
32
|
+
const merged = {};
|
|
33
|
+
const localesSet = new Set();
|
|
34
|
+
for (const bundle of bundles) {
|
|
35
|
+
if (!bundle || typeof bundle !== 'object')
|
|
36
|
+
continue;
|
|
37
|
+
for (const [locale, data] of Object.entries(bundle)) {
|
|
38
|
+
if (!data || typeof data !== 'object')
|
|
39
|
+
continue;
|
|
40
|
+
localesSet.add(locale);
|
|
41
|
+
merged[locale] = mergeData(merged[locale], data);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return { merged, locales: Array.from(localesSet).sort() };
|
|
45
|
+
}
|
|
46
|
+
function viewObjectName(view) {
|
|
47
|
+
return view?.objectName ?? view?.object ?? view?.data?.object;
|
|
48
|
+
}
|
|
49
|
+
function pushKey(out, path, source, context) {
|
|
50
|
+
out.push({ source, path, displayKey: path.join('.'), context });
|
|
51
|
+
}
|
|
52
|
+
function collectExpectedKeys(config) {
|
|
53
|
+
const keys = [];
|
|
54
|
+
const objects = Array.isArray(config?.objects) ? config.objects : [];
|
|
55
|
+
for (const obj of objects) {
|
|
56
|
+
if (!obj?.name)
|
|
57
|
+
continue;
|
|
58
|
+
const objectName = obj.name;
|
|
59
|
+
pushKey(keys, ['objects', objectName, 'label'], 'object', `Object "${objectName}" label`);
|
|
60
|
+
if (obj.pluralLabel || obj.label) {
|
|
61
|
+
pushKey(keys, ['objects', objectName, 'pluralLabel'], 'object', `Object "${objectName}" pluralLabel`);
|
|
62
|
+
}
|
|
63
|
+
if (obj.fields && typeof obj.fields === 'object') {
|
|
64
|
+
for (const [fieldName, field] of Object.entries(obj.fields)) {
|
|
65
|
+
pushKey(keys, ['objects', objectName, 'fields', fieldName, 'label'], 'field', `Field ${objectName}.${fieldName} label`);
|
|
66
|
+
const opts = field?.options;
|
|
67
|
+
if (opts && typeof opts === 'object' && !Array.isArray(opts)) {
|
|
68
|
+
for (const optionKey of Object.keys(opts)) {
|
|
69
|
+
pushKey(keys, ['objects', objectName, 'fields', fieldName, 'options', optionKey], 'option', `Option ${objectName}.${fieldName}.${optionKey}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const views = Array.isArray(config?.views) ? config.views : [];
|
|
76
|
+
for (const view of views) {
|
|
77
|
+
if (!view?.name)
|
|
78
|
+
continue;
|
|
79
|
+
const objectName = viewObjectName(view);
|
|
80
|
+
if (!objectName)
|
|
81
|
+
continue;
|
|
82
|
+
pushKey(keys, ['objects', objectName, '_views', view.name, 'label'], 'view', `View ${objectName}.${view.name} label`);
|
|
83
|
+
}
|
|
84
|
+
const actions = Array.isArray(config?.actions) ? config.actions : [];
|
|
85
|
+
for (const action of actions) {
|
|
86
|
+
if (!action?.name)
|
|
87
|
+
continue;
|
|
88
|
+
const objectName = action.objectName ?? action.object;
|
|
89
|
+
const root = objectName ? ['objects', objectName, '_actions', action.name] : ['globalActions', action.name];
|
|
90
|
+
const source = objectName ? 'action' : 'globalAction';
|
|
91
|
+
const ctxOwner = objectName ? `${objectName}.${action.name}` : action.name;
|
|
92
|
+
pushKey(keys, [...root, 'label'], source, `Action ${ctxOwner} label`);
|
|
93
|
+
if (action.confirmText) {
|
|
94
|
+
pushKey(keys, [...root, 'confirmText'], source, `Action ${ctxOwner} confirmText`);
|
|
95
|
+
}
|
|
96
|
+
if (action.successMessage) {
|
|
97
|
+
pushKey(keys, [...root, 'successMessage'], source, `Action ${ctxOwner} successMessage`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return keys;
|
|
101
|
+
}
|
|
102
|
+
// ─── Lookup ────────────────────────────────────────────────────────────
|
|
103
|
+
function lookupKey(data, path) {
|
|
104
|
+
let current = data;
|
|
105
|
+
for (const segment of path) {
|
|
106
|
+
if (!current || typeof current !== 'object')
|
|
107
|
+
return undefined;
|
|
108
|
+
current = current[segment];
|
|
109
|
+
}
|
|
110
|
+
return typeof current === 'string' && current.length > 0 ? current : undefined;
|
|
111
|
+
}
|
|
112
|
+
// ─── Public API ────────────────────────────────────────────────────────
|
|
113
|
+
/**
|
|
114
|
+
* Compute a coverage report for a normalized stack config.
|
|
115
|
+
*/
|
|
116
|
+
export function computeI18nCoverage(config, opts = {}) {
|
|
117
|
+
const defaultLocale = opts.defaultLocale ?? 'en';
|
|
118
|
+
const bundles = Array.isArray(config?.translations) ? config.translations : [];
|
|
119
|
+
const { merged, locales: discovered } = flattenBundles(bundles);
|
|
120
|
+
let activeLocales;
|
|
121
|
+
if (opts.locales && opts.locales.length > 0) {
|
|
122
|
+
const set = new Set([defaultLocale, ...opts.locales]);
|
|
123
|
+
activeLocales = Array.from(set);
|
|
124
|
+
}
|
|
125
|
+
else if (discovered.length === 0) {
|
|
126
|
+
activeLocales = [defaultLocale];
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
activeLocales = discovered.includes(defaultLocale) ? discovered : [defaultLocale, ...discovered];
|
|
130
|
+
}
|
|
131
|
+
const expected = collectExpectedKeys(config);
|
|
132
|
+
const issues = [];
|
|
133
|
+
const stats = [];
|
|
134
|
+
for (const locale of activeLocales) {
|
|
135
|
+
const data = merged[locale];
|
|
136
|
+
let translated = 0;
|
|
137
|
+
for (const key of expected) {
|
|
138
|
+
const value = lookupKey(data, key.path);
|
|
139
|
+
if (value !== undefined) {
|
|
140
|
+
translated += 1;
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const isError = locale === defaultLocale || opts.strict === true;
|
|
144
|
+
issues.push({
|
|
145
|
+
severity: isError ? 'error' : 'warning',
|
|
146
|
+
locale,
|
|
147
|
+
key: key.displayKey,
|
|
148
|
+
source: key.source,
|
|
149
|
+
message: `${key.context} missing translation for locale "${locale}"`,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
const missing = expected.length - translated;
|
|
153
|
+
stats.push({
|
|
154
|
+
locale,
|
|
155
|
+
expected: expected.length,
|
|
156
|
+
translated,
|
|
157
|
+
missing,
|
|
158
|
+
coveragePercent: expected.length === 0 ? 100 : Math.round((translated / expected.length) * 1000) / 10,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
const errors = issues.filter((i) => i.severity === 'error').length;
|
|
162
|
+
const warnings = issues.length - errors;
|
|
163
|
+
return {
|
|
164
|
+
locales: activeLocales,
|
|
165
|
+
defaultLocale,
|
|
166
|
+
stats,
|
|
167
|
+
issues,
|
|
168
|
+
totals: {
|
|
169
|
+
expectedKeys: expected.length,
|
|
170
|
+
issues: issues.length,
|
|
171
|
+
errors,
|
|
172
|
+
warnings,
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=i18n-coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n-coverage.js","sourceRoot":"","sources":["../../src/utils/i18n-coverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface LoweringResult {
|
|
2
|
+
/** A deep-cloned, JSON-safe copy of the stack with handlers replaced by strings. */
|
|
3
|
+
lowered: Record<string, unknown>;
|
|
4
|
+
/** name → original handler function. Empty when nothing needed lowering. */
|
|
5
|
+
functions: Record<string, (...args: unknown[]) => unknown>;
|
|
6
|
+
/** Number of inline function handlers replaced. */
|
|
7
|
+
count: number;
|
|
8
|
+
/** Number of handlers that successfully emitted a metadata-only `body`. */
|
|
9
|
+
bodyExtracted: number;
|
|
10
|
+
/** Per-extraction failures (still emit handler ref + bundle, but warn). */
|
|
11
|
+
bodyExtractionWarnings: Array<{
|
|
12
|
+
origin: string;
|
|
13
|
+
reason: string;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
export declare function lowerCallables(input: Record<string, unknown>): LoweringResult;
|
|
17
|
+
//# sourceMappingURL=lower-callables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lower-callables.d.ts","sourceRoot":"","sources":["../../src/utils/lower-callables.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,cAAc;IAC7B,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC;IAC3D,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,sBAAsB,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AAoBD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAoH7E"}
|