crx-monkey-next 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/main.d.ts +1 -1
- package/dist/client/tsconfig.client.tsbuildinfo +1 -1
- package/dist/node/exports.d.ts +8 -3
- package/dist/node/exports.js +100 -362
- package/dist/node/main.js +439 -408
- package/package.json +1 -1
package/dist/node/exports.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import esbuild from 'esbuild';
|
|
2
2
|
import typescript, { readConfigFile, sys, parseJsonConfigFileContent } from 'typescript';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
|
-
import { watch } from 'fs';
|
|
4
|
+
import { watch, readFile } from 'fs';
|
|
5
5
|
import { compile } from 'sass';
|
|
6
|
-
import { basename, resolve, dirname } from 'path';
|
|
7
|
-
import { parse } from 'node-html-parser';
|
|
8
6
|
import fse from 'fs-extra';
|
|
9
|
-
import MurmurHash3 from 'murmurhash3js';
|
|
10
7
|
|
|
11
8
|
function esbuildTypecheckPlugin(options = { exit: false }) {
|
|
12
9
|
const tsPlugin = {
|
|
@@ -213,351 +210,61 @@ function sassBundlerWatch(options = { sass: {} }) {
|
|
|
213
210
|
};
|
|
214
211
|
}
|
|
215
212
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
this.distPath = distPath;
|
|
232
|
-
this.plugins = plugins;
|
|
233
|
-
this.bundler = bundler;
|
|
234
|
-
this.htmlParserRoot = this.getParser(popupPath);
|
|
235
|
-
}
|
|
236
|
-
async buildForUserjs() {
|
|
237
|
-
const htmlParserRoot = this.getParser(this.popupPath);
|
|
238
|
-
const parseResult = this.parse();
|
|
239
|
-
const diff = this.getParseResultDiff(parseResult);
|
|
240
|
-
const decorder = new TextDecoder();
|
|
241
|
-
diff.localScripts.add.forEach((scriptPath) => {
|
|
242
|
-
const result = this.bundler.getBuildResultFromPath(scriptPath);
|
|
243
|
-
if (result !== undefined) {
|
|
244
|
-
const targetElement = parseResult.requestLocalSrcFiles[scriptPath];
|
|
245
|
-
const resultStr = decorder.decode(result);
|
|
246
|
-
targetElement.innerHTML = resultStr;
|
|
247
|
-
}
|
|
248
|
-
});
|
|
249
|
-
return htmlParserRoot.toString();
|
|
250
|
-
}
|
|
251
|
-
async build() {
|
|
252
|
-
this.htmlParserRoot = this.getParser(this.popupPath);
|
|
253
|
-
const result = this.parse();
|
|
254
|
-
const diff = this.getParseResultDiff(result);
|
|
255
|
-
this.parseResult = result;
|
|
256
|
-
const hashs = this.registerDiffToBundler(diff);
|
|
257
|
-
this.syncAssets(diff);
|
|
258
|
-
return hashs;
|
|
259
|
-
}
|
|
260
|
-
async watchHTML() {
|
|
261
|
-
const stack = [];
|
|
262
|
-
// When html updated
|
|
263
|
-
const onUpdate = async () => {
|
|
264
|
-
this.htmlParserRoot = this.getParser(this.popupPath);
|
|
265
|
-
const result = this.parse();
|
|
266
|
-
const diff = this.getParseResultDiff(result);
|
|
267
|
-
this.parseResult = result;
|
|
268
|
-
this.registerDiffToBundler(diff);
|
|
269
|
-
this.syncAssets(diff);
|
|
270
|
-
await this.bundler.stopWatch();
|
|
271
|
-
await this.bundler.watch();
|
|
272
|
-
};
|
|
273
|
-
await onUpdate();
|
|
274
|
-
this.watcher = watch(this.popupPath);
|
|
275
|
-
this.watcher.addListener('change', () => {
|
|
276
|
-
stack.push(onUpdate);
|
|
277
|
-
});
|
|
278
|
-
this.stackInterval = setInterval(async () => {
|
|
279
|
-
if (stack[0] !== undefined) {
|
|
280
|
-
await stack[0]();
|
|
281
|
-
stack.splice(0, 1);
|
|
282
|
-
}
|
|
283
|
-
}, 1000);
|
|
284
|
-
}
|
|
285
|
-
stopWatch() {
|
|
286
|
-
if (this.stackInterval !== null) {
|
|
287
|
-
clearInterval(this.stackInterval);
|
|
288
|
-
}
|
|
289
|
-
if (this.watcher !== null) {
|
|
290
|
-
this.watcher.close();
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
resolveScript(entry, target) {
|
|
294
|
-
const targetElement = this.parseResult.requestLocalScripts[this.resolveFilePath(entry)];
|
|
295
|
-
targetElement.setAttribute('src', target);
|
|
296
|
-
}
|
|
297
|
-
resolveHref(entry, target) {
|
|
298
|
-
const targetElement = this.parseResult.requestLocalHrefFiles[this.resolveFilePath(entry)];
|
|
299
|
-
targetElement.setAttribute('href', target);
|
|
300
|
-
}
|
|
301
|
-
resolveSrc(entry, target) {
|
|
302
|
-
const targetElement = this.parseResult.requestLocalSrcFiles[this.resolveFilePath(entry)];
|
|
303
|
-
targetElement.setAttribute('src', target);
|
|
304
|
-
}
|
|
305
|
-
outputHtmlResolved() {
|
|
306
|
-
return this.htmlParserRoot.toString();
|
|
307
|
-
}
|
|
308
|
-
syncAssets(diff) {
|
|
309
|
-
diff.localSrcFiles.add.forEach((filePath) => {
|
|
310
|
-
const baseFileName = basename(filePath);
|
|
311
|
-
const newFilePath = '/assets/' + baseFileName;
|
|
312
|
-
fse.copySync(filePath, resolve(this.distPath, 'assets', baseFileName));
|
|
313
|
-
this.resolveSrc(filePath, newFilePath);
|
|
314
|
-
});
|
|
315
|
-
diff.localSrcFiles.delete.forEach((filePath) => {
|
|
316
|
-
const baseFileName = basename(filePath);
|
|
317
|
-
const newFilePath = '/assets/' + baseFileName;
|
|
318
|
-
fse.removeSync(newFilePath);
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
registerDiffToBundler(diff) {
|
|
322
|
-
const hashs = [];
|
|
323
|
-
const targetGroups = [
|
|
324
|
-
['html_script', diff.localScripts.add],
|
|
325
|
-
['html_href', diff.localHrefFiles.add],
|
|
326
|
-
];
|
|
327
|
-
for (const [type, paths] of targetGroups) {
|
|
328
|
-
for (const path of paths) {
|
|
329
|
-
if (type === 'html_script' || type === 'html_href') {
|
|
330
|
-
const buildPlugin = this.getAppropriateBuildPlugin(path);
|
|
331
|
-
const watchPlugin = this.getAppropriateWatchPlugin(path);
|
|
332
|
-
if (!buildPlugin) {
|
|
333
|
-
console.error(`Could not find the appropriate plugin for building "${path}"`);
|
|
334
|
-
continue;
|
|
213
|
+
/**
|
|
214
|
+
* What is this?
|
|
215
|
+
* Currently, this HTML bundler plugin functions merely as a file loader.
|
|
216
|
+
* Previously, it parsed the popup HTML and passed the scripts to tsBundler for transpilation.
|
|
217
|
+
* However, due to design changes to support UserJS popups, the plugin no longer handles transpilation.
|
|
218
|
+
* Instead, the HTML is now processed internally via popup/Popup.ts.
|
|
219
|
+
*/
|
|
220
|
+
function htmlBundler() {
|
|
221
|
+
return {
|
|
222
|
+
name: 'HTML File loader',
|
|
223
|
+
plugin: async (filePath) => {
|
|
224
|
+
return new Promise((resolve, reject) => {
|
|
225
|
+
readFile(filePath, (err, data) => {
|
|
226
|
+
if (err !== null) {
|
|
227
|
+
reject(err);
|
|
335
228
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
continue;
|
|
229
|
+
else {
|
|
230
|
+
resolve(data);
|
|
339
231
|
}
|
|
340
|
-
|
|
341
|
-
hashs.push(hash);
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
[...diff.localScripts.delete, ...diff.localHrefFiles.delete].forEach((path) => {
|
|
346
|
-
this.bundler.removeTarget(path);
|
|
347
|
-
});
|
|
348
|
-
return hashs;
|
|
349
|
-
}
|
|
350
|
-
/**
|
|
351
|
-
* Get diff that loaded resources in html what with added or deleted.
|
|
352
|
-
* @returns
|
|
353
|
-
*/
|
|
354
|
-
getParseResultDiff(newResult) {
|
|
355
|
-
const result = {
|
|
356
|
-
localScripts: {
|
|
357
|
-
add: [],
|
|
358
|
-
delete: [],
|
|
359
|
-
},
|
|
360
|
-
localHrefFiles: {
|
|
361
|
-
add: [],
|
|
362
|
-
delete: [],
|
|
363
|
-
},
|
|
364
|
-
localSrcFiles: {
|
|
365
|
-
add: [],
|
|
366
|
-
delete: [],
|
|
367
|
-
},
|
|
368
|
-
};
|
|
369
|
-
const setDiff = (key, elements, original) => {
|
|
370
|
-
Object.keys(elements).forEach((requestURL) => {
|
|
371
|
-
if (original[requestURL] === undefined) {
|
|
372
|
-
result[key].add.push(requestURL);
|
|
373
|
-
}
|
|
232
|
+
});
|
|
374
233
|
});
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
234
|
+
},
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
function htmlBundlerWatch() {
|
|
238
|
+
return {
|
|
239
|
+
name: 'HTML File loader watch',
|
|
240
|
+
plugin: async (filePath, sendResult) => {
|
|
241
|
+
const watcher = watch(filePath);
|
|
242
|
+
readFile(filePath, (err, data) => {
|
|
243
|
+
if (err !== null) {
|
|
244
|
+
throw err;
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
sendResult(data);
|
|
378
248
|
}
|
|
379
249
|
});
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
return result;
|
|
385
|
-
}
|
|
386
|
-
/**
|
|
387
|
-
* Parse popup html
|
|
388
|
-
* @param filePath
|
|
389
|
-
* @returns
|
|
390
|
-
*/
|
|
391
|
-
parse() {
|
|
392
|
-
return {
|
|
393
|
-
requestLocalScripts: this.getResourceElement(this.htmlParserRoot, 'script', 'src'),
|
|
394
|
-
requestLocalHrefFiles: this.getResourceElement(this.htmlParserRoot, 'link', 'href'),
|
|
395
|
-
requestLocalSrcFiles: this.getResourceElement(this.htmlParserRoot, 'video, img, iframe', 'src'),
|
|
396
|
-
};
|
|
397
|
-
}
|
|
398
|
-
/**
|
|
399
|
-
* Get elements for loading any resource. for example, script or img link anymore..
|
|
400
|
-
* @param root
|
|
401
|
-
* @param selector
|
|
402
|
-
* @param resourceURLAttr
|
|
403
|
-
* @returns
|
|
404
|
-
*/
|
|
405
|
-
getResourceElement(root, selector, resourceURLAttr) {
|
|
406
|
-
const elems = root.querySelectorAll(selector);
|
|
407
|
-
const ResultElems = {};
|
|
408
|
-
elems.forEach((elem) => {
|
|
409
|
-
const noBundleAttr = elem.getAttribute('no-bundle');
|
|
410
|
-
if (noBundleAttr !== '' && noBundleAttr !== 'true') {
|
|
411
|
-
const src = elem.getAttribute(resourceURLAttr);
|
|
412
|
-
if (src !== undefined && src !== null) {
|
|
413
|
-
// Except the script href that start http.
|
|
414
|
-
if (src.match('^http.*') === null) {
|
|
415
|
-
const resolvedPath = this.resolveFilePath(src);
|
|
416
|
-
ResultElems[resolvedPath] = elem;
|
|
250
|
+
watcher.addListener('change', async () => {
|
|
251
|
+
readFile(filePath, (err, data) => {
|
|
252
|
+
if (err !== null) {
|
|
253
|
+
throw err;
|
|
417
254
|
}
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
});
|
|
421
|
-
return ResultElems;
|
|
422
|
-
}
|
|
423
|
-
/**
|
|
424
|
-
* Resolve path
|
|
425
|
-
*/
|
|
426
|
-
resolveFilePath(contentPath) {
|
|
427
|
-
return resolve(dirname(this.popupPath), contentPath);
|
|
428
|
-
}
|
|
429
|
-
/**
|
|
430
|
-
* Get Html parser instance.
|
|
431
|
-
* @param htmlPath
|
|
432
|
-
* @returns
|
|
433
|
-
*/
|
|
434
|
-
getParser(htmlPath) {
|
|
435
|
-
const content = fse.readFileSync(htmlPath).toString();
|
|
436
|
-
const root = parse(content);
|
|
437
|
-
return root;
|
|
438
|
-
}
|
|
439
|
-
/**
|
|
440
|
-
* Get build plugin
|
|
441
|
-
* @param filePath
|
|
442
|
-
* @returns
|
|
443
|
-
*/
|
|
444
|
-
getAppropriateBuildPlugin(filePath) {
|
|
445
|
-
for (const [pattern, plugin] of Object.entries(this.plugins.build)) {
|
|
446
|
-
const regex = new RegExp(pattern);
|
|
447
|
-
if (regex.test(filePath)) {
|
|
448
|
-
return plugin;
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
return null;
|
|
452
|
-
}
|
|
453
|
-
/**
|
|
454
|
-
* Get watch plugin
|
|
455
|
-
* @param filePath
|
|
456
|
-
* @returns
|
|
457
|
-
*/
|
|
458
|
-
getAppropriateWatchPlugin(filePath) {
|
|
459
|
-
for (const [pattern, plugin] of Object.entries(this.plugins.watch)) {
|
|
460
|
-
const regex = new RegExp(pattern);
|
|
461
|
-
if (regex.test(filePath)) {
|
|
462
|
-
return plugin;
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
return null;
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
let htmlTools = null;
|
|
470
|
-
let listenerAdded = false;
|
|
471
|
-
function htmlBundlerWatch(options) {
|
|
472
|
-
return {
|
|
473
|
-
name: 'Crxm Watch HTML Plugin',
|
|
474
|
-
plugin: async (filePath, sendResult, bundler) => {
|
|
475
|
-
const distPath = resolve(options.output);
|
|
476
|
-
if (htmlTools === null) {
|
|
477
|
-
htmlTools = new HTMLTools(filePath, options.output, options.plugins, bundler);
|
|
478
|
-
await htmlTools.watchHTML();
|
|
479
|
-
}
|
|
480
|
-
if (!listenerAdded) {
|
|
481
|
-
bundler.addListener((target) => {
|
|
482
|
-
if (htmlTools !== null) {
|
|
483
|
-
if (target.flag === 'html_script' || target.flag === 'html_href') {
|
|
484
|
-
const result = bundler.compileResults[target.hash];
|
|
485
|
-
if (target.flag === 'html_script') {
|
|
486
|
-
const extChanged = changeExt(target.entryPoint, 'js');
|
|
487
|
-
const endemicHash = MurmurHash3.x86.hash32(target.entryPoint).toString();
|
|
488
|
-
const fileName = endemicHash + '_' + extChanged;
|
|
489
|
-
const outputPath = resolve(distPath, fileName);
|
|
490
|
-
fse.outputFileSync(outputPath, result);
|
|
491
|
-
htmlTools.resolveScript(target.entryPoint, fileName);
|
|
492
|
-
}
|
|
493
|
-
if (target.flag === 'html_href') {
|
|
494
|
-
const extChanged = changeExt(target.entryPoint, 'css');
|
|
495
|
-
const endemicHash = MurmurHash3.x86.hash32(target.entryPoint).toString();
|
|
496
|
-
const fileName = endemicHash + '_' + extChanged;
|
|
497
|
-
const outputPath = resolve(distPath, fileName);
|
|
498
|
-
fse.outputFileSync(outputPath, result);
|
|
499
|
-
htmlTools.resolveHref(target.entryPoint, fileName);
|
|
500
|
-
}
|
|
501
|
-
const html = htmlTools.outputHtmlResolved();
|
|
502
|
-
const encoder = new TextEncoder();
|
|
503
|
-
const encoded = encoder.encode(html);
|
|
504
|
-
sendResult(encoded);
|
|
505
|
-
}
|
|
255
|
+
else {
|
|
256
|
+
sendResult(data);
|
|
506
257
|
}
|
|
507
258
|
});
|
|
508
|
-
|
|
509
|
-
}
|
|
259
|
+
});
|
|
510
260
|
return {
|
|
511
261
|
stop: async () => {
|
|
512
|
-
|
|
513
|
-
htmlTools.stopWatch();
|
|
514
|
-
htmlTools = null;
|
|
515
|
-
}
|
|
262
|
+
watcher.close();
|
|
516
263
|
},
|
|
517
264
|
};
|
|
518
265
|
},
|
|
519
266
|
};
|
|
520
267
|
}
|
|
521
|
-
function htmlBundler(options) {
|
|
522
|
-
return {
|
|
523
|
-
name: 'Crxm HTML Plugin',
|
|
524
|
-
plugin: async (filePath, bundler) => {
|
|
525
|
-
const distPath = resolve(options.output);
|
|
526
|
-
const htmlTools = new HTMLTools(filePath, options.output, options.plugins, bundler);
|
|
527
|
-
const hashs = await htmlTools.build();
|
|
528
|
-
await Promise.all(hashs.map(async (hash) => {
|
|
529
|
-
const target = await bundler.compileForce(hash);
|
|
530
|
-
const result = bundler.compileResults[target.hash];
|
|
531
|
-
if (target.flag === 'html_script') {
|
|
532
|
-
const extChanged = changeExt(target.entryPoint, 'js');
|
|
533
|
-
const endemicHash = MurmurHash3.x86.hash32(target.entryPoint).toString();
|
|
534
|
-
const fileName = endemicHash + '_' + extChanged;
|
|
535
|
-
const outputPath = resolve(distPath, fileName);
|
|
536
|
-
fse.outputFileSync(outputPath, result);
|
|
537
|
-
htmlTools.resolveScript(target.entryPoint, fileName);
|
|
538
|
-
}
|
|
539
|
-
if (target.flag === 'html_href') {
|
|
540
|
-
const extChanged = changeExt(target.entryPoint, 'css');
|
|
541
|
-
const endemicHash = MurmurHash3.x86.hash32(target.entryPoint).toString();
|
|
542
|
-
const fileName = endemicHash + '_' + extChanged;
|
|
543
|
-
const outputPath = resolve(distPath, fileName);
|
|
544
|
-
fse.outputFileSync(outputPath, result);
|
|
545
|
-
htmlTools.resolveHref(target.entryPoint, fileName);
|
|
546
|
-
}
|
|
547
|
-
}));
|
|
548
|
-
const html = htmlTools.outputHtmlResolved();
|
|
549
|
-
const encoder = new TextEncoder();
|
|
550
|
-
const encoded = encoder.encode(html);
|
|
551
|
-
return encoded;
|
|
552
|
-
},
|
|
553
|
-
};
|
|
554
|
-
}
|
|
555
|
-
function changeExt(filePath, newExt) {
|
|
556
|
-
const rawFileNameSplited = basename(filePath).split('.');
|
|
557
|
-
rawFileNameSplited[rawFileNameSplited.length - 1] = newExt;
|
|
558
|
-
const newFilename = rawFileNameSplited.join('.');
|
|
559
|
-
return newFilename;
|
|
560
|
-
}
|
|
561
268
|
|
|
562
269
|
async function developmentReact(websocketAddress, entryPoint, cacheFileName) {
|
|
563
270
|
const ws = new WebSocket(websocketAddress);
|
|
@@ -569,25 +276,57 @@ async function developmentReact(websocketAddress, entryPoint, cacheFileName) {
|
|
|
569
276
|
});
|
|
570
277
|
ws.addEventListener('message', async ({ data }) => {
|
|
571
278
|
const response = JSON.parse(data);
|
|
279
|
+
if (response.type === 'connected') {
|
|
280
|
+
if (typeof chrome.runtime === 'undefined') {
|
|
281
|
+
const data = {
|
|
282
|
+
type: 'request_result',
|
|
283
|
+
content: {
|
|
284
|
+
entryPoint,
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
ws.send(JSON.stringify(data));
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (response.type === 'request_result_response') {
|
|
291
|
+
console.log('[crxm] hmr initial loading...');
|
|
292
|
+
const { content: { js }, } = response;
|
|
293
|
+
if (typeof chrome.runtime === 'undefined') {
|
|
294
|
+
// userjs
|
|
295
|
+
await loadByString(js);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
572
298
|
if (response.type === 'reload') {
|
|
573
|
-
|
|
574
|
-
|
|
299
|
+
const data = response;
|
|
300
|
+
if (data.content.reloadType === 'HMR_' + entryPoint) {
|
|
301
|
+
const { content: { data: { js, fileName }, }, } = response;
|
|
575
302
|
console.log('[crxm] hmr loading...');
|
|
576
|
-
|
|
303
|
+
if (typeof chrome.runtime === 'undefined') {
|
|
304
|
+
// userjs
|
|
305
|
+
await loadByString(js);
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
await loadFile(fileName);
|
|
309
|
+
}
|
|
577
310
|
}
|
|
578
311
|
}
|
|
579
312
|
});
|
|
580
|
-
async function
|
|
313
|
+
async function loadFile(jsFileName) {
|
|
581
314
|
await import(`./${jsFileName}?time=${Date.now()}`);
|
|
582
315
|
}
|
|
583
|
-
|
|
316
|
+
async function loadByString(js) {
|
|
317
|
+
const s = document.createElement('script');
|
|
318
|
+
s.innerHTML = js;
|
|
319
|
+
document.body.appendChild(s);
|
|
320
|
+
}
|
|
321
|
+
if (typeof chrome.runtime !== 'undefined') {
|
|
322
|
+
await loadFile(cacheFileName);
|
|
323
|
+
}
|
|
584
324
|
}
|
|
585
325
|
|
|
586
326
|
function reactWatch(options = { esbuild: {} }) {
|
|
587
327
|
return {
|
|
588
328
|
name: 'React watch plugin',
|
|
589
329
|
plugin: async (filePath, sendResult, bundler) => {
|
|
590
|
-
bundler.hmr.enable();
|
|
591
330
|
/**
|
|
592
331
|
* Watch and send
|
|
593
332
|
*/
|
|
@@ -659,6 +398,23 @@ function stringifyFunction(target, args) {
|
|
|
659
398
|
return code;
|
|
660
399
|
}
|
|
661
400
|
|
|
401
|
+
/**
|
|
402
|
+
* CSS
|
|
403
|
+
*/
|
|
404
|
+
function esbuildCSSPlugin() {
|
|
405
|
+
return {
|
|
406
|
+
name: 'esbuild css plugin by crxm',
|
|
407
|
+
setup: (build) => {
|
|
408
|
+
build.onLoad({ filter: /\.css$/ }, async (args) => {
|
|
409
|
+
const css = await fse.readFile(args.path, { encoding: 'utf-8' });
|
|
410
|
+
return {
|
|
411
|
+
contents: `const s = document.createElement('style');\ns.appendChild(document.createTextNode(${JSON.stringify(css)}));\ndocument.head.appendChild(s);\n`,
|
|
412
|
+
};
|
|
413
|
+
});
|
|
414
|
+
},
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
|
|
662
418
|
/**
|
|
663
419
|
* Define config for crx monkey.
|
|
664
420
|
* @param userConfig
|
|
@@ -681,16 +437,7 @@ function defineConfig(userConfig) {
|
|
|
681
437
|
build: {
|
|
682
438
|
'^.*.(ts|js|tsx|jsx)$': tsBundler({}),
|
|
683
439
|
'^.*.(css|sass|scss)$': sassBundler(),
|
|
684
|
-
'^.*.(html|htm)$': htmlBundler(
|
|
685
|
-
output: 'dist/chrome',
|
|
686
|
-
plugins: {
|
|
687
|
-
build: { '^.*.(ts|js|tsx|jsx)$': tsBundler(), '^.*.(css|sass|scss)$': sassBundler() },
|
|
688
|
-
watch: {
|
|
689
|
-
'^.*.(ts|js|tsx|jsx)$': tsBundlerWatch(),
|
|
690
|
-
'^.*.(css|sass|scss)$': sassBundlerWatch(),
|
|
691
|
-
},
|
|
692
|
-
},
|
|
693
|
-
}),
|
|
440
|
+
'^.*.(html|htm)$': htmlBundler(),
|
|
694
441
|
},
|
|
695
442
|
watch: {
|
|
696
443
|
'^.*.(ts|js|tsx|jsx)$': tsBundlerWatch({
|
|
@@ -699,16 +446,7 @@ function defineConfig(userConfig) {
|
|
|
699
446
|
},
|
|
700
447
|
}),
|
|
701
448
|
'^.*.(css|sass|scss)$': sassBundlerWatch(),
|
|
702
|
-
'^.*.(html|htm)$': htmlBundlerWatch(
|
|
703
|
-
output: 'dist/chrome',
|
|
704
|
-
plugins: {
|
|
705
|
-
build: { '^.*.(ts|js|tsx|jsx)$': tsBundler(), '^.*.(css|sass|scss)$': sassBundler() },
|
|
706
|
-
watch: {
|
|
707
|
-
'^.*.(ts|js|tsx|jsx)$': tsBundlerWatch(),
|
|
708
|
-
'^.*.(css|sass|scss)$': sassBundlerWatch(),
|
|
709
|
-
},
|
|
710
|
-
},
|
|
711
|
-
}),
|
|
449
|
+
'^.*.(html|htm)$': htmlBundlerWatch(),
|
|
712
450
|
},
|
|
713
451
|
logLevel: 'error',
|
|
714
452
|
public: false,
|
|
@@ -774,5 +512,5 @@ function makeDefineFunc(defaultConfig, userConfig) {
|
|
|
774
512
|
return mergedConfig;
|
|
775
513
|
}
|
|
776
514
|
|
|
777
|
-
export { defineConfig, defineManifest, reactWatch, sassBundler, sassBundlerWatch, tsBundler, tsBundlerWatch };
|
|
778
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0cy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy90c0J1bmRsZXIudHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL3Nhc3NCdW5kbGVyLnRzIiwiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy9odG1sQnVuZGxlci9IVE1MVG9vbHMudHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL2h0bWxCdW5kbGVyL21haW4udHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL3JlYWN0L2RldmVsb3BtZW50LnRzIiwiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy9yZWFjdC9yZWFjdC50cyIsIi4uLy4uL3NyYy9ub2RlL2V4cG9ydHMudHMiXSwic291cmNlc0NvbnRlbnQiOltudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQThCQSxTQUFTLHNCQUFzQixDQUFDLE9BQUEsR0FBc0MsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUE7QUFDbkYsSUFBQSxNQUFNLFFBQVEsR0FBVztBQUN2QixRQUFBLElBQUksRUFBRSwwQkFBMEI7QUFDaEMsUUFBQSxLQUFLLEVBQUUsQ0FBQyxLQUFrQixLQUFJO1lBQzVCLEtBQUssQ0FBQyxNQUFNLENBQ1Y7QUFDRSxnQkFBQSxNQUFNLEVBQUUsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDO2FBQ3BDLEVBQ0QsQ0FBQyxJQUFJLEtBQUk7QUFDUCxnQkFBQSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSTtBQUVyQixnQkFBQSxNQUFNLGVBQWUsR0FDbkIsT0FBTyxDQUFDLGVBQWUsS0FBSztzQkFDeEIsT0FBTyxDQUFDO3NCQUNSLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBRXBDLGdCQUFBLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFl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
|
|
515
|
+
export { defineConfig, defineManifest, esbuildCSSPlugin, reactWatch, sassBundler, sassBundlerWatch, tsBundler, tsBundlerWatch };
|
|
516
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0cy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy90c0J1bmRsZXIudHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL3Nhc3NCdW5kbGVyLnRzIiwiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy9odG1sQnVuZGxlci50cyIsIi4uLy4uL3NyYy9ub2RlL3BsdWdpbnMvcmVhY3QvZGV2ZWxvcG1lbnQudHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL3JlYWN0L3JlYWN0LnRzIiwiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy9lc2J1aWxkQ1NTUGx1Z2luLnRzIiwiLi4vLi4vc3JjL25vZGUvZXhwb3J0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBOEJBLFNBQVMsc0JBQXNCLENBQUMsT0FBQSxHQUFzQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBQTtBQUNuRixJQUFBLE1BQU0sUUFBUSxHQUFXO0FBQ3ZCLFFBQUEsSUFBSSxFQUFFLDBCQUEwQjtBQUNoQyxRQUFBLEtBQUssRUFBRSxDQUFDLEtBQWtCLEtBQUk7WUFDNUIsS0FBSyxDQUFDLE1BQU0sQ0FDVjtBQUNFLGdCQUFBLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUM7YUFDcEMsRUFDRCxDQUFDLElBQUksS0FBSTtBQUNQLGdCQUFBLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJO0FBRXJCLGdCQUFBLE1BQU0sZUFBZSxHQUNuQixPQUFPLENBQUMsZUFBZSxLQUFLO3NCQUN4QixPQUFPLENBQUM7c0JBQ1IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7QUFFcEMsZ0JBQUEsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLGVBQWUsQ0FBQztnQkFFakUs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
|