Skip to content

Commit

Permalink
Merge pull request #1699 from glimmerjs/cjs-womp
Browse files Browse the repository at this point in the history
Re-enable CJS for @glimmer/compiler (used by babel plugin)
  • Loading branch information
NullVoxPopuli authored Feb 8, 2025
2 parents 72ce402 + 3bb89eb commit 52e4509
Show file tree
Hide file tree
Showing 7 changed files with 86 additions and 18 deletions.
7 changes: 7 additions & 0 deletions .meta-updater/main.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,13 @@ export default () =>
types: './dist/dev/index.d.ts',
default: './dist/dev/index.js',
},
...(pkg['repo-meta']?.supportcjs
? {
require: {
default: './dist/dev/index.cjs',
},
}
: {}),
default: {
types: './dist/prod/index.d.ts',
default: './dist/prod/index.js',
Expand Down
2 changes: 2 additions & 0 deletions packages/@glimmer-workspace/build/lib/config.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ export interface PackageInfo {
readonly name: string;
readonly root: string;
readonly exports: string;
readonly publishConfig: object;
readonly devDependencies: Record<string, string>;
}

Expand All @@ -27,6 +28,7 @@ export interface PackageJSON {
readonly types: string;
readonly private: boolean;
readonly name: string;
readonly publishConfig: object;
}

type SimpleExternal = { [P in string]: 'inline' | 'external' };
Expand Down
45 changes: 45 additions & 0 deletions packages/@glimmer-workspace/build/lib/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@ export class Package {
return new Package({
name: json.name,
exports: resolve(root, json.exports),
publishConfig: json.publishConfig,
root,
devDependencies: json['devDependencies'] ?? {},
});
Expand All @@ -226,6 +227,7 @@ export class Package {
name: json.name,
exports: path,
root,
publishConfig: json.publishConfig,
devDependencies: json['devDependencies'] ?? {},
});
}
Expand Down Expand Up @@ -299,6 +301,13 @@ export class Package {
return this.#package.root;
}

/**
* @returns {object}
*/
get publishConfig() {
return this.#package.publishConfig;
}

/**
* @returns {import("rollup").RollupOptions[] | import("rollup").RollupOptions}
*/
Expand All @@ -308,6 +317,10 @@ export class Package {
builds.push(...this.rollupESM({ env: 'dev' }));
builds.push(...this.rollupESM({ env: 'prod' }));

if (JSON.stringify(this.publishConfig).includes('require')) {
builds.push(...this.rollupCJS({ env: 'dev' }));
}

return builds;
}

Expand All @@ -327,6 +340,38 @@ export class Package {
});
}

/**
* NOTE: CJS is intended for node environments where code duplication
* doesn't matter so much.
* In particular, only meant for:
* - @glimmer/compiler
*
* @param {RollupConfigurationOptions} options
* @returns {RollupOptions[]}
*/
rollupCJS({ env }) {
return this.#shared('cjs', env).map(
(options) =>
/** @satisfies {RollupOptions} */ ({
...options,
plugins: [
nodeResolve({ extensions: ['.js', '.ts'] }),
...this.replacements(env),
rollupSWC({
swc: {
jsc: {
parser: {
syntax: 'typescript',
},
target: 'es2022',
},
},
}),
],
})
);
}

/**
* @typedef {object} RollupConfigurationOptions
* @property {'dev' | 'prod'} env
Expand Down
6 changes: 6 additions & 0 deletions packages/@glimmer/compiler/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
},
"type": "module",
"exports": "./index.ts",
"repo-meta": {
"supportcjs": true
},
"publishConfig": {
"access": "public",
"exports": {
Expand All @@ -17,6 +20,9 @@
"types": "./dist/dev/index.d.ts",
"default": "./dist/dev/index.js"
},
"require": {
"default": "./dist/dev/index.cjs"
},
"default": {
"types": "./dist/prod/index.d.ts",
"default": "./dist/prod/index.js"
Expand Down
6 changes: 6 additions & 0 deletions repo-metadata/lib/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@ export interface RepoMetaForPackage {
* Whether this package has buildable entry points and therefore needs to be built.
*/
built?: true;

/**
* Whether this package has to support CJS (usually for legacy reasons)
*/
supportcjs?: true;
}

type RepoMetaEnv = 'node' | 'console' | 'qunit' | 'decorator:classic';
Expand All @@ -79,6 +84,7 @@ export interface PackageInfo {
entryPoints?: PackageEntryPoints;
'repo-meta'?: {
strictness?: 'strict' | 'loose';
supportcjs?: boolean;
env?: RepoMetaEnv[];
lint?: string[];
built: boolean;
Expand Down
1 change: 1 addition & 0 deletions repo-metadata/lib/update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ const packagesMetadata = packages.map((pkg) => {
if (repoMeta.lint) meta.lint = Array.isArray(repoMeta.lint) ? repoMeta.lint : [repoMeta.lint];
if (repoMeta.env) meta.env = repoMeta.env;
if (repoMeta.built) meta.built = repoMeta.built;
if (repoMeta.supportcjs) meta.supportcjs = repoMeta.supportcjs;
}

if (Object.keys(entryPoints).length > 0) {
Expand Down
37 changes: 19 additions & 18 deletions repo-metadata/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -167,11 +167,12 @@
{
"root": "packages/@glimmer/compiler",
"name": "@glimmer/compiler",
"version": "0.94.2",
"version": "0.94.3",
"type": "module",
"private": false,
"repo-meta": {
"built": true
"built": true,
"supportcjs": true
},
"entryPoints": {
".": [[["default"], "./index.ts"]]
Expand Down Expand Up @@ -274,7 +275,7 @@
{
"root": "packages/@glimmer/destroyable",
"name": "@glimmer/destroyable",
"version": "0.94.2",
"version": "0.94.3",
"type": "module",
"private": false,
"repo-meta": {
Expand All @@ -300,7 +301,7 @@
{
"root": "packages/@glimmer/encoder",
"name": "@glimmer/encoder",
"version": "0.93.2",
"version": "0.93.3",
"type": "module",
"private": false,
"repo-meta": {
Expand All @@ -313,7 +314,7 @@
{
"root": "packages/@glimmer/global-context",
"name": "@glimmer/global-context",
"version": "0.93.1",
"version": "0.93.2",
"type": "module",
"private": false,
"repo-meta": {
Expand Down Expand Up @@ -366,7 +367,7 @@
{
"root": "packages/@glimmer/manager",
"name": "@glimmer/manager",
"version": "0.94.2",
"version": "0.94.3",
"type": "module",
"private": false,
"repo-meta": {
Expand All @@ -393,7 +394,7 @@
{
"root": "packages/@glimmer/node",
"name": "@glimmer/node",
"version": "0.94.2",
"version": "0.94.3",
"type": "module",
"private": false,
"repo-meta": {
Expand All @@ -406,7 +407,7 @@
{
"root": "packages/@glimmer/opcode-compiler",
"name": "@glimmer/opcode-compiler",
"version": "0.94.2",
"version": "0.94.3",
"type": "module",
"private": false,
"repo-meta": {
Expand All @@ -419,7 +420,7 @@
{
"root": "packages/@glimmer/owner",
"name": "@glimmer/owner",
"version": "0.93.1",
"version": "0.93.2",
"type": "module",
"private": false,
"repo-meta": {
Expand All @@ -445,7 +446,7 @@
{
"root": "packages/@glimmer/program",
"name": "@glimmer/program",
"version": "0.94.2",
"version": "0.94.3",
"type": "module",
"private": false,
"repo-meta": {
Expand All @@ -471,7 +472,7 @@
{
"root": "packages/@glimmer/reference",
"name": "@glimmer/reference",
"version": "0.94.2",
"version": "0.94.3",
"type": "module",
"private": false,
"repo-meta": {
Expand All @@ -497,7 +498,7 @@
{
"root": "packages/@glimmer/runtime",
"name": "@glimmer/runtime",
"version": "0.94.2",
"version": "0.94.3",
"type": "module",
"private": false,
"repo-meta": {
Expand All @@ -510,7 +511,7 @@
{
"root": "packages/@glimmer/syntax",
"name": "@glimmer/syntax",
"version": "0.94.2",
"version": "0.94.3",
"type": "module",
"private": false,
"repo-meta": {
Expand All @@ -536,7 +537,7 @@
{
"root": "packages/@glimmer/util",
"name": "@glimmer/util",
"version": "0.94.2",
"version": "0.94.3",
"type": "module",
"private": false,
"repo-meta": {
Expand All @@ -562,7 +563,7 @@
{
"root": "packages/@glimmer/validator",
"name": "@glimmer/validator",
"version": "0.94.2",
"version": "0.94.3",
"type": "module",
"private": false,
"repo-meta": {
Expand All @@ -589,7 +590,7 @@
{
"root": "packages/@glimmer/vm",
"name": "@glimmer/vm",
"version": "0.94.2",
"version": "0.94.3",
"type": "module",
"private": false,
"repo-meta": {
Expand All @@ -602,7 +603,7 @@
{
"root": "packages/@glimmer/vm-babel-plugins",
"name": "@glimmer/vm-babel-plugins",
"version": "0.93.1",
"version": "0.93.2",
"type": "module",
"private": false,
"repo-meta": {
Expand All @@ -615,7 +616,7 @@
{
"root": "packages/@glimmer/wire-format",
"name": "@glimmer/wire-format",
"version": "0.94.2",
"version": "0.94.3",
"type": "module",
"private": false,
"repo-meta": {
Expand Down

0 comments on commit 52e4509

Please sign in to comment.