@maravilla-labs/adapter-core 0.2.0 → 0.2.2

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.
@@ -0,0 +1,34 @@
1
+ import type { AuthConfigBlock, DatabaseConfigBlock } from './types.js';
2
+ export interface MaravillaConfig {
3
+ auth?: AuthConfigBlock;
4
+ database?: DatabaseConfigBlock;
5
+ }
6
+ export interface OAuthProviderDefinition {
7
+ enabled: boolean;
8
+ client_id: string;
9
+ client_secret: SecretRef;
10
+ scopes: string[];
11
+ discovery_url?: string;
12
+ }
13
+ export type SecretRef = string | {
14
+ env: string;
15
+ };
16
+ export interface LoadResult {
17
+ /** The normalized config. Empty object when no config file is present. */
18
+ config: MaravillaConfig;
19
+ /** Absolute path of the file that was loaded, or `null` if none was found. */
20
+ path: string | null;
21
+ }
22
+ export declare class ConfigError extends Error {
23
+ readonly file: string | null;
24
+ readonly field?: string | undefined;
25
+ constructor(message: string, file?: string | null, field?: string | undefined);
26
+ }
27
+ /**
28
+ * Find and load a `maravilla.config.*` file at the given project root.
29
+ * Returns an empty config (but no error) when none exists — the adapter
30
+ * should treat missing config as "no declarative auth, nothing to apply".
31
+ */
32
+ export declare function loadMaravillaConfig(projectRoot: string): Promise<LoadResult>;
33
+ export type { AuthConfigBlock, DatabaseConfigBlock, DocumentIndexDeclaration, VectorIndexDeclaration, } from './types.js';
34
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../src/config-loader.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EAGpB,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AACD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,SAAS,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AACD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAWjD,MAAM,WAAW,UAAU;IACzB,0EAA0E;IAC1E,MAAM,EAAE,eAAe,CAAC;IACxB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,qBAAa,WAAY,SAAQ,KAAK;aAGlB,IAAI,EAAE,MAAM,GAAG,IAAI;aACnB,KAAK,CAAC,EAAE,MAAM;gBAF9B,OAAO,EAAE,MAAM,EACC,IAAI,GAAE,MAAM,GAAG,IAAW,EAC1B,KAAK,CAAC,EAAE,MAAM,YAAA;CASjC;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAkBlF;AA4WD,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,356 @@
1
+ /**
2
+ * Loads `maravilla.config.{ts,js,mjs,yaml,yml,json}` from a project root and
3
+ * returns a normalized {@link MaravillaConfig}. Invoked by adapters during
4
+ * build to enrich the manifest with auth settings.
5
+ *
6
+ * Discovery is deliberately strict — exactly one config file may exist. Each
7
+ * supported format parses to the same schema:
8
+ *
9
+ * - `.ts`, `.js`, `.mjs` — loaded via `jiti` (supports TS without a compile step)
10
+ * - `.yaml`, `.yml` — loaded via `yaml`
11
+ * - `.json` — `JSON.parse`
12
+ *
13
+ * The loader does light structural validation (required fields, secret-ref
14
+ * shape). Deep validation of policy expressions happens server-side at
15
+ * reconcile time — local parsing would require shipping the REL grammar.
16
+ */
17
+ import { existsSync, readFileSync } from 'node:fs';
18
+ import { join, resolve } from 'node:path';
19
+ import { pathToFileURL } from 'node:url';
20
+ const CONFIG_BASENAMES = [
21
+ 'maravilla.config.ts',
22
+ 'maravilla.config.mjs',
23
+ 'maravilla.config.js',
24
+ 'maravilla.config.yaml',
25
+ 'maravilla.config.yml',
26
+ 'maravilla.config.json',
27
+ ];
28
+ export class ConfigError extends Error {
29
+ file;
30
+ field;
31
+ constructor(message, file = null, field) {
32
+ super(file
33
+ ? `[maravilla] ${message} (in ${file}${field ? ` at ${field}` : ''})`
34
+ : `[maravilla] ${message}`);
35
+ this.file = file;
36
+ this.field = field;
37
+ this.name = 'ConfigError';
38
+ }
39
+ }
40
+ /**
41
+ * Find and load a `maravilla.config.*` file at the given project root.
42
+ * Returns an empty config (but no error) when none exists — the adapter
43
+ * should treat missing config as "no declarative auth, nothing to apply".
44
+ */
45
+ export async function loadMaravillaConfig(projectRoot) {
46
+ const candidates = CONFIG_BASENAMES
47
+ .map((name) => join(resolve(projectRoot), name))
48
+ .filter((p) => existsSync(p));
49
+ if (candidates.length === 0) {
50
+ return { config: {}, path: null };
51
+ }
52
+ if (candidates.length > 1) {
53
+ throw new ConfigError(`multiple maravilla.config.* files found — keep exactly one: ${candidates.join(', ')}`);
54
+ }
55
+ const filePath = candidates[0];
56
+ const raw = await loadByExt(filePath);
57
+ const config = normalize(raw, filePath);
58
+ return { config, path: filePath };
59
+ }
60
+ async function loadByExt(filePath) {
61
+ if (filePath.endsWith('.json')) {
62
+ try {
63
+ return JSON.parse(readFileSync(filePath, 'utf8'));
64
+ }
65
+ catch (e) {
66
+ throw new ConfigError(`invalid JSON: ${errMsg(e)}`, filePath);
67
+ }
68
+ }
69
+ if (filePath.endsWith('.yaml') || filePath.endsWith('.yml')) {
70
+ let yaml;
71
+ try {
72
+ yaml = await import('yaml');
73
+ }
74
+ catch {
75
+ throw new ConfigError("YAML config requires the 'yaml' package — it's a direct dep of adapter-core, reinstall if missing", filePath);
76
+ }
77
+ try {
78
+ return yaml.parse(readFileSync(filePath, 'utf8'));
79
+ }
80
+ catch (e) {
81
+ throw new ConfigError(`invalid YAML: ${errMsg(e)}`, filePath);
82
+ }
83
+ }
84
+ if (filePath.endsWith('.ts') || filePath.endsWith('.mjs') || filePath.endsWith('.js')) {
85
+ return loadScript(filePath);
86
+ }
87
+ throw new ConfigError(`unsupported extension: ${filePath}`);
88
+ }
89
+ async function loadScript(filePath) {
90
+ // .mjs / .js: prefer native ESM import so users don't need a transpiler.
91
+ if (filePath.endsWith('.mjs') || filePath.endsWith('.js')) {
92
+ try {
93
+ const mod = await import(pathToFileURL(filePath).href);
94
+ return extractDefault(mod);
95
+ }
96
+ catch (e) {
97
+ throw new ConfigError(`failed to load module: ${errMsg(e)}`, filePath);
98
+ }
99
+ }
100
+ // .ts: jiti handles TypeScript without a compile step.
101
+ let createJiti;
102
+ try {
103
+ ({ createJiti } = await import('jiti'));
104
+ }
105
+ catch {
106
+ throw new ConfigError("TypeScript config requires the 'jiti' package — it's a direct dep of adapter-core, reinstall if missing", filePath);
107
+ }
108
+ try {
109
+ const loader = createJiti(filePath, { interopDefault: true });
110
+ const mod = await loader.import(filePath);
111
+ return extractDefault(mod);
112
+ }
113
+ catch (e) {
114
+ throw new ConfigError(`failed to load TypeScript config: ${errMsg(e)}`, filePath);
115
+ }
116
+ }
117
+ function extractDefault(mod) {
118
+ if (mod && typeof mod === 'object' && 'default' in mod) {
119
+ return mod.default;
120
+ }
121
+ return mod;
122
+ }
123
+ // ── Normalization + validation ──
124
+ function normalize(raw, file) {
125
+ if (raw === null || raw === undefined)
126
+ return {};
127
+ if (typeof raw !== 'object') {
128
+ throw new ConfigError(`config must export an object, got ${typeof raw}`, file);
129
+ }
130
+ const src = raw;
131
+ const out = {};
132
+ if (src.auth !== undefined) {
133
+ out.auth = normalizeAuth(src.auth, file, 'auth');
134
+ }
135
+ // Allow top-level `resources` as convenience shorthand for `auth.resources`.
136
+ if (src.resources !== undefined && out.auth?.resources === undefined) {
137
+ out.auth = { ...(out.auth ?? {}), resources: src.resources };
138
+ }
139
+ if (src.database !== undefined) {
140
+ out.database = normalizeDatabase(src.database, file, 'database');
141
+ }
142
+ return out;
143
+ }
144
+ // ── Database normalization ──
145
+ const VECTOR_METRICS = new Set(['cosine', 'l2', 'hamming']);
146
+ const VECTOR_STORAGE = new Set(['float32', 'int8', 'bit']);
147
+ function normalizeDatabase(raw, file, field) {
148
+ if (raw === null || typeof raw !== 'object') {
149
+ throw new ConfigError(`${field} must be an object`, file, field);
150
+ }
151
+ const src = raw;
152
+ const out = {};
153
+ if (src.indexes !== undefined) {
154
+ out.indexes = expectArray(src.indexes, file, `${field}.indexes`).map((item, i) => normalizeDocumentIndex(item, file, `${field}.indexes[${i}]`));
155
+ }
156
+ if (src.vectorIndexes !== undefined) {
157
+ out.vectorIndexes = expectArray(src.vectorIndexes, file, `${field}.vectorIndexes`).map((item, i) => normalizeVectorIndex(item, file, `${field}.vectorIndexes[${i}]`));
158
+ }
159
+ return out;
160
+ }
161
+ function normalizeDocumentIndex(raw, file, path) {
162
+ const obj = expectObject(raw, file, path);
163
+ expectString(obj.collection, file, `${path}.collection`);
164
+ if (obj.keys === undefined) {
165
+ throw new ConfigError(`missing required field 'keys'`, file, `${path}.keys`);
166
+ }
167
+ const keys = normalizeKeys(obj.keys, file, `${path}.keys`);
168
+ const out = {
169
+ collection: obj.collection,
170
+ keys,
171
+ };
172
+ if (obj.name !== undefined) {
173
+ expectString(obj.name, file, `${path}.name`);
174
+ out.name = obj.name;
175
+ }
176
+ if (obj.unique !== undefined)
177
+ out.unique = expectBool(obj.unique, file, `${path}.unique`);
178
+ if (obj.sparse !== undefined)
179
+ out.sparse = expectBool(obj.sparse, file, `${path}.sparse`);
180
+ if (obj.partial !== undefined) {
181
+ out.partial = expectObject(obj.partial, file, `${path}.partial`);
182
+ }
183
+ if (obj.expireAfterSeconds !== undefined) {
184
+ const v = obj.expireAfterSeconds;
185
+ if (typeof v !== 'number' || !Number.isFinite(v) || v < 0) {
186
+ throw new ConfigError(`expected non-negative number`, file, `${path}.expireAfterSeconds`);
187
+ }
188
+ out.expireAfterSeconds = v;
189
+ }
190
+ return out;
191
+ }
192
+ function normalizeKeys(raw, file, path) {
193
+ // Array form: [['field', 1], ['other', -1]]
194
+ if (Array.isArray(raw)) {
195
+ return raw.map((pair, i) => {
196
+ if (!Array.isArray(pair) || pair.length !== 2) {
197
+ throw new ConfigError(`expected [field, direction] tuple`, file, `${path}[${i}]`);
198
+ }
199
+ const [f, d] = pair;
200
+ if (typeof f !== 'string' || f.length === 0) {
201
+ throw new ConfigError(`field must be a non-empty string`, file, `${path}[${i}][0]`);
202
+ }
203
+ if (d !== 1 && d !== -1) {
204
+ throw new ConfigError(`direction must be 1 or -1`, file, `${path}[${i}][1]`);
205
+ }
206
+ return [f, d];
207
+ });
208
+ }
209
+ // Object form: { field: 1, other: -1 }
210
+ if (raw !== null && typeof raw === 'object') {
211
+ const obj = raw;
212
+ const out = {};
213
+ for (const [f, d] of Object.entries(obj)) {
214
+ if (d !== 1 && d !== -1) {
215
+ throw new ConfigError(`direction must be 1 or -1`, file, `${path}.${f}`);
216
+ }
217
+ out[f] = d;
218
+ }
219
+ if (Object.keys(out).length === 0) {
220
+ throw new ConfigError(`must declare at least one key field`, file, path);
221
+ }
222
+ return out;
223
+ }
224
+ throw new ConfigError(`expected array or object`, file, path);
225
+ }
226
+ function normalizeVectorIndex(raw, file, path) {
227
+ const obj = expectObject(raw, file, path);
228
+ expectString(obj.collection, file, `${path}.collection`);
229
+ expectString(obj.field, file, `${path}.field`);
230
+ if (typeof obj.dimensions !== 'number' || !Number.isInteger(obj.dimensions) || obj.dimensions <= 0) {
231
+ throw new ConfigError(`dimensions must be a positive integer`, file, `${path}.dimensions`);
232
+ }
233
+ const out = {
234
+ collection: obj.collection,
235
+ field: obj.field,
236
+ dimensions: obj.dimensions,
237
+ };
238
+ if (obj.metric !== undefined) {
239
+ if (typeof obj.metric !== 'string' || !VECTOR_METRICS.has(obj.metric)) {
240
+ throw new ConfigError(`metric must be one of ${[...VECTOR_METRICS].join(', ')}`, file, `${path}.metric`);
241
+ }
242
+ out.metric = obj.metric;
243
+ }
244
+ if (obj.storage !== undefined) {
245
+ if (typeof obj.storage !== 'string' || !VECTOR_STORAGE.has(obj.storage)) {
246
+ throw new ConfigError(`storage must be one of ${[...VECTOR_STORAGE].join(', ')}`, file, `${path}.storage`);
247
+ }
248
+ out.storage = obj.storage;
249
+ }
250
+ if (obj.matryoshka !== undefined) {
251
+ out.matryoshka = expectBool(obj.matryoshka, file, `${path}.matryoshka`);
252
+ }
253
+ if (obj.multiVector !== undefined) {
254
+ out.multiVector = expectBool(obj.multiVector, file, `${path}.multiVector`);
255
+ }
256
+ return out;
257
+ }
258
+ function expectBool(v, file, field) {
259
+ if (typeof v !== 'boolean') {
260
+ throw new ConfigError(`expected boolean`, file, field);
261
+ }
262
+ return v;
263
+ }
264
+ function normalizeAuth(raw, file, field) {
265
+ if (raw === null || typeof raw !== 'object') {
266
+ throw new ConfigError(`${field} must be an object`, file, field);
267
+ }
268
+ const src = raw;
269
+ const out = {};
270
+ if (src.resources !== undefined) {
271
+ out.resources = expectArray(src.resources, file, `${field}.resources`).map((r, i) => {
272
+ const path = `${field}.resources[${i}]`;
273
+ const obj = expectObject(r, file, path);
274
+ expectString(obj.name, file, `${path}.name`);
275
+ expectString(obj.title, file, `${path}.title`);
276
+ expectArrayOfStrings(obj.actions, file, `${path}.actions`);
277
+ return obj;
278
+ });
279
+ }
280
+ if (src.groups !== undefined) {
281
+ out.groups = expectArray(src.groups, file, `${field}.groups`).map((g, i) => {
282
+ const path = `${field}.groups[${i}]`;
283
+ const obj = expectObject(g, file, path);
284
+ expectString(obj.name, file, `${path}.name`);
285
+ return obj;
286
+ });
287
+ }
288
+ if (src.relations !== undefined) {
289
+ out.relations = expectArray(src.relations, file, `${field}.relations`).map((r, i) => {
290
+ const path = `${field}.relations[${i}]`;
291
+ const obj = expectObject(r, file, path);
292
+ expectString(obj.relation_name, file, `${path}.relation_name`);
293
+ expectString(obj.title, file, `${path}.title`);
294
+ return obj;
295
+ });
296
+ }
297
+ if (src.registration !== undefined) {
298
+ const obj = expectObject(src.registration, file, `${field}.registration`);
299
+ out.registration = { fields: expectArray(obj.fields, file, `${field}.registration.fields`) };
300
+ }
301
+ if (src.oauth !== undefined) {
302
+ const obj = expectObject(src.oauth, file, `${field}.oauth`);
303
+ const providers = {};
304
+ for (const [key, value] of Object.entries(obj)) {
305
+ const path = `${field}.oauth.${key}`;
306
+ const prov = expectObject(value, file, path);
307
+ expectString(prov.client_id, file, `${path}.client_id`);
308
+ validateSecretRef(prov.client_secret, file, `${path}.client_secret`);
309
+ expectArrayOfStrings(prov.scopes, file, `${path}.scopes`);
310
+ providers[key] = prov;
311
+ }
312
+ out.oauth = providers;
313
+ }
314
+ if (src.security !== undefined) {
315
+ out.security = expectObject(src.security, file, `${field}.security`);
316
+ }
317
+ if (src.branding !== undefined) {
318
+ out.branding = expectObject(src.branding, file, `${field}.branding`);
319
+ }
320
+ return out;
321
+ }
322
+ // ── Small validators ──
323
+ function expectObject(v, file, field) {
324
+ if (v === null || typeof v !== 'object' || Array.isArray(v)) {
325
+ throw new ConfigError(`expected object`, file, field);
326
+ }
327
+ return v;
328
+ }
329
+ function expectArray(v, file, field) {
330
+ if (!Array.isArray(v))
331
+ throw new ConfigError(`expected array`, file, field);
332
+ return v;
333
+ }
334
+ function expectString(v, file, field) {
335
+ if (typeof v !== 'string' || v.length === 0) {
336
+ throw new ConfigError(`expected non-empty string`, file, field);
337
+ }
338
+ }
339
+ function expectArrayOfStrings(v, file, field) {
340
+ if (!Array.isArray(v) || !v.every((x) => typeof x === 'string')) {
341
+ throw new ConfigError(`expected string[]`, file, field);
342
+ }
343
+ }
344
+ function validateSecretRef(v, file, field) {
345
+ if (typeof v === 'string')
346
+ return;
347
+ if (v !== null && typeof v === 'object' && typeof v.env === 'string')
348
+ return;
349
+ throw new ConfigError(`expected secret (string or { env: "VAR_NAME" })`, file, field);
350
+ }
351
+ function errMsg(e) {
352
+ if (e instanceof Error)
353
+ return e.message;
354
+ return String(e);
355
+ }
356
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../src/config-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ type EventsAPI = {
2
+ buildEvents: (opts: any) => Promise<any>;
3
+ integrateEventsWithManifest: (manifestPath: string, em: any) => Promise<void>;
4
+ };
5
+ /**
6
+ * Dynamically load the events build API from `@maravilla-labs/functions`.
7
+ * Mirrors {@link loadFunctionsAPI} — prefers the installed package, falls
8
+ * back to workspace paths, no-op shim if neither resolves.
9
+ */
10
+ export declare function loadEventsAPI(): Promise<EventsAPI>;
11
+ /**
12
+ * Build events from a project directory and merge into the manifest.
13
+ * Safe no-op if no `events.ts` / `events/` present.
14
+ */
15
+ export declare function buildAndIntegrateEvents(projectDir: string, outDir: string, log?: {
16
+ minor: (msg: string) => void;
17
+ error: (msg: string) => void;
18
+ warn: (msg: string) => void;
19
+ }): Promise<void>;
20
+ export {};
21
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,2BAA2B,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC,CAqBxD;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE;IAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAChG,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
package/dist/events.js ADDED
@@ -0,0 +1,62 @@
1
+ import { existsSync } from 'node:fs';
2
+ /**
3
+ * Dynamically load the events build API from `@maravilla-labs/functions`.
4
+ * Mirrors {@link loadFunctionsAPI} — prefers the installed package, falls
5
+ * back to workspace paths, no-op shim if neither resolves.
6
+ */
7
+ export async function loadEventsAPI() {
8
+ const fallbacks = [
9
+ '@maravilla-labs/functions',
10
+ '../../functions/dist/index.js',
11
+ '../../functions/src/index.ts',
12
+ ];
13
+ for (const spec of fallbacks) {
14
+ try {
15
+ const mod = await import(spec);
16
+ if (mod.buildEvents && mod.integrateEventsWithManifest) {
17
+ return {
18
+ buildEvents: mod.buildEvents,
19
+ integrateEventsWithManifest: mod.integrateEventsWithManifest,
20
+ };
21
+ }
22
+ }
23
+ catch (_) { /* try next */ }
24
+ }
25
+ return {
26
+ buildEvents: async () => null,
27
+ integrateEventsWithManifest: async () => { },
28
+ };
29
+ }
30
+ /**
31
+ * Build events from a project directory and merge into the manifest.
32
+ * Safe no-op if no `events.ts` / `events/` present.
33
+ */
34
+ export async function buildAndIntegrateEvents(projectDir, outDir, log) {
35
+ const hasRoot = existsSync(`${projectDir}/events.ts`)
36
+ || existsSync(`${projectDir}/events.js`)
37
+ || existsSync(`${projectDir}/events.mjs`);
38
+ const hasDir = existsSync(`${projectDir}/events`);
39
+ if (!hasRoot && !hasDir) {
40
+ log?.minor('No events found, skipping events build');
41
+ return;
42
+ }
43
+ const { buildEvents, integrateEventsWithManifest } = await loadEventsAPI();
44
+ log?.minor('Building events from: ' + projectDir);
45
+ let eventsManifest;
46
+ try {
47
+ eventsManifest = await buildEvents({
48
+ projectDir,
49
+ outputDir: outDir,
50
+ production: true,
51
+ minify: true,
52
+ });
53
+ }
54
+ catch (error) {
55
+ log?.error('Failed to build events: ' + (error?.message || error));
56
+ return;
57
+ }
58
+ if (!eventsManifest)
59
+ return;
60
+ await integrateEventsWithManifest(`${outDir}/manifest.json`, eventsManifest);
61
+ }
62
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAOrC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,SAAS,GAAG;QAChB,2BAA2B;QAC3B,+BAA+B;QAC/B,8BAA8B;KAC/B,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,GAAQ,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,2BAA2B,EAAE,CAAC;gBACvD,OAAO;oBACL,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,2BAA2B,EAAE,GAAG,CAAC,2BAA2B;iBAC7D,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC;IACD,OAAO;QACL,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QAC7B,2BAA2B,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAAkB,EAClB,MAAc,EACd,GAAiG;IAEjG,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,UAAU,YAAY,CAAC;WAChD,UAAU,CAAC,GAAG,UAAU,YAAY,CAAC;WACrC,UAAU,CAAC,GAAG,UAAU,aAAa,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,UAAU,SAAS,CAAC,CAAC;IAClD,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACxB,GAAG,EAAE,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,2BAA2B,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;IAE3E,GAAG,EAAE,KAAK,CAAC,wBAAwB,GAAG,UAAU,CAAC,CAAC;IAClD,IAAI,cAAc,CAAC;IACnB,IAAI,CAAC;QACH,cAAc,GAAG,MAAM,WAAW,CAAC;YACjC,UAAU;YACV,SAAS,EAAE,MAAM;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,GAAG,EAAE,KAAK,CAAC,0BAA0B,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,IAAI,CAAC,cAAc;QAAE,OAAO;IAE5B,MAAM,2BAA2B,CAAC,GAAG,MAAM,gBAAgB,EAAE,cAAc,CAAC,CAAC;AAC/E,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,9 @@ export { bundleServerEntry, analyzeBundle } from './bundle.js';
2
2
  export { generateManifest, writeManifest, filterStaticAssets } from './manifest.js';
3
3
  export { collectAssets } from './assets.js';
4
4
  export { loadFunctionsAPI, buildAndIntegrateFunctions } from './functions.js';
5
+ export { loadEventsAPI, buildAndIntegrateEvents } from './events.js';
5
6
  export { WORKER_POLYFILLS } from './polyfills.js';
6
- export type { ManifestV2, RoutingConfig, DynamicRoutes, RouteConfig, EnvConfig, Features, FunctionsConfig, FunctionRoute, FunctionsMetadata, AdapterOptions, BundleOptions, ManifestOptions, } from './types.js';
7
+ export { loadMaravillaConfig, ConfigError } from './config-loader.js';
8
+ export type { LoadResult } from './config-loader.js';
9
+ export type { ManifestV2, RoutingConfig, DynamicRoutes, RouteConfig, EnvConfig, Features, FunctionsConfig, FunctionRoute, FunctionsMetadata, EventsConfig, EventHandlerDescriptor, EventTrigger, EventTriggerKv, EventTriggerDb, EventTriggerAuth, EventTriggerSchedule, EventTriggerQueue, EventTriggerChannel, EventTriggerDeploy, EventTriggerRen, AdapterOptions, BundleOptions, ManifestOptions, } from './types.js';
7
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,YAAY,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,SAAS,EACT,QAAQ,EACR,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,SAAS,EACT,QAAQ,EACR,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -2,5 +2,7 @@ export { bundleServerEntry, analyzeBundle } from './bundle.js';
2
2
  export { generateManifest, writeManifest, filterStaticAssets } from './manifest.js';
3
3
  export { collectAssets } from './assets.js';
4
4
  export { loadFunctionsAPI, buildAndIntegrateFunctions } from './functions.js';
5
+ export { loadEventsAPI, buildAndIntegrateEvents } from './events.js';
5
6
  export { WORKER_POLYFILLS } from './polyfills.js';
7
+ export { loadMaravillaConfig, ConfigError } from './config-loader.js';
6
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAiB9D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAOhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,UAAU,CA2DrE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,CAKxE"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAmB9D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAOhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,UAAU,CAgErE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,CAKxE"}
package/dist/manifest.js CHANGED
@@ -6,11 +6,13 @@ const STATIC_ASSET_PATTERNS = [
6
6
  '/assets/',
7
7
  '/_nuxt/',
8
8
  '/_build/',
9
+ '/static/',
9
10
  ];
10
11
  const STATIC_ASSET_EXTENSIONS = [
11
12
  '.txt', '.svg', '.png', '.jpg', '.jpeg', '.webp', '.gif', '.ico',
12
13
  '.woff', '.woff2', '.ttf', '.eot',
13
14
  '.css', '.js', '.mjs',
15
+ '.webmanifest', '.json',
14
16
  ];
15
17
  /**
16
18
  * Filter static assets from a list of all files.
@@ -28,7 +30,7 @@ export function filterStaticAssets(allAssets) {
28
30
  * Generate a Maravilla manifest.json conforming to the Rust Manifest struct.
29
31
  */
30
32
  export function generateManifest(options) {
31
- const { adapterName, prerenderedPaths, staticAssets, include = ['/*'], exclude = [], envPrefix = 'PUBLIC_', features, extraMetadata = {}, } = options;
33
+ const { adapterName, prerenderedPaths, staticAssets, include = ['/*'], exclude = [], envPrefix = 'PUBLIC_', features, extraMetadata = {}, auth, database, } = options;
32
34
  const prerendered = prerenderedPaths.map(path => {
33
35
  if (path === '/')
34
36
  return '/index.html';
@@ -69,6 +71,8 @@ export function generateManifest(options) {
69
71
  asset_count: staticAssets.length,
70
72
  ...extraMetadata,
71
73
  },
74
+ ...(auth ? { auth } : {}),
75
+ ...(database ? { database } : {}),
72
76
  };
73
77
  }
74
78
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,yEAAyE;AACzE,MAAM,qBAAqB,GAAG;IAC5B,QAAQ;IACR,UAAU;IACV,UAAU;IACV,SAAS;IACT,UAAU;CACX,CAAC;AAEF,MAAM,uBAAuB,GAAG;IAC9B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;IACjC,MAAM,EAAE,KAAK,EAAE,MAAM;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAmB;IACpD,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC7B,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACpE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAwB;IACvD,MAAM,EACJ,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,OAAO,GAAG,CAAC,IAAI,CAAC,EAChB,OAAO,GAAG,EAAE,EACZ,SAAS,GAAG,SAAS,EACrB,QAAQ,EACR,aAAa,GAAG,EAAE,GACnB,GAAG,OAAO,CAAC;IAEZ,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC9C,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,aAAa,CAAC;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAEhD,OAAO;QACL,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,QAAQ;QAEhB,OAAO,EAAE;YACP,WAAW;YACX,MAAM;YACN,OAAO,EAAE;gBACP,GAAG,EAAE,QAAQ;gBACb,YAAY,EAAE,IAAI;aACnB;SACF;QAED,MAAM,EAAE;YACN,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9C,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;SAC3C;QAED,GAAG,EAAE;YACH,MAAM,EAAE,SAAS;SAClB;QAED,QAAQ,EAAE;YACR,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,IAAI;YACzB,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAClE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI;YACnC,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI;YACrC,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,KAAK;SAC3C;QAED,QAAQ,EAAE;YACR,OAAO,EAAE,WAAW;YACpB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,iBAAiB,EAAE,gBAAgB,CAAC,MAAM;YAC1C,WAAW,EAAE,YAAY,CAAC,MAAM;YAChC,GAAG,aAAa;SACjB;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,QAAoB;IAChE,aAAa,CACX,GAAG,MAAM,gBAAgB,EACzB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAClC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -2,6 +2,53 @@
2
2
  * Manifest types matching the Rust Manifest struct in
3
3
  * crates/server-integration/src/manifest/types.rs
4
4
  */
5
+ /**
6
+ * Structural copy of `@maravilla-labs/platform/config`'s `AuthConfigBlock`.
7
+ * Duplicated here so `adapter-core` has no runtime dependency on the platform
8
+ * package — adapters can build independently without a workspace resolve
9
+ * step. Keep this in sync with `packages/platform/src/config.ts`.
10
+ */
11
+ export interface AuthConfigBlock {
12
+ resources?: Array<Record<string, unknown>>;
13
+ groups?: Array<Record<string, unknown>>;
14
+ relations?: Array<Record<string, unknown>>;
15
+ registration?: {
16
+ fields: Array<Record<string, unknown>>;
17
+ };
18
+ oauth?: Record<string, Record<string, unknown>>;
19
+ security?: Record<string, unknown>;
20
+ branding?: Record<string, unknown>;
21
+ }
22
+ /**
23
+ * Structural copy of `@maravilla-labs/platform/config`'s `DatabaseConfigBlock`.
24
+ * Mirrors the Rust `DatabaseManifest` at
25
+ * `crates/platform/src/database/manifest.rs`. Kept permissive at this layer —
26
+ * deep validation happens in the Rust reconciler at boot.
27
+ */
28
+ export interface DatabaseConfigBlock {
29
+ /** MongoDB-style secondary indexes. */
30
+ indexes?: Array<DocumentIndexDeclaration>;
31
+ /** sqlite-vec-backed vector indexes. */
32
+ vectorIndexes?: Array<VectorIndexDeclaration>;
33
+ }
34
+ export interface DocumentIndexDeclaration {
35
+ collection: string;
36
+ name?: string;
37
+ keys: Array<[string, 1 | -1]> | Record<string, 1 | -1>;
38
+ unique?: boolean;
39
+ sparse?: boolean;
40
+ partial?: Record<string, unknown>;
41
+ expireAfterSeconds?: number;
42
+ }
43
+ export interface VectorIndexDeclaration {
44
+ collection: string;
45
+ field: string;
46
+ dimensions: number;
47
+ metric?: 'cosine' | 'l2' | 'hamming';
48
+ storage?: 'float32' | 'int8' | 'bit';
49
+ matryoshka?: boolean;
50
+ multiVector?: boolean;
51
+ }
5
52
  export interface ManifestV2 {
6
53
  version: 2;
7
54
  runtime: 'maravilla';
@@ -13,6 +60,23 @@ export interface ManifestV2 {
13
60
  features: Features;
14
61
  metadata: Record<string, unknown>;
15
62
  functions?: FunctionsConfig;
63
+ /**
64
+ * Optional event handlers discovered from `events.ts` / `events/**\/*.ts`.
65
+ * Each handler is registered against a trigger (kv/db/schedule/...) and
66
+ * invoked by the Rust event dispatcher when matching events arrive.
67
+ */
68
+ events?: EventsConfig;
69
+ /**
70
+ * Optional auth settings declared in the developer's `maravilla.config.*`.
71
+ * Reconciled into delivery on deploy activation. Missing = nothing to apply.
72
+ */
73
+ auth?: AuthConfigBlock;
74
+ /**
75
+ * Optional database settings declared in `maravilla.config.*`.
76
+ * Reconciled (upsert-only) on platform boot — provisions the declared
77
+ * secondary indexes and vector indexes in the tenant's SQLite.
78
+ */
79
+ database?: DatabaseConfigBlock;
16
80
  }
17
81
  export interface RoutingConfig {
18
82
  prerendered: string[];
@@ -55,6 +119,73 @@ export interface FunctionsMetadata {
55
119
  count: number;
56
120
  buildTime: string;
57
121
  }
122
+ /**
123
+ * Events config emitted into the manifest. Identical shape to the
124
+ * standalone `events.json` produced by `@maravilla-labs/functions`
125
+ * `buildEvents()` — Rust deserializes both via the same type.
126
+ */
127
+ export interface EventsConfig {
128
+ version: number;
129
+ bundle: string;
130
+ handlers: EventHandlerDescriptor[];
131
+ buildTime?: string;
132
+ }
133
+ export interface EventHandlerDescriptor {
134
+ /** Stable handler id (usually the export name). */
135
+ id: string;
136
+ /** Name of the exported member in the events bundle. */
137
+ export: string;
138
+ /** Source file, relative to the project root. */
139
+ file?: string;
140
+ /** Trigger configuration — the dispatcher uses this for match logic. */
141
+ trigger: EventTrigger;
142
+ }
143
+ export type EventTrigger = EventTriggerKv | EventTriggerDb | EventTriggerAuth | EventTriggerSchedule | EventTriggerQueue | EventTriggerChannel | EventTriggerDeploy | EventTriggerRen;
144
+ export interface EventTriggerKv {
145
+ kind: 'kv';
146
+ /** KV namespace (e.g. "cache", "config"). Omit to match all namespaces. */
147
+ namespace?: string;
148
+ /** Glob-style key pattern (e.g. "user:*"). Omit to match all keys. */
149
+ keyPattern?: string;
150
+ /** Operation filter; omit to match put + delete + expired. */
151
+ op?: 'put' | 'delete' | 'expired';
152
+ }
153
+ export interface EventTriggerDb {
154
+ kind: 'db';
155
+ collection: string;
156
+ op?: 'insert' | 'update' | 'delete';
157
+ }
158
+ export interface EventTriggerAuth {
159
+ kind: 'auth';
160
+ op?: 'registered' | 'logged_in' | 'logged_out' | 'logged_out_all' | 'deleted' | 'updated';
161
+ }
162
+ export interface EventTriggerSchedule {
163
+ kind: 'schedule';
164
+ cron: string;
165
+ }
166
+ export interface EventTriggerQueue {
167
+ kind: 'queue';
168
+ name: string;
169
+ batch?: number;
170
+ maxAttempts?: number;
171
+ }
172
+ export interface EventTriggerChannel {
173
+ kind: 'channel';
174
+ channel: string;
175
+ type?: string;
176
+ }
177
+ export interface EventTriggerDeploy {
178
+ kind: 'deploy';
179
+ phase: 'ready' | 'draining' | 'stopped';
180
+ }
181
+ export interface EventTriggerRen {
182
+ kind: 'ren';
183
+ match: {
184
+ r?: string;
185
+ t?: string;
186
+ ns?: string;
187
+ };
188
+ }
58
189
  export interface AdapterOptions {
59
190
  /** Output directory (default: '.maravilla') */
60
191
  out?: string;
@@ -88,5 +219,16 @@ export interface ManifestOptions {
88
219
  envPrefix?: string;
89
220
  features: Partial<Features>;
90
221
  extraMetadata?: Record<string, unknown>;
222
+ /**
223
+ * Optional auth block loaded from `maravilla.config.*` via
224
+ * {@link loadMaravillaConfig}. Passed through to the emitted manifest
225
+ * unchanged; reconciled into delivery on deploy.
226
+ */
227
+ auth?: AuthConfigBlock;
228
+ /**
229
+ * Optional database block loaded from `maravilla.config.*`. Emitted
230
+ * into the manifest as-is; the Rust reconciler interprets it at boot.
231
+ */
232
+ database?: DatabaseConfigBlock;
91
233
  }
92
234
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maravilla-labs/adapter-core",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Shared utilities for Maravilla Runtime framework adapters",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -38,7 +38,9 @@
38
38
  }
39
39
  },
40
40
  "dependencies": {
41
- "esbuild": "^0.25.0"
41
+ "esbuild": "^0.25.0",
42
+ "jiti": "^2.4.2",
43
+ "yaml": "^2.6.0"
42
44
  },
43
45
  "devDependencies": {
44
46
  "@types/node": "^20.0.0",