Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -105,5 +105,4 @@ dist

esm
system
es2015
es2020
es2022
3 changes: 1 addition & 2 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,4 @@ karma.conf.cjs
.nvmrc
.husky
pnpm-lock.yaml
es2015
es2020
es2022
3 changes: 3 additions & 0 deletions .prettierrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
singleQuote: false,
};
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2020 esm-bundle
Copyright (c) 2025 esm-bundle

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
20 changes: 5 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,15 @@ A repo that tests automatic detection of upstream publishes and the publishing o

### @angular/material/autocomplete

#### ES2015
#### ES2022

https://cdn.jsdelivr.net/npm/@esm-bundle/angular__material/system/es2015/ivy/angular-autocomplete.js
https://cdn.jsdelivr.net/npm/@esm-bundle/angular__material/system/es2022/angular-autocomplete.js

https://cdn.jsdelivr.net/npm/@esm-bundle/angular__material/system/es2015/ivy/angular-autocomplete.min.js
https://cdn.jsdelivr.net/npm/@esm-bundle/angular__material/system/es2022/angular-autocomplete.min.js

https://unpkg.com/@esm-bundle/angular__material/system/es2015/ivy/angular-autocomplete.js
https://unpkg.com/@esm-bundle/angular__material/system/es2022/angular-autocomplete.js

https://unpkg.com/@esm-bundle/angular__material/system/es2015/ivy/angular-autocomplete.min.js

#### ES2020

https://cdn.jsdelivr.net/npm/@esm-bundle/angular__material/system/es2020/ivy/angular-autocomplete.js

https://cdn.jsdelivr.net/npm/@esm-bundle/angular__material/system/es2020/ivy/angular-autocomplete.min.js

https://unpkg.com/@esm-bundle/angular__material/system/es2020/ivy/angular-autocomplete.js

https://unpkg.com/@esm-bundle/angular__material/system/es2020/ivy/angular-autocomplete.min.js
https://unpkg.com/@esm-bundle/angular__material/system/es2022/angular-autocomplete.min.js

## Other packages

Expand Down
138 changes: 72 additions & 66 deletions browser-test/systemjs-setup.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,72 +6,78 @@ document.head.appendChild(
"imports": {
"rxjs": "https://cdn.jsdelivr.net/npm/@esm-bundle/rxjs/system/es2015/rxjs.min.js",
"rxjs/operators": "https://cdn.jsdelivr.net/npm/@esm-bundle/rxjs/system/es2015/rxjs-operators.min.js",
"@angular/core": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__core/system/es2015/ivy/angular-core.min.js",
"@angular/common": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__common/system/es2015/ivy/angular-common.min.js",
"@angular/common/http": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__common/system/es2015/ivy/angular-http.min.js",
"@angular/animations": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__animations/system/es2015/ivy/angular-animations.min.js",
"@angular/animations/browser": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__animations/system/es2015/ivy/angular-browser.min.js",
"@angular/platform-browser": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__platform-browser/system/es2015/ivy/angular-platform-browser.min.js",
"@angular/platform-browser/animations": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__platform-browser/system/es2015/ivy/angular-animations.min.js",
"@angular/forms": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__forms/system/es2015/ivy/angular-forms.min.js",
"@angular/cdk": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-cdk.min.js",
"@angular/cdk/a11y": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-a11y.min.js",
"@angular/cdk/accordion": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-accordion.min.js",
"@angular/cdk/bidi": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-bidi.min.js",
"@angular/cdk/clipboard": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-clipboard.min.js",
"@angular/cdk/coercion": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-coercion.min.js",
"@angular/cdk/collections": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-collections.min.js",
"@angular/cdk/dialog": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-dialog.min.js",
"@angular/cdk/drag-drop": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-drag-drop.min.js",
"@angular/cdk/keycodes": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-keycodes.min.js",
"@angular/cdk/layout": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-layout.min.js",
"@angular/cdk/menu": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-menu.min.js",
"@angular/cdk/observers": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-observers.min.js",
"@angular/cdk/overlay": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-overlay.min.js",
"@angular/cdk/platform": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-platform.min.js",
"@angular/cdk/portal": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-portal.min.js",
"@angular/cdk/scrolling": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-scrolling.min.js",
"@angular/cdk/stepper": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-stepper.min.js",
"@angular/cdk/table": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-table.min.js",
"@angular/cdk/text-field": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-text-field.min.js",
"@angular/cdk/tree": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2015/ivy/angular-tree.min.js",
"@angular/material/autocomplete": "/base/system/es2015/ivy/angular-autocomplete.min.js",
"@angular/material/badge": "/base/system/es2015/ivy/angular-badge.min.js",
"@angular/material/bottom-sheet": "/base/system/es2015/ivy/angular-bottom-sheet.min.js",
"@angular/material/button-toggle": "/base/system/es2015/ivy/angular-button-toggle.min.js",
"@angular/material/button": "/base/system/es2015/ivy/angular-button.min.js",
"@angular/material/card": "/base/system/es2015/ivy/angular-card.min.js",
"@angular/material/checkbox": "/base/system/es2015/ivy/angular-checkbox.min.js",
"@angular/material/chips": "/base/system/es2015/ivy/angular-chips.min.js",
"@angular/material/core": "/base/system/es2015/ivy/angular-core.min.js",
"@angular/material/datepicker": "/base/system/es2015/ivy/angular-datepicker.min.js",
"@angular/material/dialog": "/base/system/es2015/ivy/angular-dialog.min.js",
"@angular/material/divider": "/base/system/es2015/ivy/angular-divider.min.js",
"@angular/material/expansion": "/base/system/es2015/ivy/angular-expansion.min.js",
"@angular/material/form-field": "/base/system/es2015/ivy/angular-form-field.min.js",
"@angular/material/grid-list": "/base/system/es2015/ivy/angular-grid-list.min.js",
"@angular/material/icon": "/base/system/es2015/ivy/angular-icon.min.js",
"@angular/material/input": "/base/system/es2015/ivy/angular-input.min.js",
"@angular/material/list": "/base/system/es2015/ivy/angular-list.min.js",
"@angular/material": "/base/system/es2015/ivy/angular-material.min.js",
"@angular/material/menu": "/base/system/es2015/ivy/angular-menu.min.js",
"@angular/material/paginator": "/base/system/es2015/ivy/angular-paginator.min.js",
"@angular/material/progress-bar": "/base/system/es2015/ivy/angular-progress-bar.min.js",
"@angular/material/progress-spinner": "/base/system/es2015/ivy/angular-progress-spinner.min.js",
"@angular/material/radio": "/base/system/es2015/ivy/angular-radio.min.js",
"@angular/material/select": "/base/system/es2015/ivy/angular-select.min.js",
"@angular/material/sidenav": "/base/system/es2015/ivy/angular-sidenav.min.js",
"@angular/material/slide-toggle": "/base/system/es2015/ivy/angular-slide-toggle.min.js",
"@angular/material/slider": "/base/system/es2015/ivy/angular-slider.min.js",
"@angular/material/snack-bar": "/base/system/es2015/ivy/angular-snack-bar.min.js",
"@angular/material/sort": "/base/system/es2015/ivy/angular-sort.min.js",
"@angular/material/stepper": "/base/system/es2015/ivy/angular-stepper.min.js",
"@angular/material/table": "/base/system/es2015/ivy/angular-table.min.js",
"@angular/material/tabs": "/base/system/es2015/ivy/angular-tabs.min.js",
"@angular/material/toolbar": "/base/system/es2015/ivy/angular-toolbar.min.js",
"@angular/material/tooltip": "/base/system/es2015/ivy/angular-tooltip.min.js",
"@angular/material/tree": "/base/system/es2015/ivy/angular-tree.min.js"
"@angular/core": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular/system/es2022/angular-core.min.js",
"@angular/core/primitives/event-dispatch": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular/system/es2022/angular-core-primitives-event-dispatch.min.js",
"@angular/core/primitives/signals": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular/system/es2022/angular-core-primitives-signals.min.js",
"@angular/common": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular/system/es2022/angular-common.min.js",
"@angular/common/http": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular/system/es2022/angular-common-http.min.js",
"@angular/animations": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular/system/es2022/angular-animations.min.js",
"@angular/animations/browser": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular/system/es2022/angular-animations-browser.min.js",
"@angular/platform-browser": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular/system/es2022/angular-platform-browser.min.js",
"@angular/platform-browser/animations": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular/system/es2022/angular-platform-browser-animations.min.js",
"@angular/forms": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular/system/es2022/angular-forms.min.js",
"@angular/cdk": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-cdk.min.js",
"@angular/cdk/a11y": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-a11y.min.js",
"@angular/cdk/accordion": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-accordion.min.js",
"@angular/cdk/bidi": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-bidi.min.js",
"@angular/cdk/clipboard": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-clipboard.min.js",
"@angular/cdk/coercion": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-coercion.min.js",
"@angular/cdk/coercion/private": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-coercion-private.min.js",
"@angular/cdk/collections": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-collections.min.js",
"@angular/cdk/dialog": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-dialog.min.js",
"@angular/cdk/drag-drop": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-drag-drop.min.js",
"@angular/cdk/keycodes": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-keycodes.min.js",
"@angular/cdk/layout": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-layout.min.js",
"@angular/cdk/menu": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-menu.min.js",
"@angular/cdk/observers": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-observers.min.js",
"@angular/cdk/observers/private": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-observers-private.min.js",
"@angular/cdk/overlay": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-overlay.min.js",
"@angular/cdk/platform": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-platform.min.js",
"@angular/cdk/portal": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-portal.min.js",
"@angular/cdk/private": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-private.min.js",
"@angular/cdk/scrolling": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-scrolling.min.js",
"@angular/cdk/stepper": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-stepper.min.js",
"@angular/cdk/table": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-table.min.js",
"@angular/cdk/text-field": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-text-field.min.js",
"@angular/cdk/tree": "https://cdn.jsdelivr.net/npm/@esm-bundle/angular__cdk/system/es2022/angular-tree.min.js",
"@angular/material/autocomplete": "/base/system/es2022/angular-autocomplete.min.js",
"@angular/material/badge": "/base/system/es2022/angular-badge.min.js",
"@angular/material/bottom-sheet": "/base/system/es2022/angular-bottom-sheet.min.js",
"@angular/material/button-toggle": "/base/system/es2022/angular-button-toggle.min.js",
"@angular/material/button": "/base/system/es2022/angular-button.min.js",
"@angular/material/card": "/base/system/es2022/angular-card.min.js",
"@angular/material/checkbox": "/base/system/es2022/angular-checkbox.min.js",
"@angular/material/chips": "/base/system/es2022/angular-chips.min.js",
"@angular/material/core": "/base/system/es2022/angular-core.min.js",
"@angular/material/datepicker": "/base/system/es2022/angular-datepicker.min.js",
"@angular/material/dialog": "/base/system/es2022/angular-dialog.min.js",
"@angular/material/divider": "/base/system/es2022/angular-divider.min.js",
"@angular/material/expansion": "/base/system/es2022/angular-expansion.min.js",
"@angular/material/form-field": "/base/system/es2022/angular-form-field.min.js",
"@angular/material/grid-list": "/base/system/es2022/angular-grid-list.min.js",
"@angular/material/icon": "/base/system/es2022/angular-icon.min.js",
"@angular/material/input": "/base/system/es2022/angular-input.min.js",
"@angular/material/list": "/base/system/es2022/angular-list.min.js",
"@angular/material": "/base/system/es2022/angular-material.min.js",
"@angular/material/menu": "/base/system/es2022/angular-menu.min.js",
"@angular/material/paginator": "/base/system/es2022/angular-paginator.min.js",
"@angular/material/progress-bar": "/base/system/es2022/angular-progress-bar.min.js",
"@angular/material/progress-spinner": "/base/system/es2022/angular-progress-spinner.min.js",
"@angular/material/radio": "/base/system/es2022/angular-radio.min.js",
"@angular/material/select": "/base/system/es2022/angular-select.min.js",
"@angular/material/sidenav": "/base/system/es2022/angular-sidenav.min.js",
"@angular/material/slide-toggle": "/base/system/es2022/angular-slide-toggle.min.js",
"@angular/material/slider": "/base/system/es2022/angular-slider.min.js",
"@angular/material/snack-bar": "/base/system/es2022/angular-snack-bar.min.js",
"@angular/material/sort": "/base/system/es2022/angular-sort.min.js",
"@angular/material/stepper": "/base/system/es2022/angular-stepper.min.js",
"@angular/material/table": "/base/system/es2022/angular-table.min.js",
"@angular/material/tabs": "/base/system/es2022/angular-tabs.min.js",
"@angular/material/timepicker": "/base/system/es2022/angular-timepicker.min.js",
"@angular/material/toolbar": "/base/system/es2022/angular-toolbar.min.js",
"@angular/material/tooltip": "/base/system/es2022/angular-tooltip.min.js",
"@angular/material/tree": "/base/system/es2022/angular-tree.min.js"
}
}`,
})
}),
);
15 changes: 10 additions & 5 deletions browser-test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,11 @@ describe("@esm-bundle/angular__material", () => {
filename: "angular-tabs",
expectedImport: "MatTab",
},
{
packageName: "@angular/material/timepicker",
filename: "angular-timepicker",
expectedImport: "MatTimepicker",
},
{
packageName: "@angular/material/toolbar",
filename: "angular-toolbar",
Expand All @@ -182,19 +187,19 @@ describe("@esm-bundle/angular__material", () => {
},
];

const esVersions = ["es2022"];

packages.forEach(({ packageName, filename, expectedImport }) => {
describe(packageName, () => {
["es2015", "es2020"].forEach((ecma) => {
esVersions.forEach((ecma) => {
it(`can load the System.register ${ecma} bundle`, async () => {
const m = await System.import(
`/base/system/${ecma}/ivy/${filename}.js`
);
const m = await System.import(`/base/system/${ecma}/${filename}.js`);
expect(m[expectedImport]).toBeDefined();
});

it(`can load the System.register ${ecma} prod bundle`, async () => {
const m = await System.import(
`/base/system/${ecma}/ivy/${filename}.min.js`
`/base/system/${ecma}/${filename}.min.js`,
);
expect(m[expectedImport]).toBeDefined();
});
Expand Down
10 changes: 5 additions & 5 deletions entry-points-test/test.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,25 @@ const packageJson = require("../package.json");

// A list of entry points from `package.json`: `['angular-material.js', 'angular-badge.js', ...]`.
const declaredEntryPoints = Object.values(packageJson.exports)
.map(({ es2020 }) => es2020)
.map(({ es2022 }) => es2022)
.map((file) => path.parse(file).base);

// A list of built entry points in the `es2020/ivy` folder.
// A list of built entry points in the `es2022` folder.
const builtEntryPoints = fs
.readdirSync(path.join(process.cwd(), "es2020/ivy"))
.readdirSync(path.join(process.cwd(), "es2022"))
.filter((file) => !file.includes(".min.js") && !file.includes(".map"));

// This simple test basically ensures there's no difference between `@angular/material` entry points
// and `angular__material` entry points. This is used to ensure that we also add an entry point
// to `exports` when the Material team adds new entry point on their side.

const difference = builtEntryPoints.filter(
(entryPoint) => !declaredEntryPoints.includes(entryPoint)
(entryPoint) => !declaredEntryPoints.includes(entryPoint),
);

if (difference.length > 0) {
console.error(
"There is a difference between `exports` and built entry points."
"There is a difference between `exports` and built entry points.",
);
process.exit(1);
}
2 changes: 1 addition & 1 deletion karma.conf.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ module.exports = function(config) {

// list of files / patterns to load in the browser
files: [
"https://cdn.jsdelivr.net/npm/systemjs@6.3.1/dist/system.js",
"https://cdn.jsdelivr.net/npm/systemjs/dist/system.js",
"browser-test/systemjs-setup.js",
{ pattern: "browser-test/test.js", watched: true, type: "module" },
{ pattern: "./**/*.*", watched: true, included: false, served: true }
Expand Down
Loading