@signalium/query 0.0.0 → 0.0.1
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/.turbo/turbo-build.log +12 -0
- package/CHANGELOG.md +9 -0
- package/dist/cjs/EntityMap.js +46 -0
- package/dist/cjs/EntityMap.js.map +1 -0
- package/dist/cjs/QueryClient.js +180 -0
- package/dist/cjs/QueryClient.js.map +1 -0
- package/dist/cjs/QueryStore.js +219 -0
- package/dist/cjs/QueryStore.js.map +1 -0
- package/dist/cjs/errors.js +105 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/index.js +24 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/parseEntities.js +127 -0
- package/dist/cjs/parseEntities.js.map +1 -0
- package/dist/cjs/pathInterpolator.js +69 -0
- package/dist/cjs/pathInterpolator.js.map +1 -0
- package/dist/cjs/proxy.js +187 -0
- package/dist/cjs/proxy.js.map +1 -0
- package/dist/cjs/query.js +41 -0
- package/dist/cjs/query.js.map +1 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/cjs/typeDefs.js +249 -0
- package/dist/cjs/typeDefs.js.map +1 -0
- package/dist/cjs/types.js +6 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.js +65 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/EntityMap.d.ts +18 -0
- package/dist/esm/EntityMap.d.ts.map +1 -0
- package/dist/esm/EntityMap.js +42 -0
- package/dist/esm/EntityMap.js.map +1 -0
- package/dist/esm/QueryClient.d.ts +82 -0
- package/dist/esm/QueryClient.d.ts.map +1 -0
- package/dist/esm/QueryClient.js +175 -0
- package/dist/esm/QueryClient.js.map +1 -0
- package/dist/esm/QueryStore.d.ts +73 -0
- package/dist/esm/QueryStore.d.ts.map +1 -0
- package/dist/esm/QueryStore.js +209 -0
- package/dist/esm/QueryStore.js.map +1 -0
- package/dist/esm/errors.d.ts +4 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +101 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/parseEntities.d.ts +8 -0
- package/dist/esm/parseEntities.d.ts.map +1 -0
- package/dist/esm/parseEntities.js +120 -0
- package/dist/esm/parseEntities.js.map +1 -0
- package/dist/esm/pathInterpolator.d.ts +29 -0
- package/dist/esm/pathInterpolator.d.ts.map +1 -0
- package/dist/esm/pathInterpolator.js +66 -0
- package/dist/esm/pathInterpolator.js.map +1 -0
- package/dist/esm/proxy.d.ts +8 -0
- package/dist/esm/proxy.d.ts.map +1 -0
- package/dist/esm/proxy.js +180 -0
- package/dist/esm/proxy.js.map +1 -0
- package/dist/esm/query.d.ts +40 -0
- package/dist/esm/query.d.ts.map +1 -0
- package/dist/esm/query.js +38 -0
- package/dist/esm/query.js.map +1 -0
- package/dist/esm/typeDefs.d.ts +25 -0
- package/dist/esm/typeDefs.d.ts.map +1 -0
- package/dist/esm/typeDefs.js +239 -0
- package/dist/esm/typeDefs.js.map +1 -0
- package/dist/esm/types.d.ts +86 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +3 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.d.ts +6 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +60 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +3 -3
- package/vitest.config.ts +4 -10
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { ARRAY_KEY, RECORD_KEY, } from './types.js';
|
|
2
|
+
import { extractShape, extractShapeMetadata } from './utils.js';
|
|
3
|
+
export class ValidatorDef {
|
|
4
|
+
mask;
|
|
5
|
+
shape;
|
|
6
|
+
subEntityPaths;
|
|
7
|
+
values;
|
|
8
|
+
typenameField;
|
|
9
|
+
typenameValue;
|
|
10
|
+
idField;
|
|
11
|
+
_optional;
|
|
12
|
+
_nullable;
|
|
13
|
+
_nullish;
|
|
14
|
+
constructor(mask, shape, subEntityPaths = undefined, values = undefined, typenameField = undefined, typenameValue = undefined, idField = undefined) {
|
|
15
|
+
this.mask = mask;
|
|
16
|
+
this.shape = shape;
|
|
17
|
+
this.subEntityPaths = subEntityPaths;
|
|
18
|
+
this.values = values;
|
|
19
|
+
this.typenameField = typenameField;
|
|
20
|
+
this.typenameValue = typenameValue;
|
|
21
|
+
this.idField = idField;
|
|
22
|
+
}
|
|
23
|
+
get optional() {
|
|
24
|
+
if (this._optional === undefined) {
|
|
25
|
+
this._optional = new ValidatorDef(this.mask | 1 /* Mask.UNDEFINED */, this.shape, this.subEntityPaths, this.values, this.typenameField, this.typenameValue, this.idField);
|
|
26
|
+
}
|
|
27
|
+
return this._optional;
|
|
28
|
+
}
|
|
29
|
+
get nullable() {
|
|
30
|
+
if (this._nullable === undefined) {
|
|
31
|
+
this._nullable = new ValidatorDef(this.mask | 2 /* Mask.NULL */, this.shape, this.subEntityPaths, this.values, this.typenameField, this.typenameValue, this.idField);
|
|
32
|
+
}
|
|
33
|
+
return this._nullable;
|
|
34
|
+
}
|
|
35
|
+
get nullish() {
|
|
36
|
+
if (this._nullish === undefined) {
|
|
37
|
+
this._nullish = new ValidatorDef(this.mask | 1 /* Mask.UNDEFINED */ | 2 /* Mask.NULL */, this.shape, this.subEntityPaths, this.values, this.typenameField, this.typenameValue, this.idField);
|
|
38
|
+
}
|
|
39
|
+
return this._nullish;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// -----------------------------------------------------------------------------
|
|
43
|
+
// Complex Type Definitions
|
|
44
|
+
// -----------------------------------------------------------------------------
|
|
45
|
+
export function defineArray(shape) {
|
|
46
|
+
let mask = 64 /* Mask.ARRAY */;
|
|
47
|
+
// Propagate HAS_SUB_ENTITY flag if the shape contains entities
|
|
48
|
+
if (shape instanceof ValidatorDef && (shape.mask & (1024 /* Mask.ENTITY */ | 2048 /* Mask.HAS_SUB_ENTITY */)) !== 0) {
|
|
49
|
+
mask |= 2048 /* Mask.HAS_SUB_ENTITY */;
|
|
50
|
+
}
|
|
51
|
+
return new ValidatorDef(mask, shape);
|
|
52
|
+
}
|
|
53
|
+
export function defineRecord(shape) {
|
|
54
|
+
// The mask should be OBJECT | RECORD so that values match when compared
|
|
55
|
+
let mask = 256 /* Mask.RECORD */ | 32 /* Mask.OBJECT */;
|
|
56
|
+
// Propagate HAS_SUB_ENTITY flag if the shape contains entities
|
|
57
|
+
if (shape instanceof ValidatorDef && (shape.mask & (1024 /* Mask.ENTITY */ | 2048 /* Mask.HAS_SUB_ENTITY */)) !== 0) {
|
|
58
|
+
mask |= 2048 /* Mask.HAS_SUB_ENTITY */;
|
|
59
|
+
}
|
|
60
|
+
return new ValidatorDef(mask, shape);
|
|
61
|
+
}
|
|
62
|
+
export function defineObject(shape) {
|
|
63
|
+
const def = new ValidatorDef(32 /* Mask.OBJECT */, shape);
|
|
64
|
+
extractShapeMetadata(def, shape);
|
|
65
|
+
return def;
|
|
66
|
+
}
|
|
67
|
+
const addShapeToUnion = (shape, definition, unionTypenameField) => {
|
|
68
|
+
const mask = definition.mask;
|
|
69
|
+
if ((mask & 512 /* Mask.UNION */) !== 0) {
|
|
70
|
+
// Merge nested union into parent union
|
|
71
|
+
const nestedUnion = definition;
|
|
72
|
+
// Check typename field consistency
|
|
73
|
+
if (nestedUnion.typenameField !== undefined) {
|
|
74
|
+
if (unionTypenameField !== undefined && unionTypenameField !== nestedUnion.typenameField) {
|
|
75
|
+
throw new Error(`Union typename field conflict: Cannot merge unions with different typename fields ('${unionTypenameField}' vs '${nestedUnion.typenameField}')`);
|
|
76
|
+
}
|
|
77
|
+
unionTypenameField = nestedUnion.typenameField;
|
|
78
|
+
}
|
|
79
|
+
// Merge nested union's shape into parent
|
|
80
|
+
if (nestedUnion.shape !== undefined) {
|
|
81
|
+
for (const key of [...Object.keys(nestedUnion.shape), ARRAY_KEY, RECORD_KEY]) {
|
|
82
|
+
// Check for conflicts
|
|
83
|
+
const value = nestedUnion.shape[key];
|
|
84
|
+
if (shape[key] !== undefined && shape[key] !== value) {
|
|
85
|
+
throw new Error(`Union merge conflict: Duplicate typename value '${String(key)}' found when merging nested unions`);
|
|
86
|
+
}
|
|
87
|
+
// coerce type because we know the value is the same type as the key
|
|
88
|
+
shape[key] = value;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return unionTypenameField;
|
|
92
|
+
}
|
|
93
|
+
else if ((mask & 64 /* Mask.ARRAY */) !== 0) {
|
|
94
|
+
if (shape[ARRAY_KEY] !== undefined) {
|
|
95
|
+
throw new Error('Array shape already defined');
|
|
96
|
+
}
|
|
97
|
+
shape[ARRAY_KEY] = definition.shape;
|
|
98
|
+
return unionTypenameField;
|
|
99
|
+
}
|
|
100
|
+
else if ((mask & 256 /* Mask.RECORD */) !== 0) {
|
|
101
|
+
if (shape[RECORD_KEY] !== undefined) {
|
|
102
|
+
throw new Error('Record shape already defined');
|
|
103
|
+
}
|
|
104
|
+
shape[RECORD_KEY] = definition.shape;
|
|
105
|
+
return unionTypenameField;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// Make sure the type is fully extracted, so we can get the typename field and value
|
|
109
|
+
extractShape(definition);
|
|
110
|
+
// definition is ObjectDef | EntityDef
|
|
111
|
+
const typenameField = definition.typenameField;
|
|
112
|
+
const typename = definition.typenameValue;
|
|
113
|
+
if (typename === undefined) {
|
|
114
|
+
throw new Error('Object definitions must have a typename to be in a union with other objects, records, or arrays');
|
|
115
|
+
}
|
|
116
|
+
if (unionTypenameField !== undefined && typenameField !== unionTypenameField) {
|
|
117
|
+
throw new Error('Object definitions must have the same typename field to be in the same union');
|
|
118
|
+
}
|
|
119
|
+
shape[typename] = definition;
|
|
120
|
+
return typenameField;
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
function defineUnion(...types) {
|
|
124
|
+
let mask = 0;
|
|
125
|
+
let definition;
|
|
126
|
+
let shape;
|
|
127
|
+
let values;
|
|
128
|
+
let unionTypenameField;
|
|
129
|
+
for (const type of types) {
|
|
130
|
+
if (typeof type === 'number') {
|
|
131
|
+
mask |= type;
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
const isSet = type instanceof Set;
|
|
135
|
+
const typeValues = isSet ? type : type.values;
|
|
136
|
+
// Handle Set-based constants/enums
|
|
137
|
+
if (typeValues !== undefined) {
|
|
138
|
+
if (values === undefined) {
|
|
139
|
+
values = new Set(typeValues);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
for (const val of typeValues) {
|
|
143
|
+
values.add(val);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (isSet) {
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// We know it's a complex type at this point because if it was a Set,
|
|
151
|
+
// we would have already handled it above.
|
|
152
|
+
const typeDef = type;
|
|
153
|
+
mask |= typeDef.mask;
|
|
154
|
+
if (definition === undefined) {
|
|
155
|
+
definition = typeDef;
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (shape === undefined) {
|
|
159
|
+
shape = Object.create(null);
|
|
160
|
+
unionTypenameField = addShapeToUnion(shape, definition, unionTypenameField);
|
|
161
|
+
}
|
|
162
|
+
unionTypenameField = addShapeToUnion(shape, typeDef, unionTypenameField);
|
|
163
|
+
}
|
|
164
|
+
// It was a union of primitives, so return the mask
|
|
165
|
+
if (definition === undefined && values === undefined) {
|
|
166
|
+
// This type coercion is incorrect, but we can't return the mask as a Mask
|
|
167
|
+
// because that loses the type information about the union, which breaks
|
|
168
|
+
// inference.
|
|
169
|
+
//
|
|
170
|
+
// TODO: Figure out how to make this correct type-wise
|
|
171
|
+
return mask;
|
|
172
|
+
}
|
|
173
|
+
return new ValidatorDef(mask | 512 /* Mask.UNION */, shape ?? definition?.shape, undefined, values, unionTypenameField);
|
|
174
|
+
}
|
|
175
|
+
// -----------------------------------------------------------------------------
|
|
176
|
+
// Marker Functions
|
|
177
|
+
// -----------------------------------------------------------------------------
|
|
178
|
+
function defineTypename(value) {
|
|
179
|
+
return value;
|
|
180
|
+
}
|
|
181
|
+
function defineConst(value) {
|
|
182
|
+
return new Set([value]);
|
|
183
|
+
}
|
|
184
|
+
function defineEnum(...values) {
|
|
185
|
+
return new Set(values);
|
|
186
|
+
}
|
|
187
|
+
// -----------------------------------------------------------------------------
|
|
188
|
+
// Formatted Values
|
|
189
|
+
// -----------------------------------------------------------------------------
|
|
190
|
+
const FORMAT_MASK_SHIFT = 16;
|
|
191
|
+
let nextFormatId = 0;
|
|
192
|
+
const FORMAT_PARSERS = [];
|
|
193
|
+
const FORMAT_SERIALIZERS = [];
|
|
194
|
+
const FORMAT_MAP = new Map();
|
|
195
|
+
function defineFormatted(format) {
|
|
196
|
+
const mask = FORMAT_MAP.get(format);
|
|
197
|
+
if (mask === undefined) {
|
|
198
|
+
throw new Error(`Format ${format} not registered`);
|
|
199
|
+
}
|
|
200
|
+
return mask;
|
|
201
|
+
}
|
|
202
|
+
export function getFormat(mask) {
|
|
203
|
+
const formatId = mask >> FORMAT_MASK_SHIFT;
|
|
204
|
+
return FORMAT_PARSERS[formatId];
|
|
205
|
+
}
|
|
206
|
+
export function registerFormat(name, type, parse, serialize) {
|
|
207
|
+
const maskId = nextFormatId++;
|
|
208
|
+
FORMAT_PARSERS[maskId] = parse;
|
|
209
|
+
FORMAT_SERIALIZERS[maskId] = serialize;
|
|
210
|
+
const shiftedId = maskId << FORMAT_MASK_SHIFT;
|
|
211
|
+
const formatMask = type === 8 /* Mask.STRING */ ? 8192 /* Mask.HAS_STRING_FORMAT */ : 4096 /* Mask.HAS_NUMBER_FORMAT */;
|
|
212
|
+
const mask = shiftedId | type | formatMask;
|
|
213
|
+
FORMAT_MAP.set(name, mask);
|
|
214
|
+
}
|
|
215
|
+
// -----------------------------------------------------------------------------
|
|
216
|
+
// Entity Definitions
|
|
217
|
+
// -----------------------------------------------------------------------------
|
|
218
|
+
export function entity(shape) {
|
|
219
|
+
return new ValidatorDef(
|
|
220
|
+
// The mask should be OBJECT | ENTITY so that values match when compared
|
|
221
|
+
1024 /* Mask.ENTITY */ | 32 /* Mask.OBJECT */, shape);
|
|
222
|
+
}
|
|
223
|
+
export const t = {
|
|
224
|
+
format: defineFormatted,
|
|
225
|
+
typename: defineTypename,
|
|
226
|
+
const: defineConst,
|
|
227
|
+
enum: defineEnum,
|
|
228
|
+
id: 128 /* Mask.ID */ | 8 /* Mask.STRING */ | 4 /* Mask.NUMBER */,
|
|
229
|
+
string: 8 /* Mask.STRING */,
|
|
230
|
+
number: 4 /* Mask.NUMBER */,
|
|
231
|
+
boolean: 16 /* Mask.BOOLEAN */,
|
|
232
|
+
null: 2 /* Mask.NULL */,
|
|
233
|
+
undefined: 1 /* Mask.UNDEFINED */,
|
|
234
|
+
array: defineArray,
|
|
235
|
+
object: defineObject,
|
|
236
|
+
record: defineRecord,
|
|
237
|
+
union: defineUnion,
|
|
238
|
+
};
|
|
239
|
+
//# sourceMappingURL=typeDefs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeDefs.js","sourceRoot":"","sources":["../../src/typeDefs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { PendingReactivePromise, ReadyReactivePromise } from 'signalium';
|
|
2
|
+
import { ReactivePromise } from 'signalium';
|
|
3
|
+
export declare const enum Mask {
|
|
4
|
+
UNDEFINED = 1,
|
|
5
|
+
NULL = 2,
|
|
6
|
+
NUMBER = 4,
|
|
7
|
+
STRING = 8,
|
|
8
|
+
BOOLEAN = 16,
|
|
9
|
+
OBJECT = 32,
|
|
10
|
+
ARRAY = 64,
|
|
11
|
+
ID = 128,
|
|
12
|
+
RECORD = 256,
|
|
13
|
+
UNION = 512,
|
|
14
|
+
ENTITY = 1024,
|
|
15
|
+
HAS_SUB_ENTITY = 2048,
|
|
16
|
+
HAS_NUMBER_FORMAT = 4096,
|
|
17
|
+
HAS_STRING_FORMAT = 8192
|
|
18
|
+
}
|
|
19
|
+
export type SimpleTypeDef = Set<string | boolean | number> | Mask;
|
|
20
|
+
export type ComplexTypeDef = ObjectDef | EntityDef | ArrayDef | RecordDef | UnionDef;
|
|
21
|
+
export type TypeDef = SimpleTypeDef | ComplexTypeDef;
|
|
22
|
+
export type ObjectFieldTypeDef = TypeDef | string;
|
|
23
|
+
export type ObjectShape = Record<string, ObjectFieldTypeDef>;
|
|
24
|
+
export declare const ARRAY_KEY: unique symbol;
|
|
25
|
+
export declare const RECORD_KEY: unique symbol;
|
|
26
|
+
export interface UnionTypeDefs {
|
|
27
|
+
[ARRAY_KEY]?: TypeDef;
|
|
28
|
+
[RECORD_KEY]?: TypeDef;
|
|
29
|
+
[key: string]: ObjectDef | EntityDef;
|
|
30
|
+
}
|
|
31
|
+
export interface BaseTypeDef {
|
|
32
|
+
mask: Mask;
|
|
33
|
+
typenameField: string;
|
|
34
|
+
typenameValue: string;
|
|
35
|
+
idField: string;
|
|
36
|
+
subEntityPaths: undefined | string | string[];
|
|
37
|
+
values: Set<string | boolean | number> | undefined;
|
|
38
|
+
optional: this | Mask.UNDEFINED;
|
|
39
|
+
nullable: this | Mask.NULL;
|
|
40
|
+
nullish: this | Mask.UNDEFINED | Mask.NULL;
|
|
41
|
+
}
|
|
42
|
+
export interface EntityDef<T extends ObjectShape = ObjectShape> extends BaseTypeDef {
|
|
43
|
+
mask: Mask.ENTITY;
|
|
44
|
+
shape: T | ((t: APITypes) => T);
|
|
45
|
+
}
|
|
46
|
+
export interface ObjectDef<T extends ObjectShape = ObjectShape> extends BaseTypeDef {
|
|
47
|
+
mask: Mask.OBJECT;
|
|
48
|
+
shape: T;
|
|
49
|
+
}
|
|
50
|
+
export interface ArrayDef<T extends TypeDef = TypeDef> extends BaseTypeDef {
|
|
51
|
+
mask: Mask.ARRAY;
|
|
52
|
+
shape: T;
|
|
53
|
+
}
|
|
54
|
+
export interface UnionDef<_T extends readonly TypeDef[] = readonly TypeDef[]> extends BaseTypeDef {
|
|
55
|
+
mask: Mask.UNION;
|
|
56
|
+
shape: UnionTypeDefs | undefined;
|
|
57
|
+
}
|
|
58
|
+
export interface RecordDef<T extends TypeDef = TypeDef> extends BaseTypeDef {
|
|
59
|
+
mask: Mask.RECORD;
|
|
60
|
+
shape: T;
|
|
61
|
+
}
|
|
62
|
+
export interface APITypes {
|
|
63
|
+
format: (format: string) => number;
|
|
64
|
+
typename: <T extends string>(value: T) => T;
|
|
65
|
+
const: <T extends string | boolean | number>(value: T) => Set<T>;
|
|
66
|
+
enum: <T extends readonly (string | boolean | number)[]>(...values: T) => Set<T[number]>;
|
|
67
|
+
id: Mask.ID;
|
|
68
|
+
string: Mask.STRING;
|
|
69
|
+
number: Mask.NUMBER;
|
|
70
|
+
boolean: Mask.BOOLEAN;
|
|
71
|
+
null: Mask.NULL;
|
|
72
|
+
undefined: Mask.UNDEFINED;
|
|
73
|
+
array: <T extends TypeDef>(shape: T) => ArrayDef<T>;
|
|
74
|
+
object: <T extends ObjectShape>(shape: T) => ObjectDef<T>;
|
|
75
|
+
record: <T extends TypeDef>(shape: T) => RecordDef<T>;
|
|
76
|
+
union: <VS extends readonly TypeDef[]>(...types: VS) => UnionDef<VS>;
|
|
77
|
+
}
|
|
78
|
+
type QueryResultExtensions<T> = {
|
|
79
|
+
refetch: () => Promise<T>;
|
|
80
|
+
};
|
|
81
|
+
export type QueryResult<T> = ReactivePromise<T> & QueryResultExtensions<T>;
|
|
82
|
+
export type PendingQueryResult<T> = PendingReactivePromise<T> & QueryResultExtensions<T>;
|
|
83
|
+
export type ReadyQueryResult<T> = ReadyReactivePromise<T> & QueryResultExtensions<T>;
|
|
84
|
+
export type DiscriminatedQueryResult<T> = PendingQueryResult<T> | ReadyQueryResult<T>;
|
|
85
|
+
export {};
|
|
86
|
+
//# 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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AA0CA,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ValidatorDef } from './typeDefs.js';
|
|
2
|
+
import { ComplexTypeDef, EntityDef, Mask, ObjectShape } from './types.js';
|
|
3
|
+
export declare function extractShapeMetadata(def: ValidatorDef<any>, shape: ObjectShape): void;
|
|
4
|
+
export declare function extractShape<T extends ComplexTypeDef>(def: T): T extends EntityDef ? ObjectShape : T['shape'];
|
|
5
|
+
export declare function typeMaskOf(value: unknown): Mask;
|
|
6
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK1E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CA6BrF;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAS7G;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAiB/C"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { t, ValidatorDef } from './typeDefs.js';
|
|
2
|
+
const entries = Object.entries;
|
|
3
|
+
const isArray = Array.isArray;
|
|
4
|
+
export function extractShapeMetadata(def, shape) {
|
|
5
|
+
for (const [key, value] of Object.entries(shape)) {
|
|
6
|
+
if (value instanceof ValidatorDef && (value.mask & (1024 /* Mask.ENTITY */ | 2048 /* Mask.HAS_SUB_ENTITY */)) !== 0) {
|
|
7
|
+
if (def.subEntityPaths === undefined) {
|
|
8
|
+
def.subEntityPaths = key;
|
|
9
|
+
}
|
|
10
|
+
else if (isArray(def.subEntityPaths)) {
|
|
11
|
+
def.subEntityPaths.push(key);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
def.subEntityPaths = [def.subEntityPaths, key];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
// Check if this is a typename field (plain string value)
|
|
18
|
+
if (typeof value === 'string') {
|
|
19
|
+
if (def.typenameField !== undefined) {
|
|
20
|
+
throw new Error(`Duplicate typename field: ${key}`);
|
|
21
|
+
}
|
|
22
|
+
def.typenameField = key;
|
|
23
|
+
def.typenameValue = value;
|
|
24
|
+
}
|
|
25
|
+
// Check if this is an id field (Mask.ID)
|
|
26
|
+
else if (typeof value === 'number' && (value & 128 /* Mask.ID */) !== 0) {
|
|
27
|
+
if (def.idField !== undefined) {
|
|
28
|
+
throw new Error(`Duplicate id field: ${key}`);
|
|
29
|
+
}
|
|
30
|
+
def.idField = key;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function extractShape(def) {
|
|
35
|
+
let shape = def.shape;
|
|
36
|
+
if (typeof shape === 'function') {
|
|
37
|
+
shape = def.shape = shape(t);
|
|
38
|
+
extractShapeMetadata(def, shape);
|
|
39
|
+
}
|
|
40
|
+
return shape;
|
|
41
|
+
}
|
|
42
|
+
export function typeMaskOf(value) {
|
|
43
|
+
if (value === null)
|
|
44
|
+
return 2 /* Mask.NULL */;
|
|
45
|
+
switch (typeof value) {
|
|
46
|
+
case 'number':
|
|
47
|
+
return 4 /* Mask.NUMBER */;
|
|
48
|
+
case 'string':
|
|
49
|
+
return 8 /* Mask.STRING */;
|
|
50
|
+
case 'boolean':
|
|
51
|
+
return 16 /* Mask.BOOLEAN */;
|
|
52
|
+
case 'undefined':
|
|
53
|
+
return 1 /* Mask.UNDEFINED */;
|
|
54
|
+
case 'object':
|
|
55
|
+
return isArray(value) ? 64 /* Mask.ARRAY */ : 32 /* Mask.OBJECT */;
|
|
56
|
+
default:
|
|
57
|
+
throw new Error(`Invalid type: ${typeof value}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAE9B,MAAM,UAAU,oBAAoB,CAAC,GAAsB,EAAE,KAAkB;IAC7E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,YAAY,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,uDAAiC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9F,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;gBACrC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;YAC3B,CAAC;iBAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;gBACvC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,cAAc,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QACD,yDAAyD;QACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;YACtD,CAAC;YAED,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC;YACxB,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,CAAC;QACD,yCAAyC;aACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,oBAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9D,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;YAChD,CAAC;YAED,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC;QACpB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAA2B,GAAM;IAC3D,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IAEtB,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,oBAAoB,CAAC,GAAwB,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,KAAuD,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,KAAK,KAAK,IAAI;QAAE,yBAAiB;IAErC,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,2BAAmB;QACrB,KAAK,QAAQ;YACX,2BAAmB;QACrB,KAAK,SAAS;YACZ,6BAAoB;QACtB,KAAK,WAAW;YACd,8BAAsB;QACxB,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAY,CAAC,qBAAY,CAAC;QACnD;YACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../src/EntityMap.ts","../src/QueryClient.ts","../src/QueryStore.ts","../src/errors.ts","../src/index.ts","../src/parseEntities.ts","../src/pathInterpolator.ts","../src/proxy.ts","../src/query.ts","../src/typeDefs.ts","../src/types.ts","../src/utils.ts"],"version":"5.7.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signalium/query",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"react": ">=18.3.1",
|
|
28
|
-
"signalium": ">=2.0.
|
|
28
|
+
"signalium": ">=2.0.7"
|
|
29
29
|
},
|
|
30
30
|
"peerDependenciesMeta": {
|
|
31
31
|
"react": {
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"react": "^18.3.1",
|
|
61
61
|
"react-dom": "^18.3.1",
|
|
62
62
|
"rollup-plugin-const-enum": "^1.1.4",
|
|
63
|
-
"signalium": "2.0.
|
|
63
|
+
"signalium": "2.0.7",
|
|
64
64
|
"vite": "^7.1.2",
|
|
65
65
|
"vite-plugin-babel": "^1.3.0",
|
|
66
66
|
"vite-plugin-dts": "^4.5.4",
|
package/vitest.config.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference types="@vitest/browser/providers/playwright" />
|
|
2
2
|
|
|
3
3
|
import { defineConfig } from 'vitest/config';
|
|
4
|
+
import react from '@vitejs/plugin-react';
|
|
4
5
|
import babel from 'vite-plugin-babel';
|
|
5
6
|
import { signaliumPreset } from 'signalium/transform';
|
|
6
7
|
import tsconfigPaths from 'vite-tsconfig-paths';
|
|
@@ -42,16 +43,9 @@ export default defineConfig({
|
|
|
42
43
|
{
|
|
43
44
|
extends: true,
|
|
44
45
|
plugins: [
|
|
45
|
-
(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
babelrc: false,
|
|
49
|
-
configFile: false,
|
|
50
|
-
sourceMaps: true,
|
|
51
|
-
presets: [['@babel/preset-react', { runtime: 'automatic' }], signaliumPreset()],
|
|
52
|
-
parserOpts: {
|
|
53
|
-
plugins: ['typescript', 'jsx'],
|
|
54
|
-
},
|
|
46
|
+
react({
|
|
47
|
+
babel: {
|
|
48
|
+
presets: [signaliumPreset()],
|
|
55
49
|
},
|
|
56
50
|
}),
|
|
57
51
|
],
|