bunderstack 0.21.1 → 0.22.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 (133) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +14 -10
  3. package/dist/api/builder.d.ts +2 -2
  4. package/dist/api/builder.js +1 -1
  5. package/dist/api/builder.js.map +1 -1
  6. package/dist/api/context.d.ts +1 -1
  7. package/dist/api/context.d.ts.map +1 -1
  8. package/dist/api/context.js.map +1 -1
  9. package/dist/auth.d.ts +8 -0
  10. package/dist/auth.d.ts.map +1 -1
  11. package/dist/auth.js +14 -0
  12. package/dist/auth.js.map +1 -1
  13. package/dist/backend-internals.d.ts +32 -0
  14. package/dist/backend-internals.d.ts.map +1 -0
  15. package/dist/backend-internals.js +2 -0
  16. package/dist/backend-internals.js.map +1 -0
  17. package/dist/backend.d.ts +26 -0
  18. package/dist/backend.d.ts.map +1 -0
  19. package/dist/backend.js +53 -0
  20. package/dist/backend.js.map +1 -0
  21. package/dist/blueprint-generator.d.ts.map +1 -1
  22. package/dist/blueprint-generator.js +41 -51
  23. package/dist/blueprint-generator.js.map +1 -1
  24. package/dist/config.d.ts +0 -6
  25. package/dist/config.d.ts.map +1 -1
  26. package/dist/config.js.map +1 -1
  27. package/dist/database/adapter.d.ts +10 -3
  28. package/dist/database/adapter.d.ts.map +1 -1
  29. package/dist/database/adapter.js.map +1 -1
  30. package/dist/database/bun-sql.d.ts.map +1 -1
  31. package/dist/database/bun-sql.js +1 -3
  32. package/dist/database/bun-sql.js.map +1 -1
  33. package/dist/database/bun-sqlite.d.ts +8 -0
  34. package/dist/database/bun-sqlite.d.ts.map +1 -0
  35. package/dist/database/bun-sqlite.js +56 -0
  36. package/dist/database/bun-sqlite.js.map +1 -0
  37. package/dist/database/libsql.d.ts.map +1 -1
  38. package/dist/database/libsql.js +25 -3
  39. package/dist/database/libsql.js.map +1 -1
  40. package/dist/database/pglite.d.ts.map +1 -1
  41. package/dist/database/pglite.js +25 -4
  42. package/dist/database/pglite.js.map +1 -1
  43. package/dist/database/postgres-js.d.ts.map +1 -1
  44. package/dist/database/postgres-js.js +1 -3
  45. package/dist/database/postgres-js.js.map +1 -1
  46. package/dist/db.d.ts +1 -2
  47. package/dist/db.d.ts.map +1 -1
  48. package/dist/db.js +5 -3
  49. package/dist/db.js.map +1 -1
  50. package/dist/email.d.ts +3 -1
  51. package/dist/email.d.ts.map +1 -1
  52. package/dist/email.js +9 -2
  53. package/dist/email.js.map +1 -1
  54. package/dist/env.d.ts +1 -1
  55. package/dist/env.d.ts.map +1 -1
  56. package/dist/env.js +1 -4
  57. package/dist/env.js.map +1 -1
  58. package/dist/index.d.ts +3 -108
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +1 -484
  61. package/dist/index.js.map +1 -1
  62. package/dist/jobs/define.d.ts +1 -1
  63. package/dist/jobs/define.d.ts.map +1 -1
  64. package/dist/jobs/define.js.map +1 -1
  65. package/dist/jobs/index.js +1 -1
  66. package/dist/jobs/index.js.map +1 -1
  67. package/dist/jobs/queue.d.ts +1 -1
  68. package/dist/jobs/queue.d.ts.map +1 -1
  69. package/dist/jobs/queue.js +1 -2
  70. package/dist/jobs/queue.js.map +1 -1
  71. package/dist/jobs/worker.d.ts +9 -0
  72. package/dist/jobs/worker.d.ts.map +1 -1
  73. package/dist/jobs/worker.js +32 -3
  74. package/dist/jobs/worker.js.map +1 -1
  75. package/dist/provision-internals.d.ts +1 -1
  76. package/dist/provision-internals.js +1 -1
  77. package/dist/provision-internals.js.map +1 -1
  78. package/dist/provision.d.ts +2 -0
  79. package/dist/provision.d.ts.map +1 -1
  80. package/dist/provision.js +24 -3
  81. package/dist/provision.js.map +1 -1
  82. package/dist/query/infer.d.ts +1 -1
  83. package/dist/query/infer.d.ts.map +1 -1
  84. package/dist/query/infer.js.map +1 -1
  85. package/dist/runtime.d.ts +149 -0
  86. package/dist/runtime.d.ts.map +1 -0
  87. package/dist/runtime.js +522 -0
  88. package/dist/runtime.js.map +1 -0
  89. package/dist/schema-export-pg.js +1 -1
  90. package/dist/schema-export-pg.js.map +1 -1
  91. package/dist/storage/background.d.ts +3 -0
  92. package/dist/storage/background.d.ts.map +1 -0
  93. package/dist/storage/background.js +3 -0
  94. package/dist/storage/background.js.map +1 -0
  95. package/dist/testing/auth.d.ts +57 -0
  96. package/dist/testing/auth.d.ts.map +1 -0
  97. package/dist/testing/auth.js +51 -0
  98. package/dist/testing/auth.js.map +1 -0
  99. package/dist/testing/client.d.ts +6 -0
  100. package/dist/testing/client.d.ts.map +1 -0
  101. package/dist/testing/client.js +9 -0
  102. package/dist/testing/client.js.map +1 -0
  103. package/dist/testing/database.d.ts +6 -0
  104. package/dist/testing/database.d.ts.map +1 -0
  105. package/dist/testing/database.js +8 -0
  106. package/dist/testing/database.js.map +1 -0
  107. package/dist/testing/email.d.ts +15 -0
  108. package/dist/testing/email.d.ts.map +1 -0
  109. package/dist/testing/email.js +32 -0
  110. package/dist/testing/email.js.map +1 -0
  111. package/dist/testing/fixture.d.ts +33 -0
  112. package/dist/testing/fixture.d.ts.map +1 -0
  113. package/dist/testing/fixture.js +125 -0
  114. package/dist/testing/fixture.js.map +1 -0
  115. package/dist/testing/jobs.d.ts +32 -0
  116. package/dist/testing/jobs.d.ts.map +1 -0
  117. package/dist/testing/jobs.js +67 -0
  118. package/dist/testing/jobs.js.map +1 -0
  119. package/dist/testing/storage.d.ts +7 -0
  120. package/dist/testing/storage.d.ts.map +1 -0
  121. package/dist/testing/storage.js +29 -0
  122. package/dist/testing/storage.js.map +1 -0
  123. package/dist/testing.d.ts +9 -26
  124. package/dist/testing.d.ts.map +1 -1
  125. package/dist/testing.js +3 -9
  126. package/dist/testing.js.map +1 -1
  127. package/llms.txt +43 -13
  128. package/package.json +23 -15
  129. package/skills/creating-bunderstack-apps/references/application-structure.md +16 -12
  130. package/skills/creating-bunderstack-apps/references/runtime-integrations.md +4 -1
  131. package/skills/migrating-to-bunderstack/SKILL.md +7 -6
  132. package/skills/migrating-to-bunderstack/references/audit-checklist.md +4 -4
  133. package/skills/migrating-to-bunderstack/references/runtime-replacements.md +55 -49
@@ -0,0 +1,149 @@
1
+ import type { AnyRouter as AnyORPCRouter } from '@orpc/server';
2
+ import type { TableAccessInput } from './access.js';
3
+ import type { RealtimeApiRouter } from './api/realtime-router.js';
4
+ import type { CrudApiRouterFor, MergeApiRouterTypes, UnifiedApiRouter } from './api/types.js';
5
+ import type { RuntimeTestingHandle } from './backend-internals.js';
6
+ import type { DatabaseConnection } from './database/adapter.js';
7
+ import type { DbFor } from './db.js';
8
+ import type { BunderstackJobsBuilder, JobsDefs, JobsFacade, StartWorkerOptions, WorkerHandle } from './jobs/index.js';
9
+ import type { ResolvedStorageBuckets, StorageConfigInput } from './storage/buckets.js';
10
+ import type { StorageAdapter } from './storage/index.js';
11
+ import { createAuth } from './auth.js';
12
+ import { type BunderstackConfig } from './config.js';
13
+ import { type EmailAdapter, type EmailFacade } from './email.js';
14
+ import { type EnvConfigInput, type ValidatedEnv } from './env.js';
15
+ import { type LifecycleStatus } from './lifecycle.js';
16
+ import { type RealtimeFacade } from './realtime/facade.js';
17
+ export type AuthInstance = ReturnType<typeof createAuth>;
18
+ export type RuntimeOverrides = {
19
+ database?: DatabaseConnection;
20
+ resolvedStorage?: ResolvedStorageBuckets;
21
+ emailAdapter?: EmailAdapter;
22
+ forceMemoryRealtime?: boolean;
23
+ backgroundAutoStart?: false;
24
+ /** Private callback used by backend.test(); never exposed on the app. */
25
+ captureTestingHandle?: (handle: RuntimeTestingHandle) => void;
26
+ };
27
+ /**
28
+ * Public storage facade exposed as `app.storage`. Object-level operations live
29
+ * on the per-bucket adapters; this surface offers the app-wide deletes that
30
+ * must also clean the file-meta row.
31
+ */
32
+ export interface StorageFacade {
33
+ /** Delete a file row and purge all underlying storage derivatives. */
34
+ delete(fileId: string): Promise<void>;
35
+ /** Low-level access to the underlying storage adapter for a bucket. */
36
+ bucket(name: string): StorageAdapter | undefined;
37
+ /**
38
+ * Reap stale `pending` uploads older than `olderThanMs` (default 30m). Runs
39
+ * only when explicitly invoked by the host or local scheduler. Returns
40
+ * the count reaped.
41
+ */
42
+ sweep(olderThanMs?: number): Promise<number>;
43
+ /**
44
+ * Get a public or presigned download URL for a file key.
45
+ * Returns a presigned S3 URL when S3 is configured, or local proxy route `/api/files/...` in development.
46
+ */
47
+ getUrl(key: string, opts?: {
48
+ bucket?: string;
49
+ expiresIn?: number;
50
+ }): Promise<string>;
51
+ /**
52
+ * Upload bytes as a ready file and register it in file_meta so it is
53
+ * accessible via `GET /api/files/<key>`. Use this for server-generated
54
+ * files (e.g. generated PDFs) that are not uploaded by end-users.
55
+ */
56
+ upload(key: string, body: ArrayBuffer | Uint8Array, contentType: string, opts?: {
57
+ ownerId?: string;
58
+ filename?: string;
59
+ }): Promise<void>;
60
+ }
61
+ export type AppStartWorkerOptions = Omit<StartWorkerOptions, 'tick'>;
62
+ export type AppRunWorkerOptions = AppStartWorkerOptions & {
63
+ /**
64
+ * Permit process-local realtime in a standalone worker.
65
+ *
66
+ * Use only when job handlers never call ctx.realtime.publish(). Publications
67
+ * made through the memory broker cannot reach SSE clients in another process.
68
+ */
69
+ allowProcessLocalRealtime?: boolean;
70
+ };
71
+ /** Bucket names declared in a storage config; `string` when unknowable. */
72
+ export type BucketNamesOf<TStorage> = TStorage extends {
73
+ buckets: infer B extends Record<string, unknown>;
74
+ } ? keyof B & string : string;
75
+ export type BunderstackApp<TSchema extends Record<string, unknown>, TAccess extends Record<string, TableAccessInput> | undefined = undefined, TBuckets extends string = string, TEnv extends EnvConfigInput | undefined = undefined, TJobsDefs extends JobsDefs | undefined = undefined, TCustomApiRouter extends AnyORPCRouter | undefined = undefined, TRealtime = undefined> = {
76
+ handler: (req: Request) => Promise<Response>;
77
+ db: DbFor<TSchema>;
78
+ auth: AuthInstance;
79
+ storage: StorageFacade;
80
+ /** Validated env: bunderstack's base vars plus the config's `env` extension. */
81
+ env: ValidatedEnv<TEnv>;
82
+ /** Email facade; always present — send() throws when email isn't configured. */
83
+ email: EmailFacade;
84
+ /** Job queue facade; always present — enqueue throws when jobs aren't configured. */
85
+ jobs: JobsFacade<TJobsDefs extends JobsDefs ? TJobsDefs : Record<never, never>>;
86
+ /** Typed custom row publication; enabled=false/no-op when realtime is off. */
87
+ realtime: RealtimeFacade<TSchema>;
88
+ startWorker(options?: AppStartWorkerOptions): Promise<WorkerHandle>;
89
+ /** Run a queue worker until aborted, then close the application. */
90
+ runWorker(options?: AppRunWorkerOptions): Promise<void>;
91
+ close(): Promise<void>;
92
+ /** True when this process is running the background tick loop. */
93
+ readonly backgroundRunning: boolean;
94
+ readonly status: LifecycleStatus;
95
+ readonly signal: AbortSignal;
96
+ /**
97
+ * Type-only carrier for client inference (`createClient<typeof app>()`).
98
+ * Never assigned at runtime.
99
+ */
100
+ readonly $inferClient?: {
101
+ schema: TSchema;
102
+ access: TAccess;
103
+ buckets: TBuckets;
104
+ api: MergeApiRouterTypes<UnifiedApiRouter<CrudApiRouterFor<TSchema, TAccess, [
105
+ TRealtime
106
+ ] extends [false | undefined] ? false : true>, TCustomApiRouter>, [
107
+ TRealtime
108
+ ] extends [false | undefined] ? {} : RealtimeApiRouter>;
109
+ };
110
+ };
111
+ export declare function materializeBunderstack<TSchema extends Record<string, unknown>, const TAccess extends Record<string, TableAccessInput> | undefined = undefined, const TStorage extends StorageConfigInput | undefined = undefined, const TEnv extends EnvConfigInput | undefined = undefined, const TJobsDefs extends JobsDefs | undefined = undefined, TCustomApiRouter extends AnyORPCRouter | undefined = undefined, const TRealtime extends BunderstackConfig<TSchema, TAccess, TStorage, TEnv, TCustomApiRouter>['realtime'] = undefined>(options: BunderstackConfig<TSchema, TAccess, TStorage, TEnv, TCustomApiRouter> & {
112
+ realtime?: TRealtime;
113
+ jobs?: TJobsDefs | ((j: BunderstackJobsBuilder<TSchema, ValidatedEnv<TEnv>>) => TJobsDefs);
114
+ }, source: Record<string, string | undefined>, overrides?: RuntimeOverrides): Promise<BunderstackApp<TSchema, TAccess, BucketNamesOf<TStorage>, TEnv, TJobsDefs, TCustomApiRouter, TRealtime>>;
115
+ export { listSpec } from './api/list-spec.js';
116
+ export type { ListSpecOptions } from './api/list-spec.js';
117
+ export type { BunderstackDb, BunderstackTx } from './db.js';
118
+ export { MAX_LIST_LIMIT } from './list-query.js';
119
+ export { BunderstackError } from './errors.js';
120
+ export type { BunderstackErrorCode } from './errors.js';
121
+ export { resolveConfig, resolveAuthConfig, defineAuth } from './config.js';
122
+ export type { AuthConfigContext, AuthConfigFactory, AuthConfigInput, BetterAuthConfig, BunderstackConfig, ResolvedConfig, } from './config.js';
123
+ export { validateEnv, createClientEnv, BunderstackEnvError } from './env.js';
124
+ export type { EnvConfigInput, BaseEnv, ValidatedEnv } from './env.js';
125
+ export { buildManifest, parseManifest } from './manifest.js';
126
+ export type { BunderstackManifest, ManifestEnvVar } from './manifest.js';
127
+ export { createEmail } from './email.js';
128
+ export type { EmailMessage, EmailAdapter, EmailConfigInput, EmailFacade, } from './email.js';
129
+ export { createJobsBuilder } from './jobs/index.js';
130
+ export type { BunderstackJobContext, BunderstackJobsBuilder, BackgroundDefinition, BackgroundDefs, CronDefinition, CronInvocation, EnqueueOptions, JobContext, JobDefinition, JobsDefs, JobsFacade, JobsRuntimeFacade, QueueJobDefinition, QueueJobKeys, RunWorkerOptions, StartWorkerOptions, WorkerHandle, } from './jobs/index.js';
131
+ export { defineAccess, validateAndResolveAccess, checkAccess, AUTH_TABLE_NAMES, } from './access.js';
132
+ export type { TableAccessInput, OperationRule, AccessContext, AccessUser, } from './access.js';
133
+ export { typeid, generate as generateTypeId, parse as parseTypeId, asTypeId, } from './typeid.js';
134
+ export type { TypeId } from './typeid.js';
135
+ export type { DatabaseAdapter, DatabaseConnection, DatabaseConnectionResult, } from './database/adapter.js';
136
+ export type { StorageAdapter } from './storage/index.js';
137
+ export type { StorageConfigInput, BucketConfigInput, ResolvedBucket, } from './storage/buckets.js';
138
+ export type { TransformSpec } from './storage/thumbnails.js';
139
+ export type { RealtimeAction } from './realtime/publisher.js';
140
+ export { createRealtimeFacade } from './realtime/facade.js';
141
+ export type { RealtimeFacade, RealtimeTransport, SchemaTable, } from './realtime/facade.js';
142
+ export { createApiBuilder, defineApi } from './api/builder.js';
143
+ export type { BunderstackApiBuilder, ApiFactory } from './api/builder.js';
144
+ export type { ApiContext } from './api/context.js';
145
+ export type { CrudApiRouterFor, ExposedApiTables, MergeApiRouterTypes, UnifiedApiRouter, } from './api/types.js';
146
+ export type { TableCrudProcedures } from './api/crud-router.js';
147
+ export { buildApiRegistry, mergeApiRoutersStrict, normalizeApiPath, normalizeForeignOpenAPISpec, } from './api/registry.js';
148
+ export { mergeOpenAPISpecs } from './api/openapi.js';
149
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}