@compiled/parcel-transformer 0.11.3 → 0.12.1
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 +4 -2
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/package.json +13 -13
- package/src/__tests__/transformer.parceltest.ts +23 -25
- package/src/index.ts +5 -1
- package/src/types.ts +8 -0
package/dist/index.js
CHANGED
|
@@ -31,7 +31,9 @@ exports.default = new plugin_1.Transformer({
|
|
|
31
31
|
ssr: false,
|
|
32
32
|
};
|
|
33
33
|
if (conf) {
|
|
34
|
-
|
|
34
|
+
if (conf.filePath.endsWith('.js')) {
|
|
35
|
+
config.invalidateOnStartup();
|
|
36
|
+
}
|
|
35
37
|
Object.assign(contents, conf.contents);
|
|
36
38
|
}
|
|
37
39
|
return contents;
|
|
@@ -100,7 +102,7 @@ exports.default = new plugin_1.Transformer({
|
|
|
100
102
|
...((_c = config.transformerBabelPlugins) !== null && _c !== void 0 ? _c : []),
|
|
101
103
|
asset.isSource && [
|
|
102
104
|
'@compiled/babel-plugin',
|
|
103
|
-
Object.assign(Object.assign({}, config), { onIncludedFiles: (files) => includedFiles.push(...files), resolver: {
|
|
105
|
+
Object.assign(Object.assign({}, config), { classNameCompressionMap: config.extract && config.classNameCompressionMap, onIncludedFiles: (files) => includedFiles.push(...files), resolver: {
|
|
104
106
|
// The resolver needs to be synchronous, as babel plugins must be synchronous
|
|
105
107
|
resolveSync: (context, request) => {
|
|
106
108
|
return resolver.resolveSync({}, (0, path_1.dirname)(context), request);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,+BAAqC;AAErC,sCAAgE;AAChE,iEAAwC;AAMxC,2CAA4C;AAC5C,2CAA6C;AAC7C,oEAA2C;AAC3C,uDAA0E;AAI1E,MAAM,WAAW,GAAG;IAClB,gBAAgB;IAChB,qBAAqB;IACrB,gBAAgB;IAChB,uBAAuB;CACxB,CAAC;AAEF;;GAEG;AACH,kBAAe,IAAI,oBAAW,CAAwB;IACpD,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;QAClC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,IAAA,WAAI,EAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE;YACvF,UAAU,EAAE,8BAA8B;SAC3C,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,IAAI;YACjB,GAAG,EAAE,KAAK;SACX,CAAC;QAEF,IAAI,IAAI,EAAE;YACR,MAAM,CAAC,mBAAmB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -32,5 +32,14 @@ export interface ParcelTransformerOpts extends BabelPluginOpts {
|
|
|
32
32
|
* Default to `false`
|
|
33
33
|
*/
|
|
34
34
|
addComponentName?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* A map holds the key-value pairs between full Atomic class names and the compressed ones
|
|
37
|
+
* i.e. { '_aaaabbbb': 'a' }
|
|
38
|
+
*
|
|
39
|
+
* Default to `undefined`
|
|
40
|
+
*/
|
|
41
|
+
classNameCompressionMap?: {
|
|
42
|
+
[index: string]: string;
|
|
43
|
+
};
|
|
35
44
|
}
|
|
36
45
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@compiled/parcel-transformer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.1",
|
|
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",
|
|
@@ -20,21 +20,21 @@
|
|
|
20
20
|
"src"
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@babel/core": "^7.
|
|
24
|
-
"@babel/generator": "^7.
|
|
25
|
-
"@compiled/babel-plugin": "^0.
|
|
26
|
-
"@compiled/babel-plugin-strip-runtime": "^0.
|
|
27
|
-
"@compiled/utils": "^0.
|
|
28
|
-
"@parcel/plugin": "^2.3
|
|
29
|
-
"@parcel/source-map": "^2.
|
|
23
|
+
"@babel/core": "^7.21.0",
|
|
24
|
+
"@babel/generator": "^7.21.1",
|
|
25
|
+
"@compiled/babel-plugin": "^0.18.1",
|
|
26
|
+
"@compiled/babel-plugin-strip-runtime": "^0.18.0",
|
|
27
|
+
"@compiled/utils": "^0.7.0",
|
|
28
|
+
"@parcel/plugin": "^2.8.3",
|
|
29
|
+
"@parcel/source-map": "^2.1.1",
|
|
30
30
|
"enhanced-resolve": "^5.12.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@parcel/core": "^2.3
|
|
34
|
-
"@parcel/fs": "^2.3
|
|
35
|
-
"@parcel/types": "^2.3
|
|
36
|
-
"@types/babel__core": "^7.
|
|
37
|
-
"prettier": "^2.8.
|
|
33
|
+
"@parcel/core": "^2.8.3",
|
|
34
|
+
"@parcel/fs": "^2.8.3",
|
|
35
|
+
"@parcel/types": "^2.8.3",
|
|
36
|
+
"@types/babel__core": "^7.20.0",
|
|
37
|
+
"prettier": "^2.8.4"
|
|
38
38
|
},
|
|
39
39
|
"engines": {
|
|
40
40
|
"parcel": "^2.0.0"
|
|
@@ -49,10 +49,10 @@ it('transforms assets with babel plugin', async () => {
|
|
|
49
49
|
code.indexOf('/* index.jsx generated by @compiled/babel-plugin v0.0.0 */')
|
|
50
50
|
);
|
|
51
51
|
expect(appCode).toMatchInlineSnapshot(`
|
|
52
|
-
"/* index.jsx generated by @compiled/babel-plugin v0.0.0 */ var _2 =
|
|
53
|
-
var _ =
|
|
52
|
+
"/* index.jsx generated by @compiled/babel-plugin v0.0.0 */ var _2 = "._syaz5scu{color:red}";
|
|
53
|
+
var _ = "._1wyb12am{font-size:50px}";
|
|
54
54
|
var App = function() {
|
|
55
|
-
/*#__PURE__*/
|
|
55
|
+
return /*#__PURE__*/ (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
56
56
|
children: /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_runtime.CC, {
|
|
57
57
|
children: [
|
|
58
58
|
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_runtime.CS, {
|
|
@@ -61,11 +61,11 @@ it('transforms assets with babel plugin', async () => {
|
|
|
61
61
|
_2
|
|
62
62
|
]
|
|
63
63
|
}),
|
|
64
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(
|
|
64
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)("div", {
|
|
65
65
|
className: (0, _runtime.ax)([
|
|
66
|
-
|
|
66
|
+
"_1wyb12am _syaz5scu"
|
|
67
67
|
]),
|
|
68
|
-
children:
|
|
68
|
+
children: "hello from parcel"
|
|
69
69
|
})
|
|
70
70
|
]
|
|
71
71
|
})
|
|
@@ -97,22 +97,22 @@ it('transforms assets with compiled and extraction babel plugins', async () => {
|
|
|
97
97
|
.find((asset) => asset.filePath === join(extractionFixtureRoot, 'src/index.jsx'))
|
|
98
98
|
?.getCode();
|
|
99
99
|
expect(indexJsCode).toMatchInlineSnapshot(`
|
|
100
|
-
"var parcelHelpers = require(
|
|
101
|
-
var _jsxRuntime = require(
|
|
102
|
-
|
|
103
|
-
var _babelComponentFixture = require(
|
|
100
|
+
"/* index.jsx generated by @compiled/babel-plugin v0.0.0 */ var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
|
101
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
102
|
+
var _runtime = require("@compiled/react/runtime");
|
|
103
|
+
var _babelComponentFixture = require("@compiled/babel-component-fixture");
|
|
104
104
|
var _babelComponentFixtureDefault = parcelHelpers.interopDefault(_babelComponentFixture);
|
|
105
105
|
var App = function() {
|
|
106
|
-
/*#__PURE__*/
|
|
106
|
+
return /*#__PURE__*/ (0, _jsxRuntime.jsxs)((0, _jsxRuntime.Fragment), {
|
|
107
107
|
children: [
|
|
108
|
-
/*#__PURE__*/ _jsxRuntime.jsx(
|
|
109
|
-
className: _runtime.ax([
|
|
110
|
-
|
|
108
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)("div", {
|
|
109
|
+
className: (0, _runtime.ax)([
|
|
110
|
+
"_1wyb12am _syaz5scu"
|
|
111
111
|
]),
|
|
112
|
-
children:
|
|
112
|
+
children: "CSS prop"
|
|
113
113
|
}),
|
|
114
|
-
/*#__PURE__*/ _jsxRuntime.jsx(_babelComponentFixtureDefault.default, {
|
|
115
|
-
children:
|
|
114
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)((0, _babelComponentFixtureDefault.default), {
|
|
115
|
+
children: "Babel component"
|
|
116
116
|
})
|
|
117
117
|
]
|
|
118
118
|
});
|
|
@@ -181,24 +181,22 @@ it('transforms assets with compiled and extraction babel plugins', async () => {
|
|
|
181
181
|
.trim();
|
|
182
182
|
expect(extractedComponent).toMatchInlineSnapshot(`
|
|
183
183
|
"var Button = (0, _react.forwardRef)(function(_ref, __cmplr) {
|
|
184
|
-
var _ref$as = _ref.as, C = _ref$as === void 0 ?
|
|
185
|
-
return (0, _jsxRuntime.jsx)(C, _objectSpread(_objectSpread({
|
|
186
|
-
}, __cmplp), {
|
|
187
|
-
}, {
|
|
184
|
+
var _ref$as = _ref.as, C = _ref$as === void 0 ? "button" : _ref$as, __cmpls = _ref.style, __cmplp = _objectWithoutProperties(_ref, _excluded);
|
|
185
|
+
return (0, _jsxRuntime.jsx)(C, _objectSpread(_objectSpread({}, __cmplp), {}, {
|
|
188
186
|
style: __cmpls,
|
|
189
187
|
ref: __cmplr,
|
|
190
188
|
className: (0, _runtime.ax)([
|
|
191
|
-
|
|
189
|
+
"_syaz13q2 _1wyb1ul9 _19itlf8h _ca0q1vi7 _u5f31vi7 _n3td1vi7 _19bv1vi7",
|
|
192
190
|
__cmplp.className
|
|
193
191
|
])
|
|
194
192
|
}));
|
|
195
193
|
});
|
|
196
|
-
Button.displayName =
|
|
194
|
+
Button.displayName = "Button";
|
|
197
195
|
function BabelComponent(_ref2) {
|
|
198
196
|
var children = _ref2.children;
|
|
199
|
-
return (0, _jsxRuntime.jsx)(
|
|
197
|
+
return (0, _jsxRuntime.jsx)("div", {
|
|
200
198
|
className: (0, _runtime.ax)([
|
|
201
|
-
|
|
199
|
+
"_19pk1ul9"
|
|
202
200
|
]),
|
|
203
201
|
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(Button, {
|
|
204
202
|
children: children
|
package/src/index.ts
CHANGED
|
@@ -38,7 +38,10 @@ export default new Transformer<ParcelTransformerOpts>({
|
|
|
38
38
|
};
|
|
39
39
|
|
|
40
40
|
if (conf) {
|
|
41
|
-
|
|
41
|
+
if (conf.filePath.endsWith('.js')) {
|
|
42
|
+
config.invalidateOnStartup();
|
|
43
|
+
}
|
|
44
|
+
|
|
42
45
|
Object.assign(contents, conf.contents);
|
|
43
46
|
}
|
|
44
47
|
|
|
@@ -121,6 +124,7 @@ export default new Transformer<ParcelTransformerOpts>({
|
|
|
121
124
|
'@compiled/babel-plugin',
|
|
122
125
|
{
|
|
123
126
|
...config,
|
|
127
|
+
classNameCompressionMap: config.extract && config.classNameCompressionMap,
|
|
124
128
|
onIncludedFiles: (files: string[]) => includedFiles.push(...files),
|
|
125
129
|
resolver: {
|
|
126
130
|
// The resolver needs to be synchronous, as babel plugins must be synchronous
|
package/src/types.ts
CHANGED
|
@@ -39,4 +39,12 @@ export interface ParcelTransformerOpts extends BabelPluginOpts {
|
|
|
39
39
|
* Default to `false`
|
|
40
40
|
*/
|
|
41
41
|
addComponentName?: boolean;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* A map holds the key-value pairs between full Atomic class names and the compressed ones
|
|
45
|
+
* i.e. { '_aaaabbbb': 'a' }
|
|
46
|
+
*
|
|
47
|
+
* Default to `undefined`
|
|
48
|
+
*/
|
|
49
|
+
classNameCompressionMap?: { [index: string]: string };
|
|
42
50
|
}
|