@swoff/cli 0.3.4 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +327 -26
  2. package/dist/__tests__/assemble-sw.test.js +41 -12
  3. package/dist/__tests__/assemble-sw.test.js.map +1 -1
  4. package/dist/__tests__/cli-integration.test.js +16 -18
  5. package/dist/__tests__/cli-integration.test.js.map +1 -1
  6. package/dist/__tests__/config-types.test.js +17 -26
  7. package/dist/__tests__/config-types.test.js.map +1 -1
  8. package/dist/__tests__/file-generators.test.js +71 -150
  9. package/dist/__tests__/file-generators.test.js.map +1 -1
  10. package/dist/__tests__/loader.test.js +15 -16
  11. package/dist/__tests__/loader.test.js.map +1 -1
  12. package/dist/__tests__/validator.test.js +54 -65
  13. package/dist/__tests__/validator.test.js.map +1 -1
  14. package/dist/index.js +3 -3
  15. package/dist/index.js.map +1 -1
  16. package/dist/lib/cli/help.js +6 -6
  17. package/dist/lib/cli/help.js.map +1 -1
  18. package/dist/lib/commands/add.js +19 -6
  19. package/dist/lib/commands/add.js.map +1 -1
  20. package/dist/lib/commands/clean.js +5 -0
  21. package/dist/lib/commands/clean.js.map +1 -1
  22. package/dist/lib/commands/generate-guide.js +125 -0
  23. package/dist/lib/commands/generate-guide.js.map +1 -0
  24. package/dist/lib/commands/generate.js +11 -10
  25. package/dist/lib/commands/generate.js.map +1 -1
  26. package/dist/lib/commands/info.js +135 -30
  27. package/dist/lib/commands/info.js.map +1 -1
  28. package/dist/lib/commands/init.js +6 -12
  29. package/dist/lib/commands/init.js.map +1 -1
  30. package/dist/lib/commands/validate.js +7 -3
  31. package/dist/lib/commands/validate.js.map +1 -1
  32. package/dist/lib/config/validator.js +55 -65
  33. package/dist/lib/config/validator.js.map +1 -1
  34. package/dist/lib/generators/file-generators/auth-fetch.js +29 -34
  35. package/dist/lib/generators/file-generators/auth-fetch.js.map +1 -1
  36. package/dist/lib/generators/file-generators/auth-state.js +8 -5
  37. package/dist/lib/generators/file-generators/auth-state.js.map +1 -1
  38. package/dist/lib/generators/file-generators/auth-store.js +71 -40
  39. package/dist/lib/generators/file-generators/auth-store.js.map +1 -1
  40. package/dist/lib/generators/file-generators/auth-user.js +27 -31
  41. package/dist/lib/generators/file-generators/auth-user.js.map +1 -1
  42. package/dist/lib/generators/file-generators/background-sync.js +9 -5
  43. package/dist/lib/generators/file-generators/background-sync.js.map +1 -1
  44. package/dist/lib/generators/file-generators/cache.js +7 -2
  45. package/dist/lib/generators/file-generators/cache.js.map +1 -1
  46. package/dist/lib/generators/file-generators/client-injector.js +113 -0
  47. package/dist/lib/generators/file-generators/client-injector.js.map +1 -0
  48. package/dist/lib/generators/file-generators/context.js +7 -6
  49. package/dist/lib/generators/file-generators/context.js.map +1 -1
  50. package/dist/lib/generators/file-generators/fetch-wrapper.js +170 -40
  51. package/dist/lib/generators/file-generators/fetch-wrapper.js.map +1 -1
  52. package/dist/lib/generators/file-generators/generate-hooks.js +225 -0
  53. package/dist/lib/generators/file-generators/generate-hooks.js.map +1 -0
  54. package/dist/lib/generators/file-generators/guide-generator.js +333 -0
  55. package/dist/lib/generators/file-generators/guide-generator.js.map +1 -0
  56. package/dist/lib/generators/file-generators/invalidation-tags.js +12 -10
  57. package/dist/lib/generators/file-generators/invalidation-tags.js.map +1 -1
  58. package/dist/lib/generators/file-generators/mutation-queue.js +34 -84
  59. package/dist/lib/generators/file-generators/mutation-queue.js.map +1 -1
  60. package/dist/lib/generators/file-generators/mutation-reconcile.js +57 -0
  61. package/dist/lib/generators/file-generators/mutation-reconcile.js.map +1 -0
  62. package/dist/lib/generators/file-generators/pwa-install.js +41 -9
  63. package/dist/lib/generators/file-generators/pwa-install.js.map +1 -1
  64. package/dist/lib/generators/file-generators/quick-readme.js +78 -0
  65. package/dist/lib/generators/file-generators/quick-readme.js.map +1 -0
  66. package/dist/lib/generators/file-generators/reconcile.js +7 -12
  67. package/dist/lib/generators/file-generators/reconcile.js.map +1 -1
  68. package/dist/lib/generators/file-generators/store.js +31 -21
  69. package/dist/lib/generators/file-generators/store.js.map +1 -1
  70. package/dist/lib/generators/file-generators/sw-generator-build.js +38 -17
  71. package/dist/lib/generators/file-generators/sw-generator-build.js.map +1 -1
  72. package/dist/lib/generators/file-generators/sw-injector.js +82 -111
  73. package/dist/lib/generators/file-generators/sw-injector.js.map +1 -1
  74. package/dist/lib/generators/file-generators/sw-template.js +1 -1
  75. package/dist/lib/generators/file-generators/type-definitions.js +33 -10
  76. package/dist/lib/generators/file-generators/type-definitions.js.map +1 -1
  77. package/dist/lib/generators/sw-generator.js +19 -10
  78. package/dist/lib/generators/sw-generator.js.map +1 -1
  79. package/dist/lib/generators/sw-sections/assemble-sw.js +34 -13
  80. package/dist/lib/generators/sw-sections/assemble-sw.js.map +1 -1
  81. package/dist/lib/generators/sw-sections/config-header.js +2 -2
  82. package/dist/lib/generators/sw-sections/config-header.js.map +1 -1
  83. package/dist/lib/generators/sw-sections/fetch-handler.js +25 -10
  84. package/dist/lib/generators/sw-sections/fetch-handler.js.map +1 -1
  85. package/dist/lib/generators/sw-sections/tag-management.js +25 -5
  86. package/dist/lib/generators/sw-sections/tag-management.js.map +1 -1
  87. package/dist/lib/generators/swoff-files-generator.js +10 -7
  88. package/dist/lib/generators/swoff-files-generator.js.map +1 -1
  89. package/dist/lib/shared/config-types.js +37 -26
  90. package/dist/lib/shared/config-types.js.map +1 -1
  91. package/dist/lib/utils/build-script.js +35 -0
  92. package/dist/lib/utils/build-script.js.map +1 -0
  93. package/dist/lib/utils/detect-framework.js +33 -0
  94. package/dist/lib/utils/detect-framework.js.map +1 -0
  95. package/package.json +1 -1
@@ -4,27 +4,24 @@ describe("config-types", () => {
4
4
  describe("defaultConfig", () => {
5
5
  it("has all required fields", () => {
6
6
  expect(defaultConfig).toHaveProperty("enabled");
7
- expect(defaultConfig).toHaveProperty("version");
8
- expect(defaultConfig).toHaveProperty("minSupportedVersion");
9
- expect(defaultConfig).toHaveProperty("serviceWorker");
10
7
  expect(defaultConfig).toHaveProperty("features");
11
8
  expect(defaultConfig).toHaveProperty("build");
12
9
  });
13
10
  it("has correct default values", () => {
14
11
  expect(defaultConfig.enabled).toBe(true);
15
- expect(defaultConfig.version).toBe("from-package");
16
- expect(defaultConfig.minSupportedVersion).toBe("0.0.0");
17
- expect(defaultConfig.serviceWorker.autoRegister).toBe(true);
18
- expect(defaultConfig.serviceWorker.autoActivate).toBe(false);
19
- expect(defaultConfig.serviceWorker.defaultStrategy).toBe("cache-first");
20
- expect(defaultConfig.serviceWorker.clearRuntimeOnUpdate).toBe(false);
21
- expect(defaultConfig.serviceWorker.navigationMode).toBe("spa");
22
- expect(defaultConfig.serviceWorker.spaEntry).toBe("/index.html");
12
+ expect(defaultConfig.features.serviceWorker.autoUpdate).toBe(true);
13
+ expect(defaultConfig.features.serviceWorker.autoActivate).toBe(false);
14
+ expect(defaultConfig.features.serviceWorker.defaultStrategy).toBe("cache-first");
15
+ expect(defaultConfig.features.serviceWorker.clearRuntimeOnUpdate).toBe(false);
16
+ expect(defaultConfig.features.serviceWorker.navigationMode).toBe("spa");
17
+ expect(defaultConfig.features.serviceWorker.spaEntry).toBe("/index.html");
18
+ expect(defaultConfig.features.serviceWorker.version.enabled).toBe(true);
19
+ expect(defaultConfig.features.serviceWorker.version.source).toBe("from-package");
20
+ expect(defaultConfig.features.serviceWorker.version.minSupportedVersion).toBe("0.0.0");
23
21
  expect(defaultConfig.build.outputDir).toBe("dist");
24
22
  expect(defaultConfig.build.swFilename).toBe("sw");
25
23
  expect(defaultConfig.features.pwa.enabled).toBe(true);
26
24
  expect(defaultConfig.features.pwa.preventDefaultInstall).toBe(false);
27
- expect(defaultConfig.features.indexeddb.name).toBe("app-db");
28
25
  });
29
26
  it("has all known features as booleans", () => {
30
27
  for (const feature of KNOWN_FEATURES) {
@@ -41,16 +38,9 @@ describe("config-types", () => {
41
38
  expect(typeof defaultConfig.features.pwa).toBe("object");
42
39
  expect(typeof defaultConfig.features.pwa.enabled).toBe("boolean");
43
40
  expect(typeof defaultConfig.features.pwa.preventDefaultInstall).toBe("boolean");
44
- expect(typeof defaultConfig.features.indexeddb).toBe("object");
45
- expect(typeof defaultConfig.features.indexeddb.enabled).toBe("boolean");
46
- expect(typeof defaultConfig.features.indexeddb.name).toBe("string");
47
- expect(Array.isArray(defaultConfig.features.indexeddb.stores)).toBe(true);
48
41
  });
49
42
  it("has empty strategies by default", () => {
50
- expect(defaultConfig.serviceWorker.strategies).toEqual({});
51
- });
52
- it("has empty stores by default", () => {
53
- expect(defaultConfig.features.indexeddb.stores).toEqual([]);
43
+ expect(defaultConfig.features.serviceWorker.strategies).toEqual({});
54
44
  });
55
45
  });
56
46
  describe("defaultInitConfig", () => {
@@ -58,18 +48,17 @@ describe("config-types", () => {
58
48
  expect(defaultInitConfig.$schema).toBe("https://swoff.netlify.app/schema/v1.json");
59
49
  });
60
50
  it("has default strategies for API and static", () => {
61
- expect(defaultInitConfig.serviceWorker.strategies).toEqual({
51
+ expect(defaultInitConfig.features.serviceWorker.strategies).toEqual({
62
52
  "/api/*": "network-first",
63
53
  "/static/*": "cache-first",
64
54
  });
65
55
  });
66
56
  it("has minSupportedVersion of 1.0.0", () => {
67
- expect(defaultInitConfig.minSupportedVersion).toBe("1.0.0");
57
+ expect(defaultInitConfig.features.serviceWorker.version.minSupportedVersion).toBe("1.0.0");
68
58
  });
69
59
  });
70
60
  describe("constants", () => {
71
61
  it("KNOWN_FEATURES contains only boolean features", () => {
72
- expect(KNOWN_FEATURES).toContain("versionedSw");
73
62
  expect(KNOWN_FEATURES).toContain("mutationQueue");
74
63
  expect(KNOWN_FEATURES).toContain("backgroundSync");
75
64
  expect(KNOWN_FEATURES).toContain("auth");
@@ -77,11 +66,13 @@ describe("config-types", () => {
77
66
  expect(KNOWN_FEATURES).toContain("tagInvalidation");
78
67
  expect(KNOWN_FEATURES).toContain("clientRegistration");
79
68
  expect(KNOWN_FEATURES).not.toContain("pwa");
80
- expect(KNOWN_FEATURES).not.toContain("indexeddb");
69
+ expect(KNOWN_FEATURES).not.toContain("serviceWorker");
70
+ expect(KNOWN_FEATURES).not.toContain("versionedSw");
71
+ expect(KNOWN_FEATURES).not.toContain("autoUpdate");
81
72
  });
82
- it("OBJECT_FEATURES lists pwa, indexeddb, and auth", () => {
73
+ it("OBJECT_FEATURES lists pwa, serviceWorker, and auth", () => {
83
74
  expect(OBJECT_FEATURES).toContain("pwa");
84
- expect(OBJECT_FEATURES).toContain("indexeddb");
75
+ expect(OBJECT_FEATURES).toContain("serviceWorker");
85
76
  expect(OBJECT_FEATURES).toContain("auth");
86
77
  });
87
78
  it("VALID_STRATEGIES contains all 5 strategies", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"config-types.test.js","sourceRoot":"","sources":["../../src/__tests__/config-types.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-types.test.js","sourceRoot":"","sources":["../../src/__tests__/config-types.test.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,14 @@
1
1
  import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
- import { existsSync, rmSync, readFileSync, mkdirSync, writeFileSync } from "fs";
2
+ import { existsSync, rmSync, readFileSync, mkdirSync } from "fs";
3
3
  import { join } from "path";
4
4
  import { defaultConfig } from "../lib/shared/config-types.js";
5
5
  import { generateSwTemplate } from "../lib/generators/file-generators/sw-template.js";
6
6
  import { generateSwInjector } from "../lib/generators/file-generators/sw-injector.js";
7
+ import { generateClientInjector } from "../lib/generators/file-generators/client-injector.js";
7
8
  import { generateFetchWrapper } from "../lib/generators/file-generators/fetch-wrapper.js";
8
9
  import { generateCache } from "../lib/generators/file-generators/cache.js";
9
- import { generateStore } from "../lib/generators/file-generators/store.js";
10
10
  import { generateMutationQueue } from "../lib/generators/file-generators/mutation-queue.js";
11
- import { generateReconcile } from "../lib/generators/file-generators/reconcile.js";
12
11
  import { generateBackgroundSync } from "../lib/generators/file-generators/background-sync.js";
13
- import { generateIndexedDB } from "../lib/generators/file-generators/indexeddb.js";
14
- import { generatePwaInstall } from "../lib/generators/file-generators/pwa-install.js";
15
- import { generateManifest } from "../lib/generators/file-generators/manifest.js";
16
- import { generateInvalidationTags } from "../lib/generators/file-generators/invalidation-tags.js";
17
12
  import { generateSwGeneratorBuild } from "../lib/generators/file-generators/sw-generator-build.js";
18
13
  import { generateTypeDefinitions } from "../lib/generators/file-generators/type-definitions.js";
19
14
  const testDir = "/tmp/swoff-test-generators";
@@ -21,12 +16,11 @@ function makeContext(overrides) {
21
16
  const config = {
22
17
  ...defaultConfig,
23
18
  ...overrides,
24
- serviceWorker: { ...defaultConfig.serviceWorker, ...overrides?.serviceWorker },
25
19
  features: {
26
20
  ...defaultConfig.features,
27
21
  ...overrides?.features,
28
22
  pwa: { ...defaultConfig.features.pwa, ...overrides?.features?.pwa },
29
- indexeddb: { ...defaultConfig.features.indexeddb, ...overrides?.features?.indexeddb },
23
+ serviceWorker: { ...defaultConfig.features.serviceWorker, ...overrides?.features?.serviceWorker },
30
24
  },
31
25
  build: { ...defaultConfig.build, ...overrides?.build },
32
26
  };
@@ -36,6 +30,7 @@ function makeContext(overrides) {
36
30
  swoffDir: join(testDir, "swoff"),
37
31
  ext: "js",
38
32
  generatedFiles: [],
33
+ frameworkName: "vanilla",
39
34
  };
40
35
  }
41
36
  beforeEach(() => {
@@ -51,7 +46,7 @@ describe("generateSwTemplate", () => {
51
46
  it("produces a template with placeholders", () => {
52
47
  const ctx = makeContext();
53
48
  generateSwTemplate(ctx);
54
- const content = readFileSync(join(ctx.swoffDir, "sw-template.js"), "utf8");
49
+ const content = readFileSync(join(ctx.swoffDir, "sw", "template.js"), "utf8");
55
50
  expect(content).toContain("// [[CACHE_NAME]]");
56
51
  expect(content).toContain("// [[ASSETS_LIST]]");
57
52
  expect(content).toContain("// [[AUTO_SKIP_WAITING]]");
@@ -62,17 +57,16 @@ describe("generateSwTemplate", () => {
62
57
  it("includes SWOFF.network matching default-template.ts", () => {
63
58
  const ctx = makeContext();
64
59
  generateSwTemplate(ctx);
65
- const content = readFileSync(join(ctx.swoffDir, "sw-template.js"), "utf8");
60
+ const content = readFileSync(join(ctx.swoffDir, "sw", "template.js"), "utf8");
66
61
  expect(content).toContain("network: {");
67
62
  expect(content).toContain("Network request failed");
68
63
  });
69
64
  it("includes config-driven strategy code", () => {
70
65
  const ctx = makeContext({
71
- features: { ...defaultConfig.features, tagInvalidation: true },
72
- serviceWorker: { ...defaultConfig.serviceWorker, strategies: { "/api/*": "network-first" } },
66
+ features: { ...defaultConfig.features, tagInvalidation: true, serviceWorker: { ...defaultConfig.features.serviceWorker, strategies: { "/api/*": "network-first" } } },
73
67
  });
74
68
  generateSwTemplate(ctx);
75
- const content = readFileSync(join(ctx.swoffDir, "sw-template.js"), "utf8");
69
+ const content = readFileSync(join(ctx.swoffDir, "sw", "template.js"), "utf8");
76
70
  expect(content).toContain("determineCacheStrategy");
77
71
  expect(content).toContain("fromPrecache");
78
72
  expect(content).toContain("network-first");
@@ -82,61 +76,95 @@ describe("generateSwTemplate", () => {
82
76
  describe("generateSwInjector", () => {
83
77
  it("generates JS registration with correct config values", () => {
84
78
  const ctx = makeContext({
85
- serviceWorker: { ...defaultConfig.serviceWorker, autoRegister: true, autoActivate: true },
79
+ features: { ...defaultConfig.features, clientRegistration: true, serviceWorker: { ...defaultConfig.features.serviceWorker, autoUpdate: true, autoActivate: true } },
86
80
  });
87
81
  generateSwInjector(ctx);
88
- const content = readFileSync(join(ctx.swoffDir, "sw-injector.js"), "utf8");
89
- expect(content).toContain("AUTO_REGISTER = true");
82
+ const content = readFileSync(join(ctx.swoffDir, "sw", "injector.js"), "utf8");
83
+ expect(content).toContain("AUTO_UPDATE = true");
90
84
  expect(content).toContain("AUTO_ACTIVATE = true");
91
85
  expect(content).toContain("initServiceWorker");
92
- expect(content).not.toContain("shouldRegisterSW");
93
- expect(content).toContain("shouldRegister");
86
+ expect(content).toContain("checkForUpdate");
94
87
  expect(content).toContain("handleUpdateApproved");
95
88
  expect(content).toContain("skipWaiting");
96
89
  expect(content).toContain("waitForController");
90
+ expect(content).toContain("semverCompare");
97
91
  });
98
92
  it("generates TS when ext is ts", () => {
99
93
  const ctx = makeContext();
100
94
  ctx.ext = "ts";
101
95
  generateSwInjector(ctx);
102
- expect(existsSync(join(ctx.swoffDir, "sw-injector.ts"))).toBe(true);
96
+ expect(existsSync(join(ctx.swoffDir, "sw", "injector.ts"))).toBe(true);
103
97
  });
104
- it("reflects autoRegister false", () => {
98
+ it("reflects autoUpdate false", () => {
105
99
  const ctx = makeContext({
106
- serviceWorker: { ...defaultConfig.serviceWorker, autoRegister: false },
100
+ features: { ...defaultConfig.features, clientRegistration: true, serviceWorker: { ...defaultConfig.features.serviceWorker, autoUpdate: false } },
107
101
  });
108
102
  generateSwInjector(ctx);
109
- const content = readFileSync(join(ctx.swoffDir, "sw-injector.js"), "utf8");
110
- expect(content).toContain("AUTO_REGISTER = false");
103
+ const content = readFileSync(join(ctx.swoffDir, "sw", "injector.js"), "utf8");
104
+ expect(content).toContain("AUTO_UPDATE = false");
111
105
  });
112
- it("includes PWA install listeners when pwa is enabled", () => {
113
- const ctx = makeContext();
106
+ it("generates simple injector when version is disabled", () => {
107
+ const ctx = makeContext({
108
+ features: { ...defaultConfig.features, clientRegistration: true, serviceWorker: { ...defaultConfig.features.serviceWorker, version: { ...defaultConfig.features.serviceWorker.version, enabled: false } } },
109
+ });
114
110
  generateSwInjector(ctx);
115
- const content = readFileSync(join(ctx.swoffDir, "sw-injector.js"), "utf8");
116
- expect(content).toContain("beforeinstallprompt");
117
- expect(content).toContain("appinstalled");
118
- expect(content).toContain("window.deferredInstallPrompt");
119
- expect(content).toContain("pwaInstallable");
111
+ const content = readFileSync(join(ctx.swoffDir, "sw", "injector.js"), "utf8");
112
+ expect(content).toContain("Simple Mode");
113
+ expect(content).toContain("navigator.serviceWorker.register(\"/sw.js\")");
114
+ expect(content).not.toContain("checkForUpdate");
115
+ expect(content).not.toContain("AUTO_UPDATE");
116
+ });
117
+ });
118
+ describe("generateClientInjector", () => {
119
+ it("generates orchestrator with PWA setup and SW message listener when pwa enabled", () => {
120
+ const ctx = makeContext({
121
+ features: { ...defaultConfig.features, clientRegistration: true },
122
+ });
123
+ generateClientInjector(ctx);
124
+ const content = readFileSync(join(ctx.swoffDir, "client-injector.js"), "utf8");
125
+ expect(content).toContain("initServiceWorker");
126
+ expect(content).toContain("setupPwaInstall");
127
+ expect(content).toContain("SW_PROGRESS");
128
+ expect(content).toContain("BACKGROUND_SYNC_COMPLETE");
129
+ expect(content).toContain("handleUpdateApproved");
130
+ expect(content).toContain("skipWaiting");
120
131
  });
121
132
  it("includes TAG_INVALIDATED handler when crossTabSync is enabled", () => {
122
- const ctx = makeContext();
123
- generateSwInjector(ctx);
124
- const content = readFileSync(join(ctx.swoffDir, "sw-injector.js"), "utf8");
133
+ const ctx = makeContext({
134
+ features: { ...defaultConfig.features, clientRegistration: true, crossTabSync: true },
135
+ });
136
+ generateClientInjector(ctx);
137
+ const content = readFileSync(join(ctx.swoffDir, "client-injector.js"), "utf8");
125
138
  expect(content).toContain("TAG_INVALIDATED");
126
139
  expect(content).toContain('"cache-invalidated"');
127
140
  });
141
+ it("includes setupPwaInstall and beforeinstallprompt import when pwa enabled", () => {
142
+ const ctx = makeContext({
143
+ features: { ...defaultConfig.features, clientRegistration: true },
144
+ });
145
+ generateClientInjector(ctx);
146
+ const content = readFileSync(join(ctx.swoffDir, "client-injector.js"), "utf8");
147
+ expect(content).toContain("setupPwaInstall");
148
+ expect(content).toContain("./pwa/install");
149
+ });
150
+ it("generates without sw/injector import when clientRegistration is false", () => {
151
+ const ctx = makeContext({
152
+ features: { ...defaultConfig.features, clientRegistration: false, pwa: { ...defaultConfig.features.pwa, enabled: true } },
153
+ });
154
+ generateClientInjector(ctx);
155
+ const content = readFileSync(join(ctx.swoffDir, "client-injector.js"), "utf8");
156
+ expect(content).not.toContain("swInit");
157
+ expect(content).not.toContain("./sw/injector");
158
+ expect(content).toContain("setupPwaInstall");
159
+ expect(content).toContain("No SW registration configured");
160
+ });
128
161
  });
129
162
  describe("generateFetchWrapper", () => {
130
- it("exports fetchWithCache and fetchWithCacheOrQueue", () => {
163
+ it("exports fetchWithCache", () => {
131
164
  const ctx = makeContext();
132
165
  generateFetchWrapper(ctx);
133
166
  const content = readFileSync(join(ctx.swoffDir, "fetch-wrapper.js"), "utf8");
134
167
  expect(content).toContain("fetchWithCache");
135
- expect(content).toContain("fetchWithCacheOrQueue");
136
- expect(content).toContain("inFlightRequests");
137
- expect(content).toContain("X-SW-Cache-Strategy");
138
- expect(content).toContain("X-SW-Stale");
139
- expect(content).toContain("X-SW-Cache-Tags");
140
168
  });
141
169
  });
142
170
  describe("generateCache", () => {
@@ -151,25 +179,6 @@ describe("generateCache", () => {
151
179
  expect(content).not.toContain("TAG_INVALIDATED");
152
180
  });
153
181
  });
154
- describe("generateStore", () => {
155
- it("uses database name from config", () => {
156
- const ctx = makeContext({ features: { ...defaultConfig.features, indexeddb: { enabled: true, name: "my-custom-db", stores: [] } } });
157
- generateStore(ctx);
158
- const content = readFileSync(join(ctx.swoffDir, "store.js"), "utf8");
159
- expect(content).toContain('DB_NAME = "my-custom-db"');
160
- expect(content).toContain("openAppDB");
161
- expect(content).toContain("getRecord");
162
- expect(content).toContain("putRecord");
163
- expect(content).toContain("deleteRecord");
164
- expect(content).toContain("getAllRecords");
165
- });
166
- it("defaults to app-db", () => {
167
- const ctx = makeContext();
168
- generateStore(ctx);
169
- const content = readFileSync(join(ctx.swoffDir, "store.js"), "utf8");
170
- expect(content).toContain('DB_NAME = "app-db"');
171
- });
172
- });
173
182
  describe("generateMutationQueue", () => {
174
183
  it("contains mutation queue functions", () => {
175
184
  const ctx = makeContext();
@@ -178,22 +187,10 @@ describe("generateMutationQueue", () => {
178
187
  expect(content).toContain("queueMutation");
179
188
  expect(content).toContain("processMutationQueue");
180
189
  expect(content).toContain("getPendingCount");
181
- expect(content).toContain("rollbackMutation");
182
- expect(content).toContain("reconcileRecord");
183
190
  expect(content).toContain("MAX_RETRIES");
184
191
  expect(content).toContain("swoff-queue");
185
192
  });
186
193
  });
187
- describe("generateReconcile", () => {
188
- it("exports reconcileRecord and reconcileReferences", () => {
189
- const ctx = makeContext();
190
- generateReconcile(ctx);
191
- const content = readFileSync(join(ctx.swoffDir, "reconcile.js"), "utf8");
192
- expect(content).toContain("reconcileRecord");
193
- expect(content).toContain("reconcileReferences");
194
- expect(content).toContain("$synced");
195
- });
196
- });
197
194
  describe("generateBackgroundSync", () => {
198
195
  it("contains background sync utilities", () => {
199
196
  const ctx = makeContext();
@@ -206,93 +203,17 @@ describe("generateBackgroundSync", () => {
206
203
  expect(content).toContain("sync-mutations");
207
204
  });
208
205
  });
209
- describe("generateIndexedDB", () => {
210
- it("uses database name from config", () => {
211
- const ctx = makeContext({ features: { ...defaultConfig.features, indexeddb: { enabled: true, name: "custom-db", stores: ["todos", "users"] } } });
212
- generateIndexedDB(ctx);
213
- const content = readFileSync(join(ctx.swoffDir, "indexeddb.js"), "utf8");
214
- expect(content).toContain('DB_NAME = "custom-db"');
215
- expect(content).toContain("todos");
216
- expect(content).toContain("users");
217
- expect(content).toContain("requestPersistentStorage");
218
- expect(content).toContain("monitorStorage");
219
- });
220
- it("generates placeholder when no stores configured", () => {
221
- const ctx = makeContext();
222
- generateIndexedDB(ctx);
223
- const content = readFileSync(join(ctx.swoffDir, "indexeddb.js"), "utf8");
224
- expect(content).toContain("// Create your object stores here:");
225
- });
226
- });
227
- describe("generatePwaInstall", () => {
228
- it("generates promptInstall and isInstallable utilities", () => {
229
- const ctx = makeContext();
230
- generatePwaInstall(ctx);
231
- const content = readFileSync(join(ctx.swoffDir, "pwa-install.js"), "utf8");
232
- expect(content).toContain("promptInstall");
233
- expect(content).toContain("isInstallable");
234
- expect(content).toContain("window.deferredInstallPrompt");
235
- expect(content).not.toContain("beforeinstallprompt");
236
- expect(content).not.toContain("appinstalled");
237
- });
238
- });
239
- describe("generateManifest", () => {
240
- it("creates manifest.json when public/ exists and no existing manifest", () => {
241
- const ctx = makeContext();
242
- mkdirSync(join(ctx.projectRoot, "public"), { recursive: true });
243
- generateManifest(ctx);
244
- const manifestPath = join(ctx.projectRoot, "public", "manifest.json");
245
- expect(existsSync(manifestPath)).toBe(true);
246
- const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
247
- expect(manifest.name).toBeDefined();
248
- expect(manifest.icons).toHaveLength(2);
249
- expect(manifest.display).toBe("standalone");
250
- expect(manifest.orientation).toBe("portrait-primary");
251
- expect(manifest.scope).toBe("/");
252
- expect(manifest.lang).toBe("en-US");
253
- expect(manifest.categories).toEqual(["utilities", "web"]);
254
- expect(manifest.prefer_related_applications).toBe(false);
255
- expect(manifest.display_override).toContain("window-controls-overlay");
256
- expect(ctx.generatedFiles).toContain("public/manifest.json");
257
- });
258
- it("skips when public/ directory is missing", () => {
259
- const ctx = makeContext();
260
- generateManifest(ctx);
261
- expect(ctx.generatedFiles).not.toContain("public/manifest.json");
262
- });
263
- it("skips when manifest.json already exists", () => {
264
- const ctx = makeContext();
265
- mkdirSync(join(ctx.projectRoot, "public"), { recursive: true });
266
- const manifestPath = join(ctx.projectRoot, "public", "manifest.json");
267
- writeFileSync(manifestPath, JSON.stringify({ name: "Custom" }));
268
- generateManifest(ctx);
269
- const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
270
- expect(manifest.name).toBe("Custom");
271
- expect(ctx.generatedFiles).not.toContain("public/manifest.json");
272
- });
273
- });
274
- describe("generateInvalidationTags", () => {
275
- it("exports tag generation functions", () => {
276
- const ctx = makeContext();
277
- generateInvalidationTags(ctx);
278
- const content = readFileSync(join(ctx.swoffDir, "invalidation-tags.js"), "utf8");
279
- expect(content).toContain("generateTags");
280
- expect(content).toContain("generateTagsFromMethod");
281
- expect(content).toContain("invalidateUrl");
282
- expect(content).toContain("invalidateByMethod");
283
- });
284
- });
285
206
  describe("generateSwGeneratorBuild", () => {
286
207
  it("generates build script with correct imports", () => {
287
208
  const ctx = makeContext();
288
209
  generateSwGeneratorBuild(ctx);
289
- const content = readFileSync(join(ctx.swoffDir, "sw-generator.js"), "utf8");
210
+ const content = readFileSync(join(ctx.swoffDir, "sw", "generator.js"), "utf8");
290
211
  expect(content).toContain("#!/usr/bin/env node");
291
212
  expect(content).toContain("readFileSync");
292
213
  expect(content).toContain("writeFileSync");
293
214
  expect(content).toContain("mkdirSync");
294
- expect(content).toContain("sw-template.js");
295
- expect(content).toContain("version.json");
215
+ expect(content).toContain("template.js");
216
+ expect(content).toContain("createHash");
296
217
  expect(content).not.toContain("import('fs').then");
297
218
  });
298
219
  });
@@ -1 +1 @@
1
- {"version":3,"file":"file-generators.test.js","sourceRoot":"","sources":["../../src/__tests__/file-generators.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-generators.test.js","sourceRoot":"","sources":["../../src/__tests__/file-generators.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAiB,MAAM,IAAI,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAoB,MAAM,+BAA+B,CAAC;AAGhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AAI9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,yDAAyD,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAEhG,MAAM,OAAO,GAAG,4BAA4B,CAAC;AAE7C,SAAS,WAAW,CAAC,SAAgC;IACnD,MAAM,MAAM,GAAgB;QAC1B,GAAG,aAAa;QAChB,GAAG,SAAS;QACZ,QAAQ,EAAE;YACR,GAAG,aAAa,CAAC,QAAQ;YACzB,GAAG,SAAS,EAAE,QAAQ;YACtB,GAAG,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE;YACnE,aAAa,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE;SAClG;QACD,KAAK,EAAE,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE;KACvD,CAAC;IAEF,OAAO;QACL,MAAM;QACN,WAAW,EAAE,OAAO;QACpB,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QAChC,GAAG,EAAE,IAAI;QACT,cAAc,EAAE,EAAE;QAClB,aAAa,EAAE,SAAS;KACzB,CAAC;AACJ,CAAC;AAED,UAAU,CAAC,GAAG,EAAE;IACd,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,GAAG,GAAG,WAAW,CAAC;YACtB,QAAQ,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,EAAE;SACtK,CAAC,CAAC;QACH,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACpD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,GAAG,GAAG,WAAW,CAAC;YACtB,QAAQ,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE;SACpK,CAAC,CAAC;QACH,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;QACf,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,GAAG,GAAG,WAAW,CAAC;YACtB,QAAQ,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;SACjJ,CAAC,CAAC;QACH,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,GAAG,GAAG,WAAW,CAAC;YACtB,QAAQ,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;SAC5M,CAAC,CAAC;QACH,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,8CAA8C,CAAC,CAAC;QAC1E,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,GAAG,GAAG,WAAW,CAAC;YACtB,QAAQ,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE;SAClE,CAAC,CAAC;QACH,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,GAAG,GAAG,WAAW,CAAC;YACtB,QAAQ,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;SACtF,CAAC,CAAC;QACH,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,GAAG,GAAG,WAAW,CAAC;YACtB,QAAQ,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE;SAClE,CAAC,CAAC;QACH,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,GAAG,GAAG,WAAW,CAAC;YACtB,QAAQ,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;SAC1H,CAAC,CAAC;QACH,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/E,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,aAAa,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;QACrE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,wBAAwB,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;QACf,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;QACvE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -19,18 +19,17 @@ describe("loadConfig", () => {
19
19
  expect(result.configPath).toBeNull();
20
20
  expect(result.configSource).toBe("defaults");
21
21
  expect(result.config.enabled).toBe(true);
22
- expect(result.config.version).toBe("from-package");
22
+ expect(result.config.features.serviceWorker.version.source).toBe("from-package");
23
23
  });
24
24
  it("loads JSON config", () => {
25
25
  const config = {
26
26
  enabled: true,
27
- version: "2.0.0",
28
- serviceWorker: { autoRegister: false, autoActivate: true, defaultStrategy: "network-first", strategies: {} },
29
27
  features: {
30
- versionedSw: true, mutationQueue: true,
31
- backgroundSync: false, pwa: { enabled: true, preventDefaultInstall: true }, auth: false,
28
+ serviceWorker: { version: { enabled: true, source: "manual", value: "2.0.0" }, autoUpdate: false, autoActivate: true, defaultStrategy: "network-first", strategies: {} },
29
+ mutationQueue: true,
30
+ backgroundSync: false, pwa: { enabled: true, preventDefaultInstall: true }, auth: { enabled: false, type: "bearer", refreshPath: "/api/refresh", userEndpoint: "/api/me" },
32
31
  crossTabSync: true, tagInvalidation: true,
33
- clientRegistration: true, indexeddb: { enabled: true, name: "test-db", stores: [] },
32
+ clientRegistration: true,
34
33
  },
35
34
  build: { outputDir: "build", swFilename: "service-worker" },
36
35
  };
@@ -38,38 +37,38 @@ describe("loadConfig", () => {
38
37
  const result = loadConfig(testDir);
39
38
  expect(result.configPath).toContain("swoff.config.json");
40
39
  expect(result.configSource).toBe("JSON");
41
- expect(result.config.version).toBe("2.0.0");
42
- expect(result.config.serviceWorker.autoRegister).toBe(false);
40
+ expect(result.config.features.serviceWorker.version.value).toBe("2.0.0");
41
+ expect(result.config.features.serviceWorker.autoUpdate).toBe(false);
43
42
  expect(result.config.build.outputDir).toBe("build");
44
43
  });
45
44
  it("merges user config with defaults", () => {
46
- const config = { version: "3.0.0" };
45
+ const config = { features: { serviceWorker: { version: { source: "manual", value: "3.0.0" } } } };
47
46
  writeFileSync(join(testDir, "swoff.config.json"), JSON.stringify(config));
48
47
  const result = loadConfig(testDir);
49
- expect(result.config.version).toBe("3.0.0");
48
+ expect(result.config.features.serviceWorker.version.value).toBe("3.0.0");
50
49
  expect(result.config.enabled).toBe(true); // from defaults
51
- expect(result.config.serviceWorker.autoRegister).toBe(true); // from defaults
50
+ expect(result.config.features.serviceWorker.autoUpdate).toBe(true); // from defaults
52
51
  });
53
52
  it("prefers JSON over JS config", () => {
54
- const jsonConfig = { version: "json-version" };
53
+ const jsonConfig = { features: { serviceWorker: { version: { source: "manual", value: "json-version" } } } };
55
54
  writeFileSync(join(testDir, "swoff.config.json"), JSON.stringify(jsonConfig));
56
55
  const result = loadConfig(testDir);
57
- expect(result.config.version).toBe("json-version");
56
+ expect(result.config.features.serviceWorker.version.value).toBe("json-version");
58
57
  expect(result.configSource).toBe("JSON");
59
58
  });
60
59
  it("uses explicit path when provided", () => {
61
60
  const customPath = join(testDir, "custom-config.json");
62
- const config = { version: "custom" };
61
+ const config = { features: { serviceWorker: { version: { source: "manual", value: "custom" } } } };
63
62
  writeFileSync(customPath, JSON.stringify(config));
64
63
  const result = loadConfig(testDir, customPath);
65
64
  expect(result.configPath).toBe(customPath);
66
- expect(result.config.version).toBe("custom");
65
+ expect(result.config.features.serviceWorker.version.value).toBe("custom");
67
66
  });
68
67
  it("falls back to defaults on invalid JSON", () => {
69
68
  writeFileSync(join(testDir, "swoff.config.json"), "{ invalid json }");
70
69
  const result = loadConfig(testDir);
71
70
  expect(result.configSource).toBe("defaults");
72
- expect(result.config.version).toBe("from-package");
71
+ expect(result.config.features.serviceWorker.version.source).toBe("from-package");
73
72
  });
74
73
  });
75
74
  //# sourceMappingURL=loader.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.test.js","sourceRoot":"","sources":["../../src/__tests__/loader.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.test.js","sourceRoot":"","sources":["../../src/__tests__/loader.test.ts"],"names":[],"mappings":"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"}