bunderstack 0.17.1 → 0.19.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 (84) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/dist/api/crud-router.d.ts +121 -0
  3. package/dist/api/crud-router.d.ts.map +1 -1
  4. package/dist/api/crud-router.js +104 -3
  5. package/dist/api/crud-router.js.map +1 -1
  6. package/dist/api/list-input-schema.d.ts +15 -0
  7. package/dist/api/list-input-schema.d.ts.map +1 -1
  8. package/dist/api/list-input-schema.js +16 -0
  9. package/dist/api/list-input-schema.js.map +1 -1
  10. package/dist/api/live-view.d.ts +14 -0
  11. package/dist/api/live-view.d.ts.map +1 -0
  12. package/dist/api/live-view.js +42 -0
  13. package/dist/api/live-view.js.map +1 -0
  14. package/dist/api/live-window.d.ts +40 -0
  15. package/dist/api/live-window.d.ts.map +1 -0
  16. package/dist/api/live-window.js +83 -0
  17. package/dist/api/live-window.js.map +1 -0
  18. package/dist/api/openapi.js +1 -1
  19. package/dist/api/openapi.js.map +1 -1
  20. package/dist/api/realtime-router.d.ts +2 -0
  21. package/dist/api/realtime-router.d.ts.map +1 -1
  22. package/dist/api/realtime-router.js +3 -0
  23. package/dist/api/realtime-router.js.map +1 -1
  24. package/dist/api/registry.d.ts.map +1 -1
  25. package/dist/api/registry.js +2 -6
  26. package/dist/api/registry.js.map +1 -1
  27. package/dist/api/storage-router.d.ts.map +1 -1
  28. package/dist/api/storage-router.js.map +1 -1
  29. package/dist/api/types.d.ts.map +1 -1
  30. package/dist/cli-skills.d.ts.map +1 -1
  31. package/dist/cli-skills.js.map +1 -1
  32. package/dist/config.d.ts +1 -1
  33. package/dist/config.d.ts.map +1 -1
  34. package/dist/config.js +1 -1
  35. package/dist/config.js.map +1 -1
  36. package/dist/crud-operations.d.ts.map +1 -1
  37. package/dist/crud-operations.js +3 -12
  38. package/dist/crud-operations.js.map +1 -1
  39. package/dist/email.d.ts.map +1 -1
  40. package/dist/email.js.map +1 -1
  41. package/dist/errors.d.ts.map +1 -1
  42. package/dist/errors.js +8 -3
  43. package/dist/errors.js.map +1 -1
  44. package/dist/handler.d.ts.map +1 -1
  45. package/dist/handler.js.map +1 -1
  46. package/dist/index.d.ts +1 -1
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +32 -16
  49. package/dist/index.js.map +1 -1
  50. package/dist/live/apply.d.ts +13 -0
  51. package/dist/live/apply.d.ts.map +1 -0
  52. package/dist/live/apply.js +32 -0
  53. package/dist/live/apply.js.map +1 -0
  54. package/dist/live/index.d.ts +48 -0
  55. package/dist/live/index.d.ts.map +1 -0
  56. package/dist/live/index.js +108 -0
  57. package/dist/live/index.js.map +1 -0
  58. package/dist/live/protocol.d.ts +44 -0
  59. package/dist/live/protocol.d.ts.map +1 -0
  60. package/dist/live/protocol.js +12 -0
  61. package/dist/live/protocol.js.map +1 -0
  62. package/dist/live/sse.d.ts +22 -0
  63. package/dist/live/sse.d.ts.map +1 -0
  64. package/dist/live/sse.js +41 -0
  65. package/dist/live/sse.js.map +1 -0
  66. package/dist/realtime/facade.d.ts.map +1 -1
  67. package/dist/realtime/facade.js.map +1 -1
  68. package/dist/realtime/filter.d.ts +34 -5
  69. package/dist/realtime/filter.d.ts.map +1 -1
  70. package/dist/realtime/filter.js +63 -26
  71. package/dist/realtime/filter.js.map +1 -1
  72. package/dist/realtime/heartbeat.d.ts +6 -0
  73. package/dist/realtime/heartbeat.d.ts.map +1 -1
  74. package/dist/realtime/heartbeat.js +1 -1
  75. package/dist/realtime/heartbeat.js.map +1 -1
  76. package/dist/storage/operations.d.ts.map +1 -1
  77. package/dist/storage/operations.js.map +1 -1
  78. package/llms.txt +3 -3
  79. package/package.json +6 -2
  80. package/skills/creating-bunderstack-apps/agents/openai.yaml +3 -3
  81. package/skills/creating-bunderstack-apps/references/application-structure.md +17 -8
  82. package/skills/migrating-to-bunderstack/SKILL.md +6 -6
  83. package/skills/migrating-to-bunderstack/agents/openai.yaml +3 -3
  84. package/skills/migrating-to-bunderstack/references/audit-checklist.md +22 -22
@@ -1 +1 @@
1
- {"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../src/realtime/facade.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,KAAK,EACX,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAA;AAE/D,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,OAAO,CACxE,OAAO,CAAC,MAAM,OAAO,CAAC,EACtB,KAAK,CACN,CAAA;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAA;IAErC,OAAO,CAAC,MAAM,SAAS,WAAW,CAAC,OAAO,CAAC,EACzC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAA;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1E,SAAS,CAAC,EAAE,iBAAiB,EAC7B,SAAS,GAAE,iBAAqD,EAChE,MAAM,CAAC,EAAE,OAAO,GACf,cAAc,CAAC,OAAO,CAAC,CA8BzB"}
1
+ {"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../src/realtime/facade.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,KAAK,EACX,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpE,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAA;AAE/D,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,OAAO,CACxE,OAAO,CAAC,MAAM,OAAO,CAAC,EACtB,KAAK,CACN,CAAA;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAA;IAErC,OAAO,CAAC,MAAM,SAAS,WAAW,CAAC,OAAO,CAAC,EACzC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAA;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1E,SAAS,CAAC,EAAE,iBAAiB,EAC7B,SAAS,GAAE,iBAAqD,EAChE,MAAM,CAAC,EAAE,OAAO,GACf,cAAc,CAAC,OAAO,CAAC,CA8BzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/realtime/facade.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,OAAO,GAGR,MAAM,aAAa,CAAA;AA2BpB;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAA6B,EAC7B,YAA+B,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAChE,MAAgB;IAEhB,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAA;IACH,CAAC;IACD,IAAI,SAAS,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAA;IACH,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;IAChD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QACxD,IAAI,OAAO,CAAC,KAAK,CAAC;YAAE,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAA;IAClE,CAAC;IAED,OAAO;QACL,OAAO,EAAE,SAAS,KAAK,SAAS;QAChC,SAAS;QACT,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM;YACjC,IAAI,CAAC,SAAS;gBAAE,OAAM;YACtB,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;YACrC,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAChC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS;gBACjD,MAAM;gBACN,MAAM,EAAE,MAA4C;aACrD,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/realtime/facade.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,OAAO,GAGR,MAAM,aAAa,CAAA;AAwBpB;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAA6B,EAC7B,YAA+B,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAChE,MAAgB;IAEhB,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAA;IACH,CAAC;IACD,IAAI,SAAS,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAA;IACH,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;IAChD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QACxD,IAAI,OAAO,CAAC,KAAK,CAAC;YAAE,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAA;IAClE,CAAC;IAED,OAAO;QACL,OAAO,EAAE,SAAS,KAAK,SAAS;QAChC,SAAS;QACT,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM;YACjC,IAAI,CAAC,SAAS;gBAAE,OAAM;YACtB,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;YACrC,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAChC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS;gBACjD,MAAM;gBACN,MAAM,EAAE,MAA4C;aACrD,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1,13 +1,42 @@
1
- import type { AccessUser, ResolvedAccess } from '../access.js';
1
+ import type { AccessUser, OperationRule, ResolvedAccess, ResolvedTableAccess } from '../access.js';
2
2
  import type { RealtimeChange } from './publisher.js';
3
+ type GetSession = () => Promise<{
4
+ user: AccessUser | null;
5
+ activeOrganizationId: string | null;
6
+ }>;
3
7
  export interface FilterRealtimeChangesOptions {
4
8
  subscriptions: readonly string[];
5
9
  access: ResolvedAccess;
6
10
  request: Request;
7
- getSession: () => Promise<{
8
- user: AccessUser | null;
9
- activeOrganizationId: string | null;
10
- }>;
11
+ getSession: GetSession;
11
12
  }
13
+ export interface FilterTableChangesOptions {
14
+ /** Events arrive under this name — the schema key they were published with. */
15
+ tableName: string;
16
+ entry: ResolvedTableAccess;
17
+ /**
18
+ * The operation right this stream reads under: `get` for a subscription to
19
+ * rows, `list` for a live view of a query.
20
+ */
21
+ rule: OperationRule;
22
+ request: Request;
23
+ getSession: GetSession;
24
+ }
25
+ /**
26
+ * Whether one change may reach this subscriber: the given right plus the read
27
+ * scope of the row, evaluated against the caller's session. The session
28
+ * resolves at most once per stream.
29
+ */
30
+ export declare function createChangeGuard(entry: ResolvedTableAccess, options: {
31
+ rule: OperationRule;
32
+ request: Request;
33
+ getSession: GetSession;
34
+ }): (change: RealtimeChange) => Promise<boolean>;
12
35
  export declare function filterRealtimeChanges(source: AsyncIterable<RealtimeChange>, options: FilterRealtimeChangesOptions): AsyncGenerator<RealtimeChange, void, void>;
36
+ /**
37
+ * The same stream narrowed to one table with its access entry known up front —
38
+ * what a live view (`GET /{table}:live`) consumes.
39
+ */
40
+ export declare function filterTableChanges(source: AsyncIterable<RealtimeChange>, options: FilterTableChangesOptions): AsyncGenerator<RealtimeChange, void, void>;
41
+ export {};
13
42
  //# sourceMappingURL=filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/realtime/filter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACf,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAQjD,MAAM,WAAW,4BAA4B;IAC3C,aAAa,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,MAAM,EAAE,cAAc,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,OAAO,CAAC;QACxB,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;QACvB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAA;KACpC,CAAC,CAAA;CACH;AAED,wBAAuB,qBAAqB,CAC1C,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,EACrC,OAAO,EAAE,4BAA4B,GACpC,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAqD5C"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/realtime/filter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,cAAc,EACd,mBAAmB,EACpB,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAIjD,KAAK,UAAU,GAAG,MAAM,OAAO,CAAC;IAC9B,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IACvB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC,CAAC,CAAA;AAEF,MAAM,WAAW,4BAA4B;IAC3C,aAAa,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,MAAM,EAAE,cAAc,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,mBAAmB,CAAA;IAC1B;;;OAGG;IACH,IAAI,EAAE,aAAa,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;CACvB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GACzE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CA6B9C;AAaD,wBAAuB,qBAAqB,CAC1C,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,EACrC,OAAO,EAAE,4BAA4B,GACpC,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAiC5C;AAED;;;GAGG;AACH,wBAAuB,kBAAkB,CACvC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,EACrC,OAAO,EAAE,yBAAyB,GACjC,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAO5C"}
@@ -1,9 +1,50 @@
1
1
  import { getEventMeta, withEventMeta } from '@orpc/server';
2
- import { checkAccess, rowMatchesScope, tableEntryForName, } from '../access.js';
3
- export async function* filterRealtimeChanges(source, options) {
4
- const subscriptions = new Set(options.subscriptions);
2
+ import { checkAccess, rowMatchesScope, tableEntryForName } from '../access.js';
3
+ /**
4
+ * Whether one change may reach this subscriber: the given right plus the read
5
+ * scope of the row, evaluated against the caller's session. The session
6
+ * resolves at most once per stream.
7
+ */
8
+ export function createChangeGuard(entry, options) {
5
9
  let sessionPromise;
6
10
  const getSession = () => (sessionPromise ??= options.getSession());
11
+ return async (change) => {
12
+ if (!entry.enabled || options.rule === 'deny')
13
+ return false;
14
+ const needsSession = options.rule !== 'public' || entry.readScope !== undefined;
15
+ const session = needsSession
16
+ ? await getSession()
17
+ : { user: null, activeOrganizationId: null };
18
+ const context = {
19
+ request: options.request,
20
+ user: session.user,
21
+ row: change.record,
22
+ session: { activeOrganizationId: session.activeOrganizationId },
23
+ };
24
+ if (!(await checkAccess(options.rule, context, entry.ownerColumn)).allowed) {
25
+ return false;
26
+ }
27
+ if (entry.readScope &&
28
+ !rowMatchesScope(change.record, entry.readScope(context))) {
29
+ return false;
30
+ }
31
+ return true;
32
+ };
33
+ }
34
+ /** Preserve publisher event metadata (ids) across the projection. */
35
+ function project(change) {
36
+ const projected = {
37
+ table: change.table,
38
+ action: change.action,
39
+ record: change.record,
40
+ };
41
+ const meta = getEventMeta(change);
42
+ return meta ? withEventMeta(projected, meta) : projected;
43
+ }
44
+ export async function* filterRealtimeChanges(source, options) {
45
+ const subscriptions = new Set(options.subscriptions);
46
+ // One guard — and therefore one cached session — per table entry.
47
+ const guards = new Map();
7
48
  for await (const change of source) {
8
49
  // Events name tables by schema key; the SQL-name lookup stays as a fallback
9
50
  // for publishers outside the CRUD path that only know the physical name.
@@ -17,32 +58,28 @@ export async function* filterRealtimeChanges(source, options) {
17
58
  !subscriptions.has(`${change.table}/${String(recordId)}`))) {
18
59
  continue;
19
60
  }
20
- if (entry.get === 'deny')
61
+ let guard = guards.get(entry);
62
+ if (!guard) {
63
+ guard = createChangeGuard(entry, { ...options, rule: entry.get });
64
+ guards.set(entry, guard);
65
+ }
66
+ if (!(await guard(change)))
21
67
  continue;
22
- const needsSession = entry.get !== 'public' || entry.readScope !== undefined;
23
- const session = needsSession
24
- ? await getSession()
25
- : { user: null, activeOrganizationId: null };
26
- const context = {
27
- request: options.request,
28
- user: session.user,
29
- row: change.record,
30
- session: { activeOrganizationId: session.activeOrganizationId },
31
- };
32
- if (!(await checkAccess(entry.get, context, entry.ownerColumn)).allowed) {
68
+ yield project(change);
69
+ }
70
+ }
71
+ /**
72
+ * The same stream narrowed to one table with its access entry known up front —
73
+ * what a live view (`GET /{table}:live`) consumes.
74
+ */
75
+ export async function* filterTableChanges(source, options) {
76
+ const guard = createChangeGuard(options.entry, options);
77
+ for await (const change of source) {
78
+ if (change.table !== options.tableName)
33
79
  continue;
34
- }
35
- if (entry.readScope &&
36
- !rowMatchesScope(change.record, entry.readScope(context))) {
80
+ if (!(await guard(change)))
37
81
  continue;
38
- }
39
- const projected = {
40
- table: change.table,
41
- action: change.action,
42
- record: change.record,
43
- };
44
- const meta = getEventMeta(change);
45
- yield meta ? withEventMeta(projected, meta) : projected;
82
+ yield project(change);
46
83
  }
47
84
  }
48
85
  //# sourceMappingURL=filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/realtime/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAQ1D,OAAO,EACL,WAAW,EACX,eAAe,EACf,iBAAiB,GAClB,MAAM,WAAW,CAAA;AAYlB,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,qBAAqB,CAC1C,MAAqC,EACrC,OAAqC;IAErC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IACpD,IAAI,cAES,CAAA;IACb,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,CAAC,cAAc,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IAElE,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;QAClC,4EAA4E;QAC5E,yEAAyE;QACzE,MAAM,KAAK,GACT,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;YAChC,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACjD,IAAI,CAAC,KAAK,EAAE,OAAO;YAAE,SAAQ;QAE7B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAA;QACjC,IACE,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;YAChC,CAAC,QAAQ,IAAI,IAAI;gBACf,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAC5D,CAAC;YACD,SAAQ;QACV,CAAC;QACD,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM;YAAE,SAAQ;QAElC,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAA;QAC5E,MAAM,OAAO,GAAG,YAAY;YAC1B,CAAC,CAAC,MAAM,UAAU,EAAE;YACpB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAA;QAC9C,MAAM,OAAO,GAAG;YACd,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,EAAE,MAAM,CAAC,MAAM;YAClB,OAAO,EAAE,EAAE,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE;SAChE,CAAA;QACD,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACxE,SAAQ;QACV,CAAC;QACD,IACE,KAAK,CAAC,SAAS;YACf,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EACzD,CAAC;YACD,SAAQ;QACV,CAAC;QAED,MAAM,SAAS,GAAmB;YAChC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAA;QACD,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACzD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/realtime/filter.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,12 @@
1
1
  export declare const REALTIME_HEARTBEAT_INTERVAL_MS = 5000;
2
+ /**
3
+ * A transport-only event. `intervalMs` is the cadence it is sent at, so a
4
+ * client can size its own dead-stream timeout from the server's real setting
5
+ * instead of hardcoding a constant that drifts from it.
6
+ */
2
7
  export type RealtimeHeartbeat = {
3
8
  type: 'heartbeat';
9
+ intervalMs: number;
4
10
  };
5
11
  /**
6
12
  * Emits a transport-only event whenever the source has been idle for an
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/realtime/heartbeat.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,OAAQ,CAAA;AAEnD,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAA;AAOrD;;;;GAIG;AACH,wBAAuB,qBAAqB,CAAC,CAAC,EAC5C,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EACxB,OAAO,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACrD,cAAc,CAAC,CAAC,GAAG,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,CA8DnD"}
1
+ {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/realtime/heartbeat.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,OAAQ,CAAA;AAEnD;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAA;AAOzE;;;;GAIG;AACH,wBAAuB,qBAAqB,CAAC,CAAC,EAC5C,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EACxB,OAAO,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACrD,cAAc,CAAC,CAAC,GAAG,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,CA8DnD"}
@@ -44,7 +44,7 @@ export async function* withRealtimeHeartbeat(source, options) {
44
44
  break;
45
45
  current = getState();
46
46
  if (current.status === 'pending') {
47
- yield { type: 'heartbeat' };
47
+ yield { type: 'heartbeat', intervalMs };
48
48
  continue;
49
49
  }
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/realtime/heartbeat.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,CAAA;AASnD;;;;GAIG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,qBAAqB,CAC1C,MAAwB,EACxB,OAAsD;IAEtD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,CAAC,EACD,OAAO,CAAC,UAAU,IAAI,8BAA8B,CACrD,CAAA;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAA;IAC/C,IAAI,KAAK,GAAmB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IACjD,IAAI,IAA8B,CAAA;IAClC,MAAM,QAAQ,GAAG,GAAmB,EAAE,CAAC,KAAK,CAAA;IAE5C,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,KAAK,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;QAC7B,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CACvB,CAAC,MAAM,EAAE,EAAE;YACT,KAAK,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;YACnC,IAAI,EAAE,EAAE,CAAA;QACV,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;YACjB,KAAK,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;YAClC,IAAI,EAAE,EAAE,CAAA;QACV,CAAC,CACF,CAAA;IACH,CAAC,CAAA;IAED,WAAW,EAAE,CAAA;IACb,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAChC,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAA;YACxB,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAClC,IAAI,OAAO,GAAG,KAAK,CAAA;oBACnB,MAAM,MAAM,GAAG,GAAG,EAAE;wBAClB,IAAI,OAAO;4BAAE,OAAM;wBACnB,OAAO,GAAG,IAAI,CAAA;wBACd,YAAY,CAAC,KAAK,CAAC,CAAA;wBACnB,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;wBACpD,OAAO,EAAE,CAAA;oBACX,CAAC,CAAA;oBACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;oBAC5C,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;oBACjE,IAAI,GAAG,MAAM,CAAA;gBACf,CAAC,CAAC,CAAA;gBACF,IAAI,GAAG,SAAS,CAAA;gBAEhB,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;oBAAE,MAAK;gBAClC,OAAO,GAAG,QAAQ,EAAE,CAAA;gBACpB,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACjC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;oBAC3B,SAAQ;gBACV,CAAC;YACH,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO;gBAAE,MAAM,OAAO,CAAC,KAAK,CAAA;YACnD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI;gBAAE,MAAK;YAE9B,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA;YAC1B,WAAW,EAAE,CAAA;QACf,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,GAAG,SAAS,CAAA;QAChB,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAA;IAC3B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/realtime/heartbeat.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,CAAA;AAcnD;;;;GAIG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,qBAAqB,CAC1C,MAAwB,EACxB,OAAsD;IAEtD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,CAAC,EACD,OAAO,CAAC,UAAU,IAAI,8BAA8B,CACrD,CAAA;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAA;IAC/C,IAAI,KAAK,GAAmB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IACjD,IAAI,IAA8B,CAAA;IAClC,MAAM,QAAQ,GAAG,GAAmB,EAAE,CAAC,KAAK,CAAA;IAE5C,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,KAAK,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;QAC7B,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CACvB,CAAC,MAAM,EAAE,EAAE;YACT,KAAK,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;YACnC,IAAI,EAAE,EAAE,CAAA;QACV,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;YACjB,KAAK,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;YAClC,IAAI,EAAE,EAAE,CAAA;QACV,CAAC,CACF,CAAA;IACH,CAAC,CAAA;IAED,WAAW,EAAE,CAAA;IACb,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAChC,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAA;YACxB,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAClC,IAAI,OAAO,GAAG,KAAK,CAAA;oBACnB,MAAM,MAAM,GAAG,GAAG,EAAE;wBAClB,IAAI,OAAO;4BAAE,OAAM;wBACnB,OAAO,GAAG,IAAI,CAAA;wBACd,YAAY,CAAC,KAAK,CAAC,CAAA;wBACnB,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;wBACpD,OAAO,EAAE,CAAA;oBACX,CAAC,CAAA;oBACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;oBAC5C,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;oBACjE,IAAI,GAAG,MAAM,CAAA;gBACf,CAAC,CAAC,CAAA;gBACF,IAAI,GAAG,SAAS,CAAA;gBAEhB,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;oBAAE,MAAK;gBAClC,OAAO,GAAG,QAAQ,EAAE,CAAA;gBACpB,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACjC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAA;oBACvC,SAAQ;gBACV,CAAC;YACH,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO;gBAAE,MAAM,OAAO,CAAC,KAAK,CAAA;YACnD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI;gBAAE,MAAK;YAE9B,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA;YAC1B,WAAW,EAAE,CAAA;QACf,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,GAAG,SAAS,CAAA;QAChB,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAA;IAC3B,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/storage/operations.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,WAAW,CAAA;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAkBvD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3B,OAAO,EAAE;QAAE,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CACjD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,EAAE,EAAE,KAAK,CAAA;IACT,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACpC;IACE,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,KAAK,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAEL,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C;IACE,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAgEL,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB;8BAYvD,MAAM,QACZ;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,WACxC,uBAAuB,GAC/B,OAAO,CAAC,mBAAmB,CAAC;uBAgDjB,MAAM,QACZ,IAAI,WACD,uBAAuB;;;;;8BAsDpB,MAAM,MACd,MAAM,WACD,uBAAuB;;;;yBAuDpB,MAAM,MACd,MAAM,SACH,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WACpB,uBAAuB,GAC/B,OAAO,CAAC,eAAe,CAAC;uBAqFb,MAAM,MACd,MAAM,WACD,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC;EAWnB;AAED,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/storage/operations.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,WAAW,CAAA;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAkBvD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3B,OAAO,EAAE;QAAE,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CACjD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,EAAE,EAAE,KAAK,CAAA;IACT,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACpC;IACE,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,KAAK,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAEL,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C;IACE,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAgEL,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB;8BAYvD,MAAM,QACZ;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,WACxC,uBAAuB,GAC/B,OAAO,CAAC,mBAAmB,CAAC;uBAgDjB,MAAM,QACZ,IAAI,WACD,uBAAuB;;;;;8BAsDpB,MAAM,MACd,MAAM,WACD,uBAAuB;;;;yBAuDpB,MAAM,MACd,MAAM,SACH,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WACpB,uBAAuB,GAC/B,OAAO,CAAC,eAAe,CAAC;uBAsFb,MAAM,MACd,MAAM,WACD,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC;EAWnB;AAED,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/storage/operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/storage/operations.ts"],"names":[],"mappings":"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"}
package/llms.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  BUNDERSTACK
2
2
 
3
3
  A batteries-included backend framework for Bun. Version 0.17 (beta).
4
- Docs: https://bunderstack.dev/docs
4
+ Docs: https://bunderstack.kcrz.dev/docs
5
5
  This file is written for coding agents. It is dense on purpose.
6
6
 
7
7
  WHAT IT IS
@@ -13,7 +13,7 @@ subscriptions, and a health check live in the same oRPC graph, reachable both
13
13
  as typed RPC and as ordinary HTTP.
14
14
 
15
15
  Stack: Bun, Drizzle (+ drizzle-kit), Better Auth, oRPC v2, libSQL or Postgres,
16
- sharp. Validation accepts any Standard Schema library; generated schemas use
16
+ Bun.Image. Validation accepts any Standard Schema library; generated schemas use
17
17
  Valibot. There is no Hono, no tRPC, and no Zod requirement.
18
18
 
19
19
  Packages: bunderstack (server), bunderstack-query (client + TanStack Query),
@@ -303,7 +303,7 @@ STORAGE
303
303
  }
304
304
 
305
305
  Canonical URL: /api/files/{bucket}/{+path}. transforms: true enables on-the-fly
306
- image derivatives through sharp. app.storage exposes delete, bucket, sweep,
306
+ image derivatives through Bun.Image. app.storage exposes delete, bucket, sweep,
307
307
  getUrl, and upload for server-generated files.
308
308
 
309
309
  REALTIME
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bunderstack",
3
- "version": "0.17.1",
3
+ "version": "0.19.0",
4
4
  "description": "Batteries-included backend framework for Bun: type-safe oRPC APIs, auth, storage, realtime, jobs, email, and validated env from one config.",
5
5
  "keywords": [
6
6
  "backend",
@@ -60,6 +60,10 @@
60
60
  "types": "./dist/database/postgres-js.d.ts",
61
61
  "default": "./dist/database/postgres-js.js"
62
62
  },
63
+ "./live": {
64
+ "types": "./dist/live/index.d.ts",
65
+ "default": "./dist/live/index.js"
66
+ },
63
67
  "./provision": {
64
68
  "types": "./dist/provision.d.ts",
65
69
  "default": "./dist/provision.js"
@@ -107,7 +111,7 @@
107
111
  "db:push": "drizzle-kit push",
108
112
  "dev": "bun --hot ../../examples/standalone/server.ts",
109
113
  "prepack": "bun run build",
110
- "test": "bun test",
114
+ "test": "bun test --parallel --timeout=30000",
111
115
  "typecheck": "tsc --noEmit"
112
116
  },
113
117
  "dependencies": {
@@ -1,4 +1,4 @@
1
1
  interface:
2
- display_name: "Creating Bunderstack Apps"
3
- short_description: "Start production-ready Bunderstack applications"
4
- default_prompt: "Use $creating-bunderstack-apps to start a new Bunderstack application."
2
+ display_name: 'Creating Bunderstack Apps'
3
+ short_description: 'Start production-ready Bunderstack applications'
4
+ default_prompt: 'Use $creating-bunderstack-apps to start a new Bunderstack application.'
@@ -80,12 +80,14 @@ A base is an oRPC builder, so `.use()` produces another one. Declare a rule
80
80
  once instead of repeating it in every handler that depends on it:
81
81
 
82
82
  ```ts
83
- export const adminProcedure = o.protected.use(async ({ context, next, errors }) => {
84
- if (context.user.role !== 'admin') {
85
- throw errors.FORBIDDEN({ message: 'Admin access required' })
86
- }
87
- return next()
88
- })
83
+ export const adminProcedure = o.protected.use(
84
+ async ({ context, next, errors }) => {
85
+ if (context.user.role !== 'admin') {
86
+ throw errors.FORBIDDEN({ message: 'Admin access required' })
87
+ }
88
+ return next()
89
+ },
90
+ )
89
91
  ```
90
92
 
91
93
  `next({ context })` merges into the context and types it for everything
@@ -108,7 +110,11 @@ const instrumentation = o.middleware(async ({ context, next, path }) => {
108
110
  try {
109
111
  return await next()
110
112
  } finally {
111
- record(path.join('.'), performance.now() - startedAt, context.peekSession()?.user?.id)
113
+ record(
114
+ path.join('.'),
115
+ performance.now() - startedAt,
116
+ context.peekSession()?.user?.id,
117
+ )
112
118
  }
113
119
  })
114
120
 
@@ -145,7 +151,10 @@ cursor, and count contract the generated CRUD list uses. Apply both parts to
145
151
  your own base, which is what preserves the row type to the client:
146
152
 
147
153
  ```ts
148
- const logsList = listSpec(appLogs, { filterable: ['level'], sortable: ['createdAt'] })
154
+ const logsList = listSpec(appLogs, {
155
+ filterable: ['level'],
156
+ sortable: ['createdAt'],
157
+ })
149
158
  logs: adminProcedure.input(logsList.input).handler(logsList.handler)
150
159
  ```
151
160
 
@@ -42,12 +42,12 @@ surviving `/api/auth/$` silently keeps serving the instance you meant to delete.
42
42
  | ------------------------------------------------------------- | --------------------------------------------------------------------------------- |
43
43
  | Hand-written `ALL: ({ request }) => app.handler(request)` map | `createApiHandlers(app)` on one `/api/$` route |
44
44
  | Separate `/api/auth/$` or `/api/trpc/$` mounts | Deleted; the catch-all serves Better Auth and the unified oRPC `/api/rpc/*` graph |
45
- | tRPC router and procedure clients | Router modules over `defineApi` bases, passed as `api`, with one inferred client |
46
- | Per-file router factories taking a bag of procedures | Bases exported from one module, imported by plain router objects |
47
- | Hand-built `ORPCError` or a second error model | `errors.CODE({ message })`, or `BunderstackError` outside a handler |
48
- | Tracing attached to an application base | `middleware: [...]`, which also covers the generated CRUD |
49
- | Hand-rolled limit/offset/count blocks | `listSpec(table, options)` applied to your own base |
50
- | `any`-typed db parameters in helpers | `BunderstackDb<typeof schema>` and `BunderstackTx<typeof schema>` |
45
+ | tRPC router and procedure clients | Router modules over `defineApi` bases, passed as `api`, with one inferred client |
46
+ | Per-file router factories taking a bag of procedures | Bases exported from one module, imported by plain router objects |
47
+ | Hand-built `ORPCError` or a second error model | `errors.CODE({ message })`, or `BunderstackError` outside a handler |
48
+ | Tracing attached to an application base | `middleware: [...]`, which also covers the generated CRUD |
49
+ | Hand-rolled limit/offset/count blocks | `listSpec(table, options)` applied to your own base |
50
+ | `any`-typed db parameters in helpers | `BunderstackDb<typeof schema>` and `BunderstackTx<typeof schema>` |
51
51
  | Worker started from the web entry | `src/worker.ts` owning `app.runWorker()` |
52
52
  | `/api/cron/*` guarded by a shared secret | `jobs.cron()` with platform delivery |
53
53
  | Channel-and-payload realtime publishing | `ctx.realtime.publish(schema.tasks, 'update', row)` after the write commits |
@@ -1,4 +1,4 @@
1
1
  interface:
2
- display_name: "Migrating to Bunderstack"
3
- short_description: "Move existing applications onto Bunderstack"
4
- default_prompt: "Use $migrating-to-bunderstack to migrate this application to Bunderstack."
2
+ display_name: 'Migrating to Bunderstack'
3
+ short_description: 'Move existing applications onto Bunderstack'
4
+ default_prompt: 'Use $migrating-to-bunderstack to migrate this application to Bunderstack.'
@@ -4,28 +4,28 @@ Use this table at phase 1 to record who owns each capability today, and again
4
4
  at phase 7 before deleting anything. Fill the evidence column with a command
5
5
  output or a file reference, not an assertion.
6
6
 
7
- | Capability | Legacy shape to find | Authoritative replacement | Evidence that the move is done | Deletion gate |
8
- | ---------------------- | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
9
- | Auth instance | A second `betterAuth({...})` call, a custom session resolver, a patched `getSession` | `authConfig` passed to `createBunderstack()`; consumers import `app.auth` | One `betterAuth` construction in the repository; a protected route rejects an unauthenticated request | No importer of the legacy auth module remains |
10
- | Auth schema | Auth tables generated into a legacy schema directory | Auth tables in the one schema aggregate | Generated migration includes `user`, `session`, `account`, `verification` | Legacy schema directory has no importers |
11
- | Database client | A module constructing its own libSQL/Postgres client | `app.db`, re-exported from the entry | The entry is the only place calling the adapter factory | Legacy `db` module deleted or reduced to a re-export, then deleted |
12
- | API mounting | Hand-written handler maps; separate `/api/auth/$`, `/api/trpc/$` | `createApiHandlers(app)` on one `/api/$` | Auth and oRPC requests succeed with only the catch-all present | Shadowing route files deleted |
13
- | Custom API routes | Route files doing CRUD the framework can generate | Generated CRUD plus `defineAccess`, or an `o.protected` procedure | Access rules cover each exposed table; a cross-owner request is denied | Route file has no client callers |
14
- | Access control | Per-endpoint session checks and hand-written SQL filters | `defineAccess(schema, rules)` with `scope.read` / `scope.write` | A test asserts a second user cannot read or write the first user's rows | Manual filter helpers unused |
15
- | Jobs | BullMQ or a bespoke queue module | `jobs.define({ ... })` and `app.jobs.enqueue(...)` | Job appears in `app.manifest.background.jobs` | No queue library importer; package uninstalled |
16
- | Cron | `/api/cron/*` guarded by a shared secret | `jobs.cron({ schedule, handler })` | Cron task appears in the blueprint | Cron route file and its secret removed from env |
17
- | Worker topology | `startWorker()` or a queue bootstrap in the web entry | `src/worker.ts` calling `app.runWorker()`, run as its own process | Web entry starts no worker; the worker command exists in deployment config | Worker process is deployed before the embedded call is removed |
18
- | Realtime | Custom WebSocket server, manual pub/sub, channel-and-payload publishing | `realtime` config plus `ctx.realtime.publish(table, event, row)` after commit | A direct write reaches a subscriber with the complete row | Custom transport deleted; shared Redis configured for multi-process |
19
- | Storage | AWS or Tigris SDK wrapper, custom multipart upload route | Declared buckets and `app.storage` | Upload, signed URL, and delete work through the facade | Wrapper deleted and SDK uninstalled |
20
- | Email | Resend or SMTP SDK wrapper | `email` config and `app.email.send(...)` | A send succeeds through the configured provider | Wrapper deleted and SDK uninstalled |
21
- | Env | `createEnv()` beside the app, `dotenv`, unchecked `process.env` reads | `env` passed to `createBunderstack()`; `app.env` / `ctx.env` | Boot fails with a clear message when a required variable is missing | Legacy env module unused; `.env.example` lists names only |
22
- | API declaration | Router factories taking a bag of procedures; hand-written builder generics | `defineApi({ schema, env })` bases in one module, plain router objects, `api` object | A router module imports its base and exports an object; no factory remains | `BunderstackApiBuilder<...>` and `os.$context<...>()` deleted |
23
- | Observability | Tracing or logging attached to an application procedure base | `middleware: [...]` in the config, which also reaches the generated CRUD | A generated CRUD request produces a span or log line | Per-base instrumentation removed |
24
- | Errors | `new ORPCError(...)` at call sites, or a second error model | `errors.CODE({ message })`; `BunderstackError` outside a handler | A failing request answers the declared status, not 500 | `ORPCError` import gone from the api layer |
25
- | List endpoints | Hand-rolled limit/offset/filter/count blocks repeated per table | `listSpec(table, options)` applied to your own base | The endpoint accepts cursor and `count: true` and answers `ListResult` | Duplicated paging helpers deleted |
26
- | Migrations | Schema push against production | Committed Drizzle `migrations/`, applied by `provision(app)` | `migrations/` is under version control and applies cleanly to an empty database | Push command removed from deployment |
27
- | Deployment declaration | No `bunderstack.entry`, no blueprint | `package.json#bunderstack.entry` and a committed blueprint | `bun run blueprint:check` passes in CI | Deployment reads the blueprint rather than ad-hoc process config |
28
- | App lifetime | Tests and scripts leaking app instances | `app.close()` in a `finally` or `afterEach` | The test run exits without hanging | — |
7
+ | Capability | Legacy shape to find | Authoritative replacement | Evidence that the move is done | Deletion gate |
8
+ | ---------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
9
+ | Auth instance | A second `betterAuth({...})` call, a custom session resolver, a patched `getSession` | `authConfig` passed to `createBunderstack()`; consumers import `app.auth` | One `betterAuth` construction in the repository; a protected route rejects an unauthenticated request | No importer of the legacy auth module remains |
10
+ | Auth schema | Auth tables generated into a legacy schema directory | Auth tables in the one schema aggregate | Generated migration includes `user`, `session`, `account`, `verification` | Legacy schema directory has no importers |
11
+ | Database client | A module constructing its own libSQL/Postgres client | `app.db`, re-exported from the entry | The entry is the only place calling the adapter factory | Legacy `db` module deleted or reduced to a re-export, then deleted |
12
+ | API mounting | Hand-written handler maps; separate `/api/auth/$`, `/api/trpc/$` | `createApiHandlers(app)` on one `/api/$` | Auth and oRPC requests succeed with only the catch-all present | Shadowing route files deleted |
13
+ | Custom API routes | Route files doing CRUD the framework can generate | Generated CRUD plus `defineAccess`, or an `o.protected` procedure | Access rules cover each exposed table; a cross-owner request is denied | Route file has no client callers |
14
+ | Access control | Per-endpoint session checks and hand-written SQL filters | `defineAccess(schema, rules)` with `scope.read` / `scope.write` | A test asserts a second user cannot read or write the first user's rows | Manual filter helpers unused |
15
+ | Jobs | BullMQ or a bespoke queue module | `jobs.define({ ... })` and `app.jobs.enqueue(...)` | Job appears in `app.manifest.background.jobs` | No queue library importer; package uninstalled |
16
+ | Cron | `/api/cron/*` guarded by a shared secret | `jobs.cron({ schedule, handler })` | Cron task appears in the blueprint | Cron route file and its secret removed from env |
17
+ | Worker topology | `startWorker()` or a queue bootstrap in the web entry | `src/worker.ts` calling `app.runWorker()`, run as its own process | Web entry starts no worker; the worker command exists in deployment config | Worker process is deployed before the embedded call is removed |
18
+ | Realtime | Custom WebSocket server, manual pub/sub, channel-and-payload publishing | `realtime` config plus `ctx.realtime.publish(table, event, row)` after commit | A direct write reaches a subscriber with the complete row | Custom transport deleted; shared Redis configured for multi-process |
19
+ | Storage | AWS or Tigris SDK wrapper, custom multipart upload route | Declared buckets and `app.storage` | Upload, signed URL, and delete work through the facade | Wrapper deleted and SDK uninstalled |
20
+ | Email | Resend or SMTP SDK wrapper | `email` config and `app.email.send(...)` | A send succeeds through the configured provider | Wrapper deleted and SDK uninstalled |
21
+ | Env | `createEnv()` beside the app, `dotenv`, unchecked `process.env` reads | `env` passed to `createBunderstack()`; `app.env` / `ctx.env` | Boot fails with a clear message when a required variable is missing | Legacy env module unused; `.env.example` lists names only |
22
+ | API declaration | Router factories taking a bag of procedures; hand-written builder generics | `defineApi({ schema, env })` bases in one module, plain router objects, `api` object | A router module imports its base and exports an object; no factory remains | `BunderstackApiBuilder<...>` and `os.$context<...>()` deleted |
23
+ | Observability | Tracing or logging attached to an application procedure base | `middleware: [...]` in the config, which also reaches the generated CRUD | A generated CRUD request produces a span or log line | Per-base instrumentation removed |
24
+ | Errors | `new ORPCError(...)` at call sites, or a second error model | `errors.CODE({ message })`; `BunderstackError` outside a handler | A failing request answers the declared status, not 500 | `ORPCError` import gone from the api layer |
25
+ | List endpoints | Hand-rolled limit/offset/filter/count blocks repeated per table | `listSpec(table, options)` applied to your own base | The endpoint accepts cursor and `count: true` and answers `ListResult` | Duplicated paging helpers deleted |
26
+ | Migrations | Schema push against production | Committed Drizzle `migrations/`, applied by `provision(app)` | `migrations/` is under version control and applies cleanly to an empty database | Push command removed from deployment |
27
+ | Deployment declaration | No `bunderstack.entry`, no blueprint | `package.json#bunderstack.entry` and a committed blueprint | `bun run blueprint:check` passes in CI | Deployment reads the blueprint rather than ad-hoc process config |
28
+ | App lifetime | Tests and scripts leaking app instances | `app.close()` in a `finally` or `afterEach` | The test run exits without hanging | — |
29
29
 
30
30
  ## Reading a partially migrated application
31
31