Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor domain sharding and support bundle-manifest requests #288

Merged
merged 27 commits into from
Dec 17, 2024
Merged
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
17dc5c2
Add new package for domain sharding
benjervis Dec 16, 2024
fa3e8e5
Add note about ESM syntax
benjervis Dec 16, 2024
a0c2af1
Switch to sharding the final URL instead
benjervis Dec 16, 2024
1593beb
Bundle shards file no longer necessary
benjervis Dec 16, 2024
aaceab4
Common can be moved back to bundle-url
benjervis Dec 16, 2024
aa15b31
Pass error into getBundleURL for testing
benjervis Dec 16, 2024
7512999
Convert to JSDoc
benjervis Dec 16, 2024
116d960
Add sharding to worker urls
benjervis Dec 16, 2024
2f1c7ad
Add sharding for bundle-manifest urls
benjervis Dec 16, 2024
5fda749
Fix up the merge conflicts with JSDoc
benjervis Dec 16, 2024
54670eb
Add the window key as an exportable property
benjervis Dec 17, 2024
0ddd119
Move some tests across to the new package
benjervis Dec 17, 2024
322de97
Add the new package to JS runtime
benjervis Dec 17, 2024
f936293
Rework the tests
benjervis Dec 17, 2024
1604cba
Add an integration test for domain sharding
benjervis Dec 17, 2024
60c02dd
Add unit test to bundle-url
benjervis Dec 17, 2024
20d9db3
Remove unused imports from test
benjervis Dec 17, 2024
3ce9b1d
Fix unit tests
benjervis Dec 17, 2024
5024a44
Remove bundle-url-common from integration tests
benjervis Dec 17, 2024
7cf488a
Fix the unit tests again
benjervis Dec 17, 2024
d3fc976
Export two more of the functions
benjervis Dec 17, 2024
b64e532
Export function
benjervis Dec 17, 2024
d6b36d5
Fix tests again
benjervis Dec 17, 2024
205f130
Set a main field for new package
benjervis Dec 17, 2024
c7d1a9c
Fix integration tests
benjervis Dec 17, 2024
82fe9f3
Try logging the code in CI
benjervis Dec 17, 2024
b2f6abd
Use the content hashed file name in the assert
benjervis Dec 17, 2024
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
8 changes: 0 additions & 8 deletions packages/core/integration-tests/test/BundleGraph.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,6 @@ describe('BundleGraph', () => {
type: 'asset',
value: 'bundle-url.js',
},
{
type: 'asset',
value: 'bundle-url-common.js',
},
{
type: 'asset',
value: 'runtime.js',
Expand All @@ -82,10 +78,6 @@ describe('BundleGraph', () => {
type: 'asset',
value: 'bundle-url.js',
},
{
type: 'asset',
value: 'bundle-url-common.js',
},
{
type: 'asset',
value: 'esmodule-helpers.js',
Expand Down
1 change: 0 additions & 1 deletion packages/core/integration-tests/test/bundle-text.js
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,6 @@ describe('bundle-text:', function () {
'index.js',
'esmodule-helpers.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'js-loader.js',
],
Expand Down
24 changes: 2 additions & 22 deletions packages/core/integration-tests/test/bundler.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ describe('bundler', function () {
assets: [
'index.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'esmodule-helpers.js',
'js-loader.js',
Expand Down Expand Up @@ -161,7 +160,6 @@ describe('bundler', function () {
assets: [
'index.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'esmodule-helpers.js',
'js-loader.js',
Expand Down Expand Up @@ -256,7 +254,6 @@ describe('bundler', function () {
assets: [
'index.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'esmodule-helpers.js',
'js-loader.js',
Expand Down Expand Up @@ -348,7 +345,6 @@ describe('bundler', function () {
assets: [
'index.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'esmodule-helpers.js',
'js-loader.js',
Expand Down Expand Up @@ -467,7 +463,6 @@ describe('bundler', function () {
assets: [
'index.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'esmodule-helpers.js',
'js-loader.js',
Expand Down Expand Up @@ -546,7 +541,6 @@ describe('bundler', function () {
assets: [
'index.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'esmodule-helpers.js',
'js-loader.js',
Expand Down Expand Up @@ -625,7 +619,6 @@ describe('bundler', function () {
'inline-module.js',
'local.html',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'js-loader.js',
],
Expand Down Expand Up @@ -656,7 +649,6 @@ describe('bundler', function () {
assets: [
'index.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'css-loader.js',
'esmodule-helpers.js',
Expand Down Expand Up @@ -709,7 +701,6 @@ describe('bundler', function () {
assets: [
'index.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'css-loader.js',
'esmodule-helpers.js',
Expand Down Expand Up @@ -761,7 +752,6 @@ describe('bundler', function () {
assets: [
'index.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'css-loader.js',
'esmodule-helpers.js',
Expand Down Expand Up @@ -816,7 +806,6 @@ describe('bundler', function () {
assets: [
'index.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'css-loader.js',
'esmodule-helpers.js',
Expand Down Expand Up @@ -870,7 +859,6 @@ describe('bundler', function () {
assets: [
'index.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'css-loader.js',
'esmodule-helpers.js',
Expand Down Expand Up @@ -945,7 +933,7 @@ describe('bundler', function () {
],
},
{
assets: ['bundle-manifest.js', 'bundle-url.js', 'bundle-url-common.js'], // manifest bundle
assets: ['bundle-manifest.js', 'bundle-url.js'], // manifest bundle
},
{
assets: [
Expand All @@ -957,7 +945,7 @@ describe('bundler', function () {
],
},
{
assets: ['bundle-manifest.js', 'bundle-url.js', 'bundle-url-common.js'], // manifest bundle
assets: ['bundle-manifest.js', 'bundle-url.js'], // manifest bundle
},
{
assets: ['c.js'],
Expand Down Expand Up @@ -1014,7 +1002,6 @@ describe('bundler', function () {
'a.js',
'b.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'js-loader.js',
'esmodule-helpers.js',
Expand Down Expand Up @@ -1086,7 +1073,6 @@ describe('bundler', function () {
assets: [
'index.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'esmodule-helpers.js',
'js-loader.js',
Expand Down Expand Up @@ -1429,7 +1415,6 @@ describe('bundler', function () {
assets: [
'bundle-manifest.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'css-loader.js',
'esmodule-helpers.js',
Expand Down Expand Up @@ -1597,7 +1582,6 @@ describe('bundler', function () {
assets: [
'bundle-manifest.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'css-loader.js',
'esmodule-helpers.js',
Expand Down Expand Up @@ -1899,7 +1883,6 @@ describe('bundler', function () {
assets: [
'bundle-manifest.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'index.js',
'js-loader.js',
Expand Down Expand Up @@ -1977,7 +1960,6 @@ describe('bundler', function () {
assets: [
'bundle-manifest.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'index.js',
'js-loader.js',
Expand Down Expand Up @@ -2059,7 +2041,6 @@ describe('bundler', function () {
assets: [
'bundle-manifest.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'index.js',
'js-loader.js',
Expand Down Expand Up @@ -2348,7 +2329,6 @@ describe('bundler', function () {
'a.js',
'b.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'esmodule-helpers.js',
'js-loader.js',
Expand Down
6 changes: 0 additions & 6 deletions packages/core/integration-tests/test/cache.js
Original file line number Diff line number Diff line change
Expand Up @@ -4999,7 +4999,6 @@ describe.v2('cache', function () {
'index.js',
'c.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'js-loader.js',
'bundle-manifest.js',
Expand Down Expand Up @@ -5038,7 +5037,6 @@ describe.v2('cache', function () {
'index.js',
'c.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'js-loader.js',
'bundle-manifest.js',
Expand Down Expand Up @@ -5115,7 +5113,6 @@ describe.v2('cache', function () {
'index.js',
'c.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'js-loader.js',
'bundle-manifest.js',
Expand Down Expand Up @@ -5154,7 +5151,6 @@ describe.v2('cache', function () {
'index.js',
'c.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'js-loader.js',
'bundle-manifest.js',
Expand Down Expand Up @@ -5195,7 +5191,6 @@ describe.v2('cache', function () {
'index.js',
'c.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'js-loader.js',
'bundle-manifest.js',
Expand Down Expand Up @@ -5228,7 +5223,6 @@ describe.v2('cache', function () {
'index.js',
'c.js',
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'js-loader.js',
'bundle-manifest.js',
Expand Down
10 changes: 1 addition & 9 deletions packages/core/integration-tests/test/css.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,7 @@ describe('css', () => {
{
name: 'entry.js',
type: 'js',
assets: [
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'entry.js',
'js-loader.js',
],
assets: ['bundle-url.js', 'cacheLoader.js', 'entry.js', 'js-loader.js'],
},
{
type: 'js',
Expand All @@ -108,7 +102,6 @@ describe('css', () => {
type: 'js',
assets: [
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'css-loader.js',
'entry.js',
Expand All @@ -133,7 +126,6 @@ describe('css', () => {
name: 'index.js',
assets: [
'bundle-url.js',
'bundle-url-common.js',
'cacheLoader.js',
'css-loader.js',
'index.js',
Expand Down
110 changes: 110 additions & 0 deletions packages/core/integration-tests/test/domain-sharding.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
// @flow
import assert from 'assert';

import {fsFixture, overlayFS, bundle} from '@atlaspack/test-utils';

const maxShards = 8;

describe('domain-sharding', () => {
describe('should insert all arguments into compiled JS Runtime output', () => {
it('for bundle manifest urls', async () => {
await fsFixture(overlayFS)`
package.json:
{
"name": "bundle-sharding-test",
"targets": {
"default": {
"scopeHoist": true
}
},
"@atlaspack/runtime-js": {
"domainSharding": {
"maxShards": ${maxShards}
}
}
}

src/index.js:
async function fn() {
const a = await import('./a.js');
const b = await import('./b.js');
console.log('a', a, b);
}
fn();

src/a.js:
export const a = async () => {
const b = await import('./b');
return b + 'A';
}
src/b.js:
export const b = 'B';

yarn.lock:
`;

const bundleGraph = await bundle('src/index.js', {inputFS: overlayFS});

const mainBundle = bundleGraph
.getBundles()
.find((b) => b.name === 'index.js');
if (!mainBundle) return assert(mainBundle);

const code = await overlayFS.readFile(mainBundle.filePath, 'utf-8');
assert.ok(
code.includes(
`module.exports = require("e480067c5bab431e")(require("5091f5df3a0c51b6").shardUrl(require("5e2c91749d676db2").getBundleURL('d8wEr') + "b.437614b2.js", ${maxShards}))`,
'Expected generated code for getShardedBundleURL was not found',
),
);
});

it('for all other urls', async () => {
const maxShards = 8;
await fsFixture(overlayFS)`
package.json:
{
"name": "bundle-sharding-test",
"@atlaspack/runtime-js": {
"domainSharding": {
"maxShards": ${maxShards}
}
}
}

src/index.js:
async function fn() {
const a = await import('./a.js');
const b = await import('./b.js');
console.log('a', a, b);
}
fn();

src/a.js:
export const a = async () => {
const b = await import('./b');
return b + 'A';
}
src/b.js:
export const b = 'B';

yarn.lock:
`;

const bundleGraph = await bundle('src/index.js', {inputFS: overlayFS});

const mainBundle = bundleGraph
.getBundles()
.find((b) => b.name === 'index.js');
if (!mainBundle) return assert(mainBundle);

const code = await overlayFS.readFile(mainBundle.filePath, 'utf-8');
assert.ok(
code.includes(
`require("e3ed71d88565db").getShardedBundleURL('b.8575baaf.js', ${maxShards}) + "b.8575baaf.js"`,
),
'Expected generated code for getShardedBundleURL was not found',
);
});
});
});
Loading
Loading