@ikas/component-cli 1.4.0-beta.219 → 1.4.0-beta.220
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/dist/commands/build.js +1 -1
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/config-texts.d.ts +8 -0
- package/dist/commands/config-texts.d.ts.map +1 -1
- package/dist/commands/config-texts.js +54 -1
- package/dist/commands/config-texts.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +8 -2
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/dev.js +2 -2
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/publish.js +1 -1
- package/dist/commands/publish.js.map +1 -1
- package/dist/utils/compile.d.ts.map +1 -1
- package/dist/utils/compile.js +10 -1
- package/dist/utils/compile.js.map +1 -1
- package/dist/utils/i18n.d.ts +12 -5
- package/dist/utils/i18n.d.ts.map +1 -1
- package/dist/utils/i18n.js +36 -24
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/storefront-t.d.ts +17 -0
- package/dist/utils/storefront-t.d.ts.map +1 -0
- package/dist/utils/storefront-t.js +186 -0
- package/dist/utils/storefront-t.js.map +1 -0
- package/package.json +1 -1
package/dist/utils/i18n.js
CHANGED
|
@@ -123,36 +123,43 @@ export function readI18n(dir) {
|
|
|
123
123
|
});
|
|
124
124
|
return { base, locales, errors, unreadable };
|
|
125
125
|
}
|
|
126
|
+
/** The types file written next to the texts: what `import { t } from "@ikas/bp-storefront"` takes. */
|
|
127
|
+
export const I18N_TYPES_FILE = "index.d.ts";
|
|
128
|
+
const AUTO_GENERATED = `// This file is auto-generated from ${I18N_DEFAULT_FILE}.json — do not edit manually.`;
|
|
126
129
|
/**
|
|
127
|
-
* The generated `<dir>/index.ts`:
|
|
128
|
-
* `
|
|
130
|
+
* The generated `<dir>/index.d.ts`: types only. It fills `UiTexts` of `@ikas/bp-storefront` with the base texts, so
|
|
131
|
+
* its `t` takes only the project's keys and their `{{param}}`s; the build binds that `t` to the project's texts.
|
|
129
132
|
*/
|
|
130
|
-
export function
|
|
133
|
+
export function generateI18nTypes(base) {
|
|
131
134
|
const entries = Object.keys(base)
|
|
132
135
|
.sort()
|
|
133
|
-
.map((key) => `
|
|
136
|
+
.map((key) => ` ${JSON.stringify(key)}: ${JSON.stringify(base[key])};`)
|
|
134
137
|
.join("\n");
|
|
135
|
-
return
|
|
136
|
-
import {
|
|
137
|
-
|
|
138
|
-
|
|
138
|
+
return `${AUTO_GENERATED}
|
|
139
|
+
// Types the keys and {{params}} of \`import { t } from "@ikas/bp-storefront"\`.
|
|
140
|
+
declare module "@ikas/bp-storefront" {
|
|
141
|
+
interface UiTexts {
|
|
139
142
|
${entries}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
export type TextKey = keyof typeof texts;
|
|
143
|
-
|
|
144
|
-
type Params<T extends string> = T extends \`\${string}{{\${infer P}}}\${infer R}\` ? P | Params<R> : never;
|
|
145
|
-
type Args<K extends TextKey> = [Params<(typeof texts)[K]>] extends [never]
|
|
146
|
-
? []
|
|
147
|
-
: [params: Record<Params<(typeof texts)[K]>, string | number>];
|
|
143
|
+
}
|
|
144
|
+
}
|
|
148
145
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
146
|
+
export {};
|
|
147
|
+
`;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* The `t` the build gives for `import { t } from "@ikas/bp-storefront"` (never written to the project): the store
|
|
151
|
+
* language's text of the project's `key`, else its base text, else the key; its `{{param}}`s filled in one pass.
|
|
152
|
+
*/
|
|
153
|
+
export function generateI18nRuntime(projectId, base) {
|
|
154
|
+
return `import { I18n } from "@ikas/bp-storefront";
|
|
155
|
+
const texts = ${JSON.stringify(base)};
|
|
156
|
+
export function t(key, params) {
|
|
157
|
+
const path = ${JSON.stringify(`cc.${projectId}.`)} + key;
|
|
152
158
|
const text = I18n.translate(path);
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
159
|
+
const values = params || {};
|
|
160
|
+
// In one pass: a value holding {{...}} is put in as it is
|
|
161
|
+
return (text === path ? (texts[key] ?? key) : text).replace(/{{([A-Za-z_][A-Za-z0-9_]*)}}/g, (match, name) =>
|
|
162
|
+
name in values ? String(values[name]) : match,
|
|
156
163
|
);
|
|
157
164
|
}
|
|
158
165
|
`;
|
|
@@ -184,7 +191,7 @@ export function writeI18nFile(dir, locale, texts) {
|
|
|
184
191
|
return writeIfChanged(filePath, JSON.stringify(unflattenI18n(texts), null, 2) + "\n");
|
|
185
192
|
}
|
|
186
193
|
/**
|
|
187
|
-
* Reads the project's texts for the editor and writes the generated `index.ts`; `null` when the config names no
|
|
194
|
+
* Reads the project's texts for the editor and writes the generated `index.d.ts`; `null` when the config names no
|
|
188
195
|
* folder. Problems are returned to be shown; a file that cannot be read keeps `previous`'s texts.
|
|
189
196
|
*/
|
|
190
197
|
export function loadProjectI18n(config, previous, root = process.cwd()) {
|
|
@@ -211,7 +218,12 @@ export function loadProjectI18n(config, previous, root = process.cwd()) {
|
|
|
211
218
|
if (keep(`${locale}.json`))
|
|
212
219
|
locales[locale] = tree;
|
|
213
220
|
});
|
|
214
|
-
writeIfChanged(path.join(dir,
|
|
221
|
+
writeIfChanged(path.join(dir, I18N_TYPES_FILE), generateI18nTypes(base));
|
|
222
|
+
// The module earlier versions generated: its t now comes from the build (see \`storefrontTPlugin\`)
|
|
223
|
+
const legacyModule = path.join(dir, "index.ts");
|
|
224
|
+
if (fs.existsSync(legacyModule) &&
|
|
225
|
+
fs.readFileSync(legacyModule, "utf-8").startsWith(AUTO_GENERATED))
|
|
226
|
+
fs.rmSync(legacyModule);
|
|
215
227
|
return {
|
|
216
228
|
data: {
|
|
217
229
|
projectId: config.projectId,
|
package/dist/utils/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/utils/i18n.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/utils/i18n.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Plugin } from "esbuild";
|
|
2
|
+
import type * as TS from "typescript";
|
|
3
|
+
/**
|
|
4
|
+
* `source` with `t` imported from the project's UI texts module (`i18nModule`) in place of `@ikas/bp-storefront`,
|
|
5
|
+
* whose shared runtime has no `t`: each project reads its own texts. The other imports stay as they are, on the
|
|
6
|
+
* same lines. `null`: nothing to change. Throws on a form that would read `t` from the shared runtime.
|
|
7
|
+
*/
|
|
8
|
+
export declare function rewriteStorefrontT(ts: typeof TS, source: string, fileName: string, i18nModule: string | null): string | null;
|
|
9
|
+
/** The module the build gives `t` from: the project's texts and their `t`, made from its i18n files. */
|
|
10
|
+
export declare const UI_TEXTS_MODULE = "@ikas/component-utils/ui-texts";
|
|
11
|
+
/**
|
|
12
|
+
* Binds `import { t } from "@ikas/bp-storefront"` to a `t` reading the project's own UI texts, made from its i18n
|
|
13
|
+
* files (`UI_TEXTS_MODULE`, never written to the project): the storefront runtime is shared by every project on a
|
|
14
|
+
* store, so a `t` there could not tell whose text a key is. The generated `index.d.ts` types that `t`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function storefrontTPlugin(root?: string): Plugin;
|
|
17
|
+
//# sourceMappingURL=storefront-t.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storefront-t.d.ts","sourceRoot":"","sources":["../../src/utils/storefront-t.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,SAAS,CAAC;AAI9C,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAuCtC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,OAAO,EAAE,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,MAAM,GAAG,IAAI,CAyIf;AAED,wGAAwG;AAExG,eAAO,MAAM,eAAe,mCAAmC,CAAC;AAEhE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,SAAgB,GAAG,MAAM,CAsD9D"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import { createRequire } from "module";
|
|
3
|
+
import * as path from "path";
|
|
4
|
+
import { generateI18nRuntime, I18N_DEFAULT_FILE, i18nDir, readI18n, } from "./i18n.js";
|
|
5
|
+
const STOREFRONT = "@ikas/bp-storefront";
|
|
6
|
+
const SOURCE_FILE = /\.[cm]?[jt]sx?$/;
|
|
7
|
+
const LOADERS = {
|
|
8
|
+
".ts": "ts",
|
|
9
|
+
".mts": "ts",
|
|
10
|
+
".cts": "ts",
|
|
11
|
+
".tsx": "tsx",
|
|
12
|
+
".jsx": "jsx",
|
|
13
|
+
};
|
|
14
|
+
/** The project's own TypeScript (the build type-checks with it), else one the CLI can reach. */
|
|
15
|
+
function loadTypeScript(root) {
|
|
16
|
+
const from = [path.join(root, "package.json"), import.meta.url];
|
|
17
|
+
const found = from.reduce((ts, base) => {
|
|
18
|
+
if (ts)
|
|
19
|
+
return ts;
|
|
20
|
+
try {
|
|
21
|
+
return createRequire(base)("typescript");
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
}, undefined);
|
|
27
|
+
if (!found)
|
|
28
|
+
throw new Error(`import { t } from "${STOREFRONT}" needs the project's TypeScript: install it (npm i -D typescript).`);
|
|
29
|
+
return found;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* `source` with `t` imported from the project's UI texts module (`i18nModule`) in place of `@ikas/bp-storefront`,
|
|
33
|
+
* whose shared runtime has no `t`: each project reads its own texts. The other imports stay as they are, on the
|
|
34
|
+
* same lines. `null`: nothing to change. Throws on a form that would read `t` from the shared runtime.
|
|
35
|
+
*/
|
|
36
|
+
export function rewriteStorefrontT(ts, source, fileName, i18nModule) {
|
|
37
|
+
if (!source.includes(STOREFRONT))
|
|
38
|
+
return null;
|
|
39
|
+
const file = ts.createSourceFile(fileName, source, ts.ScriptTarget.Latest, true);
|
|
40
|
+
const isStorefront = (specifier) => !!specifier &&
|
|
41
|
+
ts.isStringLiteral(specifier) &&
|
|
42
|
+
specifier.text === STOREFRONT;
|
|
43
|
+
const fail = (node, problem) => {
|
|
44
|
+
const { line } = file.getLineAndCharacterOfPosition(node.getStart(file));
|
|
45
|
+
throw new Error(`${path.basename(fileName)}:${line + 1}: ${problem} Import it by name: import { t } from "${STOREFRONT}".`);
|
|
46
|
+
};
|
|
47
|
+
const needTexts = (node) => {
|
|
48
|
+
if (!i18nModule)
|
|
49
|
+
fail(node, `t reads the project's UI texts, and it has none yet: add one with \`ikas-component config set-text\`.`);
|
|
50
|
+
};
|
|
51
|
+
// A namespace import's `t` would be read from the shared runtime: `S.t`, `S["t"]`, `const { t } = S`
|
|
52
|
+
const namespaces = new Set();
|
|
53
|
+
const edits = [];
|
|
54
|
+
file.statements.forEach((statement) => {
|
|
55
|
+
if (ts.isExportDeclaration(statement) &&
|
|
56
|
+
isStorefront(statement.moduleSpecifier) &&
|
|
57
|
+
!statement.isTypeOnly) {
|
|
58
|
+
const clause = statement.exportClause;
|
|
59
|
+
const named = clause && ts.isNamedExports(clause)
|
|
60
|
+
? clause.elements.some((e) => !e.isTypeOnly && (e.propertyName ?? e.name).text === "t")
|
|
61
|
+
: !clause && !!i18nModule;
|
|
62
|
+
if (named)
|
|
63
|
+
fail(statement, `t cannot be re-exported from "${STOREFRONT}" (it has no t at runtime).`);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (!ts.isImportDeclaration(statement) ||
|
|
67
|
+
!isStorefront(statement.moduleSpecifier))
|
|
68
|
+
return;
|
|
69
|
+
const clause = statement.importClause;
|
|
70
|
+
if (!clause || clause.isTypeOnly || !clause.namedBindings)
|
|
71
|
+
return;
|
|
72
|
+
const bindings = clause.namedBindings;
|
|
73
|
+
if (ts.isNamespaceImport(bindings)) {
|
|
74
|
+
namespaces.add(bindings.name.text);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const tImports = bindings.elements.filter((e) => !e.isTypeOnly && (e.propertyName ?? e.name).text === "t");
|
|
78
|
+
if (!tImports.length)
|
|
79
|
+
return;
|
|
80
|
+
needTexts(statement);
|
|
81
|
+
const rest = bindings.elements
|
|
82
|
+
.filter((e) => !tImports.includes(e))
|
|
83
|
+
.map((e) => e.getText(file));
|
|
84
|
+
const head = [
|
|
85
|
+
clause.name?.text,
|
|
86
|
+
rest.length ? `{ ${rest.join(", ")} }` : undefined,
|
|
87
|
+
].filter(Boolean);
|
|
88
|
+
const kept = head.length
|
|
89
|
+
? `import ${head.join(", ")} from "${STOREFRONT}"; `
|
|
90
|
+
: "";
|
|
91
|
+
const names = tImports
|
|
92
|
+
.map((e) => (e.name.text === "t" ? "t" : `t as ${e.name.text}`))
|
|
93
|
+
.join(", ");
|
|
94
|
+
const original = source.slice(statement.getStart(file), statement.getEnd());
|
|
95
|
+
edits.push({
|
|
96
|
+
start: statement.getStart(file),
|
|
97
|
+
end: statement.getEnd(),
|
|
98
|
+
// On the import's own lines: the code below keeps its line numbers
|
|
99
|
+
text: `${kept}import { ${names} } from ${JSON.stringify(i18nModule)};${"\n".repeat(original.split("\n").length - 1)}`,
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
if (namespaces.size) {
|
|
103
|
+
const visit = (node) => {
|
|
104
|
+
const isNamespace = (e) => ts.isIdentifier(e) && namespaces.has(e.text);
|
|
105
|
+
if (ts.isPropertyAccessExpression(node) &&
|
|
106
|
+
isNamespace(node.expression) &&
|
|
107
|
+
node.name.text === "t")
|
|
108
|
+
fail(node, `t is not read through a namespace import of "${STOREFRONT}".`);
|
|
109
|
+
if (ts.isElementAccessExpression(node) &&
|
|
110
|
+
isNamespace(node.expression) &&
|
|
111
|
+
ts.isStringLiteralLike(node.argumentExpression) &&
|
|
112
|
+
node.argumentExpression.text === "t")
|
|
113
|
+
fail(node, `t is not read through a namespace import of "${STOREFRONT}".`);
|
|
114
|
+
if (ts.isVariableDeclaration(node) &&
|
|
115
|
+
node.initializer &&
|
|
116
|
+
isNamespace(node.initializer) &&
|
|
117
|
+
ts.isObjectBindingPattern(node.name) &&
|
|
118
|
+
node.name.elements.some((e) => (e.propertyName ?? e.name).text === "t"))
|
|
119
|
+
fail(node, `t is not read through a namespace import of "${STOREFRONT}".`);
|
|
120
|
+
ts.forEachChild(node, visit);
|
|
121
|
+
};
|
|
122
|
+
visit(file);
|
|
123
|
+
}
|
|
124
|
+
if (!edits.length)
|
|
125
|
+
return null;
|
|
126
|
+
return edits
|
|
127
|
+
.sort((a, b) => b.start - a.start)
|
|
128
|
+
.reduce((text, edit) => text.slice(0, edit.start) + edit.text + text.slice(edit.end), source);
|
|
129
|
+
}
|
|
130
|
+
/** The module the build gives `t` from: the project's texts and their `t`, made from its i18n files. */
|
|
131
|
+
// Under the CLI's own virtual package, which the package rules allow
|
|
132
|
+
export const UI_TEXTS_MODULE = "@ikas/component-utils/ui-texts";
|
|
133
|
+
/**
|
|
134
|
+
* Binds `import { t } from "@ikas/bp-storefront"` to a `t` reading the project's own UI texts, made from its i18n
|
|
135
|
+
* files (`UI_TEXTS_MODULE`, never written to the project): the storefront runtime is shared by every project on a
|
|
136
|
+
* store, so a `t` there could not tell whose text a key is. The generated `index.d.ts` types that `t`.
|
|
137
|
+
*/
|
|
138
|
+
export function storefrontTPlugin(root = process.cwd()) {
|
|
139
|
+
return {
|
|
140
|
+
name: "ikas-storefront-t",
|
|
141
|
+
setup(build) {
|
|
142
|
+
let config;
|
|
143
|
+
try {
|
|
144
|
+
config = JSON.parse(fs.readFileSync(path.join(root, "ikas.config.json"), "utf-8"));
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
// No project config: nothing to bind
|
|
148
|
+
}
|
|
149
|
+
const dir = config ? i18nDir(config, root) : null;
|
|
150
|
+
const hasTexts = !!dir && fs.existsSync(path.join(dir, `${I18N_DEFAULT_FILE}.json`));
|
|
151
|
+
build.onResolve({ filter: /^@ikas\/component-utils\/ui-texts$/ }, (args) => ({
|
|
152
|
+
path: args.path,
|
|
153
|
+
namespace: "ikas-ui-texts",
|
|
154
|
+
}));
|
|
155
|
+
build.onLoad({ filter: /.*/, namespace: "ikas-ui-texts" }, () => ({
|
|
156
|
+
// Read at each build: a changed base text (its `index.d.ts` rewritten) recompiles in dev
|
|
157
|
+
contents: generateI18nRuntime(config.projectId, readI18n(dir).base),
|
|
158
|
+
loader: "js",
|
|
159
|
+
resolveDir: root,
|
|
160
|
+
}));
|
|
161
|
+
let ts;
|
|
162
|
+
build.onLoad({ filter: SOURCE_FILE }, (args) => {
|
|
163
|
+
if (args.path.split(path.sep).includes("node_modules"))
|
|
164
|
+
return undefined;
|
|
165
|
+
const source = fs.readFileSync(args.path, "utf-8");
|
|
166
|
+
if (!source.includes(STOREFRONT))
|
|
167
|
+
return undefined;
|
|
168
|
+
try {
|
|
169
|
+
ts ??= loadTypeScript(root);
|
|
170
|
+
const contents = rewriteStorefrontT(ts, source, args.path, hasTexts ? UI_TEXTS_MODULE : null);
|
|
171
|
+
if (contents === null)
|
|
172
|
+
return undefined;
|
|
173
|
+
return {
|
|
174
|
+
contents,
|
|
175
|
+
loader: LOADERS[path.extname(args.path)] ?? "js",
|
|
176
|
+
resolveDir: path.dirname(args.path),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
catch (e) {
|
|
180
|
+
return { errors: [{ text: e.message }] };
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=storefront-t.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storefront-t.js","sourceRoot":"","sources":["../../src/utils/storefront-t.ts"],"names":[],"mappings":"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"}
|