@mongrov/data-access 0.1.0-alpha.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/LICENSE +21 -0
- package/README.md +266 -0
- package/dist/context.d.ts +56 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +51 -0
- package/dist/context.js.map +1 -0
- package/dist/define.d.ts +26 -0
- package/dist/define.d.ts.map +1 -0
- package/dist/define.js +60 -0
- package/dist/define.js.map +1 -0
- package/dist/dispatcher.d.ts +62 -0
- package/dist/dispatcher.d.ts.map +1 -0
- package/dist/dispatcher.js +91 -0
- package/dist/dispatcher.js.map +1 -0
- package/dist/errors.d.ts +27 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +35 -0
- package/dist/errors.js.map +1 -0
- package/dist/eslint/index.d.ts +52 -0
- package/dist/eslint/index.d.ts.map +1 -0
- package/dist/eslint/index.js +45 -0
- package/dist/eslint/index.js.map +1 -0
- package/dist/eslint/rules/no-storage-engine-imports.d.ts +22 -0
- package/dist/eslint/rules/no-storage-engine-imports.d.ts.map +1 -0
- package/dist/eslint/rules/no-storage-engine-imports.js +145 -0
- package/dist/eslint/rules/no-storage-engine-imports.js.map +1 -0
- package/dist/hooks.d.ts +67 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +234 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/invalidation.d.ts +29 -0
- package/dist/invalidation.d.ts.map +1 -0
- package/dist/invalidation.js +106 -0
- package/dist/invalidation.js.map +1 -0
- package/dist/tenant.d.ts +18 -0
- package/dist/tenant.d.ts.map +1 -0
- package/dist/tenant.js +31 -0
- package/dist/tenant.js.map +1 -0
- package/dist/types.d.ts +127 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -0
- package/package.json +91 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public barrel — @mongrov/data-access.
|
|
3
|
+
*
|
|
4
|
+
* v0.1.0-alpha.0 ships the API surface (types + stub functions). Runtime
|
|
5
|
+
* behavior arrives in later tasks; every callable currently throws
|
|
6
|
+
* NotImplementedError.
|
|
7
|
+
*/
|
|
8
|
+
export * from './errors';
|
|
9
|
+
export * from './types';
|
|
10
|
+
export * from './define';
|
|
11
|
+
export * from './dispatcher';
|
|
12
|
+
export * from './hooks';
|
|
13
|
+
export * from './invalidation';
|
|
14
|
+
export * from './context';
|
|
15
|
+
export * from './tenant';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public barrel — @mongrov/data-access.
|
|
3
|
+
*
|
|
4
|
+
* v0.1.0-alpha.0 ships the API surface (types + stub functions). Runtime
|
|
5
|
+
* behavior arrives in later tasks; every callable currently throws
|
|
6
|
+
* NotImplementedError.
|
|
7
|
+
*/
|
|
8
|
+
export * from './errors';
|
|
9
|
+
export * from './types';
|
|
10
|
+
export * from './define';
|
|
11
|
+
export * from './dispatcher';
|
|
12
|
+
export * from './hooks';
|
|
13
|
+
export * from './invalidation';
|
|
14
|
+
export * from './context';
|
|
15
|
+
export * from './tenant';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Invalidation event bus.
|
|
3
|
+
*
|
|
4
|
+
* Backed by `mitt` for exact-match subscribe/emit. Pattern subscriptions
|
|
5
|
+
* are held in a separate map and matched with the frozen glob semantics:
|
|
6
|
+
*
|
|
7
|
+
* - `*` matches exactly one `:`-delimited segment
|
|
8
|
+
* - `**` matches one or more segments
|
|
9
|
+
*
|
|
10
|
+
* All handlers run inside a try/catch so a throw in one subscriber does
|
|
11
|
+
* not prevent later subscribers from running (T-10).
|
|
12
|
+
*
|
|
13
|
+
* See data-access/spec.md §Invalidation event bus for the matching table.
|
|
14
|
+
*/
|
|
15
|
+
import type { EventBus } from './types';
|
|
16
|
+
export declare function createEventBus(): EventBus;
|
|
17
|
+
/**
|
|
18
|
+
* Compile a frozen-glob pattern into an anchored RegExp.
|
|
19
|
+
*
|
|
20
|
+
* Rules (spec.md §Invalidation event bus):
|
|
21
|
+
* - `*` → `[^:]+` (exactly one non-empty segment)
|
|
22
|
+
* - `**` → `.+` (one or more segments)
|
|
23
|
+
* - other tokens are matched literally (regex-escaped)
|
|
24
|
+
* - segments are separated by `:` — literal `:` in the output regex
|
|
25
|
+
*
|
|
26
|
+
* Empty patterns and empty segments are rejected. Case-sensitive.
|
|
27
|
+
*/
|
|
28
|
+
export declare function compileGlob(pattern: string): RegExp;
|
|
29
|
+
//# sourceMappingURL=invalidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalidation.d.ts","sourceRoot":"","sources":["../src/invalidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAA;AAYpD,wBAAgB,cAAc,IAAI,QAAQ,CA+DzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoBnD"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Invalidation event bus.
|
|
3
|
+
*
|
|
4
|
+
* Backed by `mitt` for exact-match subscribe/emit. Pattern subscriptions
|
|
5
|
+
* are held in a separate map and matched with the frozen glob semantics:
|
|
6
|
+
*
|
|
7
|
+
* - `*` matches exactly one `:`-delimited segment
|
|
8
|
+
* - `**` matches one or more segments
|
|
9
|
+
*
|
|
10
|
+
* All handlers run inside a try/catch so a throw in one subscriber does
|
|
11
|
+
* not prevent later subscribers from running (T-10).
|
|
12
|
+
*
|
|
13
|
+
* See data-access/spec.md §Invalidation event bus for the matching table.
|
|
14
|
+
*/
|
|
15
|
+
import mitt from 'mitt';
|
|
16
|
+
import { DataAccessError } from './errors';
|
|
17
|
+
export function createEventBus() {
|
|
18
|
+
const exact = mitt();
|
|
19
|
+
const patterns = new Set();
|
|
20
|
+
return {
|
|
21
|
+
emit(name, payload) {
|
|
22
|
+
// Exact subscribers first (mitt handles its own isolation loop, but
|
|
23
|
+
// we still wrap mitt.emit so a throw inside doesn't skip patterns).
|
|
24
|
+
try {
|
|
25
|
+
exact.emit(name, payload);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
reportHandlerError(err, name);
|
|
29
|
+
}
|
|
30
|
+
for (const entry of patterns) {
|
|
31
|
+
if (entry.regex.test(name)) {
|
|
32
|
+
try {
|
|
33
|
+
entry.handler(name, payload);
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
reportHandlerError(err, name);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
subscribe(name, handler) {
|
|
42
|
+
if (typeof name !== 'string' || name.length === 0) {
|
|
43
|
+
throw new DataAccessError('invalid_pattern', 'subscribe: event name must be a non-empty string');
|
|
44
|
+
}
|
|
45
|
+
const wrapped = (payload) => {
|
|
46
|
+
try {
|
|
47
|
+
handler(payload);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
reportHandlerError(err, name);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
exact.on(name, wrapped);
|
|
54
|
+
return () => exact.off(name, wrapped);
|
|
55
|
+
},
|
|
56
|
+
subscribePattern(pattern, handler) {
|
|
57
|
+
const regex = compileGlob(pattern);
|
|
58
|
+
const entry = {
|
|
59
|
+
handler: handler,
|
|
60
|
+
regex,
|
|
61
|
+
};
|
|
62
|
+
patterns.add(entry);
|
|
63
|
+
return () => {
|
|
64
|
+
patterns.delete(entry);
|
|
65
|
+
};
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Compile a frozen-glob pattern into an anchored RegExp.
|
|
71
|
+
*
|
|
72
|
+
* Rules (spec.md §Invalidation event bus):
|
|
73
|
+
* - `*` → `[^:]+` (exactly one non-empty segment)
|
|
74
|
+
* - `**` → `.+` (one or more segments)
|
|
75
|
+
* - other tokens are matched literally (regex-escaped)
|
|
76
|
+
* - segments are separated by `:` — literal `:` in the output regex
|
|
77
|
+
*
|
|
78
|
+
* Empty patterns and empty segments are rejected. Case-sensitive.
|
|
79
|
+
*/
|
|
80
|
+
export function compileGlob(pattern) {
|
|
81
|
+
if (typeof pattern !== 'string' || pattern.length === 0) {
|
|
82
|
+
throw new DataAccessError('invalid_pattern', 'subscribePattern: pattern must be a non-empty string');
|
|
83
|
+
}
|
|
84
|
+
const segments = pattern.split(':');
|
|
85
|
+
const parts = segments.map((seg) => {
|
|
86
|
+
if (seg.length === 0) {
|
|
87
|
+
throw new DataAccessError('invalid_pattern', `subscribePattern: empty segment in pattern ${JSON.stringify(pattern)}`);
|
|
88
|
+
}
|
|
89
|
+
if (seg === '**')
|
|
90
|
+
return '.+';
|
|
91
|
+
if (seg === '*')
|
|
92
|
+
return '[^:]+';
|
|
93
|
+
return escapeRegex(seg);
|
|
94
|
+
});
|
|
95
|
+
return new RegExp(`^${parts.join(':')}$`);
|
|
96
|
+
}
|
|
97
|
+
function escapeRegex(literal) {
|
|
98
|
+
return literal.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
99
|
+
}
|
|
100
|
+
function reportHandlerError(err, name) {
|
|
101
|
+
// Use console.error so the failure is surfaced but does not propagate.
|
|
102
|
+
// A structured DeviceLogger-style injection is a v0.2.0 concern.
|
|
103
|
+
// eslint-disable-next-line no-console
|
|
104
|
+
console.error(`[@mongrov/data-access] handler for "${name}" threw:`, err);
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=invalidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalidation.js","sourceRoot":"","sources":["../src/invalidation.ts"],"names":[],"mappings":"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"}
|
package/dist/tenant.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tenant auto-binding (T-08).
|
|
3
|
+
*
|
|
4
|
+
* DuckDB queries reference `$brand` and `$familyId` inside SQL literals.
|
|
5
|
+
* Screens supply only their own inputs; the dispatcher merges the tenant
|
|
6
|
+
* pair from the active RequestContext before calling
|
|
7
|
+
* `analytics.execute(sql, params)`.
|
|
8
|
+
*
|
|
9
|
+
* See data-access/spec.md §Tenant auto-binding.
|
|
10
|
+
*/
|
|
11
|
+
import type { RequestContext } from './types';
|
|
12
|
+
/**
|
|
13
|
+
* Merge caller input with `{ brand, familyId }` from the RequestContext.
|
|
14
|
+
* Caller keys win on collision (so an explicit override is possible in
|
|
15
|
+
* tests) but the tenant fields are always present in the result.
|
|
16
|
+
*/
|
|
17
|
+
export declare function mergeTenantParams(input: unknown, ctx: RequestContext): Record<string, unknown>;
|
|
18
|
+
//# sourceMappingURL=tenant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../src/tenant.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,cAAc,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB"}
|
package/dist/tenant.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tenant auto-binding (T-08).
|
|
3
|
+
*
|
|
4
|
+
* DuckDB queries reference `$brand` and `$familyId` inside SQL literals.
|
|
5
|
+
* Screens supply only their own inputs; the dispatcher merges the tenant
|
|
6
|
+
* pair from the active RequestContext before calling
|
|
7
|
+
* `analytics.execute(sql, params)`.
|
|
8
|
+
*
|
|
9
|
+
* See data-access/spec.md §Tenant auto-binding.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Merge caller input with `{ brand, familyId }` from the RequestContext.
|
|
13
|
+
* Caller keys win on collision (so an explicit override is possible in
|
|
14
|
+
* tests) but the tenant fields are always present in the result.
|
|
15
|
+
*/
|
|
16
|
+
export function mergeTenantParams(input, ctx) {
|
|
17
|
+
const base = {
|
|
18
|
+
brand: ctx.brand,
|
|
19
|
+
familyId: ctx.familyId,
|
|
20
|
+
};
|
|
21
|
+
if (input === null || input === undefined)
|
|
22
|
+
return base;
|
|
23
|
+
if (typeof input !== 'object') {
|
|
24
|
+
// Non-object inputs (numbers, strings) are treated opaquely; the SQL
|
|
25
|
+
// author is expected to reference them positionally. We still supply
|
|
26
|
+
// brand + familyId so SQL literal binding works.
|
|
27
|
+
return base;
|
|
28
|
+
}
|
|
29
|
+
return { ...input, ...base };
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=tenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant.js","sourceRoot":"","sources":["../src/tenant.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAc,EACd,GAAmB;IAEnB,MAAM,IAAI,GAA4B;QACpC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAA;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,qEAAqE;QACrE,qEAAqE;QACrE,iDAAiD;QACjD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,EAAE,GAAI,KAAiC,EAAE,GAAG,IAAI,EAAE,CAAA;AAC3D,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public type surface for @mongrov/data-access.
|
|
3
|
+
*
|
|
4
|
+
* v0.1.0-alpha.0 ships type shapes + minimal runtime for the Define API
|
|
5
|
+
* and invalidation bus. Full engine dispatch, hooks, and the ESLint rule
|
|
6
|
+
* land in later tasks.
|
|
7
|
+
*
|
|
8
|
+
* See data-access/spec.md §Define API, §Engine dispatch.
|
|
9
|
+
*/
|
|
10
|
+
import type { z } from 'zod';
|
|
11
|
+
/** Storage engines supported by the dispatcher. */
|
|
12
|
+
export type Engine = 'duckdb' | 'rxdb' | 'kv';
|
|
13
|
+
/**
|
|
14
|
+
* Injected per-request context. Populated by DataAccessProvider from the
|
|
15
|
+
* active session (see spec.md §Tenant auto-binding).
|
|
16
|
+
*/
|
|
17
|
+
export interface RequestContext {
|
|
18
|
+
requesterUserId: string;
|
|
19
|
+
brand: string;
|
|
20
|
+
familyId: string;
|
|
21
|
+
now: () => Date;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Unsubscribe handle returned by every subscription API in this package.
|
|
25
|
+
*/
|
|
26
|
+
export type Unsubscribe = () => void;
|
|
27
|
+
/**
|
|
28
|
+
* Frozen glob-style event bus.
|
|
29
|
+
* - `*` matches exactly one `:`-delimited segment
|
|
30
|
+
* - `**` matches one or more segments
|
|
31
|
+
* See spec.md §Invalidation event bus for the full matching table.
|
|
32
|
+
*/
|
|
33
|
+
export interface EventBus {
|
|
34
|
+
emit<T>(name: string, payload: T): void;
|
|
35
|
+
subscribe<T>(name: string, handler: (payload: T) => void): Unsubscribe;
|
|
36
|
+
subscribePattern<T>(pattern: string, handler: (name: string, payload: T) => void): Unsubscribe;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Shared fields across all query engines.
|
|
40
|
+
*/
|
|
41
|
+
interface QueryConfigBase<TInput, TOutput> {
|
|
42
|
+
input?: z.ZodType<TInput>;
|
|
43
|
+
output: z.ZodType<TOutput>;
|
|
44
|
+
invalidatedBy?: string[];
|
|
45
|
+
authorize?: (input: TInput, ctx: RequestContext) => boolean | Promise<boolean>;
|
|
46
|
+
staleTime?: number;
|
|
47
|
+
gcTime?: number;
|
|
48
|
+
}
|
|
49
|
+
export interface DuckdbQueryConfig<TInput, TOutput> extends QueryConfigBase<TInput, TOutput> {
|
|
50
|
+
engine: 'duckdb';
|
|
51
|
+
sql: string;
|
|
52
|
+
}
|
|
53
|
+
export interface RxdbQueryConfig<TInput, TOutput> extends QueryConfigBase<TInput, TOutput> {
|
|
54
|
+
engine: 'rxdb';
|
|
55
|
+
query: (db: unknown, input: TInput) => unknown;
|
|
56
|
+
}
|
|
57
|
+
export interface KvQueryConfig<TInput, TOutput> extends QueryConfigBase<TInput, TOutput> {
|
|
58
|
+
engine: 'kv';
|
|
59
|
+
keyBuilder: (input: TInput) => string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Union of engine-specific query configs. Screens supply the appropriate
|
|
63
|
+
* branch; `defineQuery` enforces the required field at runtime as well.
|
|
64
|
+
*/
|
|
65
|
+
export type QueryConfig<TInput, TOutput> = DuckdbQueryConfig<TInput, TOutput> | RxdbQueryConfig<TInput, TOutput> | KvQueryConfig<TInput, TOutput>;
|
|
66
|
+
/**
|
|
67
|
+
* Opaque handle returned by defineQuery. Screens read via
|
|
68
|
+
* useAppQuery(name, input); the registry preserves the phantom I/O types
|
|
69
|
+
* via `__types`.
|
|
70
|
+
*/
|
|
71
|
+
export interface QueryDefinition<TInput, TOutput> {
|
|
72
|
+
readonly __kind: 'query';
|
|
73
|
+
readonly config: QueryConfig<TInput, TOutput>;
|
|
74
|
+
readonly __types?: {
|
|
75
|
+
input: TInput;
|
|
76
|
+
output: TOutput;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export interface MutationConfig<TInput, TOutput> {
|
|
80
|
+
input?: z.ZodType<TInput>;
|
|
81
|
+
output?: z.ZodType<TOutput>;
|
|
82
|
+
exec: (input: TInput, ctx: RequestContext) => Promise<TOutput>;
|
|
83
|
+
invalidates?: string[];
|
|
84
|
+
authorize?: (input: TInput, ctx: RequestContext) => boolean | Promise<boolean>;
|
|
85
|
+
optimistic?: (input: TInput, ctx: RequestContext) => TOutput;
|
|
86
|
+
}
|
|
87
|
+
export interface MutationDefinition<TInput, TOutput> {
|
|
88
|
+
readonly __kind: 'mutation';
|
|
89
|
+
readonly config: MutationConfig<TInput, TOutput>;
|
|
90
|
+
readonly __types?: {
|
|
91
|
+
input: TInput;
|
|
92
|
+
output: TOutput;
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
export interface EventDefinition<TPayload> {
|
|
96
|
+
readonly __kind: 'event';
|
|
97
|
+
readonly __types?: {
|
|
98
|
+
payload: TPayload;
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* App-provided registry object shape. Apps assemble concrete registries
|
|
103
|
+
* (typically `as const`) and pass them to DataAccessProvider.
|
|
104
|
+
*/
|
|
105
|
+
export interface Registry {
|
|
106
|
+
queries: Record<string, QueryDefinition<unknown, unknown>>;
|
|
107
|
+
mutations: Record<string, MutationDefinition<unknown, unknown>>;
|
|
108
|
+
events: Record<string, EventDefinition<unknown>>;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* DataAccessProvider input contract. Consumers pass a registry, an
|
|
112
|
+
* engine adapter bundle (see EngineAdapters in ./dispatcher), and a
|
|
113
|
+
* session-derived RequestContext factory.
|
|
114
|
+
*
|
|
115
|
+
* `engines` is typed as `unknown` here to avoid a circular import with
|
|
116
|
+
* ./dispatcher; the concrete shape is EngineAdapters and provider
|
|
117
|
+
* implementations should cast at the boundary.
|
|
118
|
+
*/
|
|
119
|
+
export interface DataAccessProviderProps {
|
|
120
|
+
registry: Registry;
|
|
121
|
+
engines: unknown;
|
|
122
|
+
context: () => RequestContext;
|
|
123
|
+
bus?: EventBus;
|
|
124
|
+
children?: unknown;
|
|
125
|
+
}
|
|
126
|
+
export {};
|
|
127
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public type surface for @mongrov/data-access.
|
|
3
|
+
*
|
|
4
|
+
* v0.1.0-alpha.0 ships type shapes + minimal runtime for the Define API
|
|
5
|
+
* and invalidation bus. Full engine dispatch, hooks, and the ESLint rule
|
|
6
|
+
* land in later tasks.
|
|
7
|
+
*
|
|
8
|
+
* See data-access/spec.md §Define API, §Engine dispatch.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mongrov/data-access",
|
|
3
|
+
"version": "0.1.0-alpha.0",
|
|
4
|
+
"description": "Named query/mutation/event registry with engine dispatch for @mongrov apps",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/mongrov/mongrov-packages.git",
|
|
9
|
+
"directory": "packages/data-access"
|
|
10
|
+
},
|
|
11
|
+
"keywords": [
|
|
12
|
+
"react-native",
|
|
13
|
+
"expo",
|
|
14
|
+
"data-access",
|
|
15
|
+
"tanstack-query",
|
|
16
|
+
"rxdb",
|
|
17
|
+
"duckdb",
|
|
18
|
+
"mmkv"
|
|
19
|
+
],
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=18"
|
|
22
|
+
},
|
|
23
|
+
"main": "dist/index.js",
|
|
24
|
+
"types": "dist/index.d.ts",
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"import": "./dist/index.js",
|
|
29
|
+
"default": "./dist/index.js"
|
|
30
|
+
},
|
|
31
|
+
"./eslint": {
|
|
32
|
+
"types": "./dist/eslint/index.d.ts",
|
|
33
|
+
"import": "./dist/eslint/index.js",
|
|
34
|
+
"default": "./dist/eslint/index.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"dist"
|
|
39
|
+
],
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"mitt": "^3.0.1",
|
|
42
|
+
"xstate": "^5.30.0",
|
|
43
|
+
"zod": "^3.23.8"
|
|
44
|
+
},
|
|
45
|
+
"peerDependencies": {
|
|
46
|
+
"@mongrov/types": "^0.4.0",
|
|
47
|
+
"@tanstack/react-query": ">=5",
|
|
48
|
+
"eslint": ">=8",
|
|
49
|
+
"react": ">=19",
|
|
50
|
+
"react-native": ">=0.81",
|
|
51
|
+
"@mongrov/analytics": "0.1.0-alpha.0",
|
|
52
|
+
"@mongrov/db": "0.3.0"
|
|
53
|
+
},
|
|
54
|
+
"peerDependenciesMeta": {
|
|
55
|
+
"@mongrov/analytics": {
|
|
56
|
+
"optional": true
|
|
57
|
+
},
|
|
58
|
+
"eslint": {
|
|
59
|
+
"optional": true
|
|
60
|
+
},
|
|
61
|
+
"react": {
|
|
62
|
+
"optional": true
|
|
63
|
+
},
|
|
64
|
+
"react-native": {
|
|
65
|
+
"optional": true
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"devDependencies": {
|
|
69
|
+
"@tanstack/react-query": "^5.62.0",
|
|
70
|
+
"@testing-library/react": "^14.3.1",
|
|
71
|
+
"@types/react": "^18.3.12",
|
|
72
|
+
"@types/react-dom": "^18.3.1",
|
|
73
|
+
"eslint": "^8.57.1",
|
|
74
|
+
"jsdom": "^25.0.1",
|
|
75
|
+
"react": "^18.3.1",
|
|
76
|
+
"react-dom": "^18.3.1",
|
|
77
|
+
"typescript": "^5.9.3",
|
|
78
|
+
"vitest": "^2.1.9",
|
|
79
|
+
"@mongrov/db": "0.3.0",
|
|
80
|
+
"@mongrov/analytics": "0.1.0-alpha.0",
|
|
81
|
+
"@mongrov/types": "0.4.0"
|
|
82
|
+
},
|
|
83
|
+
"scripts": {
|
|
84
|
+
"build": "tsc -p tsconfig.build.json",
|
|
85
|
+
"clean": "rm -rf dist",
|
|
86
|
+
"prebuild": "pnpm run clean",
|
|
87
|
+
"test": "vitest run",
|
|
88
|
+
"test:watch": "vitest",
|
|
89
|
+
"typecheck": "tsc --noEmit"
|
|
90
|
+
}
|
|
91
|
+
}
|