clone

a deno framework for local-first web apps that open instantly, work offline and sync when users choose

release: v0.3.1

Dami committed d67b71c
commit
d67b71c4fda1db44ab1b574a43e1a4031c3961f1
parent
57ddfa026f76467f7f2c8e845df03f7943b10f06
author
Dami <dami.etoile@gmail.com>
8 files changed, +66 -28
Mapps/reference/deno.json25++++++++++++-------------
Mapps/reference/deno.lock3+--
Mdeno.json2+-
Mpackage/create_core.ts10+++++-----
Mpackage/create_core_test.ts21+++++++++++++++++----
Mpackage/testdata/starter.snapshot.json2+-
Mpackage/version.ts2+-
Mtools/golden.ts29++++++++++++++++++++++++++++-
M apps/reference/deno.json +12 -13
@@ -2,18 +2,18 @@
22 "imports": {33 "@astrojs/check": "npm:@astrojs/check@0.9.9",44 "@astrojs/preact": "npm:@astrojs/preact@6.0.1",5- "@nzip/lofi": "jsr:@nzip/lofi@0.3.0",6- "@nzip/lofi/": "jsr:@nzip/lofi@0.3.0/",7- "@nzip/lofi/access": "jsr:@nzip/lofi@0.3.0/access",8- "@nzip/lofi/astro": "jsr:@nzip/lofi@0.3.0/astro",9- "@nzip/lofi/build": "jsr:@nzip/lofi@0.3.0/build",10- "@nzip/lofi/dev": "jsr:@nzip/lofi@0.3.0/dev",11- "@nzip/lofi/doctor": "jsr:@nzip/lofi@0.3.0/doctor",12- "@nzip/lofi/preview": "jsr:@nzip/lofi@0.3.0/preview",13- "@nzip/lofi/preact": "jsr:@nzip/lofi@0.3.0/preact",14- "@nzip/lofi/provision": "jsr:@nzip/lofi@0.3.0/provision",15- "@nzip/lofi/test": "jsr:@nzip/lofi@0.3.0/test",16- "@nzip/lofi/testing": "jsr:@nzip/lofi@0.3.0/testing",5+ "@nzip/lofi": "../../package/runtime/mod.ts",6+ "@nzip/lofi/": "../../package/",7+ "@nzip/lofi/access": "../../package/access/mod.ts",8+ "@nzip/lofi/astro": "../../package/astro/mod.ts",9+ "@nzip/lofi/build": "../../package/commands/build.ts",10+ "@nzip/lofi/dev": "../../package/commands/dev.ts",11+ "@nzip/lofi/doctor": "../../package/commands/doctor.ts",12+ "@nzip/lofi/preview": "../../package/commands/preview.ts",13+ "@nzip/lofi/preact": "../../package/preact/mod.ts",14+ "@nzip/lofi/provision": "../../package/commands/provision.ts",15+ "@nzip/lofi/test": "../../package/commands/run_tests.ts",16+ "@nzip/lofi/testing": "../../package/testing/mod.ts",1717 "astro": "npm:astro@7.0.9",1818 "astro/config": "npm:astro@7.0.9/config",1919 "jazz-tools": "npm:jazz-tools@2.0.0-alpha.53",
@@ -28,7 +28,6 @@
2828 "typescript": "npm:typescript@6.0.3",2929 "vite": "npm:vite@8.0.1"3030 },31- "links": ["../.."],3231 "nodeModulesDir": "auto",3332 "compilerOptions": {3433 "lib": ["deno.ns", "dom", "dom.iterable", "esnext"],
M apps/reference/deno.lock +1 -2
M deno.json +1 -1
M package/create_core.ts +5 -5
M package/create_core_test.ts +17 -4
@@ -99,9 +99,9 @@ Deno.test("createProject materializes the complete starter snapshot", async () =
9999 );100100 }101101 const config = JSON.parse(await Deno.readTextFile(join(result.destination, "deno.json")));102- assertEquals(config.imports["@nzip/lofi"], "jsr:@nzip/lofi@0.3.0");103- assertEquals(config.imports["@nzip/lofi/"], "jsr:@nzip/lofi@0.3.0/");104- assertEquals(config.imports["@nzip/lofi/testing"], "jsr:@nzip/lofi@0.3.0/testing");102+ assertEquals(config.imports["@nzip/lofi"], "jsr:@nzip/lofi@0.3.1");103+ assertEquals(config.imports["@nzip/lofi/"], "jsr:@nzip/lofi@0.3.1/");104+ assertEquals(config.imports["@nzip/lofi/testing"], "jsr:@nzip/lofi@0.3.1/testing");105105 const lofiSpecifiers = Object.entries(config.imports)106106 .filter(([name]) => name.startsWith("@nzip/lofi/"))107107 .map(([, specifier]) => String(specifier));
@@ -110,7 +110,7 @@ Deno.test("createProject materializes the complete starter snapshot", async () =
110110 `expected one package prefix, access, two integrations, six commands, and testing, received ${lofiSpecifiers.length}`,111111 );112112 assert(113- lofiSpecifiers.every((specifier) => specifier.startsWith("jsr:@nzip/lofi@0.3.0/")),113+ lofiSpecifiers.every((specifier) => specifier.startsWith("jsr:@nzip/lofi@0.3.1/")),114114 "generated lofi commands do not resolve through one exact package version",115115 );116116 const pngSignature = [137, 80, 78, 71, 13, 10, 26, 10];
@@ -157,6 +157,19 @@ Deno.test("package manifest and generated version stay coupled", () => {
157157 assertEquals(packageManifest.exports["./testing"], "./package/testing/mod.ts");158158 });159159 160+Deno.test("reference template uses portable explicit package paths", async () => {161+ const config = JSON.parse(162+ await Deno.readTextFile(new URL("../apps/reference/deno.json", import.meta.url)),163+ );164+ assert(!("links" in config), "reference template must not publish a Deno links override");165+ const lofiImports = Object.entries(config.imports as Record<string, string>)166+ .filter(([name]) => name === "@nzip/lofi" || name.startsWith("@nzip/lofi/"));167+ assert(168+ lofiImports.every(([, target]) => target.startsWith("../../package/")),169+ "reference template must resolve lofi through explicit local package paths",170+ );171+});172+160173 Deno.test("createProject refuses a non-empty destination without changing it", async () => {161174 const cwd = await makeTestRoot();162175 const destination = join(cwd, "taken");
M package/testdata/starter.snapshot.json +1 -1
M package/version.ts +1 -1
M tools/golden.ts +28 -1