@wyw-in-js/parcel-transformer 1.0.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/README.md +16 -0
- package/esm/index.mjs +83 -0
- package/esm/index.mjs.map +1 -0
- package/lib/index.js +91 -0
- package/lib/index.js.map +1 -0
- package/package.json +46 -0
- package/types/index.d.ts +3 -0
- package/types/index.js +85 -0
package/README.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# `@wyw-in-js/parcel-transformer`
|
|
2
|
+
|
|
3
|
+
Parcel 2 transformer for `@wyw-in-js/transform`.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
Prepend `@wyw-in-js/parcel-transformer` to the default JS pipeline in `.parcelrc`:
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"extends": "@parcel/config-default",
|
|
12
|
+
"transformers": {
|
|
13
|
+
"*.{js,mjs,jsm,jsx,es6,cjs,ts,tsx}": ["@wyw-in-js/parcel-transformer", "..."]
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
```
|
package/esm/index.mjs
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Transformer } from '@parcel/plugin';
|
|
2
|
+
import SourceMap from '@parcel/source-map';
|
|
3
|
+
import { asyncResolveFallback } from '@wyw-in-js/shared';
|
|
4
|
+
import { transform, TransformCacheCollection } from '@wyw-in-js/transform';
|
|
5
|
+
const cache = new TransformCacheCollection();
|
|
6
|
+
export default new Transformer({
|
|
7
|
+
async transform({
|
|
8
|
+
asset,
|
|
9
|
+
logger,
|
|
10
|
+
options,
|
|
11
|
+
resolve
|
|
12
|
+
}) {
|
|
13
|
+
if (!asset.isSource) {
|
|
14
|
+
return [asset];
|
|
15
|
+
}
|
|
16
|
+
const originalCode = await asset.getCode();
|
|
17
|
+
const originalMap = await asset.getMap();
|
|
18
|
+
const originalVlqMap = originalMap?.toVLQ();
|
|
19
|
+
const inputSourceMap = originalVlqMap ? {
|
|
20
|
+
...originalVlqMap,
|
|
21
|
+
version: originalVlqMap.version ?? 3,
|
|
22
|
+
sources: [...originalVlqMap.sources],
|
|
23
|
+
names: [...originalVlqMap.names],
|
|
24
|
+
sourcesContent: undefined,
|
|
25
|
+
file: originalVlqMap.file ?? asset.filePath
|
|
26
|
+
} : undefined;
|
|
27
|
+
const result = await transform({
|
|
28
|
+
cache,
|
|
29
|
+
emitWarning: message => {
|
|
30
|
+
logger.warn({
|
|
31
|
+
message,
|
|
32
|
+
origin: '@wyw-in-js/parcel-transformer'
|
|
33
|
+
});
|
|
34
|
+
},
|
|
35
|
+
options: {
|
|
36
|
+
filename: asset.filePath,
|
|
37
|
+
inputSourceMap,
|
|
38
|
+
root: options.projectRoot
|
|
39
|
+
}
|
|
40
|
+
}, originalCode, async (what, importer, stack) => {
|
|
41
|
+
try {
|
|
42
|
+
return await resolve(importer, what, {
|
|
43
|
+
specifierType: 'esm'
|
|
44
|
+
});
|
|
45
|
+
} catch (error) {
|
|
46
|
+
try {
|
|
47
|
+
return await asyncResolveFallback(what, importer, stack);
|
|
48
|
+
} catch {
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
if (result.dependencies) {
|
|
54
|
+
for (const dependency of result.dependencies) {
|
|
55
|
+
asset.invalidateOnFileChange(dependency);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
asset.setCode(result.code);
|
|
59
|
+
if (result.sourceMap) {
|
|
60
|
+
const map = new SourceMap(options.projectRoot);
|
|
61
|
+
map.addVLQMap(result.sourceMap);
|
|
62
|
+
asset.setMap(map);
|
|
63
|
+
} else {
|
|
64
|
+
asset.setMap(null);
|
|
65
|
+
}
|
|
66
|
+
if (!result.cssText) {
|
|
67
|
+
return [asset];
|
|
68
|
+
}
|
|
69
|
+
const cssKey = `${asset.id}::wyw-in-js.css`;
|
|
70
|
+
asset.addDependency({
|
|
71
|
+
specifier: cssKey,
|
|
72
|
+
specifierType: 'esm'
|
|
73
|
+
});
|
|
74
|
+
return [asset, {
|
|
75
|
+
type: 'css',
|
|
76
|
+
content: `${result.cssText}\n`,
|
|
77
|
+
env: asset.env,
|
|
78
|
+
sideEffects: true,
|
|
79
|
+
uniqueKey: cssKey
|
|
80
|
+
}];
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["Transformer","SourceMap","asyncResolveFallback","transform","TransformCacheCollection","cache","asset","logger","options","resolve","isSource","originalCode","getCode","originalMap","getMap","originalVlqMap","toVLQ","inputSourceMap","version","sources","names","sourcesContent","undefined","file","filePath","result","emitWarning","message","warn","origin","filename","root","projectRoot","what","importer","stack","specifierType","error","dependencies","dependency","invalidateOnFileChange","setCode","code","sourceMap","map","addVLQMap","setMap","cssText","cssKey","id","addDependency","specifier","type","content","env","sideEffects","uniqueKey"],"sources":["../src/index.ts"],"sourcesContent":["import { Transformer } from '@parcel/plugin';\nimport SourceMap from '@parcel/source-map';\n\nimport { asyncResolveFallback } from '@wyw-in-js/shared';\nimport { transform, TransformCacheCollection } from '@wyw-in-js/transform';\n\nconst cache = new TransformCacheCollection();\n\nexport default new Transformer({\n async transform({ asset, logger, options, resolve }) {\n if (!asset.isSource) {\n return [asset];\n }\n\n const originalCode = await asset.getCode();\n const originalMap = await asset.getMap();\n const originalVlqMap = originalMap?.toVLQ();\n const inputSourceMap = originalVlqMap\n ? {\n ...originalVlqMap,\n version: originalVlqMap.version ?? 3,\n sources: [...originalVlqMap.sources],\n names: [...originalVlqMap.names],\n sourcesContent: undefined,\n file: originalVlqMap.file ?? asset.filePath,\n }\n : undefined;\n\n const result = await transform(\n {\n cache,\n emitWarning: (message: string) => {\n logger.warn({ message, origin: '@wyw-in-js/parcel-transformer' });\n },\n options: {\n filename: asset.filePath,\n inputSourceMap,\n root: options.projectRoot,\n },\n },\n originalCode,\n async (what: string, importer: string, stack: string[]) => {\n try {\n return await resolve(importer, what, { specifierType: 'esm' });\n } catch (error) {\n try {\n return await asyncResolveFallback(what, importer, stack);\n } catch {\n throw error;\n }\n }\n }\n );\n\n if (result.dependencies) {\n for (const dependency of result.dependencies) {\n asset.invalidateOnFileChange(dependency);\n }\n }\n\n asset.setCode(result.code);\n\n if (result.sourceMap) {\n const map = new SourceMap(options.projectRoot);\n map.addVLQMap(result.sourceMap);\n asset.setMap(map);\n } else {\n asset.setMap(null);\n }\n\n if (!result.cssText) {\n return [asset];\n }\n\n const cssKey = `${asset.id}::wyw-in-js.css`;\n\n asset.addDependency({\n specifier: cssKey,\n specifierType: 'esm',\n });\n\n return [\n asset,\n {\n type: 'css',\n content: `${result.cssText}\\n`,\n env: asset.env,\n sideEffects: true,\n uniqueKey: cssKey,\n },\n ];\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _plugin = require("@parcel/plugin");
|
|
8
|
+
var _sourceMap = _interopRequireDefault(require("@parcel/source-map"));
|
|
9
|
+
var _shared = require("@wyw-in-js/shared");
|
|
10
|
+
var _transform = require("@wyw-in-js/transform");
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
const cache = new _transform.TransformCacheCollection();
|
|
13
|
+
var _default = exports.default = new _plugin.Transformer({
|
|
14
|
+
async transform({
|
|
15
|
+
asset,
|
|
16
|
+
logger,
|
|
17
|
+
options,
|
|
18
|
+
resolve
|
|
19
|
+
}) {
|
|
20
|
+
var _originalVlqMap$versi, _originalVlqMap$file;
|
|
21
|
+
if (!asset.isSource) {
|
|
22
|
+
return [asset];
|
|
23
|
+
}
|
|
24
|
+
const originalCode = await asset.getCode();
|
|
25
|
+
const originalMap = await asset.getMap();
|
|
26
|
+
const originalVlqMap = originalMap === null || originalMap === void 0 ? void 0 : originalMap.toVLQ();
|
|
27
|
+
const inputSourceMap = originalVlqMap ? {
|
|
28
|
+
...originalVlqMap,
|
|
29
|
+
version: (_originalVlqMap$versi = originalVlqMap.version) !== null && _originalVlqMap$versi !== void 0 ? _originalVlqMap$versi : 3,
|
|
30
|
+
sources: [...originalVlqMap.sources],
|
|
31
|
+
names: [...originalVlqMap.names],
|
|
32
|
+
sourcesContent: undefined,
|
|
33
|
+
file: (_originalVlqMap$file = originalVlqMap.file) !== null && _originalVlqMap$file !== void 0 ? _originalVlqMap$file : asset.filePath
|
|
34
|
+
} : undefined;
|
|
35
|
+
const result = await (0, _transform.transform)({
|
|
36
|
+
cache,
|
|
37
|
+
emitWarning: message => {
|
|
38
|
+
logger.warn({
|
|
39
|
+
message,
|
|
40
|
+
origin: '@wyw-in-js/parcel-transformer'
|
|
41
|
+
});
|
|
42
|
+
},
|
|
43
|
+
options: {
|
|
44
|
+
filename: asset.filePath,
|
|
45
|
+
inputSourceMap,
|
|
46
|
+
root: options.projectRoot
|
|
47
|
+
}
|
|
48
|
+
}, originalCode, async (what, importer, stack) => {
|
|
49
|
+
try {
|
|
50
|
+
return await resolve(importer, what, {
|
|
51
|
+
specifierType: 'esm'
|
|
52
|
+
});
|
|
53
|
+
} catch (error) {
|
|
54
|
+
try {
|
|
55
|
+
return await (0, _shared.asyncResolveFallback)(what, importer, stack);
|
|
56
|
+
} catch {
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
if (result.dependencies) {
|
|
62
|
+
for (const dependency of result.dependencies) {
|
|
63
|
+
asset.invalidateOnFileChange(dependency);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
asset.setCode(result.code);
|
|
67
|
+
if (result.sourceMap) {
|
|
68
|
+
const map = new _sourceMap.default(options.projectRoot);
|
|
69
|
+
map.addVLQMap(result.sourceMap);
|
|
70
|
+
asset.setMap(map);
|
|
71
|
+
} else {
|
|
72
|
+
asset.setMap(null);
|
|
73
|
+
}
|
|
74
|
+
if (!result.cssText) {
|
|
75
|
+
return [asset];
|
|
76
|
+
}
|
|
77
|
+
const cssKey = `${asset.id}::wyw-in-js.css`;
|
|
78
|
+
asset.addDependency({
|
|
79
|
+
specifier: cssKey,
|
|
80
|
+
specifierType: 'esm'
|
|
81
|
+
});
|
|
82
|
+
return [asset, {
|
|
83
|
+
type: 'css',
|
|
84
|
+
content: `${result.cssText}\n`,
|
|
85
|
+
env: asset.env,
|
|
86
|
+
sideEffects: true,
|
|
87
|
+
uniqueKey: cssKey
|
|
88
|
+
}];
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_plugin","require","_sourceMap","_interopRequireDefault","_shared","_transform","e","__esModule","default","cache","TransformCacheCollection","_default","exports","Transformer","transform","asset","logger","options","resolve","_originalVlqMap$versi","_originalVlqMap$file","isSource","originalCode","getCode","originalMap","getMap","originalVlqMap","toVLQ","inputSourceMap","version","sources","names","sourcesContent","undefined","file","filePath","result","emitWarning","message","warn","origin","filename","root","projectRoot","what","importer","stack","specifierType","error","asyncResolveFallback","dependencies","dependency","invalidateOnFileChange","setCode","code","sourceMap","map","SourceMap","addVLQMap","setMap","cssText","cssKey","id","addDependency","specifier","type","content","env","sideEffects","uniqueKey"],"sources":["../src/index.ts"],"sourcesContent":["import { Transformer } from '@parcel/plugin';\nimport SourceMap from '@parcel/source-map';\n\nimport { asyncResolveFallback } from '@wyw-in-js/shared';\nimport { transform, TransformCacheCollection } from '@wyw-in-js/transform';\n\nconst cache = new TransformCacheCollection();\n\nexport default new Transformer({\n async transform({ asset, logger, options, resolve }) {\n if (!asset.isSource) {\n return [asset];\n }\n\n const originalCode = await asset.getCode();\n const originalMap = await asset.getMap();\n const originalVlqMap = originalMap?.toVLQ();\n const inputSourceMap = originalVlqMap\n ? {\n ...originalVlqMap,\n version: originalVlqMap.version ?? 3,\n sources: [...originalVlqMap.sources],\n names: [...originalVlqMap.names],\n sourcesContent: undefined,\n file: originalVlqMap.file ?? asset.filePath,\n }\n : undefined;\n\n const result = await transform(\n {\n cache,\n emitWarning: (message: string) => {\n logger.warn({ message, origin: '@wyw-in-js/parcel-transformer' });\n },\n options: {\n filename: asset.filePath,\n inputSourceMap,\n root: options.projectRoot,\n },\n },\n originalCode,\n async (what: string, importer: string, stack: string[]) => {\n try {\n return await resolve(importer, what, { specifierType: 'esm' });\n } catch (error) {\n try {\n return await asyncResolveFallback(what, importer, stack);\n } catch {\n throw error;\n }\n }\n }\n );\n\n if (result.dependencies) {\n for (const dependency of result.dependencies) {\n asset.invalidateOnFileChange(dependency);\n }\n }\n\n asset.setCode(result.code);\n\n if (result.sourceMap) {\n const map = new SourceMap(options.projectRoot);\n map.addVLQMap(result.sourceMap);\n asset.setMap(map);\n } else {\n asset.setMap(null);\n }\n\n if (!result.cssText) {\n return [asset];\n }\n\n const cssKey = `${asset.id}::wyw-in-js.css`;\n\n asset.addDependency({\n specifier: cssKey,\n specifierType: 'esm',\n });\n\n return [\n asset,\n {\n type: 'css',\n content: `${result.cssText}\\n`,\n env: asset.env,\n sideEffects: true,\n uniqueKey: cssKey,\n },\n ];\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@wyw-in-js/parcel-transformer",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"dependencies": {
|
|
5
|
+
"@parcel/plugin": "^2.16.3",
|
|
6
|
+
"@parcel/source-map": "^2.1.1",
|
|
7
|
+
"@wyw-in-js/shared": "workspace:*",
|
|
8
|
+
"@wyw-in-js/transform": "workspace:*"
|
|
9
|
+
},
|
|
10
|
+
"devDependencies": {
|
|
11
|
+
"@types/node": "^16.18.55",
|
|
12
|
+
"@wyw-in-js/babel-config": "workspace:*",
|
|
13
|
+
"@wyw-in-js/eslint-config": "workspace:*",
|
|
14
|
+
"@wyw-in-js/ts-config": "workspace:*"
|
|
15
|
+
},
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=16.0.0",
|
|
18
|
+
"parcel": "^2.0.0"
|
|
19
|
+
},
|
|
20
|
+
"exports": {
|
|
21
|
+
"import": "./esm/index.mjs",
|
|
22
|
+
"require": "./lib/index.js",
|
|
23
|
+
"types": "./types/index.d.ts"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"esm/",
|
|
27
|
+
"lib/",
|
|
28
|
+
"types/"
|
|
29
|
+
],
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"main": "lib/index.js",
|
|
32
|
+
"module": "esm/index.mjs",
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"parcel": ">=2.0.0"
|
|
35
|
+
},
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public"
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"build:esm": "babel src --out-dir esm --out-file-extension .mjs --extensions '.js,.jsx,.ts,.tsx' --source-maps --delete-dir-on-start",
|
|
41
|
+
"build:lib": "cross-env NODE_ENV=legacy babel src --out-dir lib --extensions '.js,.jsx,.ts,.tsx' --source-maps --delete-dir-on-start",
|
|
42
|
+
"build:types": "tsc --project ./tsconfig.lib.json --baseUrl . --rootDir ./src",
|
|
43
|
+
"lint": "eslint --ext .js,.ts ."
|
|
44
|
+
},
|
|
45
|
+
"types": "types/index.d.ts"
|
|
46
|
+
}
|
package/types/index.d.ts
ADDED
package/types/index.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const plugin_1 = require("@parcel/plugin");
|
|
7
|
+
const source_map_1 = __importDefault(require("@parcel/source-map"));
|
|
8
|
+
const shared_1 = require("@wyw-in-js/shared");
|
|
9
|
+
const transform_1 = require("@wyw-in-js/transform");
|
|
10
|
+
const cache = new transform_1.TransformCacheCollection();
|
|
11
|
+
exports.default = new plugin_1.Transformer({
|
|
12
|
+
async transform({ asset, logger, options, resolve }) {
|
|
13
|
+
if (!asset.isSource) {
|
|
14
|
+
return [asset];
|
|
15
|
+
}
|
|
16
|
+
const originalCode = await asset.getCode();
|
|
17
|
+
const originalMap = await asset.getMap();
|
|
18
|
+
const originalVlqMap = originalMap?.toVLQ();
|
|
19
|
+
const inputSourceMap = originalVlqMap
|
|
20
|
+
? {
|
|
21
|
+
...originalVlqMap,
|
|
22
|
+
version: originalVlqMap.version ?? 3,
|
|
23
|
+
sources: [...originalVlqMap.sources],
|
|
24
|
+
names: [...originalVlqMap.names],
|
|
25
|
+
sourcesContent: undefined,
|
|
26
|
+
file: originalVlqMap.file ?? asset.filePath,
|
|
27
|
+
}
|
|
28
|
+
: undefined;
|
|
29
|
+
const result = await (0, transform_1.transform)({
|
|
30
|
+
cache,
|
|
31
|
+
emitWarning: (message) => {
|
|
32
|
+
logger.warn({ message, origin: '@wyw-in-js/parcel-transformer' });
|
|
33
|
+
},
|
|
34
|
+
options: {
|
|
35
|
+
filename: asset.filePath,
|
|
36
|
+
inputSourceMap,
|
|
37
|
+
root: options.projectRoot,
|
|
38
|
+
},
|
|
39
|
+
}, originalCode, async (what, importer, stack) => {
|
|
40
|
+
try {
|
|
41
|
+
return await resolve(importer, what, { specifierType: 'esm' });
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
try {
|
|
45
|
+
return await (0, shared_1.asyncResolveFallback)(what, importer, stack);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
if (result.dependencies) {
|
|
53
|
+
for (const dependency of result.dependencies) {
|
|
54
|
+
asset.invalidateOnFileChange(dependency);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
asset.setCode(result.code);
|
|
58
|
+
if (result.sourceMap) {
|
|
59
|
+
const map = new source_map_1.default(options.projectRoot);
|
|
60
|
+
map.addVLQMap(result.sourceMap);
|
|
61
|
+
asset.setMap(map);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
asset.setMap(null);
|
|
65
|
+
}
|
|
66
|
+
if (!result.cssText) {
|
|
67
|
+
return [asset];
|
|
68
|
+
}
|
|
69
|
+
const cssKey = `${asset.id}::wyw-in-js.css`;
|
|
70
|
+
asset.addDependency({
|
|
71
|
+
specifier: cssKey,
|
|
72
|
+
specifierType: 'esm',
|
|
73
|
+
});
|
|
74
|
+
return [
|
|
75
|
+
asset,
|
|
76
|
+
{
|
|
77
|
+
type: 'css',
|
|
78
|
+
content: `${result.cssText}\n`,
|
|
79
|
+
env: asset.env,
|
|
80
|
+
sideEffects: true,
|
|
81
|
+
uniqueKey: cssKey,
|
|
82
|
+
},
|
|
83
|
+
];
|
|
84
|
+
},
|
|
85
|
+
});
|