Skip to content

Commit

Permalink
Merge pull request #62 from unjs/instance-resources
Browse files Browse the repository at this point in the history
fix: load shared resource instances
  • Loading branch information
ascorbic committed Mar 13, 2024
2 parents 3799339 + 3e9d3ff commit 72c842d
Show file tree
Hide file tree
Showing 12 changed files with 4,467 additions and 4,476 deletions.
1,419 changes: 707 additions & 712 deletions generator/runtimes/bun/data.json

Large diffs are not rendered by default.

273 changes: 134 additions & 139 deletions generator/runtimes/deno/data.json

Large diffs are not rendered by default.

1,346 changes: 673 additions & 673 deletions generator/runtimes/fastly/data.json

Large diffs are not rendered by default.

1,328 changes: 664 additions & 664 deletions generator/runtimes/llrt/data.json

Large diffs are not rendered by default.

273 changes: 134 additions & 139 deletions generator/runtimes/netlify/data.json

Large diffs are not rendered by default.

1,413 changes: 704 additions & 709 deletions generator/runtimes/node/data.json

Large diffs are not rendered by default.

1,418 changes: 709 additions & 709 deletions generator/runtimes/wasmer/data.json

Large diffs are not rendered by default.

1,413 changes: 704 additions & 709 deletions generator/runtimes/workerd/data.json

Large diffs are not rendered by default.

36 changes: 34 additions & 2 deletions generator/shared/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,15 @@ declare global {
// eslint-disable-next-line no-var
var bcd: {
addTest: (ident: string, tests: any, exposure: string[]) => void;
go: (callback: (done: TestResult[]) => void) => void;
addInstance: (
resource: string,
code: string,
options?: { callback: boolean },
) => void;
go: (
callback: (done: TestResult[]) => void,
resourceCount?: number,
) => void;
};
}

Expand All @@ -23,11 +31,35 @@ export function runTests(
setup(globalThis);
// The incoming types are problematic
const testCases = new Tests({ tests: tests as any, httpOnly: false });

const resourcesNeeded = new Set<string>();

for (const test of testCases.getTests("javascript.builtins")) {
globalThis.bcd.addTest(test.ident, test.tests, test.exposure);
}
for (const test of testCases.getTests("api", "Window", ignoreApis)) {
globalThis.bcd.addTest(test.ident, test.tests, test.exposure);
for (const resource of test.resources) {
resourcesNeeded.add(resource);
}
}
return new Promise((resolve) => globalThis.bcd.go(resolve));

for (const resource of resourcesNeeded) {
const instance = testCases.resources[resource];
if (instance.type === "instance") {
if (
instance.dependencies &&
!instance.dependencies.every((dep: string) => resourcesNeeded.has(dep))
) {
console.log("missing dependencies", instance.dependencies);
}
globalThis.bcd.addInstance(resource, instance.src, {
callback: instance.callback,
});
}
}

return new Promise((resolve) =>
globalThis.bcd.go(resolve, resourcesNeeded.size),
);
}
2 changes: 1 addition & 1 deletion packages/runtime-compat-data/data.json

Large diffs are not rendered by default.

20 changes: 1 addition & 19 deletions vendor/harness.js
Original file line number Diff line number Diff line change
Expand Up @@ -1230,25 +1230,7 @@ export default function (global) {

// Load resources
try {
// Load audio and video
var i;
var resourceMedia = document.querySelectorAll(
"#resources audio, #resources video",
);
for (i = 0; i < resourceMedia.length; i++) {
resourceMedia[i].load();
resourceMedia[i].onloadeddata = resourceLoaded;
}

// Load images
var resourceImages = document.querySelectorAll("#resources img");
for (i = 0; i < resourceImages.length; i++) {
if (resourceImages[i].complete) {
resourceLoaded();
} else {
resourceImages[i].onload = resourceLoaded;
}
}
// We don't load audio and video

// Load resources
var instanceKeys = Object.keys(reusableInstances);
Expand Down
2 changes: 2 additions & 0 deletions vendor/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ export type Resource =
| {
type: "instance";
src: string;
callback: boolean;
dependencies?: string[];
}
| {
type: "audio" | "video";
Expand Down

0 comments on commit 72c842d

Please sign in to comment.