@pwa-platform/sw-runtime 0.1.0-beta.0

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 (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/dist/build/config.d.ts +10 -0
  4. package/dist/build/config.d.ts.map +1 -0
  5. package/dist/build/config.js +40 -0
  6. package/dist/build/config.js.map +1 -0
  7. package/dist/build/index.d.ts +6 -0
  8. package/dist/build/index.d.ts.map +1 -0
  9. package/dist/build/index.js +9 -0
  10. package/dist/build/index.js.map +1 -0
  11. package/dist/build/inject.d.ts +13 -0
  12. package/dist/build/inject.d.ts.map +1 -0
  13. package/dist/build/inject.js +29 -0
  14. package/dist/build/inject.js.map +1 -0
  15. package/dist/entries/platform-worker-entry.d.ts +2 -0
  16. package/dist/entries/platform-worker-entry.d.ts.map +1 -0
  17. package/dist/entries/platform-worker-entry.js +3 -0
  18. package/dist/entries/platform-worker-entry.js.map +1 -0
  19. package/dist/entries/recovery-worker-entry.d.ts +2 -0
  20. package/dist/entries/recovery-worker-entry.d.ts.map +1 -0
  21. package/dist/entries/recovery-worker-entry.js +4 -0
  22. package/dist/entries/recovery-worker-entry.js.map +1 -0
  23. package/dist/messages/index.d.ts +49 -0
  24. package/dist/messages/index.d.ts.map +1 -0
  25. package/dist/messages/index.js +90 -0
  26. package/dist/messages/index.js.map +1 -0
  27. package/dist/push-payload/index.d.ts +46 -0
  28. package/dist/push-payload/index.d.ts.map +1 -0
  29. package/dist/push-payload/index.js +115 -0
  30. package/dist/push-payload/index.js.map +1 -0
  31. package/dist/recovery-worker/index.d.ts +18 -0
  32. package/dist/recovery-worker/index.d.ts.map +1 -0
  33. package/dist/recovery-worker/index.js +60 -0
  34. package/dist/recovery-worker/index.js.map +1 -0
  35. package/dist/shared/config.d.ts +71 -0
  36. package/dist/shared/config.d.ts.map +1 -0
  37. package/dist/shared/config.js +216 -0
  38. package/dist/shared/config.js.map +1 -0
  39. package/dist/shared/path-match.d.ts +20 -0
  40. package/dist/shared/path-match.d.ts.map +1 -0
  41. package/dist/shared/path-match.js +56 -0
  42. package/dist/shared/path-match.js.map +1 -0
  43. package/dist/worker/decide.d.ts +65 -0
  44. package/dist/worker/decide.d.ts.map +1 -0
  45. package/dist/worker/decide.js +65 -0
  46. package/dist/worker/decide.js.map +1 -0
  47. package/dist/worker/handlers.d.ts +16 -0
  48. package/dist/worker/handlers.d.ts.map +1 -0
  49. package/dist/worker/handlers.js +196 -0
  50. package/dist/worker/handlers.js.map +1 -0
  51. package/dist/worker/index.d.ts +17 -0
  52. package/dist/worker/index.d.ts.map +1 -0
  53. package/dist/worker/index.js +16 -0
  54. package/dist/worker/index.js.map +1 -0
  55. package/dist/worker/notification-target.d.ts +9 -0
  56. package/dist/worker/notification-target.d.ts.map +1 -0
  57. package/dist/worker/notification-target.js +28 -0
  58. package/dist/worker/notification-target.js.map +1 -0
  59. package/dist/worker/offline-write-flush.d.ts +10 -0
  60. package/dist/worker/offline-write-flush.d.ts.map +1 -0
  61. package/dist/worker/offline-write-flush.js +32 -0
  62. package/dist/worker/offline-write-flush.js.map +1 -0
  63. package/dist/worker/offline-write-intent.d.ts +36 -0
  64. package/dist/worker/offline-write-intent.d.ts.map +1 -0
  65. package/dist/worker/offline-write-intent.js +84 -0
  66. package/dist/worker/offline-write-intent.js.map +1 -0
  67. package/dist/worker/offline-write-store.d.ts +27 -0
  68. package/dist/worker/offline-write-store.d.ts.map +1 -0
  69. package/dist/worker/offline-write-store.js +152 -0
  70. package/dist/worker/offline-write-store.js.map +1 -0
  71. package/package.json +65 -0
@@ -0,0 +1,152 @@
1
+ const STORE_NAME = "writes";
2
+ /**
3
+ * The worker-owned IndexedDB queue. Every admission decision and write shares one readwrite transaction, so a
4
+ * concurrent enqueue cannot overrun a quota or turn one idempotency key into two different stored intents.
5
+ */
6
+ export function createOfflineWriteStore(config) {
7
+ return {
8
+ async enqueue(intent) {
9
+ const db = await openDatabase(config.databaseName);
10
+ try {
11
+ return await new Promise((resolve, reject) => {
12
+ const transaction = db.transaction(STORE_NAME, "readwrite");
13
+ let outcome;
14
+ transaction.oncomplete = () => {
15
+ if (outcome === undefined)
16
+ reject(new Error("offline-write transaction completed without an outcome"));
17
+ else
18
+ resolve(outcome);
19
+ };
20
+ transaction.onabort = () => reject(transaction.error ?? new Error("offline-write transaction aborted"));
21
+ transaction.onerror = () => reject(transaction.error ?? new Error("offline-write transaction failed"));
22
+ const store = transaction.objectStore(STORE_NAME);
23
+ const existing = store.get(intent.idempotencyKey);
24
+ existing.onerror = () => transaction.abort();
25
+ existing.onsuccess = () => {
26
+ const prior = existing.result;
27
+ if (prior !== undefined) {
28
+ if (sameIntent(prior, intent))
29
+ outcome = "existing";
30
+ else
31
+ reject(new Error("offline-write idempotency conflict"));
32
+ return;
33
+ }
34
+ const all = store.getAll();
35
+ all.onerror = () => transaction.abort();
36
+ all.onsuccess = () => {
37
+ const writes = all.result;
38
+ const bodyBytes = new TextEncoder().encode(intent.bodyJson).length;
39
+ const total = writes.reduce((sum, write) => sum + write.bodyBytes, 0);
40
+ if (writes.length >= config.maxEntries || total + bodyBytes > config.maxTotalBodyBytes) {
41
+ reject(new Error("offline-write quota exceeded"));
42
+ return;
43
+ }
44
+ // `Date.now()` may repeat within one transaction. Deriving the next value from this transaction's
45
+ // complete snapshot keeps FIFO order stable across worker restarts instead of falling back to key order.
46
+ const createdAt = Math.max(Date.now(), ...writes.map((write) => write.createdAt + 1));
47
+ store.put({ ...intent, createdAt, bodyBytes, deliveryState: "pending" }, intent.idempotencyKey);
48
+ outcome = "queued";
49
+ };
50
+ };
51
+ });
52
+ }
53
+ finally {
54
+ db.close();
55
+ }
56
+ },
57
+ async prepareFlush(binding) {
58
+ const db = await openDatabase(config.databaseName);
59
+ try {
60
+ return await new Promise((resolve, reject) => {
61
+ const transaction = db.transaction(STORE_NAME, "readwrite");
62
+ let selected;
63
+ transaction.oncomplete = () => selected === undefined ? reject(new Error("offline-write flush preparation incomplete")) : resolve(selected);
64
+ transaction.onabort = () => reject(transaction.error ?? new Error("offline-write flush preparation aborted"));
65
+ transaction.onerror = () => reject(transaction.error ?? new Error("offline-write flush preparation failed"));
66
+ const store = transaction.objectStore(STORE_NAME);
67
+ const all = store.getAll();
68
+ all.onerror = () => transaction.abort();
69
+ all.onsuccess = () => {
70
+ const writes = all.result;
71
+ const stale = writes.filter((write) => write.sessionBinding !== binding);
72
+ for (const write of stale)
73
+ store.delete(write.idempotencyKey);
74
+ selected = {
75
+ writes: writes
76
+ .filter((write) => write.sessionBinding === binding && write.deliveryState === "pending")
77
+ .sort((left, right) => left.createdAt - right.createdAt),
78
+ purged: stale.length,
79
+ };
80
+ };
81
+ });
82
+ }
83
+ finally {
84
+ db.close();
85
+ }
86
+ },
87
+ async remove(idempotencyKey) {
88
+ const db = await openDatabase(config.databaseName);
89
+ try {
90
+ await new Promise((resolve, reject) => {
91
+ const transaction = db.transaction(STORE_NAME, "readwrite");
92
+ transaction.oncomplete = () => resolve();
93
+ transaction.onabort = () => reject(transaction.error ?? new Error("offline-write delete aborted"));
94
+ transaction.onerror = () => reject(transaction.error ?? new Error("offline-write delete failed"));
95
+ transaction.objectStore(STORE_NAME).delete(idempotencyKey);
96
+ });
97
+ }
98
+ finally {
99
+ db.close();
100
+ }
101
+ },
102
+ async markFailed(idempotencyKey, state) {
103
+ const db = await openDatabase(config.databaseName);
104
+ try {
105
+ await new Promise((resolve, reject) => {
106
+ const transaction = db.transaction(STORE_NAME, "readwrite");
107
+ transaction.oncomplete = () => resolve();
108
+ transaction.onabort = () => reject(transaction.error ?? new Error("offline-write state update aborted"));
109
+ transaction.onerror = () => reject(transaction.error ?? new Error("offline-write state update failed"));
110
+ const store = transaction.objectStore(STORE_NAME);
111
+ const existing = store.get(idempotencyKey);
112
+ existing.onerror = () => transaction.abort();
113
+ existing.onsuccess = () => {
114
+ const write = existing.result;
115
+ if (write === undefined) {
116
+ transaction.abort();
117
+ return;
118
+ }
119
+ store.put({ ...write, deliveryState: state }, idempotencyKey);
120
+ };
121
+ });
122
+ }
123
+ finally {
124
+ db.close();
125
+ }
126
+ },
127
+ clear: () => deleteDatabase(config.databaseName),
128
+ };
129
+ }
130
+ function sameIntent(stored, intent) {
131
+ return stored.targetId === intent.targetId && stored.path === intent.path && stored.bodyJson === intent.bodyJson && stored.sessionBinding === intent.sessionBinding;
132
+ }
133
+ function openDatabase(databaseName) {
134
+ return new Promise((resolve, reject) => {
135
+ const request = indexedDB.open(databaseName, 1);
136
+ request.onupgradeneeded = () => {
137
+ request.result.createObjectStore(STORE_NAME);
138
+ };
139
+ request.onsuccess = () => resolve(request.result);
140
+ request.onerror = () => reject(request.error ?? new Error("offline-write database unavailable"));
141
+ request.onblocked = () => reject(new Error("offline-write database blocked"));
142
+ });
143
+ }
144
+ function deleteDatabase(databaseName) {
145
+ return new Promise((resolve, reject) => {
146
+ const request = indexedDB.deleteDatabase(databaseName);
147
+ request.onsuccess = () => resolve();
148
+ request.onerror = () => reject(request.error ?? new Error("offline-write database deletion failed"));
149
+ request.onblocked = () => reject(new Error("offline-write database deletion blocked"));
150
+ });
151
+ }
152
+ //# sourceMappingURL=offline-write-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offline-write-store.js","sourceRoot":"","sources":["../../src/worker/offline-write-store.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "@pwa-platform/sw-runtime",
3
+ "version": "0.1.0-beta.0",
4
+ "description": "Service worker and recovery runtime for PWA Platform.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/build/index.d.ts",
10
+ "import": "./dist/build/index.js"
11
+ },
12
+ "./worker": {
13
+ "types": "./dist/worker/index.d.ts",
14
+ "import": "./dist/worker/index.js"
15
+ },
16
+ "./recovery-worker": {
17
+ "types": "./dist/recovery-worker/index.d.ts",
18
+ "import": "./dist/recovery-worker/index.js"
19
+ },
20
+ "./messages": {
21
+ "types": "./dist/messages/index.d.ts",
22
+ "import": "./dist/messages/index.js"
23
+ },
24
+ "./push-payload": {
25
+ "types": "./dist/push-payload/index.d.ts",
26
+ "import": "./dist/push-payload/index.js"
27
+ },
28
+ "./platform-worker-entry": {
29
+ "types": "./dist/entries/platform-worker-entry.d.ts",
30
+ "import": "./dist/entries/platform-worker-entry.js"
31
+ },
32
+ "./recovery-worker-entry": {
33
+ "types": "./dist/entries/recovery-worker-entry.d.ts",
34
+ "import": "./dist/entries/recovery-worker-entry.js"
35
+ }
36
+ },
37
+ "files": [
38
+ "dist"
39
+ ],
40
+ "dependencies": {
41
+ "@pwa-platform/contracts": "0.1.0-beta.0",
42
+ "@pwa-platform/engine-workbox": "0.1.0-beta.0"
43
+ },
44
+ "devDependencies": {
45
+ "@playwright/test": "1.63.0",
46
+ "@types/node": "24.13.4",
47
+ "vite": "8.3.0",
48
+ "@pwa-platform/core": "0.1.0-beta.0",
49
+ "@pwa-platform/browser-test-harness": "0.0.0"
50
+ },
51
+ "engines": {
52
+ "node": ">=22.0.0"
53
+ },
54
+ "publishConfig": {
55
+ "registry": "https://registry.npmjs.org/",
56
+ "access": "public",
57
+ "tag": "next"
58
+ },
59
+ "scripts": {
60
+ "build": "tsc --project tsconfig.build.json && tsc --project tsconfig.worker.build.json",
61
+ "test": "vitest run",
62
+ "test:browser": "playwright test",
63
+ "typecheck": "tsc --noEmit --project tsconfig.json && tsc --noEmit --project tsconfig.worker.json && tsc --noEmit --project tsconfig.browser.json"
64
+ }
65
+ }