Skip to content

Commit

Permalink
fix: export object literal
Browse files Browse the repository at this point in the history
  • Loading branch information
noyobo committed Jun 2, 2023
1 parent 282eb4b commit e6e6bb6
Show file tree
Hide file tree
Showing 11 changed files with 77 additions and 22 deletions.
21 changes: 16 additions & 5 deletions __tests__/less-alias/__snapshots__/index.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ exports[`less-alias style-loader 1`] = `
return require.apply(this, arguments);
throw new Error('Dynamic require of "' + x + '" is not supported');
});
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
Expand All @@ -37,16 +41,23 @@ exports[`less-alias style-loader 1`] = `
var import_client = __require("react-dom/client");
var a_exports = {};
__export(a_exports, {
app: () => app,
"app-title": () => appTitle,
default: () => a_default,
index: () => index
});
var app = "a__app";
var appTitle = "a__app-title";
var index = "a__index";
var title = "a__title";
var a_default = { app, index, title };
var a_default = { "app": app, "app-title": appTitle, "index": index };
// __tests__/less-alias/index.jsx
var App = class extends import_react.default.Component {
render() {
console.warn(a_default);
return /* @__PURE__ */ import_react.default.createElement("div", { className: a_default.app }, /* @__PURE__ */ import_react.default.createElement("h1", { className: a_default.title }, "Hello World"));
console.warn(a_exports, a_default);
return /* @__PURE__ */ import_react.default.createElement("div", { className: app }, /* @__PURE__ */ import_react.default.createElement("h1", { className: appTitle }, "Hello World"));
}
};
(0, import_client.createRoot)(document.getElementById("root")).render(/* @__PURE__ */ import_react.default.createElement(App, null));
Expand All @@ -57,7 +68,7 @@ exports[`less-alias style-loader 1`] = `

exports[`less-alias style-loader 2`] = `
"
.a__title {
.a__app-title {
color: green;
}
.a__index {
Expand Down
2 changes: 1 addition & 1 deletion __tests__/less-alias/b.less
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.title {
.app-title {
color: green;
}

Expand Down
7 changes: 4 additions & 3 deletions __tests__/less-alias/index.jsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import React from 'react';
import { createRoot } from 'react-dom/client';

import a from '@/a.less?modules';
import * as a from '@/a.less?modules';
import b from '@/a.less?modules';

class App extends React.Component {
render() {
console.warn(a);
console.warn(a, b);
return (
<div className={a.app}>
<h1 className={a.title}>Hello World</h1>
<h1 className={a['app-title']}>Hello World</h1>
</div>
);
}
Expand Down
4 changes: 2 additions & 2 deletions __tests__/less-multiple/__snapshots__/index.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ exports[`less-multiple style-loader 1`] = `
var app = "a__app";
var a_default = { app };
var a_default = { "app": app };
var index = "b__index";
var title = "b__title";
var b_default = { index, title };
var b_default = { "index": index, "title": title };
// __tests__/less-multiple/index.jsx
var App = class extends import_react.default.Component {
Expand Down
2 changes: 1 addition & 1 deletion __tests__/less/__snapshots__/index.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ exports[`less style-loader 1`] = `
var app = "index__app";
var index = "index__index";
var title = "index__title";
var less_default = { app, index, title };
var less_default = { "app": app, "index": index, "title": title };
// __tests__/less/index.jsx
var import_react = __toESM(__require("react"));
Expand Down
10 changes: 5 additions & 5 deletions __tests__/react-components/__snapshots__/index.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,16 @@ exports[`react-components style-loader 1`] = `
var app = "a__app";
var a_default = { app };
var a_default = { "app": app };
var index = "b__index";
var title = "b__title";
var b_default = { index, title };
var b_default = { "index": index, "title": title };
var foo = "index-module__foo";
var index_module_default = { foo };
var index_module_default = { "foo": foo };
// __tests__/react-components/foo/index.tsx
var import_react = __toESM(__require("react"));
Expand Down Expand Up @@ -131,11 +131,11 @@ exports[`react-components style-loader 3`] = `
var app = "a__app";
var a_default = { app };
var a_default = { "app": app };
var foo = "index-module__foo";
var index_module_default = { foo };
var index_module_default = { "foo": foo };
// __tests__/react-components/foo/index.tsx
var import_react = __toESM(__require("react"));
Expand Down
2 changes: 1 addition & 1 deletion __tests__/scss-alias/__snapshots__/index.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ exports[`scss-alias style-loader 1`] = `
var app = "a__app";
var title = "a__title";
var a_default = { app, title };
var a_default = { "app": app, "title": title };
// __tests__/scss-alias/index.jsx
var App = class extends import_react.default.Component {
Expand Down
2 changes: 1 addition & 1 deletion __tests__/scss/__snapshots__/index.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ exports[`scss style-loader 1`] = `
var app = "index__app";
var index = "index__index";
var title = "index__title";
var scss_default = { app, index, title };
var scss_default = { "app": app, "index": index, "title": title };
// __tests__/scss/index.jsx
var import_react = __toESM(__require("react"));
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
],
"dependencies": {
"browserslist": "^4.21.5",
"camel-case": "^4.1.2",
"deepmerge": "^4.3.1",
"esbuild": "^0.17.18",
"less": "^4.1.3",
Expand Down
15 changes: 13 additions & 2 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { browserslistToTargets, CSSModuleExports } from 'lightningcss';
import { OnResolveArgs, PluginBuild } from 'esbuild';
import PATH from 'path';
import browserslist from 'browserslist';
import { camelCase } from 'camel-case';

export const codeWithSourceMap = (code: string, map: string) => {
return code + '/*# sourceMappingURL=data:application/json;base64,' + Buffer.from(map).toString('base64') + ' */';
Expand All @@ -13,10 +14,20 @@ export const cssExportsToJs = (exports: CSSModuleExports, entryFile: string) =>
let exportCode = ``;

keys.map((key, index) => {
exportCode += `export const ${key} = "${values[index].name}";\n`;
exportCode += `const ${camelCase(key)} = "${values[index].name}";\n`;
});

exportCode += `export default {${keys.join(',')}};\n`;
exportCode += `export {${keys
.map((key) => {
return `${camelCase(key)} as '${key}'`;
})
.join(',')}};\n`;

exportCode += `export default {${keys
.map((key) => {
return `'${key}': ${camelCase(key)}`;
})
.join(',')}};\n`;

if (entryFile) {
return `import '${entryFile}';\n${exportCode}`;
Expand Down
33 changes: 32 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1228,6 +1228,14 @@ callsites@^3.0.0:
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==

camel-case@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
dependencies:
pascal-case "^3.1.2"
tslib "^2.0.3"

camelcase-keys@^6.2.2:
version "6.2.2"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0"
Expand Down Expand Up @@ -2960,6 +2968,13 @@ loose-envify@^1.1.0:
dependencies:
js-tokens "^3.0.0 || ^4.0.0"

lower-case@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
dependencies:
tslib "^2.0.3"

lowercase-keys@^2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
Expand Down Expand Up @@ -3139,6 +3154,14 @@ neo-async@^2.6.0:
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==

no-case@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
dependencies:
lower-case "^2.0.2"
tslib "^2.0.3"

node-int64@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
Expand Down Expand Up @@ -3306,6 +3329,14 @@ parse-node-version@^1.0.1:
resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==

pascal-case@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
dependencies:
no-case "^3.0.4"
tslib "^2.0.3"

path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
Expand Down Expand Up @@ -4042,7 +4073,7 @@ trim-repeated@^2.0.0:
dependencies:
escape-string-regexp "^5.0.0"

tslib@^2.3.0:
tslib@^2.0.3, tslib@^2.3.0:
version "2.5.2"
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338"
integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==
Expand Down

0 comments on commit e6e6bb6

Please sign in to comment.