@granite-js/plugin-core 0.1.7 → 0.1.8
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 +6 -0
- package/dist/index.cjs +281 -7
- package/dist/index.d.cts +548 -76
- package/dist/index.d.ts +548 -76
- package/dist/index.js +277 -8
- package/package.json +8 -5
package/CHANGELOG.md
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -21,8 +21,15 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
21
21
|
}) : target, mod));
|
|
22
22
|
|
|
23
23
|
//#endregion
|
|
24
|
+
const es_toolkit = __toESM(require("es-toolkit"));
|
|
24
25
|
const zod = __toESM(require("zod"));
|
|
25
26
|
|
|
27
|
+
//#region src/createContext.ts
|
|
28
|
+
function createContext() {
|
|
29
|
+
return { meta: Object.create(null) };
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
//#endregion
|
|
26
33
|
//#region src/utils/flattenPlugins.ts
|
|
27
34
|
const flattenPlugins = async (plugin) => {
|
|
28
35
|
if (Array.isArray(plugin)) {
|
|
@@ -49,22 +56,289 @@ async function resolvePlugins(plugins) {
|
|
|
49
56
|
const pluginsResolved = await flattenPlugins(plugins);
|
|
50
57
|
return {
|
|
51
58
|
plugins: pluginsResolved,
|
|
59
|
+
configs: pluginsResolved.map((plugin) => plugin.config).filter(es_toolkit.isNotNil),
|
|
60
|
+
pluginHooks: {
|
|
61
|
+
devServer: {
|
|
62
|
+
preHandlers: pluginsResolved.filter((plugin) => plugin.dev?.order === "pre").map((plugin) => plugin.dev?.handler),
|
|
63
|
+
postHandlers: pluginsResolved.filter((plugin) => plugin.dev?.order === "post").map((plugin) => plugin.dev?.handler)
|
|
64
|
+
},
|
|
65
|
+
build: {
|
|
66
|
+
preHandlers: pluginsResolved.filter((plugin) => plugin.build?.order === "pre").map((plugin) => plugin.build?.handler),
|
|
67
|
+
postHandlers: pluginsResolved.filter((plugin) => plugin.build?.order === "post").map((plugin) => plugin.build?.handler)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/utils/mergeBabel.ts
|
|
75
|
+
function mergeBabel(source, target) {
|
|
76
|
+
if (!(source || target)) return void 0;
|
|
77
|
+
if (source == null) return target;
|
|
78
|
+
if (target == null) return source;
|
|
79
|
+
return {
|
|
80
|
+
...source,
|
|
81
|
+
...target,
|
|
82
|
+
presets: [...source.presets ?? [], ...target.presets ?? []],
|
|
83
|
+
plugins: [...source.plugins ?? [], ...target.plugins ?? []],
|
|
84
|
+
conditions: [...source.conditions ?? [], ...target.conditions ?? []]
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
//#endregion
|
|
89
|
+
//#region src/utils/mergeDevServer.ts
|
|
90
|
+
function mergeDevServer(source, target) {
|
|
91
|
+
if (!(source || target)) return void 0;
|
|
92
|
+
if (source == null) return target;
|
|
93
|
+
if (target == null) return source;
|
|
94
|
+
return {
|
|
95
|
+
...source,
|
|
96
|
+
...target,
|
|
97
|
+
middlewares: [...source.middlewares ?? [], ...target.middlewares ?? []]
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
//#endregion
|
|
102
|
+
//#region src/utils/mergeEsbuild.ts
|
|
103
|
+
function mergeEsbuild(source, target) {
|
|
104
|
+
if (!(source || target)) return void 0;
|
|
105
|
+
if (source == null) return target;
|
|
106
|
+
if (target == null) return source;
|
|
107
|
+
return {
|
|
108
|
+
...source,
|
|
109
|
+
...target,
|
|
110
|
+
define: {
|
|
111
|
+
...source.define,
|
|
112
|
+
...target.define
|
|
113
|
+
},
|
|
114
|
+
inject: [...source.inject || [], ...target.inject || []],
|
|
115
|
+
prelude: [...source.prelude || [], ...target.prelude || []],
|
|
116
|
+
banner: mergeBanners(source.banner ?? {}, target.banner ?? {})
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function mergeBanners(baseBanner, overrideBanner) {
|
|
120
|
+
const result = { ...baseBanner };
|
|
121
|
+
for (const [key, value] of Object.entries(overrideBanner)) result[key] = `${result[key] ?? ""}\n${value}`;
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
//#endregion
|
|
126
|
+
//#region src/utils/mergeExtra.ts
|
|
127
|
+
function mergeExtra(source, target) {
|
|
128
|
+
if (!(source || target)) return void 0;
|
|
129
|
+
if (source == null) return target;
|
|
130
|
+
if (target == null) return source;
|
|
131
|
+
return {
|
|
132
|
+
...source,
|
|
133
|
+
...target
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
//#endregion
|
|
138
|
+
//#region src/utils/mergeMetro.ts
|
|
139
|
+
function mergeMetro(source, target) {
|
|
140
|
+
if (!(source || target)) return void 0;
|
|
141
|
+
if (source == null) return target;
|
|
142
|
+
if (target == null) return source;
|
|
143
|
+
return {
|
|
144
|
+
...source,
|
|
145
|
+
...target,
|
|
146
|
+
middlewares: [...source.middlewares || [], ...target.middlewares || []],
|
|
147
|
+
resolver: mergeResolver$1(source.resolver, target.resolver),
|
|
148
|
+
serializer: mergeSerializer(source.serializer, target.serializer),
|
|
149
|
+
reporter: mergeReporter(source.reporter, target.reporter)
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
function mergeResolver$1(source, target) {
|
|
153
|
+
if (!(source || target)) return void 0;
|
|
154
|
+
if (source == null) return target;
|
|
155
|
+
if (target == null) return source;
|
|
156
|
+
return {
|
|
157
|
+
...source,
|
|
158
|
+
...target,
|
|
159
|
+
blockList: [...(Array.isArray(source.blockList) ? source.blockList : [source.blockList]) || [], ...(Array.isArray(target.blockList) ? target.blockList : [target.blockList]) || []].filter(es_toolkit.isNotNil)
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
function mergeSerializer(source, target) {
|
|
163
|
+
if (!(source || target)) return void 0;
|
|
164
|
+
if (source == null) return target;
|
|
165
|
+
if (target == null) return source;
|
|
166
|
+
return {
|
|
167
|
+
...source,
|
|
168
|
+
...target,
|
|
169
|
+
getPolyfills: () => [...source.getPolyfills?.() || [], ...target.getPolyfills?.() || []]
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
function mergeReporter(source, target) {
|
|
173
|
+
if (!(source || target)) return void 0;
|
|
174
|
+
if (source == null) return target;
|
|
175
|
+
if (target == null) return source;
|
|
176
|
+
return { update: (event) => {
|
|
177
|
+
source.update?.(event);
|
|
178
|
+
target.update?.(event);
|
|
179
|
+
} };
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
//#endregion
|
|
183
|
+
//#region src/utils/mergeResolver.ts
|
|
184
|
+
function mergeResolver(source, target) {
|
|
185
|
+
if (!(source || target)) return void 0;
|
|
186
|
+
if (source == null) return target;
|
|
187
|
+
if (target == null) return source;
|
|
188
|
+
return {
|
|
189
|
+
alias: [...source.alias ?? [], ...target.alias ?? []],
|
|
190
|
+
protocols: {
|
|
191
|
+
...source.protocols,
|
|
192
|
+
...target.protocols
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
//#endregion
|
|
198
|
+
//#region src/utils/mergeSwc.ts
|
|
199
|
+
function mergeSwc(source, target) {
|
|
200
|
+
if (!(source || target)) return void 0;
|
|
201
|
+
if (source == null) return target;
|
|
202
|
+
if (target == null) return source;
|
|
203
|
+
return {
|
|
204
|
+
...source,
|
|
205
|
+
...target,
|
|
206
|
+
plugins: [...source.plugins || [], ...target.plugins || []]
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
//#endregion
|
|
211
|
+
//#region src/utils/mergeTransformer.ts
|
|
212
|
+
function mergeTransformer(source, target) {
|
|
213
|
+
if (!(source || target)) return void 0;
|
|
214
|
+
if (source == null) return target;
|
|
215
|
+
if (target == null) return source;
|
|
216
|
+
let transformSync;
|
|
217
|
+
let transformAsync;
|
|
218
|
+
if (!(source.transformSync || target.transformSync)) transformSync = void 0;
|
|
219
|
+
else if (source.transformSync && target.transformSync) transformSync = (id, code) => {
|
|
220
|
+
let src = code;
|
|
221
|
+
src = source.transformSync?.(id, src) ?? src;
|
|
222
|
+
src = target.transformSync?.(id, src) ?? src;
|
|
223
|
+
return src;
|
|
224
|
+
};
|
|
225
|
+
else if (source.transformSync) transformSync = source.transformSync;
|
|
226
|
+
else if (target.transformSync) transformSync = target.transformSync;
|
|
227
|
+
if (!(source.transformAsync || target.transformAsync)) transformAsync = void 0;
|
|
228
|
+
else if (source.transformAsync && target.transformAsync) transformAsync = async (id, code) => {
|
|
229
|
+
let src = code;
|
|
230
|
+
src = await source.transformAsync?.(id, src) ?? src;
|
|
231
|
+
src = await target.transformAsync?.(id, src) ?? src;
|
|
232
|
+
return src;
|
|
233
|
+
};
|
|
234
|
+
else if (source.transformAsync) transformAsync = source.transformAsync;
|
|
235
|
+
else if (target.transformAsync) transformAsync = target.transformAsync;
|
|
236
|
+
return {
|
|
237
|
+
transformSync,
|
|
238
|
+
transformAsync
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
//#endregion
|
|
243
|
+
//#region src/utils/mergeConfig.ts
|
|
244
|
+
function mergeConfig(base, ...configs) {
|
|
245
|
+
if (!(base || configs.length)) return void 0;
|
|
246
|
+
return configs.reduce((acc, curr) => ({
|
|
247
|
+
...acc,
|
|
248
|
+
...curr,
|
|
249
|
+
resolver: mergeResolver(acc?.resolver, curr?.resolver),
|
|
250
|
+
transformer: mergeTransformer(acc?.transformer, curr?.transformer),
|
|
251
|
+
esbuild: mergeEsbuild(acc?.esbuild, curr?.esbuild),
|
|
252
|
+
babel: mergeBabel(acc?.babel, curr?.babel),
|
|
253
|
+
swc: mergeSwc(acc?.swc, curr?.swc),
|
|
254
|
+
devServer: mergeDevServer(acc?.devServer, curr?.devServer),
|
|
255
|
+
metro: mergeMetro(acc?.metro, curr?.metro),
|
|
256
|
+
extra: mergeExtra(acc?.extra, curr?.extra)
|
|
257
|
+
}), base);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
//#endregion
|
|
261
|
+
//#region src/utils/mergeBuildConfigs.ts
|
|
262
|
+
function mergeBuildConfigs(baseConfig, ...otherConfigs) {
|
|
263
|
+
const mergedConfig = otherConfigs.reduce((acc, curr) => ({
|
|
264
|
+
entry: acc.entry ?? curr.entry,
|
|
265
|
+
outfile: acc.outfile ?? curr.outfile,
|
|
266
|
+
platform: acc.platform ?? curr.platform,
|
|
267
|
+
resolver: mergeResolver(acc.resolver, curr.resolver),
|
|
268
|
+
transformer: mergeTransformer(acc.transformer, curr.transformer),
|
|
269
|
+
esbuild: mergeEsbuild(acc.esbuild, curr.esbuild),
|
|
270
|
+
swc: mergeSwc(acc.swc, curr.swc),
|
|
271
|
+
babel: mergeBabel(acc.babel, curr.babel),
|
|
272
|
+
extra: mergeExtra(acc.extra, curr.extra)
|
|
273
|
+
}), baseConfig);
|
|
274
|
+
return mergedConfig;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
//#endregion
|
|
278
|
+
//#region src/utils/createPluginHooksDriver.ts
|
|
279
|
+
function createPluginHooksDriver(config) {
|
|
280
|
+
const context = createPluginContext();
|
|
281
|
+
const { devServer: devServerHooks, build: buildHooks } = config.pluginHooks;
|
|
282
|
+
const baseArgs = {
|
|
283
|
+
cwd: config.cwd,
|
|
284
|
+
appName: config.appName,
|
|
285
|
+
entryFile: config.entryFile,
|
|
286
|
+
outdir: config.outdir
|
|
287
|
+
};
|
|
288
|
+
return {
|
|
52
289
|
devServer: {
|
|
53
|
-
|
|
54
|
-
|
|
290
|
+
pre: async (args) => {
|
|
291
|
+
for (const handler of devServerHooks.preHandlers) await handler.call(context, {
|
|
292
|
+
...baseArgs,
|
|
293
|
+
...args
|
|
294
|
+
});
|
|
295
|
+
},
|
|
296
|
+
post: async (args) => {
|
|
297
|
+
for (const handler of devServerHooks.postHandlers) await handler.call(context, {
|
|
298
|
+
...baseArgs,
|
|
299
|
+
...args
|
|
300
|
+
});
|
|
301
|
+
}
|
|
55
302
|
},
|
|
56
303
|
build: {
|
|
57
|
-
|
|
58
|
-
|
|
304
|
+
pre: async () => {
|
|
305
|
+
for (const handler of buildHooks.preHandlers) await handler.call(context, { ...baseArgs });
|
|
306
|
+
},
|
|
307
|
+
post: async (args) => {
|
|
308
|
+
for (const handler of buildHooks.postHandlers) await handler.call(context, {
|
|
309
|
+
...baseArgs,
|
|
310
|
+
...args
|
|
311
|
+
});
|
|
312
|
+
}
|
|
59
313
|
}
|
|
60
314
|
};
|
|
61
315
|
}
|
|
316
|
+
function createPluginContext() {
|
|
317
|
+
const meta = Object.create(null);
|
|
318
|
+
const context = { meta };
|
|
319
|
+
return context;
|
|
320
|
+
}
|
|
62
321
|
|
|
63
322
|
//#endregion
|
|
64
|
-
//#region src/
|
|
65
|
-
const
|
|
323
|
+
//#region src/schema/pluginConfig.ts
|
|
324
|
+
const pluginConfigSchema = zod.object({
|
|
325
|
+
cwd: zod.string().default(process.cwd()),
|
|
326
|
+
appName: zod.string(),
|
|
327
|
+
scheme: zod.string(),
|
|
328
|
+
outdir: zod.string().default("dist"),
|
|
329
|
+
entryFile: zod.string().default("./src/_app.tsx"),
|
|
330
|
+
build: zod.custom().optional(),
|
|
331
|
+
devServer: zod.custom().optional(),
|
|
332
|
+
metro: zod.custom().optional(),
|
|
333
|
+
plugins: zod.custom()
|
|
334
|
+
});
|
|
66
335
|
|
|
67
336
|
//#endregion
|
|
337
|
+
exports.createContext = createContext;
|
|
338
|
+
exports.createPluginContext = createPluginContext;
|
|
339
|
+
exports.createPluginHooksDriver = createPluginHooksDriver;
|
|
68
340
|
exports.flattenPlugins = flattenPlugins;
|
|
69
|
-
exports.
|
|
341
|
+
exports.mergeBuildConfigs = mergeBuildConfigs;
|
|
342
|
+
exports.mergeConfig = mergeConfig;
|
|
343
|
+
exports.pluginConfigSchema = pluginConfigSchema;
|
|
70
344
|
exports.resolvePlugins = resolvePlugins;
|