@mayhem93/nexxus-core-lib 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.
Files changed (95) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +384 -0
  3. package/dist-cjs/common/BuiltinSchemas.js +26 -0
  4. package/dist-cjs/common/BuiltinSchemas.js.map +1 -0
  5. package/dist-cjs/common/FilterQuery.js +252 -0
  6. package/dist-cjs/common/FilterQuery.js.map +1 -0
  7. package/dist-cjs/common/JsonPatch.js +392 -0
  8. package/dist-cjs/common/JsonPatch.js.map +1 -0
  9. package/dist-cjs/common/ModelTypes.js +3 -0
  10. package/dist-cjs/common/ModelTypes.js.map +1 -0
  11. package/dist-cjs/common/QueuePayloads.js +3 -0
  12. package/dist-cjs/common/QueuePayloads.js.map +1 -0
  13. package/dist-cjs/common/SchemaValidator.js +41 -0
  14. package/dist-cjs/common/SchemaValidator.js.map +1 -0
  15. package/dist-cjs/index.js +20 -0
  16. package/dist-cjs/index.js.map +1 -0
  17. package/dist-cjs/lib/BaseService.js +83 -0
  18. package/dist-cjs/lib/BaseService.js.map +1 -0
  19. package/dist-cjs/lib/ConfigManager.js +138 -0
  20. package/dist-cjs/lib/ConfigManager.js.map +1 -0
  21. package/dist-cjs/lib/ConfigProvider.js +65 -0
  22. package/dist-cjs/lib/ConfigProvider.js.map +1 -0
  23. package/dist-cjs/lib/Exceptions.js +64 -0
  24. package/dist-cjs/lib/Exceptions.js.map +1 -0
  25. package/dist-cjs/lib/GlobalServices.js +29 -0
  26. package/dist-cjs/lib/GlobalServices.js.map +1 -0
  27. package/dist-cjs/lib/Logger.js +131 -0
  28. package/dist-cjs/lib/Logger.js.map +1 -0
  29. package/dist-cjs/models/AppModel.js +14 -0
  30. package/dist-cjs/models/AppModel.js.map +1 -0
  31. package/dist-cjs/models/Application.js +79 -0
  32. package/dist-cjs/models/Application.js.map +1 -0
  33. package/dist-cjs/models/BaseModel.js +33 -0
  34. package/dist-cjs/models/BaseModel.js.map +1 -0
  35. package/dist-cjs/models/User.js +39 -0
  36. package/dist-cjs/models/User.js.map +1 -0
  37. package/dist-cjs/types/QueuePayloads.js +3 -0
  38. package/dist-cjs/types/QueuePayloads.js.map +1 -0
  39. package/dist-esm/common/BuiltinSchemas.js +22 -0
  40. package/dist-esm/common/BuiltinSchemas.js.map +1 -0
  41. package/dist-esm/common/FilterQuery.js +247 -0
  42. package/dist-esm/common/FilterQuery.js.map +1 -0
  43. package/dist-esm/common/JsonPatch.js +387 -0
  44. package/dist-esm/common/JsonPatch.js.map +1 -0
  45. package/dist-esm/common/ModelTypes.js +2 -0
  46. package/dist-esm/common/ModelTypes.js.map +1 -0
  47. package/dist-esm/common/QueuePayloads.js +2 -0
  48. package/dist-esm/common/QueuePayloads.js.map +1 -0
  49. package/dist-esm/common/SchemaValidator.js +37 -0
  50. package/dist-esm/common/SchemaValidator.js.map +1 -0
  51. package/dist-esm/index.js +16 -0
  52. package/dist-esm/index.js.map +1 -0
  53. package/dist-esm/lib/BaseService.js +79 -0
  54. package/dist-esm/lib/BaseService.js.map +1 -0
  55. package/dist-esm/lib/ConfigManager.js +133 -0
  56. package/dist-esm/lib/ConfigManager.js.map +1 -0
  57. package/dist-esm/lib/ConfigProvider.js +56 -0
  58. package/dist-esm/lib/ConfigProvider.js.map +1 -0
  59. package/dist-esm/lib/Exceptions.js +53 -0
  60. package/dist-esm/lib/Exceptions.js.map +1 -0
  61. package/dist-esm/lib/GlobalServices.js +25 -0
  62. package/dist-esm/lib/GlobalServices.js.map +1 -0
  63. package/dist-esm/lib/Logger.js +125 -0
  64. package/dist-esm/lib/Logger.js.map +1 -0
  65. package/dist-esm/models/AppModel.js +10 -0
  66. package/dist-esm/models/AppModel.js.map +1 -0
  67. package/dist-esm/models/Application.js +74 -0
  68. package/dist-esm/models/Application.js.map +1 -0
  69. package/dist-esm/models/BaseModel.js +29 -0
  70. package/dist-esm/models/BaseModel.js.map +1 -0
  71. package/dist-esm/models/User.js +35 -0
  72. package/dist-esm/models/User.js.map +1 -0
  73. package/dist-esm/types/QueuePayloads.js +2 -0
  74. package/dist-esm/types/QueuePayloads.js.map +1 -0
  75. package/dist-types/common/BuiltinSchemas.d.ts +69 -0
  76. package/dist-types/common/FilterQuery.d.ts +58 -0
  77. package/dist-types/common/JsonPatch.d.ts +78 -0
  78. package/dist-types/common/ModelTypes.d.ts +24 -0
  79. package/dist-types/common/QueuePayloads.d.ts +78 -0
  80. package/dist-types/common/SchemaValidator.d.ts +4 -0
  81. package/dist-types/index.d.ts +15 -0
  82. package/dist-types/lib/BaseService.d.ts +28 -0
  83. package/dist-types/lib/ConfigManager.d.ts +48 -0
  84. package/dist-types/lib/ConfigProvider.d.ts +27 -0
  85. package/dist-types/lib/Exceptions.d.ts +33 -0
  86. package/dist-types/lib/GlobalServices.d.ts +19 -0
  87. package/dist-types/lib/Logger.d.ts +48 -0
  88. package/dist-types/models/AppModel.d.ts +9 -0
  89. package/dist-types/models/Application.d.ts +29 -0
  90. package/dist-types/models/BaseModel.d.ts +23 -0
  91. package/dist-types/models/User.d.ts +17 -0
  92. package/dist-types/types/QueuePayloads.d.ts +57 -0
  93. package/package.json +46 -0
  94. package/src/schemas/root.schema.json +8 -0
  95. package/src/schemas/winston-logger.schema.json +24 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"User.js","sourceRoot":"","sources":["../../src/models/User.ts"],"names":[],"mappings":";;;AAAA,2CAIqB;AAErB,kDAA8D;AAgB9D,MAAa,qBAAsB,SAAQ,2BAAoC;IAC7E,YAAY,IAAyB;QACnC,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,0BAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9C,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACzE,MAAM,IAAI,sCAAyB,CAAC,+CAA+C,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/E,MAAM,IAAI,sCAAyB,CAAC,kDAAkD,CAAC,CAAC;QAC1F,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAChH,MAAM,IAAI,sCAAyB,CAAC,8CAA8C,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;YACnJ,MAAM,IAAI,sCAAyB,CAAC,kEAAkE,CAAC,CAAC;QAC1G,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,sCAAyB,CAAC,4CAA4C,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC;YAExF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,sCAAyB,CAAC,4CAA4C,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC3C,MAAM,IAAI,sCAAyB,CAAC,kCAAkC,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC7E,MAAM,IAAI,sCAAyB,CAAC,8CAA8C,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;CACF;AAtCD,sDAsCC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=QueuePayloads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueuePayloads.js","sourceRoot":"","sources":["../../src/types/QueuePayloads.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ export const NEXXUS_UNIVERSAL_FIELDS = {
2
+ id: { type: 'string', required: true },
3
+ createdAt: { type: 'date', required: true },
4
+ updatedAt: { type: 'date', required: true }
5
+ };
6
+ export const NEXXUS_BUILTIN_MODEL_SCHEMAS = {
7
+ user: {
8
+ userType: { type: 'string', required: false, filterable: true },
9
+ username: { type: 'string', required: true, filterable: true },
10
+ password: { type: 'string', required: false },
11
+ authProviders: { type: 'array', required: true, arrayType: 'string' },
12
+ devices: { type: 'array', required: true, arrayType: 'string' },
13
+ details: { type: 'object', required: false, properties: {} }
14
+ },
15
+ application: {
16
+ name: { type: 'string', required: true, filterable: true }
17
+ }
18
+ };
19
+ export function isBuiltinModel(modelType) {
20
+ return modelType in NEXXUS_BUILTIN_MODEL_SCHEMAS;
21
+ }
22
+ //# sourceMappingURL=BuiltinSchemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuiltinSchemas.js","sourceRoot":"","sources":["../../src/common/BuiltinSchemas.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC3C,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;CACnC,CAAC;AAKX,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,IAAI,EAAE;QACJ,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;QAC/D,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;QAC9D,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;QAC7C,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE;QACrE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE;QAC/D,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;KAC7D;IACD,WAAW,EAAE;QACX,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;KAC3D;CACO,CAAC;AAUX,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,SAAS,IAAI,4BAA4B,CAAC;AACnD,CAAC"}
@@ -0,0 +1,247 @@
1
+ import { InvalidQueryFilterException } from '../lib/Exceptions';
2
+ import { NEXXUS_UNIVERSAL_FIELDS, NEXXUS_BUILTIN_MODEL_SCHEMAS } from './BuiltinSchemas';
3
+ import * as dot from 'dot-prop';
4
+ import sortKeys from 'sort-keys';
5
+ export class NexxusFilterQuery {
6
+ query;
7
+ nodes = [];
8
+ modelDef;
9
+ constructor(query, config) {
10
+ this.query = query;
11
+ if ('appModelDef' in config) {
12
+ this.modelDef = { ...NEXXUS_UNIVERSAL_FIELDS, ...config.appModelDef, ...{ userId: { type: 'string', required: false } } };
13
+ }
14
+ else {
15
+ const builtinSchema = NEXXUS_BUILTIN_MODEL_SCHEMAS[config.modelType];
16
+ this.modelDef = { ...NEXXUS_UNIVERSAL_FIELDS, ...builtinSchema };
17
+ if (config.modelType === 'user') {
18
+ if (!config.userDetailsSchema) {
19
+ throw new InvalidQueryFilterException("User detail schema must be provided for 'user' model queries");
20
+ }
21
+ this.modelDef.details = { type: 'object', properties: config.userDetailsSchema, required: false };
22
+ }
23
+ }
24
+ this.validateAndParse();
25
+ }
26
+ getNodes() {
27
+ return this.nodes;
28
+ }
29
+ getNormalizedQuery() {
30
+ return sortKeys(this.query, { deep: true });
31
+ }
32
+ *[Symbol.iterator]() {
33
+ yield* this.traverseNodes(this.nodes, 0);
34
+ }
35
+ test(object) {
36
+ return this.nodes.every(node => this.testNode(node, object));
37
+ }
38
+ testNode(node, object) {
39
+ if (node.type === 'field') {
40
+ return this.testFieldCondition(node, object);
41
+ }
42
+ if (node.operator === '$and') {
43
+ return node.conditions.every(childNode => this.testNode(childNode, object));
44
+ }
45
+ else {
46
+ return node.conditions.some(childNode => this.testNode(childNode, object));
47
+ }
48
+ }
49
+ validateAndParse() {
50
+ this.nodes = this.parseQuery(this.query, this.modelDef);
51
+ }
52
+ parseQuery(query, modelSchema) {
53
+ const nodes = [];
54
+ for (const key in query) {
55
+ if (key === '$and' || key === '$or') {
56
+ const conditions = query[key];
57
+ if (!Array.isArray(conditions) || conditions.length === 0) {
58
+ throw new InvalidQueryFilterException(`Logical operator "${key}" must have at least one condition`);
59
+ }
60
+ const childNodes = conditions.flatMap(cond => this.parseQuery(cond, modelSchema));
61
+ nodes.push({
62
+ type: 'logical',
63
+ operator: key,
64
+ conditions: childNodes
65
+ });
66
+ }
67
+ else {
68
+ const condition = query[key];
69
+ const fieldNode = this.parseFieldCondition(key, condition, modelSchema);
70
+ nodes.push(fieldNode);
71
+ }
72
+ }
73
+ return nodes;
74
+ }
75
+ testFieldCondition(node, object) {
76
+ const actualValue = dot.getProperty(object, node.field);
77
+ if (actualValue === undefined) {
78
+ return false;
79
+ }
80
+ switch (node.operator) {
81
+ case 'eq':
82
+ return actualValue === node.value;
83
+ case 'ne':
84
+ return actualValue !== node.value;
85
+ case 'gt':
86
+ return typeof actualValue === 'number' && actualValue > node.value;
87
+ case 'gte':
88
+ return typeof actualValue === 'number' && actualValue >= node.value;
89
+ case 'lt':
90
+ return typeof actualValue === 'number' && actualValue < node.value;
91
+ case 'lte':
92
+ return typeof actualValue === 'number' && actualValue <= node.value;
93
+ case 'in':
94
+ const values = node.value;
95
+ return values.some(v => actualValue === v);
96
+ default:
97
+ return false;
98
+ }
99
+ }
100
+ parseFieldCondition(path, condition, modelSchema) {
101
+ const fieldDef = this.getFieldFromPath(path, modelSchema);
102
+ if (!fieldDef) {
103
+ throw new InvalidQueryFilterException(`Field "${path}" does not exist in model schema`);
104
+ }
105
+ if (fieldDef.type === 'object' || fieldDef.type === 'array') {
106
+ throw new InvalidQueryFilterException(`Cannot filter on non-primitive field "${path}"`);
107
+ }
108
+ if (!fieldDef.filterable) {
109
+ throw new InvalidQueryFilterException(`Field "${path}" is not filterable`);
110
+ }
111
+ if (typeof condition !== 'object' || condition === null) {
112
+ this.validateValueType(condition, fieldDef, path);
113
+ return {
114
+ type: 'field',
115
+ field: path,
116
+ operator: 'eq',
117
+ value: condition
118
+ };
119
+ }
120
+ const operators = Object.keys(condition);
121
+ if (operators.length === 0) {
122
+ throw new InvalidQueryFilterException(`Field "${path}" has empty operator object`);
123
+ }
124
+ if (operators.length > 1) {
125
+ throw new InvalidQueryFilterException(`Field "${path}" can only have one operator per condition`);
126
+ }
127
+ const operator = operators[0];
128
+ const value = condition[operator];
129
+ this.validateOperator(operator, fieldDef, path);
130
+ if (operator === 'in') {
131
+ if (!Array.isArray(value)) {
132
+ throw new InvalidQueryFilterException(`Operator "in" at path "${path}" must have an array value`);
133
+ }
134
+ value.forEach(v => this.validateValueType(v, fieldDef, path));
135
+ }
136
+ else {
137
+ this.validateValueType(value, fieldDef, path);
138
+ }
139
+ return {
140
+ type: 'field',
141
+ field: path,
142
+ operator,
143
+ value: value
144
+ };
145
+ }
146
+ getFieldFromPath(path, modelSchema) {
147
+ const parts = path.split('.');
148
+ let current = modelSchema;
149
+ for (let i = 0; i < parts.length; i++) {
150
+ const part = parts[i];
151
+ if (!(part in current)) {
152
+ return null;
153
+ }
154
+ const fieldDef = current[part];
155
+ if (i === parts.length - 1) {
156
+ return fieldDef;
157
+ }
158
+ if (fieldDef.type === 'object') {
159
+ current = fieldDef.properties;
160
+ }
161
+ else {
162
+ return null;
163
+ }
164
+ }
165
+ return null;
166
+ }
167
+ validateOperator(operator, fieldDef, path) {
168
+ const { type } = fieldDef;
169
+ const comparisonOps = ['gte', 'lte', 'gt', 'lt'];
170
+ if (comparisonOps.includes(operator)) {
171
+ if (type !== 'number' && type !== 'date') {
172
+ throw new InvalidQueryFilterException(`Operator "${operator}" at path "${path}" can only be used with number or date fields`);
173
+ }
174
+ }
175
+ if (operator === 'in') {
176
+ if (type === 'object') {
177
+ throw new InvalidQueryFilterException(`Operator "in" at path "${path}" cannot be used with object fields`);
178
+ }
179
+ }
180
+ }
181
+ validateValueType(value, fieldDef, path) {
182
+ const { type } = fieldDef;
183
+ switch (type) {
184
+ case 'string':
185
+ if (typeof value !== 'string') {
186
+ throw new InvalidQueryFilterException(`Value at path "${path}" must be a string`);
187
+ }
188
+ break;
189
+ case 'number':
190
+ if (typeof value !== 'number' || isNaN(value)) {
191
+ throw new InvalidQueryFilterException(`Value at path "${path}" must be a number`);
192
+ }
193
+ break;
194
+ case 'boolean':
195
+ if (typeof value !== 'boolean') {
196
+ throw new InvalidQueryFilterException(`Value at path "${path}" must be a boolean`);
197
+ }
198
+ break;
199
+ case 'date':
200
+ const isValidDate = (typeof value === 'number' && !isNaN(value)) ||
201
+ (typeof value === 'string' && !isNaN(Date.parse(value)));
202
+ if (!isValidDate) {
203
+ throw new InvalidQueryFilterException(`Value at path "${path}" must be a Unix timestamp or ISO date string`);
204
+ }
205
+ break;
206
+ case 'array':
207
+ const arrayFieldDef = fieldDef;
208
+ const arrayType = arrayFieldDef.arrayType;
209
+ switch (arrayType) {
210
+ case 'string':
211
+ if (typeof value !== 'string') {
212
+ throw new InvalidQueryFilterException(`Value at path "${path}" must be a string (array contains strings)`);
213
+ }
214
+ break;
215
+ case 'number':
216
+ if (typeof value !== 'number') {
217
+ throw new InvalidQueryFilterException(`Value at path "${path}" must be a number (array contains numbers)`);
218
+ }
219
+ break;
220
+ case 'boolean':
221
+ if (typeof value !== 'boolean') {
222
+ throw new InvalidQueryFilterException(`Value at path "${path}" must be a boolean (array contains booleans)`);
223
+ }
224
+ break;
225
+ case 'date':
226
+ if (typeof value !== 'string' || isNaN(Date.parse(value))) {
227
+ throw new InvalidQueryFilterException(`Value at path "${path}" must be an ISO date string (array contains dates)`);
228
+ }
229
+ break;
230
+ case 'object':
231
+ throw new InvalidQueryFilterException(`Cannot query array of objects at path "${path}". Use dot notation for nested fields.`);
232
+ }
233
+ break;
234
+ case 'object':
235
+ throw new InvalidQueryFilterException(`Cannot query object field "${path}" directly. Use dot notation for nested fields.`);
236
+ }
237
+ }
238
+ *traverseNodes(nodes, depth, parentOperator) {
239
+ for (const node of nodes) {
240
+ yield { ...node, depth, parentOperator };
241
+ if (node.type === 'logical') {
242
+ yield* this.traverseNodes(node.conditions, depth + 1, node.operator);
243
+ }
244
+ }
245
+ }
246
+ }
247
+ //# sourceMappingURL=FilterQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterQuery.js","sourceRoot":"","sources":["../../src/common/FilterQuery.ts"],"names":[],"mappings":"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"}