Skip to content

Commit da1126f

Browse files
committed
fix: move from full url to ref:[pr|hash]
1 parent 854a01c commit da1126f

File tree

9 files changed

+33
-54
lines changed

9 files changed

+33
-54
lines changed

apps/svelte.dev/src/routes/(authed)/playground/[id]/+page.server.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,7 @@ export async function load({ fetch, params, url }) {
1313

1414
let version = url.searchParams.get('version') || 'latest';
1515

16-
let is_pkg_pr_new = false;
17-
18-
try {
19-
const url = new URL(version);
20-
is_pkg_pr_new = url.origin === 'https://pkg.pr.new';
21-
} catch {}
16+
let is_ref_version = version.startsWith('ref:');
2217

2318
return {
2419
gist,
@@ -32,6 +27,6 @@ export async function load({ fetch, params, url }) {
3227
}))
3328
})),
3429
version: url.searchParams.get('version') || 'latest',
35-
is_pkg_pr_new
30+
is_ref_version
3631
};
3732
}

apps/svelte.dev/src/routes/(authed)/playground/[id]/+page.svelte

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
const can_escape = browser && !$page.url.hash;
2727
2828
onMount(() => {
29-
if (version !== 'local' && !data.is_pkg_pr_new) {
29+
if (version !== 'local' && !data.is_ref_version) {
3030
fetch(`https://unpkg.com/svelte@${version}/package.json`)
3131
.then((r) => r.json())
3232
.then((pkg) => {
@@ -151,7 +151,7 @@
151151
const svelteUrl =
152152
browser && version === 'local'
153153
? `${location.origin}/playground/local`
154-
: data.is_pkg_pr_new
154+
: data.is_ref_version
155155
? version
156156
: `https://unpkg.com/svelte@${version}`;
157157
@@ -205,7 +205,6 @@
205205
{can_escape}
206206
injectedJS={mapbox_setup}
207207
{onchange}
208-
isPkgPrNew={data.is_pkg_pr_new}
209208
previewTheme={$theme.current}
210209
/>
211210
</div>

packages/editor/src/lib/Workspace.svelte.ts

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ export class Workspace {
9696
compiled = $state<Record<string, Compiled>>({});
9797

9898
#svelte_version: string;
99-
#is_pkg_pr_new: boolean;
10099
#readonly = false; // TODO do we need workspaces for readonly stuff?
101100
#files = $state.raw<Item[]>([]);
102101
#current = $state.raw() as File;
@@ -157,22 +156,19 @@ export class Workspace {
157156
files: Item[],
158157
{
159158
svelte_version = 'latest',
160-
is_pkg_pr_new = false,
161159
initial,
162160
readonly = false,
163161
onupdate,
164162
onreset
165163
}: {
166164
svelte_version?: string;
167-
is_pkg_pr_new?: boolean;
168165
initial?: string;
169166
readonly?: boolean;
170167
onupdate?: (file: File) => void;
171168
onreset?: (items: Item[]) => void;
172169
} = {}
173170
) {
174171
this.#svelte_version = svelte_version;
175-
this.#is_pkg_pr_new = is_pkg_pr_new;
176172
this.#readonly = readonly;
177173

178174
this.set(files, initial);
@@ -501,11 +497,9 @@ export class Workspace {
501497

502498
seen.push(file.name);
503499

504-
compile_file(file, this.#svelte_version, this.#is_pkg_pr_new, this.compiler_options).then(
505-
(compiled) => {
506-
this.compiled[file.name] = compiled;
507-
}
508-
);
500+
compile_file(file, this.#svelte_version, this.compiler_options).then((compiled) => {
501+
this.compiled[file.name] = compiled;
502+
});
509503
}
510504

511505
for (const key of keys) {
@@ -535,11 +529,9 @@ export class Workspace {
535529
this.modified[file.name] = true;
536530

537531
if (BROWSER && is_svelte_file(file)) {
538-
compile_file(file, this.#svelte_version, this.#is_pkg_pr_new, this.compiler_options).then(
539-
(compiled) => {
540-
this.compiled[file.name] = compiled;
541-
}
542-
);
532+
compile_file(file, this.#svelte_version, this.compiler_options).then((compiled) => {
533+
this.compiled[file.name] = compiled;
534+
});
543535
}
544536

545537
this.#onupdate(file);

packages/editor/src/lib/compile-worker/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ if (BROWSER) {
3939
export function compile_file(
4040
file: File,
4141
version: string,
42-
is_pkg_pr_new: boolean,
4342
options: { generate: 'client' | 'server'; dev: boolean }
4443
): Promise<Compiled> {
4544
// @ts-ignore
@@ -54,7 +53,7 @@ export function compile_file(
5453

5554
const file_callbacks = callbacks.get(filename)!;
5655

57-
worker.postMessage({ id, file, version, options, is_pkg_pr_new });
56+
worker.postMessage({ id, file, version, options });
5857

5958
return new Promise((fulfil) => {
6059
file_callbacks.set(id, fulfil);

packages/editor/src/lib/compile-worker/worker.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ addEventListener('message', async (event) => {
1717
if (!inited) {
1818
inited = true;
1919
const svelte_url = `https://unpkg.com/svelte@${event.data.version}`;
20-
let local_files;
20+
let local_files: Awaited<ReturnType<typeof parseTar>>;
2121
let package_json;
22-
if (event.data.is_pkg_pr_new) {
23-
const maybe_tar = await fetch(event.data.version);
22+
if (event.data.version.startsWith('ref:')) {
23+
const ref = event.data.version.substring('ref:'.length);
24+
25+
const maybe_tar = await fetch(`https://pkg.pr.new/svelte@${ref}`);
2426
if (maybe_tar.headers.get('content-type') === 'application/tar+gzip') {
2527
const buffer = await maybe_tar.arrayBuffer();
2628
local_files = await parseTar(buffer);

packages/repl/src/lib/Bundler.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,21 @@ export default class Bundler {
1212
hash: string;
1313
worker: Worker;
1414
handlers: Map<number, (data: BundleMessageData) => void>;
15-
#is_pkg_pr_new: boolean;
1615

1716
constructor({
1817
packages_url,
1918
svelte_url,
20-
onstatus,
21-
is_pkg_pr_new
19+
onstatus
2220
}: {
2321
packages_url: string;
2422
svelte_url: string;
2523
onstatus: (val: string | null) => void;
26-
is_pkg_pr_new?: boolean;
2724
}) {
2825
this.hash = `${packages_url}:${svelte_url}`;
29-
this.#is_pkg_pr_new = is_pkg_pr_new;
3026

3127
if (!workers.has(this.hash)) {
3228
const worker = new Worker();
33-
worker.postMessage({ type: 'init', packages_url, svelte_url, is_pkg_pr_new });
29+
worker.postMessage({ type: 'init', packages_url, svelte_url });
3430
workers.set(this.hash, worker);
3531
}
3632

@@ -62,8 +58,7 @@ export default class Bundler {
6258
uid,
6359
type: 'bundle',
6460
files,
65-
options,
66-
is_pkg_pr_new: this.#is_pkg_pr_new
61+
options
6762
});
6863

6964
uid += 1;

packages/repl/src/lib/Repl.svelte

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
injectedJS?: string;
2323
injectedCSS?: string;
2424
previewTheme?: 'light' | 'dark';
25-
isPkgPrNew?: boolean;
2625
onchange?: () => void;
2726
}
2827
@@ -38,8 +37,7 @@
3837
injectedJS = '',
3938
injectedCSS = '',
4039
previewTheme = 'light',
41-
onchange = () => {},
42-
isPkgPrNew
40+
onchange = () => {}
4341
}: Props = $props();
4442
4543
// TODO pass in real data
@@ -53,8 +51,7 @@
5351
5452
const workspace = new Workspace([dummy], {
5553
initial: 'App.svelte',
56-
svelte_version: isPkgPrNew ? svelteUrl : svelteUrl.split('@')[1],
57-
is_pkg_pr_new: isPkgPrNew,
54+
svelte_version: svelteUrl.startsWith('ref:') ? svelteUrl : svelteUrl.split('@')[1],
5855
onupdate() {
5956
rebundle();
6057
onchange?.();
@@ -123,7 +120,6 @@
123120
? new Bundler({
124121
packages_url: packagesUrl,
125122
svelte_url: svelteUrl,
126-
is_pkg_pr_new: isPkgPrNew,
127123
onstatus: (message) => {
128124
if (message) {
129125
// show bundler status, but only after time has elapsed, to

packages/repl/src/lib/workers/bundler/index.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,24 +33,26 @@ const ready = new Promise((f) => {
3333
});
3434

3535
let files: Map<string, () => string>;
36-
let package_json;
36+
let package_json: any;
3737

3838
self.addEventListener('message', async (event: MessageEvent<BundleMessageData>) => {
3939
switch (event.data.type) {
4040
case 'init': {
4141
({ packages_url, svelte_url } = event.data);
4242

43-
if (event.data.is_pkg_pr_new) {
44-
let local_files;
43+
if (svelte_url.startsWith('ref:')) {
44+
let local_files: Awaited<ReturnType<typeof parseTar>>;
4545

46-
const maybe_tar = await fetch(svelte_url);
46+
const ref = svelte_url.substring('ref:'.length);
47+
48+
const maybe_tar = await fetch(`https://pkg.pr.new/svelte@${ref}`);
4749
if (maybe_tar.headers.get('content-type') === 'application/tar+gzip') {
4850
const buffer = await maybe_tar.arrayBuffer();
4951
local_files = await parseTar(buffer);
5052
files = new Map(
5153
local_files.map((file) => [file.name.substring('package'.length), () => file.text])
5254
);
53-
const package_json_content = files.get('/package.json')();
55+
const package_json_content = files.get('/package.json')?.();
5456
if (package_json_content) {
5557
package_json = JSON.parse(package_json_content);
5658
}
@@ -64,17 +66,17 @@ self.addEventListener('message', async (event: MessageEvent<BundleMessageData>)
6466
// unpkg doesn't set the correct MIME type for .cjs files
6567
// https://github.com/mjackson/unpkg/issues/355
6668
const compiler =
67-
files.get('/compiler.cjs')() ??
69+
files.get('/compiler.cjs')?.() ??
6870
(await fetch(`${svelte_url}/compiler.cjs`).then((r) => r.text()));
6971
(0, eval)(compiler + '\n//# sourceURL=compiler.cjs@' + version);
7072
} else if (version.startsWith('3.')) {
7173
const compiler =
72-
files.get('/compiler.js')() ??
74+
files.get('/compiler.js')?.() ??
7375
(await fetch(`${svelte_url}/compiler.js`).then((r) => r.text()));
7476
(0, eval)(compiler + '\n//# sourceURL=compiler.js@' + version);
7577
} else {
7678
const compiler =
77-
files.get('/compiler/index.js')() ??
79+
files.get('/compiler/index.js')?.() ??
7880
(await fetch(`${svelte_url}/compiler/index.js`).then((r) => r.text()));
7981
(0, eval)(compiler + '\n//# sourceURL=compiler/index.js@' + version);
8082
}
@@ -354,7 +356,7 @@ async function get_bundle(
354356
}
355357
};
356358

357-
let pkg;
359+
let pkg: any;
358360
let pkg_url_base = 'file:';
359361
if (importee.startsWith(`svelte`)) {
360362
pkg = package_json;
@@ -381,7 +383,7 @@ async function get_bundle(
381383
const resolved_url = new URL(resolved);
382384

383385
if (resolved_url.protocol === 'file:') {
384-
return files.get(resolved_url.pathname)();
386+
return files.get(resolved_url.pathname)?.();
385387
}
386388
} catch {}
387389

packages/repl/src/lib/workers/workers.d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ export type BundleMessageData = {
5454
message: string;
5555
packages_url: string;
5656
svelte_url: string;
57-
is_pkg_pr_new: boolean;
5857
files: File[];
5958
options: CompileOptions;
6059
};

0 commit comments

Comments
 (0)