@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 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
@@ -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
+ }
@@ -0,0 +1,3 @@
1
+ import { Transformer } from '@parcel/plugin';
2
+ declare const _default: Transformer<unknown>;
3
+ export default _default;
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
+ });