@signalium/query 0.0.0 → 0.0.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.
- package/.turbo/turbo-build.log +12 -0
- package/CHANGELOG.md +17 -0
- package/dist/cjs/EntityMap.js +46 -0
- package/dist/cjs/EntityMap.js.map +1 -0
- package/dist/cjs/QueryClient.js +368 -0
- package/dist/cjs/QueryClient.js.map +1 -0
- package/dist/cjs/QueryStore.js +222 -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 +15 -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 +123 -0
- package/dist/esm/QueryClient.d.ts.map +1 -0
- package/dist/esm/QueryClient.js +363 -0
- package/dist/esm/QueryClient.js.map +1 -0
- package/dist/esm/QueryStore.d.ts +77 -0
- package/dist/esm/QueryStore.d.ts.map +1 -0
- package/dist/esm/QueryStore.js +212 -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 +41 -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 +96 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +12 -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/src/QueryClient.ts +321 -105
- package/src/QueryStore.ts +15 -7
- package/src/__tests__/caching-persistence.test.ts +31 -2
- package/src/__tests__/entity-system.test.ts +5 -1
- package/src/__tests__/gc-time.test.ts +327 -0
- package/src/__tests__/mock-fetch.test.ts +8 -4
- package/src/__tests__/parse-entities.test.ts +5 -1
- package/src/__tests__/reactivity.test.ts +5 -1
- package/src/__tests__/refetch-interval.test.ts +262 -0
- package/src/__tests__/rest-query-api.test.ts +5 -1
- package/src/__tests__/stale-time.test.ts +357 -0
- package/src/__tests__/utils.ts +28 -12
- package/src/__tests__/validation-edge-cases.test.ts +1 -0
- package/src/query.ts +2 -1
- package/src/react/__tests__/basic.test.tsx +9 -4
- package/src/react/__tests__/component.test.tsx +10 -3
- package/src/types.ts +11 -0
- package/vitest.config.ts +4 -10
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseArrayValue = parseArrayValue;
|
|
4
|
+
exports.parseRecordValue = parseRecordValue;
|
|
5
|
+
exports.parseObjectValue = parseObjectValue;
|
|
6
|
+
exports.parseValue = parseValue;
|
|
7
|
+
exports.createEntityProxy = createEntityProxy;
|
|
8
|
+
const errors_js_1 = require("./errors.js");
|
|
9
|
+
const typeDefs_js_1 = require("./typeDefs.js");
|
|
10
|
+
const types_js_1 = require("./types.js");
|
|
11
|
+
const utils_js_1 = require("./utils.js");
|
|
12
|
+
const entries = Object.entries;
|
|
13
|
+
const PROXY_BRAND = new WeakSet();
|
|
14
|
+
function parseUnionValue(valueType, value, unionDef, path) {
|
|
15
|
+
if (valueType === 64 /* Mask.ARRAY */) {
|
|
16
|
+
const shape = unionDef.shape[types_js_1.ARRAY_KEY];
|
|
17
|
+
if (shape === undefined || typeof shape === 'number') {
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
return parseArrayValue(value, shape, path);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
// Use the cached typename field from the union definition
|
|
24
|
+
const typenameField = unionDef.typenameField;
|
|
25
|
+
const typename = typenameField ? value[typenameField] : undefined;
|
|
26
|
+
if (typename === undefined || typeof typename !== 'string') {
|
|
27
|
+
const recordShape = unionDef.shape[types_js_1.RECORD_KEY];
|
|
28
|
+
if (recordShape === undefined || typeof recordShape === 'number') {
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
return parseRecordValue(value, recordShape, path);
|
|
32
|
+
}
|
|
33
|
+
const matchingDef = unionDef.shape[typename];
|
|
34
|
+
if (matchingDef === undefined || typeof matchingDef === 'number') {
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
return parseObjectValue(value, matchingDef, path);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function parseArrayValue(array, arrayShape, path) {
|
|
41
|
+
for (let i = 0; i < array.length; i++) {
|
|
42
|
+
array[i] = parseValue(array[i], arrayShape, `${path}[${i}]`);
|
|
43
|
+
}
|
|
44
|
+
return array;
|
|
45
|
+
}
|
|
46
|
+
function parseRecordValue(record, recordShape, path) {
|
|
47
|
+
for (const [key, value] of entries(record)) {
|
|
48
|
+
record[key] = parseValue(value, recordShape, `${path}["${key}"]`);
|
|
49
|
+
}
|
|
50
|
+
return record;
|
|
51
|
+
}
|
|
52
|
+
function parseObjectValue(object, objectShape, path) {
|
|
53
|
+
if (PROXY_BRAND.has(object)) {
|
|
54
|
+
// Is an entity proxy, so return it directly
|
|
55
|
+
return object;
|
|
56
|
+
}
|
|
57
|
+
const shape = (0, utils_js_1.extractShape)(objectShape);
|
|
58
|
+
for (const [key, propShape] of entries(shape)) {
|
|
59
|
+
// parse and replace the property in place
|
|
60
|
+
object[key] = parseValue(object[key], propShape, `${path}.${key}`);
|
|
61
|
+
}
|
|
62
|
+
return object;
|
|
63
|
+
}
|
|
64
|
+
function parseValue(value, propDef, path) {
|
|
65
|
+
// Handle Set-based constants/enums
|
|
66
|
+
if (propDef instanceof Set) {
|
|
67
|
+
if (!propDef.has(value)) {
|
|
68
|
+
throw (0, errors_js_1.typeError)(path, propDef, value);
|
|
69
|
+
}
|
|
70
|
+
return value;
|
|
71
|
+
}
|
|
72
|
+
switch (typeof propDef) {
|
|
73
|
+
case 'string':
|
|
74
|
+
if (value !== propDef) {
|
|
75
|
+
throw (0, errors_js_1.typeError)(path, propDef, value);
|
|
76
|
+
}
|
|
77
|
+
return value;
|
|
78
|
+
// handle primitives
|
|
79
|
+
case 'number': {
|
|
80
|
+
let valueType = (0, utils_js_1.typeMaskOf)(value);
|
|
81
|
+
if ((propDef & valueType) === 0) {
|
|
82
|
+
throw (0, errors_js_1.typeError)(path, propDef, value);
|
|
83
|
+
}
|
|
84
|
+
if ((propDef & 4096 /* Mask.HAS_NUMBER_FORMAT */) !== 0 && valueType === 4 /* Mask.NUMBER */) {
|
|
85
|
+
return (0, typeDefs_js_1.getFormat)(propDef)(value);
|
|
86
|
+
}
|
|
87
|
+
if ((propDef & 8192 /* Mask.HAS_STRING_FORMAT */) !== 0 && valueType === 8 /* Mask.STRING */) {
|
|
88
|
+
return (0, typeDefs_js_1.getFormat)(propDef)(value);
|
|
89
|
+
}
|
|
90
|
+
return value;
|
|
91
|
+
}
|
|
92
|
+
// handle complex objects
|
|
93
|
+
default: {
|
|
94
|
+
// Note: Keep in mind that at this point, we're using `valueType`
|
|
95
|
+
// primarily, so some of the logic is "reversed" from the above where
|
|
96
|
+
// we use the `propDef` type primarily
|
|
97
|
+
let valueType = (0, utils_js_1.typeMaskOf)(value);
|
|
98
|
+
const propMask = propDef.mask;
|
|
99
|
+
// Check if the value type is allowed by the propMask
|
|
100
|
+
// Also check if it's in a values set (for enums/constants stored in ValidatorDef)
|
|
101
|
+
if ((propMask & valueType) === 0 && !propDef.values?.has(value)) {
|
|
102
|
+
throw (0, errors_js_1.typeError)(path, propMask, value);
|
|
103
|
+
}
|
|
104
|
+
if (valueType < 32 /* Mask.OBJECT */) {
|
|
105
|
+
if ((propMask & 4096 /* Mask.HAS_NUMBER_FORMAT */) !== 0 && valueType === 4 /* Mask.NUMBER */) {
|
|
106
|
+
return (0, typeDefs_js_1.getFormat)(propMask)(value);
|
|
107
|
+
}
|
|
108
|
+
if ((propMask & 8192 /* Mask.HAS_STRING_FORMAT */) !== 0 && valueType === 8 /* Mask.STRING */) {
|
|
109
|
+
return (0, typeDefs_js_1.getFormat)(propMask)(value);
|
|
110
|
+
}
|
|
111
|
+
// value is a primitive, it has already passed the mask so return it now
|
|
112
|
+
return value;
|
|
113
|
+
}
|
|
114
|
+
if ((valueType & 512 /* Mask.UNION */) !== 0) {
|
|
115
|
+
return parseUnionValue(valueType, value, propDef, path);
|
|
116
|
+
}
|
|
117
|
+
if (valueType === 64 /* Mask.ARRAY */) {
|
|
118
|
+
return parseArrayValue(value, propDef.shape, path);
|
|
119
|
+
}
|
|
120
|
+
return parseObjectValue(value, propDef, path);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const CustomNodeInspect = Symbol.for('nodejs.util.inspect.custom');
|
|
125
|
+
function createEntityProxy(id, entityRecord, def, desc) {
|
|
126
|
+
// Cache for nested proxies - each proxy gets its own cache
|
|
127
|
+
const shape = (0, utils_js_1.extractShape)(def);
|
|
128
|
+
const toJSON = () => ({
|
|
129
|
+
__entityRef: id,
|
|
130
|
+
});
|
|
131
|
+
const handler = {
|
|
132
|
+
get(target, prop) {
|
|
133
|
+
// Handle toJSON for serialization
|
|
134
|
+
if (prop === 'toJSON') {
|
|
135
|
+
return toJSON;
|
|
136
|
+
}
|
|
137
|
+
const { signal, cache } = entityRecord;
|
|
138
|
+
const obj = signal.value;
|
|
139
|
+
// Check cache first, BEFORE any expensive checks
|
|
140
|
+
if (cache.has(prop)) {
|
|
141
|
+
return cache.get(prop);
|
|
142
|
+
}
|
|
143
|
+
let value = obj[prop];
|
|
144
|
+
let propDef = shape[prop];
|
|
145
|
+
if (!Object.hasOwnProperty.call(shape, prop)) {
|
|
146
|
+
return value;
|
|
147
|
+
}
|
|
148
|
+
const parsed = parseValue(value, propDef, `[[${desc}]].${prop}`);
|
|
149
|
+
cache.set(prop, parsed);
|
|
150
|
+
return parsed;
|
|
151
|
+
},
|
|
152
|
+
has(target, prop) {
|
|
153
|
+
return prop in shape;
|
|
154
|
+
},
|
|
155
|
+
ownKeys(target) {
|
|
156
|
+
const keys = Object.keys(shape);
|
|
157
|
+
// Add typename field if it exists on the definition
|
|
158
|
+
const typenameField = def.typenameField;
|
|
159
|
+
if (typenameField && !keys.includes(typenameField)) {
|
|
160
|
+
keys.push(typenameField);
|
|
161
|
+
}
|
|
162
|
+
return keys;
|
|
163
|
+
},
|
|
164
|
+
getOwnPropertyDescriptor(target, prop) {
|
|
165
|
+
const typenameField = def.typenameField;
|
|
166
|
+
if (prop in shape || prop === typenameField) {
|
|
167
|
+
return {
|
|
168
|
+
enumerable: true,
|
|
169
|
+
configurable: true,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
return undefined;
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
const proxy = new Proxy({
|
|
176
|
+
[CustomNodeInspect]: () => {
|
|
177
|
+
return Object.keys(shape).reduce((acc, key) => {
|
|
178
|
+
acc[key] = proxy[key];
|
|
179
|
+
return acc;
|
|
180
|
+
}, {});
|
|
181
|
+
},
|
|
182
|
+
}, handler);
|
|
183
|
+
// Add the proxy to the proxy brand set so we can easily identify it later
|
|
184
|
+
PROXY_BRAND.add(proxy);
|
|
185
|
+
return proxy;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.query = query;
|
|
4
|
+
const signalium_1 = require("signalium");
|
|
5
|
+
const QueryClient_js_1 = require("./QueryClient.js");
|
|
6
|
+
const typeDefs_js_1 = require("./typeDefs.js");
|
|
7
|
+
const pathInterpolator_js_1 = require("./pathInterpolator.js");
|
|
8
|
+
function query(queryDefinitionBuilder) {
|
|
9
|
+
let queryDefinition;
|
|
10
|
+
return (0, signalium_1.reactive)((params) => {
|
|
11
|
+
const queryClient = (0, signalium_1.getContext)(QueryClient_js_1.QueryClientContext);
|
|
12
|
+
if (queryClient === undefined) {
|
|
13
|
+
throw new Error('QueryClient not found');
|
|
14
|
+
}
|
|
15
|
+
if (queryDefinition === undefined) {
|
|
16
|
+
const { path, method = 'GET', response, cache, refetchInterval } = queryDefinitionBuilder(typeDefs_js_1.t);
|
|
17
|
+
const id = `${method}:${path}`;
|
|
18
|
+
const shape = typeof response === 'object' && !(response instanceof typeDefs_js_1.ValidatorDef)
|
|
19
|
+
? typeDefs_js_1.t.object(response)
|
|
20
|
+
: response;
|
|
21
|
+
// Create optimized path interpolator (parses template once)
|
|
22
|
+
const interpolatePath = (0, pathInterpolator_js_1.createPathInterpolator)(path);
|
|
23
|
+
const fetchFn = async (context, params) => {
|
|
24
|
+
// Interpolate path params and append search params automatically
|
|
25
|
+
const url = interpolatePath(params);
|
|
26
|
+
const response = await context.fetch(url, {
|
|
27
|
+
method,
|
|
28
|
+
});
|
|
29
|
+
return response.json();
|
|
30
|
+
};
|
|
31
|
+
queryDefinition = {
|
|
32
|
+
id,
|
|
33
|
+
shape,
|
|
34
|
+
fetchFn,
|
|
35
|
+
cache,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return queryClient.getQuery(queryDefinition, params);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/query.ts"],"names":[],"mappings":";;AA0GA,sBAyDC;AAnKD,yCAAiD;AAYjD,qDAAwG;AACxG,+CAAwD;AACxD,+DAA+D;AA4F/D,SAAgB,KAAK,CACnB,sBAA6C;IAM7C,IAAI,eAES,CAAC;IAEd,OAAO,IAAA,oBAAQ,EACb,CAAC,MAA+B,EAA+E,EAAE;QAC/G,MAAM,WAAW,GAAG,IAAA,sBAAU,EAAC,mCAAkB,CAAC,CAAC;QAEnD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,sBAAsB,CAAC,eAAC,CAAC,CAAC;YAE7F,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;YAE/B,MAAM,KAAK,GACT,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,YAAY,0BAAY,CAAC;gBACjE,CAAC,CAAC,eAAC,CAAC,MAAM,CAAC,QAA8C,CAAC;gBAC1D,CAAC,CAAE,QAA+B,CAAC;YAEvC,4DAA4D;YAC5D,MAAM,eAAe,GAAG,IAAA,4CAAsB,EAAC,IAAI,CAAC,CAAC;YAErD,MAAM,OAAO,GAAG,KAAK,EAAE,OAAqB,EAAE,MAA+B,EAAE,EAAE;gBAC/E,iEAAiE;gBACjE,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;gBAEpC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;oBACxC,MAAM;iBACP,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzB,CAAC,CAAC;YAEF,eAAe,GAAG;gBAChB,EAAE;gBACF,KAAK;gBACL,OAAO;gBACP,KAAK;aACN,CAAC;QACJ,CAAC;QAED,OAAO,WAAW,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC,CAIK,CAAC;AACX,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"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.t = exports.ValidatorDef = void 0;
|
|
4
|
+
exports.defineArray = defineArray;
|
|
5
|
+
exports.defineRecord = defineRecord;
|
|
6
|
+
exports.defineObject = defineObject;
|
|
7
|
+
exports.getFormat = getFormat;
|
|
8
|
+
exports.registerFormat = registerFormat;
|
|
9
|
+
exports.entity = entity;
|
|
10
|
+
const types_js_1 = require("./types.js");
|
|
11
|
+
const utils_js_1 = require("./utils.js");
|
|
12
|
+
class ValidatorDef {
|
|
13
|
+
mask;
|
|
14
|
+
shape;
|
|
15
|
+
subEntityPaths;
|
|
16
|
+
values;
|
|
17
|
+
typenameField;
|
|
18
|
+
typenameValue;
|
|
19
|
+
idField;
|
|
20
|
+
_optional;
|
|
21
|
+
_nullable;
|
|
22
|
+
_nullish;
|
|
23
|
+
constructor(mask, shape, subEntityPaths = undefined, values = undefined, typenameField = undefined, typenameValue = undefined, idField = undefined) {
|
|
24
|
+
this.mask = mask;
|
|
25
|
+
this.shape = shape;
|
|
26
|
+
this.subEntityPaths = subEntityPaths;
|
|
27
|
+
this.values = values;
|
|
28
|
+
this.typenameField = typenameField;
|
|
29
|
+
this.typenameValue = typenameValue;
|
|
30
|
+
this.idField = idField;
|
|
31
|
+
}
|
|
32
|
+
get optional() {
|
|
33
|
+
if (this._optional === undefined) {
|
|
34
|
+
this._optional = new ValidatorDef(this.mask | 1 /* Mask.UNDEFINED */, this.shape, this.subEntityPaths, this.values, this.typenameField, this.typenameValue, this.idField);
|
|
35
|
+
}
|
|
36
|
+
return this._optional;
|
|
37
|
+
}
|
|
38
|
+
get nullable() {
|
|
39
|
+
if (this._nullable === undefined) {
|
|
40
|
+
this._nullable = new ValidatorDef(this.mask | 2 /* Mask.NULL */, this.shape, this.subEntityPaths, this.values, this.typenameField, this.typenameValue, this.idField);
|
|
41
|
+
}
|
|
42
|
+
return this._nullable;
|
|
43
|
+
}
|
|
44
|
+
get nullish() {
|
|
45
|
+
if (this._nullish === undefined) {
|
|
46
|
+
this._nullish = new ValidatorDef(this.mask | 1 /* Mask.UNDEFINED */ | 2 /* Mask.NULL */, this.shape, this.subEntityPaths, this.values, this.typenameField, this.typenameValue, this.idField);
|
|
47
|
+
}
|
|
48
|
+
return this._nullish;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.ValidatorDef = ValidatorDef;
|
|
52
|
+
// -----------------------------------------------------------------------------
|
|
53
|
+
// Complex Type Definitions
|
|
54
|
+
// -----------------------------------------------------------------------------
|
|
55
|
+
function defineArray(shape) {
|
|
56
|
+
let mask = 64 /* Mask.ARRAY */;
|
|
57
|
+
// Propagate HAS_SUB_ENTITY flag if the shape contains entities
|
|
58
|
+
if (shape instanceof ValidatorDef && (shape.mask & (1024 /* Mask.ENTITY */ | 2048 /* Mask.HAS_SUB_ENTITY */)) !== 0) {
|
|
59
|
+
mask |= 2048 /* Mask.HAS_SUB_ENTITY */;
|
|
60
|
+
}
|
|
61
|
+
return new ValidatorDef(mask, shape);
|
|
62
|
+
}
|
|
63
|
+
function defineRecord(shape) {
|
|
64
|
+
// The mask should be OBJECT | RECORD so that values match when compared
|
|
65
|
+
let mask = 256 /* Mask.RECORD */ | 32 /* Mask.OBJECT */;
|
|
66
|
+
// Propagate HAS_SUB_ENTITY flag if the shape contains entities
|
|
67
|
+
if (shape instanceof ValidatorDef && (shape.mask & (1024 /* Mask.ENTITY */ | 2048 /* Mask.HAS_SUB_ENTITY */)) !== 0) {
|
|
68
|
+
mask |= 2048 /* Mask.HAS_SUB_ENTITY */;
|
|
69
|
+
}
|
|
70
|
+
return new ValidatorDef(mask, shape);
|
|
71
|
+
}
|
|
72
|
+
function defineObject(shape) {
|
|
73
|
+
const def = new ValidatorDef(32 /* Mask.OBJECT */, shape);
|
|
74
|
+
(0, utils_js_1.extractShapeMetadata)(def, shape);
|
|
75
|
+
return def;
|
|
76
|
+
}
|
|
77
|
+
const addShapeToUnion = (shape, definition, unionTypenameField) => {
|
|
78
|
+
const mask = definition.mask;
|
|
79
|
+
if ((mask & 512 /* Mask.UNION */) !== 0) {
|
|
80
|
+
// Merge nested union into parent union
|
|
81
|
+
const nestedUnion = definition;
|
|
82
|
+
// Check typename field consistency
|
|
83
|
+
if (nestedUnion.typenameField !== undefined) {
|
|
84
|
+
if (unionTypenameField !== undefined && unionTypenameField !== nestedUnion.typenameField) {
|
|
85
|
+
throw new Error(`Union typename field conflict: Cannot merge unions with different typename fields ('${unionTypenameField}' vs '${nestedUnion.typenameField}')`);
|
|
86
|
+
}
|
|
87
|
+
unionTypenameField = nestedUnion.typenameField;
|
|
88
|
+
}
|
|
89
|
+
// Merge nested union's shape into parent
|
|
90
|
+
if (nestedUnion.shape !== undefined) {
|
|
91
|
+
for (const key of [...Object.keys(nestedUnion.shape), types_js_1.ARRAY_KEY, types_js_1.RECORD_KEY]) {
|
|
92
|
+
// Check for conflicts
|
|
93
|
+
const value = nestedUnion.shape[key];
|
|
94
|
+
if (shape[key] !== undefined && shape[key] !== value) {
|
|
95
|
+
throw new Error(`Union merge conflict: Duplicate typename value '${String(key)}' found when merging nested unions`);
|
|
96
|
+
}
|
|
97
|
+
// coerce type because we know the value is the same type as the key
|
|
98
|
+
shape[key] = value;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return unionTypenameField;
|
|
102
|
+
}
|
|
103
|
+
else if ((mask & 64 /* Mask.ARRAY */) !== 0) {
|
|
104
|
+
if (shape[types_js_1.ARRAY_KEY] !== undefined) {
|
|
105
|
+
throw new Error('Array shape already defined');
|
|
106
|
+
}
|
|
107
|
+
shape[types_js_1.ARRAY_KEY] = definition.shape;
|
|
108
|
+
return unionTypenameField;
|
|
109
|
+
}
|
|
110
|
+
else if ((mask & 256 /* Mask.RECORD */) !== 0) {
|
|
111
|
+
if (shape[types_js_1.RECORD_KEY] !== undefined) {
|
|
112
|
+
throw new Error('Record shape already defined');
|
|
113
|
+
}
|
|
114
|
+
shape[types_js_1.RECORD_KEY] = definition.shape;
|
|
115
|
+
return unionTypenameField;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
// Make sure the type is fully extracted, so we can get the typename field and value
|
|
119
|
+
(0, utils_js_1.extractShape)(definition);
|
|
120
|
+
// definition is ObjectDef | EntityDef
|
|
121
|
+
const typenameField = definition.typenameField;
|
|
122
|
+
const typename = definition.typenameValue;
|
|
123
|
+
if (typename === undefined) {
|
|
124
|
+
throw new Error('Object definitions must have a typename to be in a union with other objects, records, or arrays');
|
|
125
|
+
}
|
|
126
|
+
if (unionTypenameField !== undefined && typenameField !== unionTypenameField) {
|
|
127
|
+
throw new Error('Object definitions must have the same typename field to be in the same union');
|
|
128
|
+
}
|
|
129
|
+
shape[typename] = definition;
|
|
130
|
+
return typenameField;
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
function defineUnion(...types) {
|
|
134
|
+
let mask = 0;
|
|
135
|
+
let definition;
|
|
136
|
+
let shape;
|
|
137
|
+
let values;
|
|
138
|
+
let unionTypenameField;
|
|
139
|
+
for (const type of types) {
|
|
140
|
+
if (typeof type === 'number') {
|
|
141
|
+
mask |= type;
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
const isSet = type instanceof Set;
|
|
145
|
+
const typeValues = isSet ? type : type.values;
|
|
146
|
+
// Handle Set-based constants/enums
|
|
147
|
+
if (typeValues !== undefined) {
|
|
148
|
+
if (values === undefined) {
|
|
149
|
+
values = new Set(typeValues);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
for (const val of typeValues) {
|
|
153
|
+
values.add(val);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (isSet) {
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// We know it's a complex type at this point because if it was a Set,
|
|
161
|
+
// we would have already handled it above.
|
|
162
|
+
const typeDef = type;
|
|
163
|
+
mask |= typeDef.mask;
|
|
164
|
+
if (definition === undefined) {
|
|
165
|
+
definition = typeDef;
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
if (shape === undefined) {
|
|
169
|
+
shape = Object.create(null);
|
|
170
|
+
unionTypenameField = addShapeToUnion(shape, definition, unionTypenameField);
|
|
171
|
+
}
|
|
172
|
+
unionTypenameField = addShapeToUnion(shape, typeDef, unionTypenameField);
|
|
173
|
+
}
|
|
174
|
+
// It was a union of primitives, so return the mask
|
|
175
|
+
if (definition === undefined && values === undefined) {
|
|
176
|
+
// This type coercion is incorrect, but we can't return the mask as a Mask
|
|
177
|
+
// because that loses the type information about the union, which breaks
|
|
178
|
+
// inference.
|
|
179
|
+
//
|
|
180
|
+
// TODO: Figure out how to make this correct type-wise
|
|
181
|
+
return mask;
|
|
182
|
+
}
|
|
183
|
+
return new ValidatorDef(mask | 512 /* Mask.UNION */, shape ?? definition?.shape, undefined, values, unionTypenameField);
|
|
184
|
+
}
|
|
185
|
+
// -----------------------------------------------------------------------------
|
|
186
|
+
// Marker Functions
|
|
187
|
+
// -----------------------------------------------------------------------------
|
|
188
|
+
function defineTypename(value) {
|
|
189
|
+
return value;
|
|
190
|
+
}
|
|
191
|
+
function defineConst(value) {
|
|
192
|
+
return new Set([value]);
|
|
193
|
+
}
|
|
194
|
+
function defineEnum(...values) {
|
|
195
|
+
return new Set(values);
|
|
196
|
+
}
|
|
197
|
+
// -----------------------------------------------------------------------------
|
|
198
|
+
// Formatted Values
|
|
199
|
+
// -----------------------------------------------------------------------------
|
|
200
|
+
const FORMAT_MASK_SHIFT = 16;
|
|
201
|
+
let nextFormatId = 0;
|
|
202
|
+
const FORMAT_PARSERS = [];
|
|
203
|
+
const FORMAT_SERIALIZERS = [];
|
|
204
|
+
const FORMAT_MAP = new Map();
|
|
205
|
+
function defineFormatted(format) {
|
|
206
|
+
const mask = FORMAT_MAP.get(format);
|
|
207
|
+
if (mask === undefined) {
|
|
208
|
+
throw new Error(`Format ${format} not registered`);
|
|
209
|
+
}
|
|
210
|
+
return mask;
|
|
211
|
+
}
|
|
212
|
+
function getFormat(mask) {
|
|
213
|
+
const formatId = mask >> FORMAT_MASK_SHIFT;
|
|
214
|
+
return FORMAT_PARSERS[formatId];
|
|
215
|
+
}
|
|
216
|
+
function registerFormat(name, type, parse, serialize) {
|
|
217
|
+
const maskId = nextFormatId++;
|
|
218
|
+
FORMAT_PARSERS[maskId] = parse;
|
|
219
|
+
FORMAT_SERIALIZERS[maskId] = serialize;
|
|
220
|
+
const shiftedId = maskId << FORMAT_MASK_SHIFT;
|
|
221
|
+
const formatMask = type === 8 /* Mask.STRING */ ? 8192 /* Mask.HAS_STRING_FORMAT */ : 4096 /* Mask.HAS_NUMBER_FORMAT */;
|
|
222
|
+
const mask = shiftedId | type | formatMask;
|
|
223
|
+
FORMAT_MAP.set(name, mask);
|
|
224
|
+
}
|
|
225
|
+
// -----------------------------------------------------------------------------
|
|
226
|
+
// Entity Definitions
|
|
227
|
+
// -----------------------------------------------------------------------------
|
|
228
|
+
function entity(shape) {
|
|
229
|
+
return new ValidatorDef(
|
|
230
|
+
// The mask should be OBJECT | ENTITY so that values match when compared
|
|
231
|
+
1024 /* Mask.ENTITY */ | 32 /* Mask.OBJECT */, shape);
|
|
232
|
+
}
|
|
233
|
+
exports.t = {
|
|
234
|
+
format: defineFormatted,
|
|
235
|
+
typename: defineTypename,
|
|
236
|
+
const: defineConst,
|
|
237
|
+
enum: defineEnum,
|
|
238
|
+
id: 128 /* Mask.ID */ | 8 /* Mask.STRING */ | 4 /* Mask.NUMBER */,
|
|
239
|
+
string: 8 /* Mask.STRING */,
|
|
240
|
+
number: 4 /* Mask.NUMBER */,
|
|
241
|
+
boolean: 16 /* Mask.BOOLEAN */,
|
|
242
|
+
null: 2 /* Mask.NULL */,
|
|
243
|
+
undefined: 1 /* Mask.UNDEFINED */,
|
|
244
|
+
array: defineArray,
|
|
245
|
+
object: defineObject,
|
|
246
|
+
record: defineRecord,
|
|
247
|
+
union: defineUnion,
|
|
248
|
+
};
|
|
249
|
+
//# 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,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RECORD_KEY = exports.ARRAY_KEY = exports.RefetchInterval = void 0;
|
|
4
|
+
var RefetchInterval;
|
|
5
|
+
(function (RefetchInterval) {
|
|
6
|
+
RefetchInterval[RefetchInterval["Every1Second"] = 1000] = "Every1Second";
|
|
7
|
+
RefetchInterval[RefetchInterval["Every5Seconds"] = 5000] = "Every5Seconds";
|
|
8
|
+
RefetchInterval[RefetchInterval["Every10Seconds"] = 10000] = "Every10Seconds";
|
|
9
|
+
RefetchInterval[RefetchInterval["Every30Seconds"] = 30000] = "Every30Seconds";
|
|
10
|
+
RefetchInterval[RefetchInterval["Every1Minute"] = 60000] = "Every1Minute";
|
|
11
|
+
RefetchInterval[RefetchInterval["Every5Minutes"] = 300000] = "Every5Minutes";
|
|
12
|
+
})(RefetchInterval || (exports.RefetchInterval = RefetchInterval = {}));
|
|
13
|
+
exports.ARRAY_KEY = Symbol('array');
|
|
14
|
+
exports.RECORD_KEY = Symbol('record');
|
|
15
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAGA,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,wEAAmB,CAAA;IACnB,0EAAoB,CAAA;IACpB,6EAAsB,CAAA;IACtB,6EAAsB,CAAA;IACtB,yEAAoB,CAAA;IACpB,4EAAsB,CAAA;AACxB,CAAC,EAPW,eAAe,+BAAf,eAAe,QAO1B;AAyCY,QAAA,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5B,QAAA,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractShapeMetadata = extractShapeMetadata;
|
|
4
|
+
exports.extractShape = extractShape;
|
|
5
|
+
exports.typeMaskOf = typeMaskOf;
|
|
6
|
+
const typeDefs_js_1 = require("./typeDefs.js");
|
|
7
|
+
const entries = Object.entries;
|
|
8
|
+
const isArray = Array.isArray;
|
|
9
|
+
function extractShapeMetadata(def, shape) {
|
|
10
|
+
for (const [key, value] of Object.entries(shape)) {
|
|
11
|
+
if (value instanceof typeDefs_js_1.ValidatorDef && (value.mask & (1024 /* Mask.ENTITY */ | 2048 /* Mask.HAS_SUB_ENTITY */)) !== 0) {
|
|
12
|
+
if (def.subEntityPaths === undefined) {
|
|
13
|
+
def.subEntityPaths = key;
|
|
14
|
+
}
|
|
15
|
+
else if (isArray(def.subEntityPaths)) {
|
|
16
|
+
def.subEntityPaths.push(key);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
def.subEntityPaths = [def.subEntityPaths, key];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Check if this is a typename field (plain string value)
|
|
23
|
+
if (typeof value === 'string') {
|
|
24
|
+
if (def.typenameField !== undefined) {
|
|
25
|
+
throw new Error(`Duplicate typename field: ${key}`);
|
|
26
|
+
}
|
|
27
|
+
def.typenameField = key;
|
|
28
|
+
def.typenameValue = value;
|
|
29
|
+
}
|
|
30
|
+
// Check if this is an id field (Mask.ID)
|
|
31
|
+
else if (typeof value === 'number' && (value & 128 /* Mask.ID */) !== 0) {
|
|
32
|
+
if (def.idField !== undefined) {
|
|
33
|
+
throw new Error(`Duplicate id field: ${key}`);
|
|
34
|
+
}
|
|
35
|
+
def.idField = key;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function extractShape(def) {
|
|
40
|
+
let shape = def.shape;
|
|
41
|
+
if (typeof shape === 'function') {
|
|
42
|
+
shape = def.shape = shape(typeDefs_js_1.t);
|
|
43
|
+
extractShapeMetadata(def, shape);
|
|
44
|
+
}
|
|
45
|
+
return shape;
|
|
46
|
+
}
|
|
47
|
+
function typeMaskOf(value) {
|
|
48
|
+
if (value === null)
|
|
49
|
+
return 2 /* Mask.NULL */;
|
|
50
|
+
switch (typeof value) {
|
|
51
|
+
case 'number':
|
|
52
|
+
return 4 /* Mask.NUMBER */;
|
|
53
|
+
case 'string':
|
|
54
|
+
return 8 /* Mask.STRING */;
|
|
55
|
+
case 'boolean':
|
|
56
|
+
return 16 /* Mask.BOOLEAN */;
|
|
57
|
+
case 'undefined':
|
|
58
|
+
return 1 /* Mask.UNDEFINED */;
|
|
59
|
+
case 'object':
|
|
60
|
+
return isArray(value) ? 64 /* Mask.ARRAY */ : 32 /* Mask.OBJECT */;
|
|
61
|
+
default:
|
|
62
|
+
throw new Error(`Invalid type: ${typeof value}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAMA,oDA6BC;AAED,oCASC;AAED,gCAiBC;AAjED,+CAAgD;AAGhD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAE9B,SAAgB,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,0BAAY,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,SAAgB,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,eAAC,CAAC,CAAC;QAC7B,oBAAoB,CAAC,GAAwB,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,KAAuD,CAAC;AACjE,CAAC;AAED,SAAgB,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,18 @@
|
|
|
1
|
+
import { Signal } from 'signalium';
|
|
2
|
+
import { EntityDef } from './types.js';
|
|
3
|
+
export interface PreloadedEntityRecord {
|
|
4
|
+
key: number;
|
|
5
|
+
signal: Signal<Record<string, unknown>>;
|
|
6
|
+
cache: Map<PropertyKey, any>;
|
|
7
|
+
proxy?: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export type EntityRecord = Required<PreloadedEntityRecord>;
|
|
10
|
+
export declare class EntityStore {
|
|
11
|
+
private map;
|
|
12
|
+
hasEntity(key: number): boolean;
|
|
13
|
+
getEntity(key: number): PreloadedEntityRecord | EntityRecord | undefined;
|
|
14
|
+
hydratePreloadedEntity(key: number, shape: EntityDef): EntityRecord;
|
|
15
|
+
setPreloadedEntity(key: number, obj: Record<string, unknown>): PreloadedEntityRecord;
|
|
16
|
+
setEntity(key: number, obj: Record<string, unknown>, shape: EntityDef): EntityRecord;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=EntityMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityMap.d.ts","sourceRoot":"","sources":["../../src/EntityMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AAE3D,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAA2D;IAEtE,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI/B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,GAAG,YAAY,GAAG,SAAS;IAIxE,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,YAAY;IAWnE,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,qBAAqB;IAapF,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,GAAG,YAAY;CAcrF"}
|