@compiled/parcel-transformer 0.13.4 → 0.14.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/index.js +6 -17
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +5 -1
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +25 -0
- package/dist/utils.js.map +1 -0
- package/package.json +2 -2
- package/src/__tests__/transformer.parceltest.ts +26 -9
- package/src/index.ts +2 -18
- package/src/types.ts +6 -1
- package/src/utils.ts +26 -0
package/dist/index.js
CHANGED
|
@@ -3,14 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const fs_1 = __importDefault(require("fs"));
|
|
7
6
|
const path_1 = require("path");
|
|
8
7
|
const core_1 = require("@babel/core");
|
|
9
8
|
const generator_1 = __importDefault(require("@babel/generator"));
|
|
10
9
|
const utils_1 = require("@compiled/utils");
|
|
11
10
|
const plugin_1 = require("@parcel/plugin");
|
|
12
11
|
const source_map_1 = __importDefault(require("@parcel/source-map"));
|
|
13
|
-
const
|
|
12
|
+
const utils_2 = require("./utils");
|
|
14
13
|
const configFiles = [
|
|
15
14
|
'.compiledcssrc',
|
|
16
15
|
'.compiledcssrc.json',
|
|
@@ -87,7 +86,7 @@ exports.default = new plugin_1.Transformer({
|
|
|
87
86
|
};
|
|
88
87
|
},
|
|
89
88
|
async transform({ asset, config, options }) {
|
|
90
|
-
var _a, _b, _c, _d, _e
|
|
89
|
+
var _a, _b, _c, _d, _e;
|
|
91
90
|
const distStyleRules = [];
|
|
92
91
|
let someCode = await asset.getCode();
|
|
93
92
|
for (const match of someCode.matchAll(/(import ['"](?<importSpec>.+\.compiled\.css)['"];)|(require\(['"](?<requireSpec>.+\.compiled\.css)['"]\);)/g)) {
|
|
@@ -115,11 +114,6 @@ exports.default = new plugin_1.Transformer({
|
|
|
115
114
|
const extract = config.extract && options.mode !== 'development';
|
|
116
115
|
const includedFiles = [];
|
|
117
116
|
const code = asset.isASTDirty() ? undefined : await asset.getCode();
|
|
118
|
-
const resolver = enhanced_resolve_1.ResolverFactory.createResolver(Object.assign(Object.assign(Object.assign({ fileSystem: new enhanced_resolve_1.CachedInputFileSystem(fs_1.default, 4000) }, (config.extensions && {
|
|
119
|
-
extensions: config.extensions,
|
|
120
|
-
})), ((_c = config.resolve) !== null && _c !== void 0 ? _c : {})), {
|
|
121
|
-
// This makes the resolver invoke the callback synchronously
|
|
122
|
-
useSyncFileSystemCalls: true }));
|
|
123
117
|
const result = await (0, core_1.transformFromAstAsync)(ast.program, code, {
|
|
124
118
|
code: true,
|
|
125
119
|
ast: false,
|
|
@@ -128,18 +122,13 @@ exports.default = new plugin_1.Transformer({
|
|
|
128
122
|
configFile: false,
|
|
129
123
|
sourceMaps: true,
|
|
130
124
|
parserOpts: {
|
|
131
|
-
plugins: (
|
|
125
|
+
plugins: (_c = config.parserBabelPlugins) !== null && _c !== void 0 ? _c : undefined,
|
|
132
126
|
},
|
|
133
127
|
plugins: [
|
|
134
|
-
...((
|
|
128
|
+
...((_d = config.transformerBabelPlugins) !== null && _d !== void 0 ? _d : []),
|
|
135
129
|
asset.isSource && [
|
|
136
130
|
'@compiled/babel-plugin',
|
|
137
|
-
Object.assign(Object.assign({}, config), { classNameCompressionMap: config.extract && config.classNameCompressionMap, onIncludedFiles: (files) => includedFiles.push(...files), resolver:
|
|
138
|
-
// The resolver needs to be synchronous, as babel plugins must be synchronous
|
|
139
|
-
resolveSync: (context, request) => {
|
|
140
|
-
return resolver.resolveSync({}, (0, path_1.dirname)(context), request);
|
|
141
|
-
},
|
|
142
|
-
}, cache: false }),
|
|
131
|
+
Object.assign(Object.assign({}, config), { classNameCompressionMap: config.extract && config.classNameCompressionMap, onIncludedFiles: (files) => includedFiles.push(...files), resolver: config.resolver ? config.resolver : (0, utils_2.createDefaultResolver)(config), cache: false }),
|
|
143
132
|
],
|
|
144
133
|
extract && [
|
|
145
134
|
'@compiled/babel-plugin-strip-runtime',
|
|
@@ -164,7 +153,7 @@ exports.default = new plugin_1.Transformer({
|
|
|
164
153
|
if (extract) {
|
|
165
154
|
// Store styleRules to asset.meta to be used by @compiled/parcel-optimizer
|
|
166
155
|
const metadata = result === null || result === void 0 ? void 0 : result.metadata;
|
|
167
|
-
asset.meta.styleRules = [...((
|
|
156
|
+
asset.meta.styleRules = [...((_e = metadata.styleRules) !== null && _e !== void 0 ? _e : []), ...distStyleRules];
|
|
168
157
|
}
|
|
169
158
|
return [asset];
|
|
170
159
|
},
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -24,9 +24,13 @@ export interface ParcelTransformerOpts extends BabelPluginOpts {
|
|
|
24
24
|
*/
|
|
25
25
|
optimizeCss?: boolean;
|
|
26
26
|
/**
|
|
27
|
-
* Override the default `resolve` used by @compiled/babel-plugin, which is used to statically evaluate import declarations
|
|
27
|
+
* @deprecated Override the default `resolve` used by @compiled/babel-plugin, which is used to statically evaluate import declarations
|
|
28
28
|
*/
|
|
29
29
|
resolve?: ResolveOptions;
|
|
30
|
+
/**
|
|
31
|
+
* Override the default @compiled/babel-plugin resolver, by providing a module path that exports a custom resolver
|
|
32
|
+
*/
|
|
33
|
+
resolver?: string;
|
|
30
34
|
/**
|
|
31
35
|
* Add the component name as class name to DOM in non-production environment if styled is used
|
|
32
36
|
*
|
package/dist/utils.d.ts
ADDED
package/dist/utils.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
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
|
+
exports.createDefaultResolver = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = require("path");
|
|
9
|
+
const enhanced_resolve_1 = require("enhanced-resolve");
|
|
10
|
+
function createDefaultResolver(config) {
|
|
11
|
+
var _a;
|
|
12
|
+
const resolver = enhanced_resolve_1.ResolverFactory.createResolver(Object.assign(Object.assign(Object.assign({ fileSystem: new enhanced_resolve_1.CachedInputFileSystem(fs_1.default, 4000) }, (config.extensions && {
|
|
13
|
+
extensions: config.extensions,
|
|
14
|
+
})), ((_a = config.resolve) !== null && _a !== void 0 ? _a : {})), {
|
|
15
|
+
// This makes the resolver invoke the callback synchronously
|
|
16
|
+
useSyncFileSystemCalls: true }));
|
|
17
|
+
return {
|
|
18
|
+
// The resolver needs to be synchronous, as babel plugins must be synchronous
|
|
19
|
+
resolveSync(context, request) {
|
|
20
|
+
return resolver.resolveSync({}, (0, path_1.dirname)(context), request);
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
exports.createDefaultResolver = createDefaultResolver;
|
|
25
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,+BAA+B;AAG/B,uDAA0E;AAI1E,SAAgB,qBAAqB,CAAC,MAA6B;;IACjE,MAAM,QAAQ,GAAG,kCAAe,CAAC,cAAc,6CAC7C,UAAU,EAAE,IAAI,wCAAqB,CAAC,YAAE,EAAE,IAAI,CAAC,IAC5C,CAAC,MAAM,CAAC,UAAU,IAAI;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC,GACC,CAAC,MAAA,MAAM,CAAC,OAAO,mCAAI,EAAE,CAAC;QACzB,4DAA4D;QAC5D,sBAAsB,EAAE,IAAI,IAC5B,CAAC;IAEH,OAAO;QACL,6EAA6E;QAC7E,WAAW,CAAC,OAAe,EAAE,OAAe;YAC1C,OAAO,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,IAAA,cAAO,EAAC,OAAO,CAAC,EAAE,OAAO,CAAW,CAAC;QACvE,CAAC;KACF,CAAC;AACJ,CAAC;AAjBD,sDAiBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@compiled/parcel-transformer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "A familiar and performant compile time CSS-in-JS library for React.",
|
|
5
5
|
"homepage": "https://compiledcssinjs.com/docs/pkg-parcel-transformer",
|
|
6
6
|
"bugs": "https://github.com/atlassian-labs/compiled/issues/new?assignees=&labels=bug&template=bug_report.md",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@babel/core": "^7.21.8",
|
|
24
24
|
"@babel/generator": "^7.21.5",
|
|
25
|
-
"@compiled/babel-plugin": "^0.
|
|
25
|
+
"@compiled/babel-plugin": "^0.24.0",
|
|
26
26
|
"@compiled/babel-plugin-strip-runtime": "^0.23.0",
|
|
27
27
|
"@compiled/utils": "^0.8.0",
|
|
28
28
|
"@parcel/plugin": "^2.8.3",
|
|
@@ -6,15 +6,6 @@ import { format } from 'prettier';
|
|
|
6
6
|
|
|
7
7
|
const rootPath = join(__dirname, '..', '..', '..', '..');
|
|
8
8
|
const fixtureRoot = join(rootPath, 'fixtures/parcel-transformer-test-app');
|
|
9
|
-
const extractionFixtureRoot = join(rootPath, 'fixtures/parcel-transformer-test-extract-app');
|
|
10
|
-
const compressingClassNameFixtureRoot = join(
|
|
11
|
-
rootPath,
|
|
12
|
-
'fixtures/parcel-transformer-test-compress-class-name-app'
|
|
13
|
-
);
|
|
14
|
-
const customResolverFixtureRoot = join(
|
|
15
|
-
rootPath,
|
|
16
|
-
'fixtures/parcel-transformer-test-custom-resolver-app'
|
|
17
|
-
);
|
|
18
9
|
const babelComponentFixture = join(rootPath, 'fixtures/babel-component');
|
|
19
10
|
|
|
20
11
|
const workerFarm = createWorkerFarm();
|
|
@@ -79,7 +70,28 @@ it('transforms assets with babel plugin', async () => {
|
|
|
79
70
|
`);
|
|
80
71
|
}, 50000);
|
|
81
72
|
|
|
73
|
+
it('transforms assets with custom resolve and statically evaluates imports', async () => {
|
|
74
|
+
const customResolveFixtureRoot = join(
|
|
75
|
+
rootPath,
|
|
76
|
+
'fixtures/parcel-transformer-test-custom-resolve-app'
|
|
77
|
+
);
|
|
78
|
+
const parcel = getParcelInstance(customResolveFixtureRoot);
|
|
79
|
+
const { changedAssets } = await parcel.run();
|
|
80
|
+
|
|
81
|
+
const asset = Array.from(changedAssets.values()).find(
|
|
82
|
+
(asset) => asset.filePath === join(customResolveFixtureRoot, 'src/index.jsx')
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
const code = await asset?.getCode();
|
|
86
|
+
|
|
87
|
+
expect(code).toInclude('color:red');
|
|
88
|
+
}, 50000);
|
|
89
|
+
|
|
82
90
|
it('transforms assets with custom resolver and statically evaluates imports', async () => {
|
|
91
|
+
const customResolverFixtureRoot = join(
|
|
92
|
+
rootPath,
|
|
93
|
+
'fixtures/parcel-transformer-test-custom-resolver-app'
|
|
94
|
+
);
|
|
83
95
|
const parcel = getParcelInstance(customResolverFixtureRoot);
|
|
84
96
|
const { changedAssets } = await parcel.run();
|
|
85
97
|
|
|
@@ -93,6 +105,7 @@ it('transforms assets with custom resolver and statically evaluates imports', as
|
|
|
93
105
|
}, 50000);
|
|
94
106
|
|
|
95
107
|
it('transforms assets with compiled and extraction babel plugins', async () => {
|
|
108
|
+
const extractionFixtureRoot = join(rootPath, 'fixtures/parcel-transformer-test-extract-app');
|
|
96
109
|
const parcel = getParcelInstance(extractionFixtureRoot);
|
|
97
110
|
const { changedAssets, bundleGraph } = await parcel.run();
|
|
98
111
|
const assets = Array.from(changedAssets.values());
|
|
@@ -216,6 +229,10 @@ it('transforms assets with compiled and extraction babel plugins', async () => {
|
|
|
216
229
|
}, 50000);
|
|
217
230
|
|
|
218
231
|
it('transforms assets with class name compression enabled', async () => {
|
|
232
|
+
const compressingClassNameFixtureRoot = join(
|
|
233
|
+
rootPath,
|
|
234
|
+
'fixtures/parcel-transformer-test-compress-class-name-app'
|
|
235
|
+
);
|
|
219
236
|
const parcel = getParcelInstance(compressingClassNameFixtureRoot);
|
|
220
237
|
const { changedAssets, bundleGraph } = await parcel.run();
|
|
221
238
|
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
1
|
import { join, dirname, isAbsolute } from 'path';
|
|
3
2
|
|
|
4
3
|
import { parseAsync, transformFromAstAsync } from '@babel/core';
|
|
@@ -11,9 +10,9 @@ import type {
|
|
|
11
10
|
import { toBoolean } from '@compiled/utils';
|
|
12
11
|
import { Transformer } from '@parcel/plugin';
|
|
13
12
|
import SourceMap from '@parcel/source-map';
|
|
14
|
-
import { CachedInputFileSystem, ResolverFactory } from 'enhanced-resolve';
|
|
15
13
|
|
|
16
14
|
import type { ParcelTransformerOpts } from './types';
|
|
15
|
+
import { createDefaultResolver } from './utils';
|
|
17
16
|
|
|
18
17
|
const configFiles = [
|
|
19
18
|
'.compiledcssrc',
|
|
@@ -146,16 +145,6 @@ export default new Transformer<ParcelTransformerOpts>({
|
|
|
146
145
|
const includedFiles: string[] = [];
|
|
147
146
|
const code = asset.isASTDirty() ? undefined : await asset.getCode();
|
|
148
147
|
|
|
149
|
-
const resolver = ResolverFactory.createResolver({
|
|
150
|
-
fileSystem: new CachedInputFileSystem(fs, 4000),
|
|
151
|
-
...(config.extensions && {
|
|
152
|
-
extensions: config.extensions,
|
|
153
|
-
}),
|
|
154
|
-
...(config.resolve ?? {}),
|
|
155
|
-
// This makes the resolver invoke the callback synchronously
|
|
156
|
-
useSyncFileSystemCalls: true,
|
|
157
|
-
});
|
|
158
|
-
|
|
159
148
|
const result = await transformFromAstAsync(ast.program, code, {
|
|
160
149
|
code: true,
|
|
161
150
|
ast: false,
|
|
@@ -174,12 +163,7 @@ export default new Transformer<ParcelTransformerOpts>({
|
|
|
174
163
|
...config,
|
|
175
164
|
classNameCompressionMap: config.extract && config.classNameCompressionMap,
|
|
176
165
|
onIncludedFiles: (files: string[]) => includedFiles.push(...files),
|
|
177
|
-
resolver:
|
|
178
|
-
// The resolver needs to be synchronous, as babel plugins must be synchronous
|
|
179
|
-
resolveSync: (context: string, request: string) => {
|
|
180
|
-
return resolver.resolveSync({}, dirname(context), request);
|
|
181
|
-
},
|
|
182
|
-
},
|
|
166
|
+
resolver: config.resolver ? config.resolver : createDefaultResolver(config),
|
|
183
167
|
cache: false,
|
|
184
168
|
} as BabelPluginOptions,
|
|
185
169
|
],
|
package/src/types.ts
CHANGED
|
@@ -30,10 +30,15 @@ export interface ParcelTransformerOpts extends BabelPluginOpts {
|
|
|
30
30
|
optimizeCss?: boolean;
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
|
-
* Override the default `resolve` used by @compiled/babel-plugin, which is used to statically evaluate import declarations
|
|
33
|
+
* @deprecated Override the default `resolve` used by @compiled/babel-plugin, which is used to statically evaluate import declarations
|
|
34
34
|
*/
|
|
35
35
|
resolve?: ResolveOptions;
|
|
36
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Override the default @compiled/babel-plugin resolver, by providing a module path that exports a custom resolver
|
|
39
|
+
*/
|
|
40
|
+
resolver?: string;
|
|
41
|
+
|
|
37
42
|
/**
|
|
38
43
|
* Add the component name as class name to DOM in non-production environment if styled is used
|
|
39
44
|
*
|
package/src/utils.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import { dirname } from 'path';
|
|
3
|
+
|
|
4
|
+
import type { Resolver } from '@compiled/babel-plugin';
|
|
5
|
+
import { CachedInputFileSystem, ResolverFactory } from 'enhanced-resolve';
|
|
6
|
+
|
|
7
|
+
import type { ParcelTransformerOpts } from './types';
|
|
8
|
+
|
|
9
|
+
export function createDefaultResolver(config: ParcelTransformerOpts): Resolver {
|
|
10
|
+
const resolver = ResolverFactory.createResolver({
|
|
11
|
+
fileSystem: new CachedInputFileSystem(fs, 4000),
|
|
12
|
+
...(config.extensions && {
|
|
13
|
+
extensions: config.extensions,
|
|
14
|
+
}),
|
|
15
|
+
...(config.resolve ?? {}),
|
|
16
|
+
// This makes the resolver invoke the callback synchronously
|
|
17
|
+
useSyncFileSystemCalls: true,
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
// The resolver needs to be synchronous, as babel plugins must be synchronous
|
|
22
|
+
resolveSync(context: string, request: string) {
|
|
23
|
+
return resolver.resolveSync({}, dirname(context), request) as string;
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|