bunderstack 0.25.1 → 1.0.0-beta.1

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 (167) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/auth-password.d.ts +27 -0
  3. package/dist/auth-password.d.ts.map +1 -0
  4. package/dist/auth-password.js +60 -0
  5. package/dist/auth-password.js.map +1 -0
  6. package/dist/auth.d.ts +1 -1
  7. package/dist/auth.d.ts.map +1 -1
  8. package/dist/auth.js +1 -0
  9. package/dist/auth.js.map +1 -1
  10. package/dist/backend.d.ts +3 -0
  11. package/dist/backend.d.ts.map +1 -1
  12. package/dist/backend.js +3 -1
  13. package/dist/backend.js.map +1 -1
  14. package/dist/cli.d.ts +11 -1
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +97 -2
  17. package/dist/cli.js.map +1 -1
  18. package/dist/config.d.ts +0 -8
  19. package/dist/config.d.ts.map +1 -1
  20. package/dist/config.js +0 -18
  21. package/dist/config.js.map +1 -1
  22. package/dist/crud-operations.d.ts.map +1 -1
  23. package/dist/crud-operations.js +19 -3
  24. package/dist/crud-operations.js.map +1 -1
  25. package/dist/dev/binaries.d.ts +22 -0
  26. package/dist/dev/binaries.d.ts.map +1 -0
  27. package/dist/dev/binaries.js +119 -0
  28. package/dist/dev/binaries.js.map +1 -0
  29. package/dist/dev/env.d.ts +11 -0
  30. package/dist/dev/env.d.ts.map +1 -0
  31. package/dist/dev/env.js +71 -0
  32. package/dist/dev/env.js.map +1 -0
  33. package/dist/dev/index.d.ts +45 -0
  34. package/dist/dev/index.d.ts.map +1 -0
  35. package/dist/dev/index.js +287 -0
  36. package/dist/dev/index.js.map +1 -0
  37. package/dist/dev/processes.d.ts +37 -0
  38. package/dist/dev/processes.d.ts.map +1 -0
  39. package/dist/dev/processes.js +104 -0
  40. package/dist/dev/processes.js.map +1 -0
  41. package/dist/dev/push.d.ts +2 -0
  42. package/dist/dev/push.d.ts.map +1 -0
  43. package/dist/dev/push.js +25 -0
  44. package/dist/dev/push.js.map +1 -0
  45. package/dist/env-probe.d.ts.map +1 -1
  46. package/dist/env-probe.js +0 -1
  47. package/dist/env-probe.js.map +1 -1
  48. package/dist/env.d.ts +0 -3
  49. package/dist/env.d.ts.map +1 -1
  50. package/dist/env.js +0 -7
  51. package/dist/env.js.map +1 -1
  52. package/dist/handler.d.ts +2 -0
  53. package/dist/handler.d.ts.map +1 -1
  54. package/dist/handler.js +1 -2
  55. package/dist/handler.js.map +1 -1
  56. package/dist/hosted-contract.d.ts.map +1 -1
  57. package/dist/hosted-contract.js +7 -3
  58. package/dist/hosted-contract.js.map +1 -1
  59. package/dist/index.d.ts +4 -2
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +1 -0
  62. package/dist/index.js.map +1 -1
  63. package/dist/jobs/define.d.ts +5 -0
  64. package/dist/jobs/define.d.ts.map +1 -1
  65. package/dist/jobs/define.js.map +1 -1
  66. package/dist/jobs/index.d.ts +2 -4
  67. package/dist/jobs/index.d.ts.map +1 -1
  68. package/dist/jobs/index.js +2 -3
  69. package/dist/jobs/index.js.map +1 -1
  70. package/dist/jobs/queue.d.ts +1 -0
  71. package/dist/jobs/queue.d.ts.map +1 -1
  72. package/dist/jobs/queue.js +6 -3
  73. package/dist/jobs/queue.js.map +1 -1
  74. package/dist/jobs/slots.d.ts +5 -0
  75. package/dist/jobs/slots.d.ts.map +1 -1
  76. package/dist/jobs/slots.js +12 -0
  77. package/dist/jobs/slots.js.map +1 -1
  78. package/dist/jobs/worker.d.ts +6 -0
  79. package/dist/jobs/worker.d.ts.map +1 -1
  80. package/dist/jobs/worker.js +32 -1
  81. package/dist/jobs/worker.js.map +1 -1
  82. package/dist/platform.d.ts +25 -0
  83. package/dist/platform.d.ts.map +1 -0
  84. package/dist/platform.js +24 -0
  85. package/dist/platform.js.map +1 -0
  86. package/dist/query/client.js +1 -1
  87. package/dist/query/client.js.map +1 -1
  88. package/dist/rate-limit.d.ts +2 -1
  89. package/dist/rate-limit.d.ts.map +1 -1
  90. package/dist/rate-limit.js +19 -22
  91. package/dist/rate-limit.js.map +1 -1
  92. package/dist/realtime/facade.d.ts +1 -1
  93. package/dist/realtime/facade.d.ts.map +1 -1
  94. package/dist/realtime/facade.js.map +1 -1
  95. package/dist/realtime/publisher.d.ts +0 -4
  96. package/dist/realtime/publisher.d.ts.map +1 -1
  97. package/dist/realtime/publisher.js +0 -9
  98. package/dist/realtime/publisher.js.map +1 -1
  99. package/dist/runtime.d.ts +5 -19
  100. package/dist/runtime.d.ts.map +1 -1
  101. package/dist/runtime.js +28 -102
  102. package/dist/runtime.js.map +1 -1
  103. package/dist/storage/registry.d.ts +2 -1
  104. package/dist/storage/registry.d.ts.map +1 -1
  105. package/dist/storage/registry.js +2 -2
  106. package/dist/storage/registry.js.map +1 -1
  107. package/dist/storage/s3.d.ts +11 -4
  108. package/dist/storage/s3.d.ts.map +1 -1
  109. package/dist/storage/s3.js +88 -34
  110. package/dist/storage/s3.js.map +1 -1
  111. package/dist/storage/sigv4.d.ts +24 -0
  112. package/dist/storage/sigv4.d.ts.map +1 -0
  113. package/dist/storage/sigv4.js +107 -0
  114. package/dist/storage/sigv4.js.map +1 -0
  115. package/dist/testing/fixture.d.ts.map +1 -1
  116. package/dist/testing/fixture.js +0 -3
  117. package/dist/testing/fixture.js.map +1 -1
  118. package/dist/testing/workers-fakes.d.ts +17 -0
  119. package/dist/testing/workers-fakes.d.ts.map +1 -0
  120. package/dist/testing/workers-fakes.js +98 -0
  121. package/dist/testing/workers-fakes.js.map +1 -0
  122. package/dist/typeid.d.ts +1 -0
  123. package/dist/typeid.d.ts.map +1 -1
  124. package/dist/typeid.js +34 -4
  125. package/dist/typeid.js.map +1 -1
  126. package/dist/vite.d.ts +30 -0
  127. package/dist/vite.d.ts.map +1 -0
  128. package/dist/vite.js +37 -0
  129. package/dist/vite.js.map +1 -0
  130. package/dist/workers/app.d.ts +19 -0
  131. package/dist/workers/app.d.ts.map +1 -0
  132. package/dist/workers/app.js +56 -0
  133. package/dist/workers/app.js.map +1 -0
  134. package/dist/workers/index.d.ts +21 -0
  135. package/dist/workers/index.d.ts.map +1 -0
  136. package/dist/workers/index.js +33 -0
  137. package/dist/workers/index.js.map +1 -0
  138. package/dist/workers/r2.d.ts +23 -0
  139. package/dist/workers/r2.d.ts.map +1 -0
  140. package/dist/workers/r2.js +77 -0
  141. package/dist/workers/r2.js.map +1 -0
  142. package/dist/workers/rate-limiter.d.ts +9 -0
  143. package/dist/workers/rate-limiter.d.ts.map +1 -0
  144. package/dist/workers/rate-limiter.js +22 -0
  145. package/dist/workers/rate-limiter.js.map +1 -0
  146. package/dist/workers/realtime-hub.d.ts +20 -0
  147. package/dist/workers/realtime-hub.d.ts.map +1 -0
  148. package/dist/workers/realtime-hub.js +117 -0
  149. package/dist/workers/realtime-hub.js.map +1 -0
  150. package/dist/workers/scheduler.d.ts +13 -0
  151. package/dist/workers/scheduler.d.ts.map +1 -0
  152. package/dist/workers/scheduler.js +71 -0
  153. package/dist/workers/scheduler.js.map +1 -0
  154. package/dist/workers/types.d.ts +55 -0
  155. package/dist/workers/types.d.ts.map +1 -0
  156. package/dist/workers/types.js +4 -0
  157. package/dist/workers/types.js.map +1 -0
  158. package/dist/workers/wrangler.d.ts +64 -0
  159. package/dist/workers/wrangler.d.ts.map +1 -0
  160. package/dist/workers/wrangler.js +115 -0
  161. package/dist/workers/wrangler.js.map +1 -0
  162. package/llms-full.txt +10 -1
  163. package/package.json +11 -3
  164. package/dist/jobs/runtime.d.ts +0 -17
  165. package/dist/jobs/runtime.d.ts.map +0 -1
  166. package/dist/jobs/runtime.js +0 -56
  167. package/dist/jobs/runtime.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bunderstack",
3
- "version": "0.25.1",
3
+ "version": "1.0.0-beta.1",
4
4
  "description": "Batteries-included backend framework for Bun: type-safe oRPC APIs, auth, storage, realtime, jobs, messaging, and validated env from one declaration.",
5
5
  "keywords": [
6
6
  "backend",
@@ -85,6 +85,14 @@
85
85
  "types": "./dist/testing.d.ts",
86
86
  "default": "./dist/testing.js"
87
87
  },
88
+ "./workers": {
89
+ "types": "./dist/workers/index.d.ts",
90
+ "default": "./dist/workers/index.js"
91
+ },
92
+ "./vite": {
93
+ "types": "./dist/vite.d.ts",
94
+ "default": "./dist/vite.js"
95
+ },
88
96
  "./schema": {
89
97
  "types": "./dist/schema-export.d.ts",
90
98
  "default": "./dist/schema-export.js"
@@ -180,15 +188,16 @@
180
188
  "typecheck": "tsc --noEmit"
181
189
  },
182
190
  "dependencies": {
191
+ "@noble/hashes": "^2.3.0",
183
192
  "@standard-schema/spec": "1.1.0",
184
193
  "@standardserver/core": "0.7.1",
194
+ "esbuild": "^0.28.2",
185
195
  "valibot": "1.4.2",
186
196
  "yaml": "^2.9.0"
187
197
  },
188
198
  "devDependencies": {
189
199
  "@electric-sql/pglite": ">=0.3.0",
190
200
  "@libsql/client": ">=0.14.0",
191
- "@orpc/bun": "2.0.0-beta.37",
192
201
  "@orpc/client": "2.0.0-beta.37",
193
202
  "@orpc/json-schema": "2.0.0-beta.37",
194
203
  "@orpc/openapi": "2.0.0-beta.37",
@@ -216,7 +225,6 @@
216
225
  "peerDependencies": {
217
226
  "@electric-sql/pglite": ">=0.3.0",
218
227
  "@libsql/client": ">=0.14.0",
219
- "@orpc/bun": "2.0.0-beta.37",
220
228
  "@orpc/client": "2.0.0-beta.37",
221
229
  "@orpc/json-schema": "2.0.0-beta.37",
222
230
  "@orpc/openapi": "2.0.0-beta.37",
@@ -1,17 +0,0 @@
1
- export type WorkerHandle = {
2
- readonly closed: Promise<void>;
3
- close(): Promise<void>;
4
- };
5
- export type WorkerCycleResult = {
6
- wake?: Promise<void>;
7
- };
8
- export type StartWorkerOptions = {
9
- signal?: AbortSignal;
10
- pollIntervalMs?: number;
11
- tick: (now: number) => Promise<void | WorkerCycleResult>;
12
- drain?: () => Promise<void>;
13
- onError?: (error: Error) => void;
14
- };
15
- export type RunWorkerOptions = StartWorkerOptions;
16
- export declare function startJobWorker(options: StartWorkerOptions): WorkerHandle;
17
- //# sourceMappingURL=runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/jobs/runtime.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAA;AAExD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,GAAG,iBAAiB,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;AA+BjD,wBAAgB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,YAAY,CAiCxE"}
@@ -1,56 +0,0 @@
1
- function toError(error) {
2
- return error instanceof Error ? error : new Error(String(error));
3
- }
4
- function waitForNext(ms, signal, wake, onError) {
5
- return new Promise((resolve) => {
6
- let settled = false;
7
- const timer = setTimeout(done, ms);
8
- function done() {
9
- if (settled)
10
- return;
11
- settled = true;
12
- clearTimeout(timer);
13
- signal.removeEventListener('abort', done);
14
- resolve();
15
- }
16
- signal.addEventListener('abort', done, { once: true });
17
- void wake?.then(done, (error) => {
18
- onError?.(toError(error));
19
- done();
20
- });
21
- if (signal.aborted)
22
- done();
23
- });
24
- }
25
- export function startJobWorker(options) {
26
- const controller = new AbortController();
27
- const pollIntervalMs = options.pollIntervalMs ?? 1_000;
28
- const abort = () => controller.abort();
29
- options.signal?.addEventListener('abort', abort, { once: true });
30
- if (options.signal?.aborted)
31
- abort();
32
- const closed = (async () => {
33
- try {
34
- while (!controller.signal.aborted) {
35
- let cycle = undefined;
36
- try {
37
- cycle = await options.tick(Date.now());
38
- }
39
- catch (error) {
40
- options.onError?.(toError(error));
41
- }
42
- await waitForNext(pollIntervalMs, controller.signal, cycle?.wake, options.onError);
43
- }
44
- }
45
- finally {
46
- options.signal?.removeEventListener('abort', abort);
47
- await options.drain?.();
48
- }
49
- })();
50
- const close = () => {
51
- controller.abort();
52
- return closed;
53
- };
54
- return { closed, close };
55
- }
56
- //# sourceMappingURL=runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/jobs/runtime.ts"],"names":[],"mappings":"AAiBA,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAClE,CAAC;AAED,SAAS,WAAW,CAClB,EAAU,EACV,MAAmB,EACnB,IAA+B,EAC/B,OAA6C;IAE7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAClC,SAAS,IAAI;YACX,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YACzC,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACtD,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;YAC9B,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;YACzB,IAAI,EAAE,CAAA;QACR,CAAC,CAAC,CAAA;QACF,IAAI,MAAM,CAAC,OAAO;YAAE,IAAI,EAAE,CAAA;IAC5B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAA2B;IACxD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,KAAK,CAAA;IACtD,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;IACtC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAChE,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;QAAE,KAAK,EAAE,CAAA;IAEpC,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;QACzB,IAAI,CAAC;YACH,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAClC,IAAI,KAAK,GAA6B,SAAS,CAAA;gBAC/C,IAAI,CAAC;oBACH,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;gBACxC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;gBACnC,CAAC;gBACD,MAAM,WAAW,CACf,cAAc,EACd,UAAU,CAAC,MAAM,EACjB,KAAK,EAAE,IAAI,EACX,OAAO,CAAC,OAAO,CAChB,CAAA;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YACnD,MAAM,OAAO,CAAC,KAAK,EAAE,EAAE,CAAA;QACzB,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;IACJ,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC","sourcesContent":["export type WorkerHandle = {\n readonly closed: Promise<void>\n close(): Promise<void>\n}\n\nexport type WorkerCycleResult = { wake?: Promise<void> }\n\nexport type StartWorkerOptions = {\n signal?: AbortSignal\n pollIntervalMs?: number\n tick: (now: number) => Promise<void | WorkerCycleResult>\n drain?: () => Promise<void>\n onError?: (error: Error) => void\n}\n\nexport type RunWorkerOptions = StartWorkerOptions\n\nfunction toError(error: unknown): Error {\n return error instanceof Error ? error : new Error(String(error))\n}\n\nfunction waitForNext(\n ms: number,\n signal: AbortSignal,\n wake: Promise<void> | undefined,\n onError: ((error: Error) => void) | undefined,\n): Promise<void> {\n return new Promise((resolve) => {\n let settled = false\n const timer = setTimeout(done, ms)\n function done() {\n if (settled) return\n settled = true\n clearTimeout(timer)\n signal.removeEventListener('abort', done)\n resolve()\n }\n signal.addEventListener('abort', done, { once: true })\n void wake?.then(done, (error) => {\n onError?.(toError(error))\n done()\n })\n if (signal.aborted) done()\n })\n}\n\nexport function startJobWorker(options: StartWorkerOptions): WorkerHandle {\n const controller = new AbortController()\n const pollIntervalMs = options.pollIntervalMs ?? 1_000\n const abort = () => controller.abort()\n options.signal?.addEventListener('abort', abort, { once: true })\n if (options.signal?.aborted) abort()\n\n const closed = (async () => {\n try {\n while (!controller.signal.aborted) {\n let cycle: void | WorkerCycleResult = undefined\n try {\n cycle = await options.tick(Date.now())\n } catch (error) {\n options.onError?.(toError(error))\n }\n await waitForNext(\n pollIntervalMs,\n controller.signal,\n cycle?.wake,\n options.onError,\n )\n }\n } finally {\n options.signal?.removeEventListener('abort', abort)\n await options.drain?.()\n }\n })()\n const close = () => {\n controller.abort()\n return closed\n }\n return { closed, close }\n}\n"]}