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.
- package/CHANGELOG.md +57 -0
- package/dist/api/crud-router.d.ts +121 -0
- package/dist/api/crud-router.d.ts.map +1 -1
- package/dist/api/crud-router.js +104 -3
- package/dist/api/crud-router.js.map +1 -1
- package/dist/api/list-input-schema.d.ts +15 -0
- package/dist/api/list-input-schema.d.ts.map +1 -1
- package/dist/api/list-input-schema.js +16 -0
- package/dist/api/list-input-schema.js.map +1 -1
- package/dist/api/live-view.d.ts +14 -0
- package/dist/api/live-view.d.ts.map +1 -0
- package/dist/api/live-view.js +42 -0
- package/dist/api/live-view.js.map +1 -0
- package/dist/api/live-window.d.ts +40 -0
- package/dist/api/live-window.d.ts.map +1 -0
- package/dist/api/live-window.js +83 -0
- package/dist/api/live-window.js.map +1 -0
- package/dist/api/openapi.js +1 -1
- package/dist/api/openapi.js.map +1 -1
- package/dist/api/realtime-router.d.ts +2 -0
- package/dist/api/realtime-router.d.ts.map +1 -1
- package/dist/api/realtime-router.js +3 -0
- package/dist/api/realtime-router.js.map +1 -1
- package/dist/api/registry.d.ts.map +1 -1
- package/dist/api/registry.js +2 -6
- package/dist/api/registry.js.map +1 -1
- package/dist/api/storage-router.d.ts.map +1 -1
- package/dist/api/storage-router.js.map +1 -1
- package/dist/api/types.d.ts.map +1 -1
- package/dist/cli-skills.d.ts.map +1 -1
- package/dist/cli-skills.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/crud-operations.d.ts.map +1 -1
- package/dist/crud-operations.js +3 -12
- package/dist/crud-operations.js.map +1 -1
- package/dist/email.d.ts.map +1 -1
- package/dist/email.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +8 -3
- package/dist/errors.js.map +1 -1
- package/dist/handler.d.ts.map +1 -1
- package/dist/handler.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -16
- package/dist/index.js.map +1 -1
- package/dist/live/apply.d.ts +13 -0
- package/dist/live/apply.d.ts.map +1 -0
- package/dist/live/apply.js +32 -0
- package/dist/live/apply.js.map +1 -0
- package/dist/live/index.d.ts +48 -0
- package/dist/live/index.d.ts.map +1 -0
- package/dist/live/index.js +108 -0
- package/dist/live/index.js.map +1 -0
- package/dist/live/protocol.d.ts +44 -0
- package/dist/live/protocol.d.ts.map +1 -0
- package/dist/live/protocol.js +12 -0
- package/dist/live/protocol.js.map +1 -0
- package/dist/live/sse.d.ts +22 -0
- package/dist/live/sse.d.ts.map +1 -0
- package/dist/live/sse.js +41 -0
- package/dist/live/sse.js.map +1 -0
- package/dist/realtime/facade.d.ts.map +1 -1
- package/dist/realtime/facade.js.map +1 -1
- package/dist/realtime/filter.d.ts +34 -5
- package/dist/realtime/filter.d.ts.map +1 -1
- package/dist/realtime/filter.js +63 -26
- package/dist/realtime/filter.js.map +1 -1
- package/dist/realtime/heartbeat.d.ts +6 -0
- package/dist/realtime/heartbeat.d.ts.map +1 -1
- package/dist/realtime/heartbeat.js +1 -1
- package/dist/realtime/heartbeat.js.map +1 -1
- package/dist/storage/operations.d.ts.map +1 -1
- package/dist/storage/operations.js.map +1 -1
- package/llms.txt +3 -3
- package/package.json +6 -2
- package/skills/creating-bunderstack-apps/agents/openai.yaml +3 -3
- package/skills/creating-bunderstack-apps/references/application-structure.md +17 -8
- package/skills/migrating-to-bunderstack/SKILL.md +6 -6
- package/skills/migrating-to-bunderstack/agents/openai.yaml +3 -3
- 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,
|
|
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;
|
|
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:
|
|
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,
|
|
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"}
|
package/dist/realtime/filter.js
CHANGED
|
@@ -1,9 +1,50 @@
|
|
|
1
1
|
import { getEventMeta, withEventMeta } from '@orpc/server';
|
|
2
|
-
import { checkAccess, rowMatchesScope, tableEntryForName
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (
|
|
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;
|
|
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;
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/realtime/heartbeat.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,CAAA;
|
|
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;
|
|
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
|
-
|
|
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
|
|
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.
|
|
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:
|
|
3
|
-
short_description:
|
|
4
|
-
default_prompt:
|
|
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(
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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(
|
|
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, {
|
|
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:
|
|
3
|
-
short_description:
|
|
4
|
-
default_prompt:
|
|
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
|
|
8
|
-
| ---------------------- | ------------------------------------------------------------------------------------ |
|
|
9
|
-
| Auth instance | A second `betterAuth({...})` call, a custom session resolver, a patched `getSession` | `authConfig` passed to `createBunderstack()`; consumers import `app.auth`
|
|
10
|
-
| Auth schema | Auth tables generated into a legacy schema directory | Auth tables in the one schema aggregate
|
|
11
|
-
| Database client | A module constructing its own libSQL/Postgres client | `app.db`, re-exported from the entry
|
|
12
|
-
| API mounting | Hand-written handler maps; separate `/api/auth/$`, `/api/trpc/$` | `createApiHandlers(app)` on one `/api/$`
|
|
13
|
-
| Custom API routes | Route files doing CRUD the framework can generate | Generated CRUD plus `defineAccess`, or an `o.protected` procedure
|
|
14
|
-
| Access control | Per-endpoint session checks and hand-written SQL filters | `defineAccess(schema, rules)` with `scope.read` / `scope.write`
|
|
15
|
-
| Jobs | BullMQ or a bespoke queue module | `jobs.define({ ... })` and `app.jobs.enqueue(...)`
|
|
16
|
-
| Cron | `/api/cron/*` guarded by a shared secret | `jobs.cron({ schedule, handler })`
|
|
17
|
-
| Worker topology | `startWorker()` or a queue bootstrap in the web entry | `src/worker.ts` calling `app.runWorker()`, run as its own process
|
|
18
|
-
| Realtime | Custom WebSocket server, manual pub/sub, channel-and-payload publishing | `realtime` config plus `ctx.realtime.publish(table, event, row)` after commit
|
|
19
|
-
| Storage | AWS or Tigris SDK wrapper, custom multipart upload route | Declared buckets and `app.storage`
|
|
20
|
-
| Email | Resend or SMTP SDK wrapper | `email` config and `app.email.send(...)`
|
|
21
|
-
| Env | `createEnv()` beside the app, `dotenv`, unchecked `process.env` reads | `env` passed to `createBunderstack()`; `app.env` / `ctx.env`
|
|
22
|
-
| API declaration | Router factories taking a bag of procedures; hand-written builder generics
|
|
23
|
-
| Observability | Tracing or logging attached to an application procedure base
|
|
24
|
-
| Errors | `new ORPCError(...)` at call sites, or a second error model
|
|
25
|
-
| List endpoints | Hand-rolled limit/offset/filter/count blocks repeated per table
|
|
26
|
-
| Migrations | Schema push against production | Committed Drizzle `migrations/`, applied by `provision(app)`
|
|
27
|
-
| Deployment declaration | No `bunderstack.entry`, no blueprint | `package.json#bunderstack.entry` and a committed blueprint
|
|
28
|
-
| App lifetime | Tests and scripts leaking app instances | `app.close()` in a `finally` or `afterEach`
|
|
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
|
|