Skip to content

Commit 52e4509

Browse files
Merge pull request #1699 from glimmerjs/cjs-womp
Re-enable CJS for @glimmer/compiler (used by babel plugin)
2 parents 72ce402 + 3bb89eb commit 52e4509

File tree

7 files changed

+86
-18
lines changed

7 files changed

+86
-18
lines changed

.meta-updater/main.mjs

+7
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,13 @@ export default () =>
8484
types: './dist/dev/index.d.ts',
8585
default: './dist/dev/index.js',
8686
},
87+
...(pkg['repo-meta']?.supportcjs
88+
? {
89+
require: {
90+
default: './dist/dev/index.cjs',
91+
},
92+
}
93+
: {}),
8794
default: {
8895
types: './dist/prod/index.d.ts',
8996
default: './dist/prod/index.js',

packages/@glimmer-workspace/build/lib/config.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export interface PackageInfo {
55
readonly name: string;
66
readonly root: string;
77
readonly exports: string;
8+
readonly publishConfig: object;
89
readonly devDependencies: Record<string, string>;
910
}
1011

@@ -27,6 +28,7 @@ export interface PackageJSON {
2728
readonly types: string;
2829
readonly private: boolean;
2930
readonly name: string;
31+
readonly publishConfig: object;
3032
}
3133

3234
type SimpleExternal = { [P in string]: 'inline' | 'external' };

packages/@glimmer-workspace/build/lib/config.js

+45
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ export class Package {
215215
return new Package({
216216
name: json.name,
217217
exports: resolve(root, json.exports),
218+
publishConfig: json.publishConfig,
218219
root,
219220
devDependencies: json['devDependencies'] ?? {},
220221
});
@@ -226,6 +227,7 @@ export class Package {
226227
name: json.name,
227228
exports: path,
228229
root,
230+
publishConfig: json.publishConfig,
229231
devDependencies: json['devDependencies'] ?? {},
230232
});
231233
}
@@ -299,6 +301,13 @@ export class Package {
299301
return this.#package.root;
300302
}
301303

304+
/**
305+
* @returns {object}
306+
*/
307+
get publishConfig() {
308+
return this.#package.publishConfig;
309+
}
310+
302311
/**
303312
* @returns {import("rollup").RollupOptions[] | import("rollup").RollupOptions}
304313
*/
@@ -308,6 +317,10 @@ export class Package {
308317
builds.push(...this.rollupESM({ env: 'dev' }));
309318
builds.push(...this.rollupESM({ env: 'prod' }));
310319

320+
if (JSON.stringify(this.publishConfig).includes('require')) {
321+
builds.push(...this.rollupCJS({ env: 'dev' }));
322+
}
323+
311324
return builds;
312325
}
313326

@@ -327,6 +340,38 @@ export class Package {
327340
});
328341
}
329342

343+
/**
344+
* NOTE: CJS is intended for node environments where code duplication
345+
* doesn't matter so much.
346+
* In particular, only meant for:
347+
* - @glimmer/compiler
348+
*
349+
* @param {RollupConfigurationOptions} options
350+
* @returns {RollupOptions[]}
351+
*/
352+
rollupCJS({ env }) {
353+
return this.#shared('cjs', env).map(
354+
(options) =>
355+
/** @satisfies {RollupOptions} */ ({
356+
...options,
357+
plugins: [
358+
nodeResolve({ extensions: ['.js', '.ts'] }),
359+
...this.replacements(env),
360+
rollupSWC({
361+
swc: {
362+
jsc: {
363+
parser: {
364+
syntax: 'typescript',
365+
},
366+
target: 'es2022',
367+
},
368+
},
369+
}),
370+
],
371+
})
372+
);
373+
}
374+
330375
/**
331376
* @typedef {object} RollupConfigurationOptions
332377
* @property {'dev' | 'prod'} env

packages/@glimmer/compiler/package.json

+6
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
},
1010
"type": "module",
1111
"exports": "./index.ts",
12+
"repo-meta": {
13+
"supportcjs": true
14+
},
1215
"publishConfig": {
1316
"access": "public",
1417
"exports": {
@@ -17,6 +20,9 @@
1720
"types": "./dist/dev/index.d.ts",
1821
"default": "./dist/dev/index.js"
1922
},
23+
"require": {
24+
"default": "./dist/dev/index.cjs"
25+
},
2026
"default": {
2127
"types": "./dist/prod/index.d.ts",
2228
"default": "./dist/prod/index.js"

repo-metadata/lib/types.d.ts

+6
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ export interface RepoMetaForPackage {
6666
* Whether this package has buildable entry points and therefore needs to be built.
6767
*/
6868
built?: true;
69+
70+
/**
71+
* Whether this package has to support CJS (usually for legacy reasons)
72+
*/
73+
supportcjs?: true;
6974
}
7075

7176
type RepoMetaEnv = 'node' | 'console' | 'qunit' | 'decorator:classic';
@@ -79,6 +84,7 @@ export interface PackageInfo {
7984
entryPoints?: PackageEntryPoints;
8085
'repo-meta'?: {
8186
strictness?: 'strict' | 'loose';
87+
supportcjs?: boolean;
8288
env?: RepoMetaEnv[];
8389
lint?: string[];
8490
built: boolean;

repo-metadata/lib/update.ts

+1
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ const packagesMetadata = packages.map((pkg) => {
9090
if (repoMeta.lint) meta.lint = Array.isArray(repoMeta.lint) ? repoMeta.lint : [repoMeta.lint];
9191
if (repoMeta.env) meta.env = repoMeta.env;
9292
if (repoMeta.built) meta.built = repoMeta.built;
93+
if (repoMeta.supportcjs) meta.supportcjs = repoMeta.supportcjs;
9394
}
9495

9596
if (Object.keys(entryPoints).length > 0) {

repo-metadata/metadata.json

+19-18
Original file line numberDiff line numberDiff line change
@@ -167,11 +167,12 @@
167167
{
168168
"root": "packages/@glimmer/compiler",
169169
"name": "@glimmer/compiler",
170-
"version": "0.94.2",
170+
"version": "0.94.3",
171171
"type": "module",
172172
"private": false,
173173
"repo-meta": {
174-
"built": true
174+
"built": true,
175+
"supportcjs": true
175176
},
176177
"entryPoints": {
177178
".": [[["default"], "./index.ts"]]
@@ -274,7 +275,7 @@
274275
{
275276
"root": "packages/@glimmer/destroyable",
276277
"name": "@glimmer/destroyable",
277-
"version": "0.94.2",
278+
"version": "0.94.3",
278279
"type": "module",
279280
"private": false,
280281
"repo-meta": {
@@ -300,7 +301,7 @@
300301
{
301302
"root": "packages/@glimmer/encoder",
302303
"name": "@glimmer/encoder",
303-
"version": "0.93.2",
304+
"version": "0.93.3",
304305
"type": "module",
305306
"private": false,
306307
"repo-meta": {
@@ -313,7 +314,7 @@
313314
{
314315
"root": "packages/@glimmer/global-context",
315316
"name": "@glimmer/global-context",
316-
"version": "0.93.1",
317+
"version": "0.93.2",
317318
"type": "module",
318319
"private": false,
319320
"repo-meta": {
@@ -366,7 +367,7 @@
366367
{
367368
"root": "packages/@glimmer/manager",
368369
"name": "@glimmer/manager",
369-
"version": "0.94.2",
370+
"version": "0.94.3",
370371
"type": "module",
371372
"private": false,
372373
"repo-meta": {
@@ -393,7 +394,7 @@
393394
{
394395
"root": "packages/@glimmer/node",
395396
"name": "@glimmer/node",
396-
"version": "0.94.2",
397+
"version": "0.94.3",
397398
"type": "module",
398399
"private": false,
399400
"repo-meta": {
@@ -406,7 +407,7 @@
406407
{
407408
"root": "packages/@glimmer/opcode-compiler",
408409
"name": "@glimmer/opcode-compiler",
409-
"version": "0.94.2",
410+
"version": "0.94.3",
410411
"type": "module",
411412
"private": false,
412413
"repo-meta": {
@@ -419,7 +420,7 @@
419420
{
420421
"root": "packages/@glimmer/owner",
421422
"name": "@glimmer/owner",
422-
"version": "0.93.1",
423+
"version": "0.93.2",
423424
"type": "module",
424425
"private": false,
425426
"repo-meta": {
@@ -445,7 +446,7 @@
445446
{
446447
"root": "packages/@glimmer/program",
447448
"name": "@glimmer/program",
448-
"version": "0.94.2",
449+
"version": "0.94.3",
449450
"type": "module",
450451
"private": false,
451452
"repo-meta": {
@@ -471,7 +472,7 @@
471472
{
472473
"root": "packages/@glimmer/reference",
473474
"name": "@glimmer/reference",
474-
"version": "0.94.2",
475+
"version": "0.94.3",
475476
"type": "module",
476477
"private": false,
477478
"repo-meta": {
@@ -497,7 +498,7 @@
497498
{
498499
"root": "packages/@glimmer/runtime",
499500
"name": "@glimmer/runtime",
500-
"version": "0.94.2",
501+
"version": "0.94.3",
501502
"type": "module",
502503
"private": false,
503504
"repo-meta": {
@@ -510,7 +511,7 @@
510511
{
511512
"root": "packages/@glimmer/syntax",
512513
"name": "@glimmer/syntax",
513-
"version": "0.94.2",
514+
"version": "0.94.3",
514515
"type": "module",
515516
"private": false,
516517
"repo-meta": {
@@ -536,7 +537,7 @@
536537
{
537538
"root": "packages/@glimmer/util",
538539
"name": "@glimmer/util",
539-
"version": "0.94.2",
540+
"version": "0.94.3",
540541
"type": "module",
541542
"private": false,
542543
"repo-meta": {
@@ -562,7 +563,7 @@
562563
{
563564
"root": "packages/@glimmer/validator",
564565
"name": "@glimmer/validator",
565-
"version": "0.94.2",
566+
"version": "0.94.3",
566567
"type": "module",
567568
"private": false,
568569
"repo-meta": {
@@ -589,7 +590,7 @@
589590
{
590591
"root": "packages/@glimmer/vm",
591592
"name": "@glimmer/vm",
592-
"version": "0.94.2",
593+
"version": "0.94.3",
593594
"type": "module",
594595
"private": false,
595596
"repo-meta": {
@@ -602,7 +603,7 @@
602603
{
603604
"root": "packages/@glimmer/vm-babel-plugins",
604605
"name": "@glimmer/vm-babel-plugins",
605-
"version": "0.93.1",
606+
"version": "0.93.2",
606607
"type": "module",
607608
"private": false,
608609
"repo-meta": {
@@ -615,7 +616,7 @@
615616
{
616617
"root": "packages/@glimmer/wire-format",
617618
"name": "@glimmer/wire-format",
618-
"version": "0.94.2",
619+
"version": "0.94.3",
619620
"type": "module",
620621
"private": false,
621622
"repo-meta": {

0 commit comments

Comments
 (0)