@trebired/bundler 3.5.1 → 3.6.1
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 +13 -0
- package/README.md +82 -0
- package/dist/cli.js +0 -0
- package/dist/core/build.d.ts.map +1 -1
- package/dist/core/build.js +3 -1
- package/dist/core/build.js.map +1 -1
- package/dist/core/discovery/normalize.d.ts +3 -1
- package/dist/core/discovery/normalize.d.ts.map +1 -1
- package/dist/core/discovery/normalize.js +8 -4
- package/dist/core/discovery/normalize.js.map +1 -1
- package/dist/core/discovery/resolve.d.ts +2 -0
- package/dist/core/discovery/resolve.d.ts.map +1 -1
- package/dist/core/discovery/resolve.js +4 -2
- package/dist/core/discovery/resolve.js.map +1 -1
- package/dist/core/esbuild-options.d.ts +2 -1
- package/dist/core/esbuild-options.d.ts.map +1 -1
- package/dist/core/esbuild-options.js +11 -0
- package/dist/core/esbuild-options.js.map +1 -1
- package/dist/core/i18n-options.d.ts +8 -0
- package/dist/core/i18n-options.d.ts.map +1 -0
- package/dist/core/i18n-options.js +46 -0
- package/dist/core/i18n-options.js.map +1 -0
- package/dist/core/watch.d.ts.map +1 -1
- package/dist/core/watch.js +5 -1
- package/dist/core/watch.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/plugins/i18n/parse.d.ts +8 -0
- package/dist/plugins/i18n/parse.d.ts.map +1 -0
- package/dist/plugins/i18n/parse.js +162 -0
- package/dist/plugins/i18n/parse.js.map +1 -0
- package/dist/plugins/i18n/plugin.d.ts +11 -0
- package/dist/plugins/i18n/plugin.d.ts.map +1 -0
- package/dist/plugins/i18n/plugin.js +41 -0
- package/dist/plugins/i18n/plugin.js.map +1 -0
- package/dist/plugins/i18n/shared.d.ts +13 -0
- package/dist/plugins/i18n/shared.d.ts.map +1 -0
- package/dist/plugins/i18n/shared.js +45 -0
- package/dist/plugins/i18n/shared.js.map +1 -0
- package/dist/plugins/i18n/transform.d.ts +16 -0
- package/dist/plugins/i18n/transform.d.ts.map +1 -0
- package/dist/plugins/i18n/transform.js +82 -0
- package/dist/plugins/i18n/transform.js.map +1 -0
- package/dist/plugins/i18n/validate.d.ts +19 -0
- package/dist/plugins/i18n/validate.d.ts.map +1 -0
- package/dist/plugins/i18n/validate.js +114 -0
- package/dist/plugins/i18n/validate.js.map +1 -0
- package/dist/plugins/i18n.d.ts +2 -0
- package/dist/plugins/i18n.d.ts.map +1 -0
- package/dist/plugins/i18n.js +2 -0
- package/dist/plugins/i18n.js.map +1 -0
- package/dist/src/core/build.d.ts.map +1 -1
- package/dist/src/core/build.js +3 -1
- package/dist/src/core/build.js.map +1 -1
- package/dist/src/core/discovery/normalize.d.ts +3 -1
- package/dist/src/core/discovery/normalize.d.ts.map +1 -1
- package/dist/src/core/discovery/normalize.js +8 -4
- package/dist/src/core/discovery/normalize.js.map +1 -1
- package/dist/src/core/discovery/resolve.d.ts +2 -0
- package/dist/src/core/discovery/resolve.d.ts.map +1 -1
- package/dist/src/core/discovery/resolve.js +4 -2
- package/dist/src/core/discovery/resolve.js.map +1 -1
- package/dist/src/core/esbuild-options.d.ts +2 -1
- package/dist/src/core/esbuild-options.d.ts.map +1 -1
- package/dist/src/core/esbuild-options.js +11 -0
- package/dist/src/core/esbuild-options.js.map +1 -1
- package/dist/src/core/i18n-options.d.ts +8 -0
- package/dist/src/core/i18n-options.d.ts.map +1 -0
- package/dist/src/core/i18n-options.js +46 -0
- package/dist/src/core/i18n-options.js.map +1 -0
- package/dist/src/core/watch.d.ts.map +1 -1
- package/dist/src/core/watch.js +5 -1
- package/dist/src/core/watch.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/plugins/i18n/parse.d.ts +8 -0
- package/dist/src/plugins/i18n/parse.d.ts.map +1 -0
- package/dist/src/plugins/i18n/parse.js +162 -0
- package/dist/src/plugins/i18n/parse.js.map +1 -0
- package/dist/src/plugins/i18n/plugin.d.ts +11 -0
- package/dist/src/plugins/i18n/plugin.d.ts.map +1 -0
- package/dist/src/plugins/i18n/plugin.js +41 -0
- package/dist/src/plugins/i18n/plugin.js.map +1 -0
- package/dist/src/plugins/i18n/shared.d.ts +13 -0
- package/dist/src/plugins/i18n/shared.d.ts.map +1 -0
- package/dist/src/plugins/i18n/shared.js +45 -0
- package/dist/src/plugins/i18n/shared.js.map +1 -0
- package/dist/src/plugins/i18n/transform.d.ts +16 -0
- package/dist/src/plugins/i18n/transform.d.ts.map +1 -0
- package/dist/src/plugins/i18n/transform.js +82 -0
- package/dist/src/plugins/i18n/transform.js.map +1 -0
- package/dist/src/plugins/i18n/validate.d.ts +19 -0
- package/dist/src/plugins/i18n/validate.d.ts.map +1 -0
- package/dist/src/plugins/i18n/validate.js +114 -0
- package/dist/src/plugins/i18n/validate.js.map +1 -0
- package/dist/src/plugins/i18n.d.ts +2 -0
- package/dist/src/plugins/i18n.d.ts.map +1 -0
- package/dist/src/plugins/i18n.js +2 -0
- package/dist/src/plugins/i18n.js.map +1 -0
- package/dist/src/types/i18n.d.ts +16 -0
- package/dist/src/types/i18n.d.ts.map +1 -0
- package/dist/src/types/i18n.js +2 -0
- package/dist/src/types/i18n.js.map +1 -0
- package/dist/src/types/runtime.d.ts +2 -0
- package/dist/src/types/runtime.d.ts.map +1 -1
- package/dist/src/types.d.ts +1 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/types/i18n.d.ts +16 -0
- package/dist/types/i18n.d.ts.map +1 -0
- package/dist/types/i18n.js +2 -0
- package/dist/types/i18n.js.map +1 -0
- package/dist/types/runtime.d.ts +2 -0
- package/dist/types/runtime.d.ts.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -3
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
class MessageFileParser {
|
|
2
|
+
constructor(source, filePath) {
|
|
3
|
+
this.source = source;
|
|
4
|
+
this.filePath = filePath;
|
|
5
|
+
this.index = 0;
|
|
6
|
+
}
|
|
7
|
+
parse() {
|
|
8
|
+
this.index = this.findMessagesObjectStart();
|
|
9
|
+
return this.readObject();
|
|
10
|
+
}
|
|
11
|
+
findMessagesObjectStart() {
|
|
12
|
+
const match = /\bexport\s+default\s+defineMessages\s*\(/u.exec(this.source);
|
|
13
|
+
if (!match)
|
|
14
|
+
this.fail("expected default export defineMessages({...})");
|
|
15
|
+
const objectStart = this.source.indexOf("{", match.index + match[0].length);
|
|
16
|
+
if (objectStart === -1)
|
|
17
|
+
this.fail("expected messages object literal");
|
|
18
|
+
return objectStart;
|
|
19
|
+
}
|
|
20
|
+
readObject() {
|
|
21
|
+
const messages = {};
|
|
22
|
+
this.expect("{");
|
|
23
|
+
this.skipTrivia();
|
|
24
|
+
while (!this.consume("}")) {
|
|
25
|
+
const key = this.readKey();
|
|
26
|
+
this.skipTrivia();
|
|
27
|
+
this.expect(":");
|
|
28
|
+
messages[key] = this.readValue();
|
|
29
|
+
this.skipTrivia();
|
|
30
|
+
if (this.consume(",")) {
|
|
31
|
+
this.skipTrivia();
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (this.peek() !== "}")
|
|
35
|
+
this.fail("expected comma or closing brace");
|
|
36
|
+
}
|
|
37
|
+
return messages;
|
|
38
|
+
}
|
|
39
|
+
readValue() {
|
|
40
|
+
this.skipTrivia();
|
|
41
|
+
const char = this.peek();
|
|
42
|
+
if (char === "\"" || char === "'")
|
|
43
|
+
return this.readQuotedString();
|
|
44
|
+
if (char === "`")
|
|
45
|
+
return this.readTemplateString();
|
|
46
|
+
if (char === "{")
|
|
47
|
+
return this.readObject();
|
|
48
|
+
this.fail("expected string or nested messages object");
|
|
49
|
+
}
|
|
50
|
+
readKey() {
|
|
51
|
+
this.skipTrivia();
|
|
52
|
+
const char = this.peek();
|
|
53
|
+
if (char === "\"" || char === "'")
|
|
54
|
+
return this.readQuotedString();
|
|
55
|
+
const match = /^[$A-Za-z_][$A-Za-z0-9_]*/u.exec(this.source.slice(this.index));
|
|
56
|
+
if (match) {
|
|
57
|
+
this.index += match[0].length;
|
|
58
|
+
return match[0];
|
|
59
|
+
}
|
|
60
|
+
const numeric = /^[0-9]+/u.exec(this.source.slice(this.index));
|
|
61
|
+
if (numeric) {
|
|
62
|
+
this.index += numeric[0].length;
|
|
63
|
+
return numeric[0];
|
|
64
|
+
}
|
|
65
|
+
this.fail("expected property key");
|
|
66
|
+
}
|
|
67
|
+
readQuotedString() {
|
|
68
|
+
const quote = this.source[this.index];
|
|
69
|
+
this.index += 1;
|
|
70
|
+
let value = "";
|
|
71
|
+
while (this.index < this.source.length) {
|
|
72
|
+
const char = this.source[this.index++];
|
|
73
|
+
if (char === quote)
|
|
74
|
+
return value;
|
|
75
|
+
if (char === "\\") {
|
|
76
|
+
value += char;
|
|
77
|
+
if (this.index < this.source.length)
|
|
78
|
+
value += this.source[this.index++];
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
value += char;
|
|
82
|
+
}
|
|
83
|
+
this.fail("unterminated string literal");
|
|
84
|
+
}
|
|
85
|
+
readTemplateString() {
|
|
86
|
+
this.index += 1;
|
|
87
|
+
let value = "";
|
|
88
|
+
while (this.index < this.source.length) {
|
|
89
|
+
const char = this.source[this.index++];
|
|
90
|
+
if (char === "`")
|
|
91
|
+
return value;
|
|
92
|
+
if (char === "$" && this.peek() === "{")
|
|
93
|
+
this.fail("template expressions are not supported");
|
|
94
|
+
if (char === "\\") {
|
|
95
|
+
value += char;
|
|
96
|
+
if (this.index < this.source.length)
|
|
97
|
+
value += this.source[this.index++];
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
value += char;
|
|
101
|
+
}
|
|
102
|
+
this.fail("unterminated template literal");
|
|
103
|
+
}
|
|
104
|
+
skipTrivia() {
|
|
105
|
+
while (this.index < this.source.length) {
|
|
106
|
+
if (/\s/u.test(this.peek())) {
|
|
107
|
+
this.index += 1;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (this.consume("//")) {
|
|
111
|
+
while (this.index < this.source.length && this.peek() !== "\n")
|
|
112
|
+
this.index += 1;
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (this.consume("/*")) {
|
|
116
|
+
const end = this.source.indexOf("*/", this.index);
|
|
117
|
+
if (end === -1)
|
|
118
|
+
this.fail("unterminated block comment");
|
|
119
|
+
this.index = end + 2;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
expect(value) {
|
|
126
|
+
this.skipTrivia();
|
|
127
|
+
if (!this.consume(value))
|
|
128
|
+
this.fail(`expected ${value}`);
|
|
129
|
+
}
|
|
130
|
+
consume(value) {
|
|
131
|
+
if (!this.source.startsWith(value, this.index))
|
|
132
|
+
return false;
|
|
133
|
+
this.index += value.length;
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
peek() {
|
|
137
|
+
return this.source[this.index] || "";
|
|
138
|
+
}
|
|
139
|
+
fail(message) {
|
|
140
|
+
throw new Error(`${message} :: ${this.filePath}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function parseMessagesSource(source, filePath) {
|
|
144
|
+
return new MessageFileParser(source, filePath).parse();
|
|
145
|
+
}
|
|
146
|
+
function flattenMessageKeys(messages) {
|
|
147
|
+
const keys = new Set();
|
|
148
|
+
collectMessageKeys(messages, "", keys);
|
|
149
|
+
return Array.from(keys).sort();
|
|
150
|
+
}
|
|
151
|
+
function collectMessageKeys(messages, prefix, keys) {
|
|
152
|
+
for (const [key, value] of Object.entries(messages)) {
|
|
153
|
+
const nextKey = prefix ? `${prefix}.${key}` : key;
|
|
154
|
+
if (typeof value === "string") {
|
|
155
|
+
keys.add(nextKey);
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
collectMessageKeys(value, nextKey, keys);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
export { flattenMessageKeys, parseMessagesSource, };
|
|
162
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../../src/plugins/i18n/parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Plugin } from "esbuild";
|
|
2
|
+
import type { NormalizedBundlerI18nOptions, NormalizedBundlerLogger } from "../../src/types.d.ts";
|
|
3
|
+
type I18nPluginOptions = {
|
|
4
|
+
annotateSources: boolean;
|
|
5
|
+
i18n: NormalizedBundlerI18nOptions;
|
|
6
|
+
logger: NormalizedBundlerLogger;
|
|
7
|
+
rootDir: string;
|
|
8
|
+
};
|
|
9
|
+
declare function createI18nPlugin(options: I18nPluginOptions): Plugin;
|
|
10
|
+
export { createI18nPlugin, };
|
|
11
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/i18n/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,KAAK,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAS3F,KAAK,iBAAiB,GAAG;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,4BAA4B,CAAC;IACnC,MAAM,EAAE,uBAAuB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,iBAAS,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAmC5D;AAED,OAAO,EACL,gBAAgB,GACjB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import { injectSourceAnnotation } from "../../src/plugins/source-annotations.js";
|
|
3
|
+
import { transformLocalTranslators } from "./transform.js";
|
|
4
|
+
import { isCodeFile, isInsideDirectory, resolveCodeLoader, } from "./shared.js";
|
|
5
|
+
function createI18nPlugin(options) {
|
|
6
|
+
return {
|
|
7
|
+
name: "package-i18n",
|
|
8
|
+
setup(build) {
|
|
9
|
+
build.onLoad({ filter: /\.(?:[cm]?[jt]sx?)$/, namespace: "file" }, async (args) => {
|
|
10
|
+
if (!isCodeFile(args.path) || !isInsideDirectory(options.rootDir, args.path))
|
|
11
|
+
return undefined;
|
|
12
|
+
const source = await fs.readFile(args.path, "utf8");
|
|
13
|
+
const transformed = await transformLocalTranslators({
|
|
14
|
+
callerPath: args.path,
|
|
15
|
+
i18n: options.i18n,
|
|
16
|
+
rootDir: options.rootDir,
|
|
17
|
+
source,
|
|
18
|
+
});
|
|
19
|
+
if (!transformed)
|
|
20
|
+
return undefined;
|
|
21
|
+
options.logger.info("i18n", `local-translator :: ${args.path}`);
|
|
22
|
+
const contents = options.annotateSources
|
|
23
|
+
? injectSourceAnnotation({
|
|
24
|
+
contents: transformed.contents,
|
|
25
|
+
filePath: args.path,
|
|
26
|
+
kind: "code",
|
|
27
|
+
rootDir: options.rootDir,
|
|
28
|
+
})
|
|
29
|
+
: transformed.contents;
|
|
30
|
+
return {
|
|
31
|
+
contents,
|
|
32
|
+
loader: resolveCodeLoader(args.path),
|
|
33
|
+
watchDirs: [transformed.folder.folderPath],
|
|
34
|
+
watchFiles: [args.path, ...transformed.folder.modules.map((item) => item.filePath)],
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export { createI18nPlugin, };
|
|
41
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../src/plugins/i18n/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIlC,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AASrB,SAAS,gBAAgB,CAAC,OAA0B;IAClD,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,KAAK,CAAC,KAAK;YACT,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAChF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;oBAAE,OAAO,SAAS,CAAC;gBAE/F,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACpD,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC;oBAClD,UAAU,EAAE,IAAI,CAAC,IAAI;oBACrB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,MAAM;iBACP,CAAC,CAAC;gBACH,IAAI,CAAC,WAAW;oBAAE,OAAO,SAAS,CAAC;gBAEnC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,uBAAuB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe;oBACtC,CAAC,CAAC,sBAAsB,CAAC;wBACvB,QAAQ,EAAE,WAAW,CAAC,QAAQ;wBAC9B,QAAQ,EAAE,IAAI,CAAC,IAAI;wBACnB,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,OAAO,CAAC,OAAO;qBACzB,CAAC;oBACF,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC;gBAEzB,OAAO;oBACL,QAAQ;oBACR,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;oBACpC,SAAS,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC;oBAC1C,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACpF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EACL,gBAAgB,GACjB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Loader } from "esbuild";
|
|
2
|
+
declare const I18N_PACKAGE_NAME: string;
|
|
3
|
+
declare function normalizeLanguage(value: unknown): string;
|
|
4
|
+
declare function toPosixPath(value: string): string;
|
|
5
|
+
declare function toRelativeImport(value: string): string;
|
|
6
|
+
declare function toRootRelative(rootDir: string, filePath: string): string;
|
|
7
|
+
declare function isInsideDirectory(rootDir: string, filePath: string): boolean;
|
|
8
|
+
declare function escapeRegExp(value: string): string;
|
|
9
|
+
declare function resolveCodeLoader(filePath: string): Loader;
|
|
10
|
+
declare function isCodeFile(filePath: string): boolean;
|
|
11
|
+
declare function sanitizeBindingSegment(value: string): string;
|
|
12
|
+
export { escapeRegExp, I18N_PACKAGE_NAME, isCodeFile, isInsideDirectory, normalizeLanguage, resolveCodeLoader, sanitizeBindingSegment, toPosixPath, toRelativeImport, toRootRelative, };
|
|
13
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/plugins/i18n/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGtC,QAAA,MAAM,iBAAiB,QAAmC,CAAC;AAE3D,iBAAS,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEjD;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,iBAAS,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,iBAAS,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGrE;AAED,iBAAS,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMnD;AAED,iBAAS,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED,iBAAS,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGrD;AAMD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,EAChB,cAAc,GACf,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
const ORGANIZATION_CODES = [116, 114, 101, 98, 105, 114, 101, 100];
|
|
3
|
+
const I18N_PACKAGE_NAME = `@${packageOrganization()}/i18n`;
|
|
4
|
+
function normalizeLanguage(value) {
|
|
5
|
+
return typeof value === "string" ? value.trim().toLowerCase().replace(/_/gu, "-") : "";
|
|
6
|
+
}
|
|
7
|
+
function toPosixPath(value) {
|
|
8
|
+
return value.replace(/\\/g, "/");
|
|
9
|
+
}
|
|
10
|
+
function toRelativeImport(value) {
|
|
11
|
+
const normalized = toPosixPath(value);
|
|
12
|
+
return normalized.startsWith(".") ? normalized : `./${normalized}`;
|
|
13
|
+
}
|
|
14
|
+
function toRootRelative(rootDir, filePath) {
|
|
15
|
+
return toPosixPath(path.relative(rootDir, filePath));
|
|
16
|
+
}
|
|
17
|
+
function isInsideDirectory(rootDir, filePath) {
|
|
18
|
+
const relative = path.relative(rootDir, filePath);
|
|
19
|
+
return Boolean(relative) && !relative.startsWith("..") && !path.isAbsolute(relative);
|
|
20
|
+
}
|
|
21
|
+
function escapeRegExp(value) {
|
|
22
|
+
return value.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&");
|
|
23
|
+
}
|
|
24
|
+
function resolveCodeLoader(filePath) {
|
|
25
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
26
|
+
if (ext === ".tsx")
|
|
27
|
+
return "tsx";
|
|
28
|
+
if (ext === ".jsx")
|
|
29
|
+
return "jsx";
|
|
30
|
+
if (ext === ".ts" || ext === ".mts" || ext === ".cts")
|
|
31
|
+
return "ts";
|
|
32
|
+
return "js";
|
|
33
|
+
}
|
|
34
|
+
function isCodeFile(filePath) {
|
|
35
|
+
return /\.(?:[cm]?[jt]sx?)$/iu.test(filePath) && !/\.d\.[cm]?[jt]s$/iu.test(filePath);
|
|
36
|
+
}
|
|
37
|
+
function sanitizeBindingSegment(value) {
|
|
38
|
+
const normalized = value.replace(/[^A-Za-z0-9_$]/gu, "_");
|
|
39
|
+
return /^[A-Za-z_$]/u.test(normalized) ? normalized : `_${normalized}`;
|
|
40
|
+
}
|
|
41
|
+
function packageOrganization() {
|
|
42
|
+
return ORGANIZATION_CODES.map((code) => String.fromCharCode(code)).join("");
|
|
43
|
+
}
|
|
44
|
+
export { escapeRegExp, I18N_PACKAGE_NAME, isCodeFile, isInsideDirectory, normalizeLanguage, resolveCodeLoader, sanitizeBindingSegment, toPosixPath, toRelativeImport, toRootRelative, };
|
|
45
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/plugins/i18n/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { NormalizedBundlerI18nOptions } from "../../src/types.d.ts";
|
|
2
|
+
import type { ResolvedI18nFolder } from "./validate.js";
|
|
3
|
+
type I18nTransformResult = {
|
|
4
|
+
contents: string;
|
|
5
|
+
folder: ResolvedI18nFolder;
|
|
6
|
+
};
|
|
7
|
+
declare function transformLocalTranslators(args: {
|
|
8
|
+
callerPath: string;
|
|
9
|
+
i18n: NormalizedBundlerI18nOptions;
|
|
10
|
+
rootDir: string;
|
|
11
|
+
source: string;
|
|
12
|
+
}): Promise<I18nTransformResult | undefined>;
|
|
13
|
+
declare function findLocalTranslatorBindings(source: string): string[];
|
|
14
|
+
export { findLocalTranslatorBindings, transformLocalTranslators, };
|
|
15
|
+
export type { I18nTransformResult, };
|
|
16
|
+
//# sourceMappingURL=transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../../src/plugins/i18n/transform.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAQxD,KAAK,mBAAmB,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAEF,iBAAe,yBAAyB,CAAC,IAAI,EAAE;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,4BAA4B,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAa3C;AAiDD,iBAAS,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAa7D;AA0BD,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,GAC1B,CAAC;AACF,YAAY,EACV,mBAAmB,GACpB,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { resolveI18nFolder } from "./validate.js";
|
|
3
|
+
import { escapeRegExp, I18N_PACKAGE_NAME, sanitizeBindingSegment, toRelativeImport, } from "./shared.js";
|
|
4
|
+
async function transformLocalTranslators(args) {
|
|
5
|
+
const localNames = findLocalTranslatorBindings(args.source);
|
|
6
|
+
if (localNames.length === 0 || !hasLocalTranslatorCall(args.source, localNames))
|
|
7
|
+
return undefined;
|
|
8
|
+
const folder = await resolveI18nFolder(args);
|
|
9
|
+
const transformed = buildTransformedSource({
|
|
10
|
+
callerPath: args.callerPath,
|
|
11
|
+
folder,
|
|
12
|
+
localNames,
|
|
13
|
+
source: args.source,
|
|
14
|
+
});
|
|
15
|
+
return { contents: transformed, folder };
|
|
16
|
+
}
|
|
17
|
+
function buildTransformedSource(args) {
|
|
18
|
+
const translatorBinding = uniqueBinding("__package_i18n_createTranslator", args.source);
|
|
19
|
+
const moduleBindings = args.folder.modules.map((item) => ({
|
|
20
|
+
...item,
|
|
21
|
+
binding: uniqueBinding(`__package_i18n_${sanitizeBindingSegment(item.language)}`, args.source),
|
|
22
|
+
}));
|
|
23
|
+
const imports = buildStaticImports(args.callerPath, translatorBinding, moduleBindings);
|
|
24
|
+
const bundleExpression = `{ ${moduleBindings.map((item) => `${JSON.stringify(item.language)}: ${item.binding}`).join(", ")} }`;
|
|
25
|
+
const contents = replaceLocalTranslatorCalls(args.source, args.localNames, translatorBinding, bundleExpression);
|
|
26
|
+
return `${imports}\n${contents}`;
|
|
27
|
+
}
|
|
28
|
+
function buildStaticImports(callerPath, translatorBinding, modules) {
|
|
29
|
+
const callerDir = path.dirname(callerPath);
|
|
30
|
+
const lines = [
|
|
31
|
+
`import { createTranslator as ${translatorBinding} } from ${JSON.stringify(I18N_PACKAGE_NAME)};`,
|
|
32
|
+
];
|
|
33
|
+
for (const item of modules) {
|
|
34
|
+
const specifier = toRelativeImport(path.relative(callerDir, item.filePath));
|
|
35
|
+
lines.push(`import ${item.binding} from ${JSON.stringify(specifier)};`);
|
|
36
|
+
}
|
|
37
|
+
return lines.join("\n");
|
|
38
|
+
}
|
|
39
|
+
function replaceLocalTranslatorCalls(source, localNames, translatorBinding, bundleExpression) {
|
|
40
|
+
let transformed = source;
|
|
41
|
+
for (const localName of localNames) {
|
|
42
|
+
const pattern = localTranslatorCallPattern(localName);
|
|
43
|
+
transformed = transformed.replace(pattern, (_match, prefix) => `${prefix}${translatorBinding}(${bundleExpression},`);
|
|
44
|
+
}
|
|
45
|
+
return transformed;
|
|
46
|
+
}
|
|
47
|
+
function findLocalTranslatorBindings(source) {
|
|
48
|
+
const names = new Set();
|
|
49
|
+
const pattern = new RegExp(`import\\s*\\{([^}]+)\\}\\s*from\\s*["']${escapeRegExp(I18N_PACKAGE_NAME)}["']`, "gu");
|
|
50
|
+
let match;
|
|
51
|
+
while ((match = pattern.exec(source))) {
|
|
52
|
+
for (const specifier of match[1].split(",")) {
|
|
53
|
+
const localName = parseLocalTranslatorSpecifier(specifier);
|
|
54
|
+
if (localName)
|
|
55
|
+
names.add(localName);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return Array.from(names);
|
|
59
|
+
}
|
|
60
|
+
function parseLocalTranslatorSpecifier(specifier) {
|
|
61
|
+
const parts = specifier.trim().split(/\s+as\s+/u).map((part) => part.trim()).filter(Boolean);
|
|
62
|
+
if (parts[0] !== "createLocalTranslator")
|
|
63
|
+
return "";
|
|
64
|
+
return parts[1] || parts[0];
|
|
65
|
+
}
|
|
66
|
+
function hasLocalTranslatorCall(source, localNames) {
|
|
67
|
+
return localNames.some((localName) => localTranslatorCallPattern(localName).test(source));
|
|
68
|
+
}
|
|
69
|
+
function localTranslatorCallPattern(localName) {
|
|
70
|
+
return new RegExp(`(^|[^A-Za-z0-9_$.])${escapeRegExp(localName)}\\s*\\(\\s*import\\.meta\\.url\\s*,`, "gu");
|
|
71
|
+
}
|
|
72
|
+
function uniqueBinding(base, source) {
|
|
73
|
+
let candidate = base;
|
|
74
|
+
let index = 2;
|
|
75
|
+
while (new RegExp(`\\b${escapeRegExp(candidate)}\\b`, "u").test(source)) {
|
|
76
|
+
candidate = `${base}_${index}`;
|
|
77
|
+
index += 1;
|
|
78
|
+
}
|
|
79
|
+
return candidate;
|
|
80
|
+
}
|
|
81
|
+
export { findLocalTranslatorBindings, transformLocalTranslators, };
|
|
82
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../src/plugins/i18n/transform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { NormalizedBundlerI18nOptions } from "../../src/types.d.ts";
|
|
2
|
+
type ResolvedI18nLanguageModule = {
|
|
3
|
+
filePath: string;
|
|
4
|
+
keys: string[];
|
|
5
|
+
language: string;
|
|
6
|
+
rootRel: string;
|
|
7
|
+
};
|
|
8
|
+
type ResolvedI18nFolder = {
|
|
9
|
+
folderPath: string;
|
|
10
|
+
modules: ResolvedI18nLanguageModule[];
|
|
11
|
+
};
|
|
12
|
+
declare function resolveI18nFolder(args: {
|
|
13
|
+
callerPath: string;
|
|
14
|
+
i18n: NormalizedBundlerI18nOptions;
|
|
15
|
+
rootDir: string;
|
|
16
|
+
}): Promise<ResolvedI18nFolder>;
|
|
17
|
+
export { resolveI18nFolder, };
|
|
18
|
+
export type { ResolvedI18nFolder, ResolvedI18nLanguageModule, };
|
|
19
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/plugins/i18n/validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAIlE,KAAK,0BAA0B,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,0BAA0B,EAAE,CAAC;CACvC,CAAC;AAEF,iBAAe,iBAAiB,CAAC,IAAI,EAAE;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,4BAA4B,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAa9B;AA6HD,OAAO,EACL,iBAAiB,GAClB,CAAC;AACF,YAAY,EACV,kBAAkB,EAClB,0BAA0B,GAC3B,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { flattenMessageKeys, parseMessagesSource } from "./parse.js";
|
|
4
|
+
import { normalizeLanguage, toRootRelative } from "./shared.js";
|
|
5
|
+
async function resolveI18nFolder(args) {
|
|
6
|
+
const folderPath = path.join(path.dirname(args.callerPath), args.i18n.dirName);
|
|
7
|
+
const violations = [];
|
|
8
|
+
const entries = await readFolderEntries(folderPath, args.rootDir, violations);
|
|
9
|
+
if (!entries)
|
|
10
|
+
throwI18nFolderError(folderPath, args.rootDir, violations);
|
|
11
|
+
const files = collectLanguageFiles(folderPath, entries || [], args.i18n, args.rootDir, violations);
|
|
12
|
+
const languages = expectedLanguages(files, args.i18n);
|
|
13
|
+
validateExpectedFiles(folderPath, files, languages, args.i18n, args.rootDir, violations);
|
|
14
|
+
const modules = await loadLanguageModules(folderPath, files, languages, args.rootDir, violations);
|
|
15
|
+
validateLanguageKeys(folderPath, modules, args.i18n, args.rootDir, violations);
|
|
16
|
+
if (violations.length > 0)
|
|
17
|
+
throwI18nFolderError(folderPath, args.rootDir, violations);
|
|
18
|
+
return { folderPath, modules };
|
|
19
|
+
}
|
|
20
|
+
async function readFolderEntries(folderPath, rootDir, violations) {
|
|
21
|
+
try {
|
|
22
|
+
return await fs.readdir(folderPath, { withFileTypes: true });
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
violations.push(`missing-folder :: ${toRootRelative(rootDir, folderPath)}`);
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function collectLanguageFiles(folderPath, entries, i18n, rootDir, violations) {
|
|
30
|
+
const files = new Map();
|
|
31
|
+
for (const entry of entries) {
|
|
32
|
+
const filePath = path.join(folderPath, entry.name);
|
|
33
|
+
const language = entry.isFile() ? languageFromFileName(entry.name, i18n) : "";
|
|
34
|
+
if (!language || i18n.supportedLanguages && !i18n.supportedLanguages.includes(language)) {
|
|
35
|
+
violations.push(`unsupported-language-file :: ${toRootRelative(rootDir, filePath)}`);
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
files.set(language, filePath);
|
|
39
|
+
}
|
|
40
|
+
return files;
|
|
41
|
+
}
|
|
42
|
+
function expectedLanguages(files, i18n) {
|
|
43
|
+
if (i18n.supportedLanguages)
|
|
44
|
+
return i18n.supportedLanguages;
|
|
45
|
+
const inferred = Array.from(files.keys()).sort();
|
|
46
|
+
return inferred.includes(i18n.defaultLanguage) ? inferred : [i18n.defaultLanguage, ...inferred];
|
|
47
|
+
}
|
|
48
|
+
function validateExpectedFiles(folderPath, files, languages, i18n, rootDir, violations) {
|
|
49
|
+
for (const language of languages) {
|
|
50
|
+
if (files.has(language))
|
|
51
|
+
continue;
|
|
52
|
+
const filePath = path.join(folderPath, `${language}${i18n.extensions[0]}`);
|
|
53
|
+
violations.push(`missing-language-file :: ${language} :: ${toRootRelative(rootDir, filePath)}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async function loadLanguageModules(folderPath, files, languages, rootDir, violations) {
|
|
57
|
+
const modules = [];
|
|
58
|
+
for (const language of languages) {
|
|
59
|
+
const filePath = files.get(language);
|
|
60
|
+
if (!filePath)
|
|
61
|
+
continue;
|
|
62
|
+
try {
|
|
63
|
+
const source = await fs.readFile(filePath, "utf8");
|
|
64
|
+
modules.push({
|
|
65
|
+
filePath,
|
|
66
|
+
keys: flattenMessageKeys(parseMessagesSource(source, filePath)),
|
|
67
|
+
language,
|
|
68
|
+
rootRel: toRootRelative(rootDir, filePath),
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
violations.push(`invalid-default-export :: ${toRootRelative(rootDir, filePath)} :: ${formatError(error)}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return modules;
|
|
76
|
+
}
|
|
77
|
+
function validateLanguageKeys(folderPath, modules, i18n, rootDir, violations) {
|
|
78
|
+
const fallback = modules.find((item) => item.language === i18n.defaultLanguage);
|
|
79
|
+
if (!fallback)
|
|
80
|
+
return;
|
|
81
|
+
for (const item of modules) {
|
|
82
|
+
if (item.language === i18n.defaultLanguage)
|
|
83
|
+
continue;
|
|
84
|
+
const missing = fallback.keys.filter((key) => !item.keys.includes(key));
|
|
85
|
+
const extra = item.keys.filter((key) => !fallback.keys.includes(key));
|
|
86
|
+
if (missing.length === 0 && extra.length === 0)
|
|
87
|
+
continue;
|
|
88
|
+
violations.push(`key-mismatch :: ${toRootRelative(rootDir, folderPath)} :: ${item.language} :: ${formatKeyDiff(missing, extra)}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function languageFromFileName(fileName, i18n) {
|
|
92
|
+
const extension = i18n.extensions.find((item) => fileName.endsWith(item));
|
|
93
|
+
if (!extension)
|
|
94
|
+
return "";
|
|
95
|
+
const language = normalizeLanguage(fileName.slice(0, -extension.length));
|
|
96
|
+
return /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u.test(language) ? language : "";
|
|
97
|
+
}
|
|
98
|
+
function formatKeyDiff(missing, extra) {
|
|
99
|
+
return [
|
|
100
|
+
missing.length ? `missing=${missing.join(",")}` : "",
|
|
101
|
+
extra.length ? `extra=${extra.join(",")}` : "",
|
|
102
|
+
].filter(Boolean).join(" :: ");
|
|
103
|
+
}
|
|
104
|
+
function throwI18nFolderError(folderPath, rootDir, violations) {
|
|
105
|
+
throw new Error([
|
|
106
|
+
`bundler-i18n-invalid-folder :: ${toRootRelative(rootDir, folderPath)}`,
|
|
107
|
+
...violations.map((violation) => ` - ${violation}`),
|
|
108
|
+
].join("\n"));
|
|
109
|
+
}
|
|
110
|
+
function formatError(error) {
|
|
111
|
+
return error instanceof Error ? error.message : String(error);
|
|
112
|
+
}
|
|
113
|
+
export { resolveI18nFolder, };
|
|
114
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/plugins/i18n/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../src/plugins/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,GACjB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../src/plugins/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,GACjB,MAAM,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/core/build.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAKxE,iBAAe,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/core/build.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAKxE,iBAAe,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4C1E;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/src/core/build.js
CHANGED
|
@@ -22,7 +22,9 @@ async function bundle(options) {
|
|
|
22
22
|
logger.info("build", "start");
|
|
23
23
|
const startedAt = Date.now();
|
|
24
24
|
try {
|
|
25
|
-
const resolvedDiscovery = await resolveBundlerEntries(options || {}, normalized.rootDir
|
|
25
|
+
const resolvedDiscovery = await resolveBundlerEntries(options || {}, normalized.rootDir, {}, {
|
|
26
|
+
ignoredDirs: normalized.i18n.enabled ? [normalized.i18n.dirName] : [],
|
|
27
|
+
});
|
|
26
28
|
logger.info("build", `entries :: count=${resolvedDiscovery.entries.length}`);
|
|
27
29
|
const result = await runEsbuild(createEsbuildOptions({
|
|
28
30
|
...normalized,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/core/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAErF,KAAK,UAAU,MAAM,CAAC,OAAuB;IAC3C,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,IAAI,EAAoB,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;IAE1E,qBAAqB,CAAC;QACpB,OAAO,EAAE,UAAU,CAAC,aAAa;QACjC,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,iBAAiB;QACxB,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,MAAM,EAAE,oBAAoB;KAC7B,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,MAAM,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,CAAC,OAAO,IAAI,EAAoB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/core/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAErF,KAAK,UAAU,MAAM,CAAC,OAAuB;IAC3C,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,IAAI,EAAoB,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;IAE1E,qBAAqB,CAAC;QACpB,OAAO,EAAE,UAAU,CAAC,aAAa;QACjC,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,iBAAiB;QACxB,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,MAAM,EAAE,oBAAoB;KAC7B,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,MAAM,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,CAAC,OAAO,IAAI,EAAoB,EAAE,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE;YAC7G,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;SACtE,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7E,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,oBAAoB,CAAC;YACnD,GAAG,UAAU;YACb,YAAY,EAAE,iBAAiB,CAAC,OAAO;SACxC,EAAE,MAAM,CAAC,CAAC,CAAC;QACZ,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC;YAClC,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,iBAAiB;YACjB,MAAM;YACN,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,SAAS;SACV,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,OAAO,CAAC,OAAO,CAAC,MAAM,aAAa,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnG,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -2,7 +2,9 @@ import type { BundlerAggregateModuleMap, BundlerDiscoverRule, BundlerOptions } f
|
|
|
2
2
|
import type { NormalizedAggregateModuleMap, NormalizedDiscoverOptions, NormalizedDiscoverRule } from "./shared.js";
|
|
3
3
|
declare function normalizeAggregateModuleMap(aggregate: BundlerAggregateModuleMap | undefined, ruleKey: string): NormalizedAggregateModuleMap;
|
|
4
4
|
declare function normalizeDiscoverRule(rule: BundlerDiscoverRule): NormalizedDiscoverRule;
|
|
5
|
-
declare function normalizeDiscoverOptions(rootDir: string, discover: BundlerOptions["discover"]
|
|
5
|
+
declare function normalizeDiscoverOptions(rootDir: string, discover: BundlerOptions["discover"], settings?: {
|
|
6
|
+
ignoreDirs?: string[];
|
|
7
|
+
}): NormalizedDiscoverOptions[];
|
|
6
8
|
declare function normalizeManifestOptions(manifest: import("../../types.d.ts").BundlerManifestOptions | undefined): import("./shared.js").NormalizedManifestOptions;
|
|
7
9
|
export { normalizeAggregateModuleMap, normalizeDiscoverOptions, normalizeDiscoverRule, normalizeManifestOptions, };
|
|
8
10
|
//# sourceMappingURL=normalize.d.ts.map
|