@compiled/parcel-transformer 0.9.0 → 0.10.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.d.ts +1 -1
- package/dist/index.js +23 -5
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +12 -1
- package/package.json +4 -3
- package/src/__tests__/transformer.parceltest.ts +28 -11
- package/src/index.ts +25 -1
- package/src/types.ts +14 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Transformer } from '@parcel/plugin';
|
|
2
2
|
import type { ParcelTransformerOpts } from './types';
|
|
3
|
-
declare const _default: Transformer<ParcelTransformerOpts>;
|
|
4
3
|
/**
|
|
5
4
|
* Compiled parcel transformer.
|
|
6
5
|
*/
|
|
6
|
+
declare const _default: Transformer<ParcelTransformerOpts>;
|
|
7
7
|
export default _default;
|
package/dist/index.js
CHANGED
|
@@ -3,12 +3,14 @@ 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"));
|
|
6
7
|
const path_1 = require("path");
|
|
7
8
|
const core_1 = require("@babel/core");
|
|
8
9
|
const generator_1 = __importDefault(require("@babel/generator"));
|
|
9
10
|
const utils_1 = require("@compiled/utils");
|
|
10
11
|
const plugin_1 = require("@parcel/plugin");
|
|
11
12
|
const source_map_1 = __importDefault(require("@parcel/source-map"));
|
|
13
|
+
const enhanced_resolve_1 = require("enhanced-resolve");
|
|
12
14
|
const configFiles = [
|
|
13
15
|
'.compiledcssrc',
|
|
14
16
|
'.compiledcssrc.json',
|
|
@@ -39,7 +41,7 @@ exports.default = new plugin_1.Transformer({
|
|
|
39
41
|
return false;
|
|
40
42
|
},
|
|
41
43
|
async parse({ asset, config }) {
|
|
42
|
-
var _a;
|
|
44
|
+
var _a, _b;
|
|
43
45
|
if (!asset.isSource && !config.extract) {
|
|
44
46
|
// Only parse source (pre-built code should already have been baked) or if stylesheet extraction is enabled
|
|
45
47
|
return undefined;
|
|
@@ -54,7 +56,10 @@ exports.default = new plugin_1.Transformer({
|
|
|
54
56
|
filename: asset.filePath,
|
|
55
57
|
caller: { name: 'compiled' },
|
|
56
58
|
rootMode: 'upward-optional',
|
|
57
|
-
|
|
59
|
+
parserOpts: {
|
|
60
|
+
plugins: (_a = config.parserBabelPlugins) !== null && _a !== void 0 ? _a : undefined,
|
|
61
|
+
},
|
|
62
|
+
plugins: (_b = config.transformerBabelPlugins) !== null && _b !== void 0 ? _b : undefined,
|
|
58
63
|
});
|
|
59
64
|
return {
|
|
60
65
|
type: 'babel',
|
|
@@ -63,7 +68,7 @@ exports.default = new plugin_1.Transformer({
|
|
|
63
68
|
};
|
|
64
69
|
},
|
|
65
70
|
async transform({ asset, config }) {
|
|
66
|
-
var _a;
|
|
71
|
+
var _a, _b, _c;
|
|
67
72
|
const ast = await asset.getAST();
|
|
68
73
|
if (!ast) {
|
|
69
74
|
// We will only receive ASTs for assets we're interested in.
|
|
@@ -72,6 +77,11 @@ exports.default = new plugin_1.Transformer({
|
|
|
72
77
|
}
|
|
73
78
|
const includedFiles = [];
|
|
74
79
|
const code = asset.isASTDirty() ? undefined : await asset.getCode();
|
|
80
|
+
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 && {
|
|
81
|
+
extensions: config.extensions,
|
|
82
|
+
})), ((_a = config.resolve) !== null && _a !== void 0 ? _a : {})), {
|
|
83
|
+
// This makes the resolver invoke the callback synchronously
|
|
84
|
+
useSyncFileSystemCalls: true }));
|
|
75
85
|
const result = await (0, core_1.transformFromAstAsync)(ast.program, code, {
|
|
76
86
|
code: true,
|
|
77
87
|
ast: false,
|
|
@@ -79,11 +89,19 @@ exports.default = new plugin_1.Transformer({
|
|
|
79
89
|
babelrc: false,
|
|
80
90
|
configFile: false,
|
|
81
91
|
sourceMaps: true,
|
|
92
|
+
parserOpts: {
|
|
93
|
+
plugins: (_b = config.parserBabelPlugins) !== null && _b !== void 0 ? _b : undefined,
|
|
94
|
+
},
|
|
82
95
|
plugins: [
|
|
83
|
-
...((
|
|
96
|
+
...((_c = config.transformerBabelPlugins) !== null && _c !== void 0 ? _c : []),
|
|
84
97
|
asset.isSource && [
|
|
85
98
|
'@compiled/babel-plugin',
|
|
86
|
-
Object.assign(Object.assign({}, config), { onIncludedFiles: (files) => includedFiles.push(...files),
|
|
99
|
+
Object.assign(Object.assign({}, config), { onIncludedFiles: (files) => includedFiles.push(...files), resolver: {
|
|
100
|
+
// The resolver needs to be synchronous, as babel plugins must be synchronous
|
|
101
|
+
resolveSync: (context, request) => {
|
|
102
|
+
return resolver.resolveSync({}, (0, path_1.dirname)(context), request);
|
|
103
|
+
},
|
|
104
|
+
}, cache: false }),
|
|
87
105
|
],
|
|
88
106
|
config.extract && [
|
|
89
107
|
'@compiled/babel-plugin-strip-runtime',
|
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
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { PluginItem } from '@babel/core';
|
|
2
2
|
import type { PluginOptions } from '@compiled/babel-plugin';
|
|
3
|
-
|
|
3
|
+
import type { ResolveOptions } from 'enhanced-resolve';
|
|
4
|
+
declare type BabelPluginOpts = Omit<PluginOptions, 'cache' | 'onIncludedFiles' | 'resolver'>;
|
|
4
5
|
export interface ParcelTransformerOpts extends BabelPluginOpts {
|
|
5
6
|
extract?: boolean;
|
|
6
7
|
stylesheetPath?: string;
|
|
@@ -15,5 +16,15 @@ export interface ParcelTransformerOpts extends BabelPluginOpts {
|
|
|
15
16
|
* Defaults to `false`.
|
|
16
17
|
*/
|
|
17
18
|
ssr?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Will run additional cssnano plugins to normalize CSS during build.
|
|
21
|
+
*
|
|
22
|
+
* Default to `true`.
|
|
23
|
+
*/
|
|
24
|
+
optimizeCss?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Override the default `resolve` used by @compiled/babel-plugin, which is used to statically evaluate import declarations
|
|
27
|
+
*/
|
|
28
|
+
resolve?: ResolveOptions;
|
|
18
29
|
}
|
|
19
30
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@compiled/parcel-transformer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.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,11 +22,12 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@babel/core": "^7.17.10",
|
|
24
24
|
"@babel/generator": "^7.17.10",
|
|
25
|
-
"@compiled/babel-plugin": "^0.16.
|
|
25
|
+
"@compiled/babel-plugin": "^0.16.5",
|
|
26
26
|
"@compiled/babel-plugin-strip-runtime": "^0.16.0",
|
|
27
27
|
"@compiled/utils": "^0.6.16",
|
|
28
28
|
"@parcel/plugin": "^2.3.2",
|
|
29
|
-
"@parcel/source-map": "^2.0.2"
|
|
29
|
+
"@parcel/source-map": "^2.0.2",
|
|
30
|
+
"enhanced-resolve": "^5.10.0"
|
|
30
31
|
},
|
|
31
32
|
"devDependencies": {
|
|
32
33
|
"@parcel/core": "^2.3.1",
|
|
@@ -6,6 +6,10 @@ import { MemoryFS } from '@parcel/fs';
|
|
|
6
6
|
const rootPath = join(__dirname, '..', '..', '..', '..');
|
|
7
7
|
const fixtureRoot = join(rootPath, 'fixtures/parcel-transformer-test-app');
|
|
8
8
|
const extractionFixtureRoot = join(rootPath, 'fixtures/parcel-transformer-test-extract-app');
|
|
9
|
+
const customResolverFixtureRoot = join(
|
|
10
|
+
rootPath,
|
|
11
|
+
'fixtures/parcel-transformer-test-custom-resolver-app'
|
|
12
|
+
);
|
|
9
13
|
const babelComponentFixture = join(rootPath, 'fixtures/babel-component');
|
|
10
14
|
|
|
11
15
|
const workerFarm = createWorkerFarm();
|
|
@@ -68,6 +72,19 @@ it('transforms assets with babel plugin', async () => {
|
|
|
68
72
|
`);
|
|
69
73
|
}, 50000);
|
|
70
74
|
|
|
75
|
+
it('transforms assets with custom resolver and statically evaluates imports', async () => {
|
|
76
|
+
const parcel = getParcelInstance(customResolverFixtureRoot);
|
|
77
|
+
const { changedAssets } = await parcel.run();
|
|
78
|
+
|
|
79
|
+
const asset = Array.from(changedAssets.values()).find(
|
|
80
|
+
(asset) => asset.filePath === join(customResolverFixtureRoot, 'src/index.jsx')
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
const code = await asset?.getCode();
|
|
84
|
+
|
|
85
|
+
expect(code).toInclude('color:red');
|
|
86
|
+
}, 50000);
|
|
87
|
+
|
|
71
88
|
it('transforms assets with compiled and extraction babel plugins', async () => {
|
|
72
89
|
const parcel = getParcelInstance(extractionFixtureRoot);
|
|
73
90
|
const { changedAssets } = await parcel.run();
|
|
@@ -121,10 +138,10 @@ it('transforms assets with compiled and extraction babel plugins', async () => {
|
|
|
121
138
|
expect(extractedCss).toMatchInlineSnapshot(`
|
|
122
139
|
"/* index.jsx generated by @compiled/babel-plugin v0.0.0 */ \\"use strict\\";
|
|
123
140
|
require(\\"compiled-css!?style=._19pk1ul9%7Bmargin-top%3A30px%7D\\");
|
|
124
|
-
require(\\"compiled-css!?style=.
|
|
125
|
-
require(\\"compiled-css!?style=.
|
|
126
|
-
require(\\"compiled-css!?style=.
|
|
127
|
-
require(\\"compiled-css!?style=.
|
|
141
|
+
require(\\"compiled-css!?style=._19bv1vi7%7Bpadding-left%3A32px%7D\\");
|
|
142
|
+
require(\\"compiled-css!?style=._n3td1vi7%7Bpadding-bottom%3A32px%7D\\");
|
|
143
|
+
require(\\"compiled-css!?style=._u5f31vi7%7Bpadding-right%3A32px%7D\\");
|
|
144
|
+
require(\\"compiled-css!?style=._ca0q1vi7%7Bpadding-top%3A32px%7D\\");
|
|
128
145
|
require(\\"compiled-css!?style=._19itlf8h%7Bborder%3A2px%20solid%20blue%7D\\");
|
|
129
146
|
require(\\"compiled-css!?style=._1wyb1ul9%7Bfont-size%3A30px%7D\\");
|
|
130
147
|
require(\\"compiled-css!?style=._syaz13q2%7Bcolor%3Ablue%7D\\");
|
|
@@ -137,16 +154,16 @@ it('transforms assets with compiled and extraction babel plugins', async () => {
|
|
|
137
154
|
?.slice(babelComponentCode.indexOf('var Button'))
|
|
138
155
|
.trim();
|
|
139
156
|
expect(extractedComponent).toMatchInlineSnapshot(`
|
|
140
|
-
"var Button = (0, _react.forwardRef)(function(_ref,
|
|
141
|
-
var _ref$as = _ref.as, C = _ref$as === void 0 ? \\"button\\" : _ref$as,
|
|
157
|
+
"var Button = (0, _react.forwardRef)(function(_ref, __cmplr) {
|
|
158
|
+
var _ref$as = _ref.as, C = _ref$as === void 0 ? \\"button\\" : _ref$as, __cmpls = _ref.style, __cmplp = _objectWithoutProperties(_ref, _excluded);
|
|
142
159
|
return (0, _jsxRuntime.jsx)(C, _objectSpread(_objectSpread({
|
|
143
|
-
},
|
|
160
|
+
}, __cmplp), {
|
|
144
161
|
}, {
|
|
145
|
-
style:
|
|
146
|
-
ref:
|
|
162
|
+
style: __cmpls,
|
|
163
|
+
ref: __cmplr,
|
|
147
164
|
className: (0, _runtime.ax)([
|
|
148
|
-
\\"_syaz13q2 _1wyb1ul9 _19itlf8h
|
|
149
|
-
|
|
165
|
+
\\"_syaz13q2 _1wyb1ul9 _19itlf8h _ca0q1vi7 _u5f31vi7 _n3td1vi7 _19bv1vi7\\",
|
|
166
|
+
__cmplp.className
|
|
150
167
|
])
|
|
151
168
|
}));
|
|
152
169
|
});
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import { join, dirname } from 'path';
|
|
2
3
|
|
|
3
4
|
import { parseAsync, transformFromAstAsync } from '@babel/core';
|
|
4
5
|
import generate from '@babel/generator';
|
|
@@ -7,6 +8,7 @@ import type { PluginOptions as BabelStripRuntimePluginOptions } from '@compiled/
|
|
|
7
8
|
import { toBoolean } from '@compiled/utils';
|
|
8
9
|
import { Transformer } from '@parcel/plugin';
|
|
9
10
|
import SourceMap from '@parcel/source-map';
|
|
11
|
+
import { CachedInputFileSystem, ResolverFactory } from 'enhanced-resolve';
|
|
10
12
|
|
|
11
13
|
import type { ParcelTransformerOpts } from './types';
|
|
12
14
|
|
|
@@ -62,6 +64,9 @@ export default new Transformer<ParcelTransformerOpts>({
|
|
|
62
64
|
filename: asset.filePath,
|
|
63
65
|
caller: { name: 'compiled' },
|
|
64
66
|
rootMode: 'upward-optional',
|
|
67
|
+
parserOpts: {
|
|
68
|
+
plugins: config.parserBabelPlugins ?? undefined,
|
|
69
|
+
},
|
|
65
70
|
plugins: config.transformerBabelPlugins ?? undefined,
|
|
66
71
|
});
|
|
67
72
|
|
|
@@ -83,6 +88,16 @@ export default new Transformer<ParcelTransformerOpts>({
|
|
|
83
88
|
const includedFiles: string[] = [];
|
|
84
89
|
const code = asset.isASTDirty() ? undefined : await asset.getCode();
|
|
85
90
|
|
|
91
|
+
const resolver = ResolverFactory.createResolver({
|
|
92
|
+
fileSystem: new CachedInputFileSystem(fs, 4000),
|
|
93
|
+
...(config.extensions && {
|
|
94
|
+
extensions: config.extensions,
|
|
95
|
+
}),
|
|
96
|
+
...(config.resolve ?? {}),
|
|
97
|
+
// This makes the resolver invoke the callback synchronously
|
|
98
|
+
useSyncFileSystemCalls: true,
|
|
99
|
+
});
|
|
100
|
+
|
|
86
101
|
const result = await transformFromAstAsync(ast.program, code, {
|
|
87
102
|
code: true,
|
|
88
103
|
ast: false,
|
|
@@ -90,6 +105,9 @@ export default new Transformer<ParcelTransformerOpts>({
|
|
|
90
105
|
babelrc: false,
|
|
91
106
|
configFile: false,
|
|
92
107
|
sourceMaps: true,
|
|
108
|
+
parserOpts: {
|
|
109
|
+
plugins: config.parserBabelPlugins ?? undefined,
|
|
110
|
+
},
|
|
93
111
|
plugins: [
|
|
94
112
|
...(config.transformerBabelPlugins ?? []),
|
|
95
113
|
asset.isSource && [
|
|
@@ -97,6 +115,12 @@ export default new Transformer<ParcelTransformerOpts>({
|
|
|
97
115
|
{
|
|
98
116
|
...config,
|
|
99
117
|
onIncludedFiles: (files: string[]) => includedFiles.push(...files),
|
|
118
|
+
resolver: {
|
|
119
|
+
// The resolver needs to be synchronous, as babel plugins must be synchronous
|
|
120
|
+
resolveSync: (context: string, request: string) => {
|
|
121
|
+
return resolver.resolveSync({}, dirname(context), request);
|
|
122
|
+
},
|
|
123
|
+
},
|
|
100
124
|
cache: false,
|
|
101
125
|
} as BabelPluginOptions,
|
|
102
126
|
],
|
package/src/types.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { PluginItem } from '@babel/core';
|
|
2
2
|
import type { PluginOptions } from '@compiled/babel-plugin';
|
|
3
|
+
import type { ResolveOptions } from 'enhanced-resolve';
|
|
3
4
|
|
|
4
|
-
type BabelPluginOpts = Omit<PluginOptions, 'cache' | 'onIncludedFiles'>;
|
|
5
|
+
type BabelPluginOpts = Omit<PluginOptions, 'cache' | 'onIncludedFiles' | 'resolver'>;
|
|
5
6
|
|
|
6
7
|
export interface ParcelTransformerOpts extends BabelPluginOpts {
|
|
7
8
|
extract?: boolean;
|
|
@@ -19,4 +20,16 @@ export interface ParcelTransformerOpts extends BabelPluginOpts {
|
|
|
19
20
|
* Defaults to `false`.
|
|
20
21
|
*/
|
|
21
22
|
ssr?: boolean;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Will run additional cssnano plugins to normalize CSS during build.
|
|
26
|
+
*
|
|
27
|
+
* Default to `true`.
|
|
28
|
+
*/
|
|
29
|
+
optimizeCss?: boolean;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Override the default `resolve` used by @compiled/babel-plugin, which is used to statically evaluate import declarations
|
|
33
|
+
*/
|
|
34
|
+
resolve?: ResolveOptions;
|
|
22
35
|
}
|