@globaltypesystem/gts-ts 0.1.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/.eslintrc.json +16 -0
- package/.github/workflows/ci.yml +198 -0
- package/.gitmodules +3 -0
- package/.prettierrc +7 -0
- package/LICENSE +201 -0
- package/Makefile +64 -0
- package/README.md +298 -0
- package/dist/cast.d.ts +9 -0
- package/dist/cast.d.ts.map +1 -0
- package/dist/cast.js +153 -0
- package/dist/cast.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +318 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/compatibility.d.ts +11 -0
- package/dist/compatibility.d.ts.map +1 -0
- package/dist/compatibility.js +176 -0
- package/dist/compatibility.js.map +1 -0
- package/dist/extract.d.ts +13 -0
- package/dist/extract.d.ts.map +1 -0
- package/dist/extract.js +194 -0
- package/dist/extract.js.map +1 -0
- package/dist/gts.d.ts +18 -0
- package/dist/gts.d.ts.map +1 -0
- package/dist/gts.js +472 -0
- package/dist/gts.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +97 -0
- package/dist/index.js.map +1 -0
- package/dist/query.d.ts +10 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +171 -0
- package/dist/query.js.map +1 -0
- package/dist/relationships.d.ts +7 -0
- package/dist/relationships.d.ts.map +1 -0
- package/dist/relationships.js +80 -0
- package/dist/relationships.js.map +1 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +132 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/server.d.ts +33 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +678 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/types.d.ts +61 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +3 -0
- package/dist/server/types.js.map +1 -0
- package/dist/store.d.ts +39 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +1026 -0
- package/dist/store.js.map +1 -0
- package/dist/types.d.ts +111 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +29 -0
- package/dist/types.js.map +1 -0
- package/dist/x-gts-ref.d.ts +35 -0
- package/dist/x-gts-ref.d.ts.map +1 -0
- package/dist/x-gts-ref.js +304 -0
- package/dist/x-gts-ref.js.map +1 -0
- package/jest.config.js +13 -0
- package/package.json +54 -0
- package/src/cast.ts +179 -0
- package/src/cli/index.ts +315 -0
- package/src/compatibility.ts +201 -0
- package/src/extract.ts +213 -0
- package/src/gts.ts +550 -0
- package/src/index.ts +97 -0
- package/src/query.ts +191 -0
- package/src/relationships.ts +91 -0
- package/src/server/index.ts +112 -0
- package/src/server/server.ts +771 -0
- package/src/server/types.ts +74 -0
- package/src/store.ts +1178 -0
- package/src/types.ts +138 -0
- package/src/x-gts-ref.ts +349 -0
- package/tests/gts.test.ts +525 -0
- package/tsconfig.json +32 -0
package/dist/gts.js
ADDED
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Gts = void 0;
|
|
4
|
+
const uuid_1 = require("uuid");
|
|
5
|
+
const types_1 = require("./types");
|
|
6
|
+
const GTS_NAMESPACE = (0, uuid_1.v5)('gts', uuid_1.v5.URL);
|
|
7
|
+
const SEGMENT_TOKEN_REGEX = /^[a-z_][a-z0-9_]*$/;
|
|
8
|
+
class Gts {
|
|
9
|
+
static parseGtsID(id) {
|
|
10
|
+
// If ID contains wildcard, validate as wildcard first
|
|
11
|
+
if (id.includes('*')) {
|
|
12
|
+
return this.validateWildcard(id);
|
|
13
|
+
}
|
|
14
|
+
return this.parseGtsIDInternal(id, false);
|
|
15
|
+
}
|
|
16
|
+
static splitPreservingTilde(s) {
|
|
17
|
+
const parts = [];
|
|
18
|
+
let current = '';
|
|
19
|
+
for (let i = 0; i < s.length; i++) {
|
|
20
|
+
if (s[i] === '~') {
|
|
21
|
+
// Add the segment with the tilde
|
|
22
|
+
parts.push(current + '~');
|
|
23
|
+
current = '';
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
current += s[i];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Add any remaining content (instance without trailing ~)
|
|
30
|
+
if (current) {
|
|
31
|
+
parts.push(current);
|
|
32
|
+
}
|
|
33
|
+
return parts.filter((p) => p !== '~'); // Remove any standalone tildes
|
|
34
|
+
}
|
|
35
|
+
static parseSegment(num, offset, segment) {
|
|
36
|
+
const seg = {
|
|
37
|
+
num,
|
|
38
|
+
offset,
|
|
39
|
+
segment: segment.trim(),
|
|
40
|
+
vendor: '',
|
|
41
|
+
package: '',
|
|
42
|
+
namespace: '',
|
|
43
|
+
type: '',
|
|
44
|
+
verMajor: 0,
|
|
45
|
+
verMinor: undefined,
|
|
46
|
+
isType: false,
|
|
47
|
+
isWildcard: false,
|
|
48
|
+
};
|
|
49
|
+
let workingSegment = seg.segment;
|
|
50
|
+
// Check for empty segment
|
|
51
|
+
if (!workingSegment || workingSegment === '~') {
|
|
52
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, 'Empty segment');
|
|
53
|
+
}
|
|
54
|
+
const tildeCount = (workingSegment.match(/~/g) || []).length;
|
|
55
|
+
if (tildeCount > 0) {
|
|
56
|
+
if (tildeCount > 1) {
|
|
57
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, "Too many '~' characters");
|
|
58
|
+
}
|
|
59
|
+
if (workingSegment.endsWith('~')) {
|
|
60
|
+
seg.isType = true;
|
|
61
|
+
workingSegment = workingSegment.slice(0, -1);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, " '~' must be at the end");
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Check for empty tokens (double dots)
|
|
68
|
+
if (workingSegment.includes('..')) {
|
|
69
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, 'Empty token (double dots)');
|
|
70
|
+
}
|
|
71
|
+
const tokens = workingSegment.split('.');
|
|
72
|
+
// Check for empty tokens
|
|
73
|
+
for (const token of tokens) {
|
|
74
|
+
if (token === '') {
|
|
75
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, 'Empty token');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (tokens.length > 6) {
|
|
79
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, 'Too many tokens');
|
|
80
|
+
}
|
|
81
|
+
if (!workingSegment.endsWith('*')) {
|
|
82
|
+
if (tokens.length < 5) {
|
|
83
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, 'Too few tokens');
|
|
84
|
+
}
|
|
85
|
+
for (let t = 0; t < 4; t++) {
|
|
86
|
+
if (!SEGMENT_TOKEN_REGEX.test(tokens[t])) {
|
|
87
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, 'Invalid segment token: ' + tokens[t]);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (tokens.length > 0) {
|
|
92
|
+
if (tokens[0] === '*') {
|
|
93
|
+
seg.isWildcard = true;
|
|
94
|
+
return seg;
|
|
95
|
+
}
|
|
96
|
+
seg.vendor = tokens[0];
|
|
97
|
+
}
|
|
98
|
+
if (tokens.length > 1) {
|
|
99
|
+
if (tokens[1] === '*') {
|
|
100
|
+
seg.isWildcard = true;
|
|
101
|
+
return seg;
|
|
102
|
+
}
|
|
103
|
+
seg.package = tokens[1];
|
|
104
|
+
}
|
|
105
|
+
if (tokens.length > 2) {
|
|
106
|
+
if (tokens[2] === '*') {
|
|
107
|
+
seg.isWildcard = true;
|
|
108
|
+
return seg;
|
|
109
|
+
}
|
|
110
|
+
seg.namespace = tokens[2];
|
|
111
|
+
}
|
|
112
|
+
if (tokens.length > 3) {
|
|
113
|
+
if (tokens[3] === '*') {
|
|
114
|
+
seg.isWildcard = true;
|
|
115
|
+
return seg;
|
|
116
|
+
}
|
|
117
|
+
seg.type = tokens[3];
|
|
118
|
+
}
|
|
119
|
+
if (tokens.length > 4) {
|
|
120
|
+
if (tokens[4] === '*') {
|
|
121
|
+
seg.isWildcard = true;
|
|
122
|
+
return seg;
|
|
123
|
+
}
|
|
124
|
+
if (!tokens[4].startsWith('v')) {
|
|
125
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, "Major version must start with 'v'");
|
|
126
|
+
}
|
|
127
|
+
const majorStr = tokens[4].substring(1);
|
|
128
|
+
const major = parseInt(majorStr, 10);
|
|
129
|
+
if (isNaN(major)) {
|
|
130
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, 'Major version must be an integer');
|
|
131
|
+
}
|
|
132
|
+
if (major < 0) {
|
|
133
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, 'Major version must be >= 0');
|
|
134
|
+
}
|
|
135
|
+
if (major.toString() !== majorStr) {
|
|
136
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, 'Major version must be an integer');
|
|
137
|
+
}
|
|
138
|
+
seg.verMajor = major;
|
|
139
|
+
}
|
|
140
|
+
if (tokens.length > 5) {
|
|
141
|
+
if (tokens[5] === '*') {
|
|
142
|
+
seg.isWildcard = true;
|
|
143
|
+
return seg;
|
|
144
|
+
}
|
|
145
|
+
const minor = parseInt(tokens[5], 10);
|
|
146
|
+
if (isNaN(minor)) {
|
|
147
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, 'Minor version must be an integer');
|
|
148
|
+
}
|
|
149
|
+
if (minor < 0) {
|
|
150
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, 'Minor version must be >= 0');
|
|
151
|
+
}
|
|
152
|
+
if (minor.toString() !== tokens[5]) {
|
|
153
|
+
throw new types_1.InvalidSegmentError(num, offset, segment, 'Minor version must be an integer');
|
|
154
|
+
}
|
|
155
|
+
seg.verMinor = minor;
|
|
156
|
+
}
|
|
157
|
+
return seg;
|
|
158
|
+
}
|
|
159
|
+
static isValidGtsID(id) {
|
|
160
|
+
if (!id.startsWith(types_1.GTS_PREFIX)) {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
this.parseGtsID(id);
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
static validateGtsID(id) {
|
|
172
|
+
const isWildcard = id.includes('*');
|
|
173
|
+
try {
|
|
174
|
+
if (isWildcard) {
|
|
175
|
+
// For wildcard patterns, use validateWildcard
|
|
176
|
+
this.validateWildcard(id);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
this.parseGtsID(id);
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
id,
|
|
183
|
+
ok: true,
|
|
184
|
+
valid: true,
|
|
185
|
+
error: '',
|
|
186
|
+
is_wildcard: isWildcard,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
return {
|
|
191
|
+
id,
|
|
192
|
+
ok: false,
|
|
193
|
+
valid: false,
|
|
194
|
+
error: error instanceof Error ? error.message : String(error),
|
|
195
|
+
is_wildcard: isWildcard,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
static parseID(id) {
|
|
200
|
+
try {
|
|
201
|
+
const gtsId = this.parseGtsID(id);
|
|
202
|
+
return {
|
|
203
|
+
ok: true,
|
|
204
|
+
segments: gtsId.segments,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
return {
|
|
209
|
+
ok: false,
|
|
210
|
+
segments: [],
|
|
211
|
+
error: error instanceof Error ? error.message : String(error),
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
static isType(id) {
|
|
216
|
+
return id.endsWith('~');
|
|
217
|
+
}
|
|
218
|
+
static toUUID(id) {
|
|
219
|
+
return (0, uuid_1.v5)(id, GTS_NAMESPACE);
|
|
220
|
+
}
|
|
221
|
+
static idToUUID(id) {
|
|
222
|
+
try {
|
|
223
|
+
this.parseGtsID(id);
|
|
224
|
+
return {
|
|
225
|
+
id,
|
|
226
|
+
uuid: this.toUUID(id),
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
return {
|
|
231
|
+
id,
|
|
232
|
+
uuid: '',
|
|
233
|
+
error: error instanceof Error ? error.message : String(error),
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
static matchIDPattern(candidate, pattern) {
|
|
238
|
+
try {
|
|
239
|
+
// Validate and parse candidate
|
|
240
|
+
// If candidate contains '*', validate it as a wildcard pattern first
|
|
241
|
+
// This catches malformed wildcards like 'a*' (wildcard not on token boundary)
|
|
242
|
+
let candidateId;
|
|
243
|
+
try {
|
|
244
|
+
if (candidate.includes('*')) {
|
|
245
|
+
// Validate candidate as a wildcard pattern first
|
|
246
|
+
this.validateWildcard(candidate);
|
|
247
|
+
}
|
|
248
|
+
candidateId = this.parseGtsID(candidate);
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
return {
|
|
252
|
+
match: false,
|
|
253
|
+
pattern,
|
|
254
|
+
candidate,
|
|
255
|
+
error: error instanceof Error ? error.message : String(error),
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
// Validate and parse pattern (allow wildcards)
|
|
259
|
+
let patternId;
|
|
260
|
+
try {
|
|
261
|
+
patternId = this.validateWildcard(pattern);
|
|
262
|
+
}
|
|
263
|
+
catch (error) {
|
|
264
|
+
return {
|
|
265
|
+
match: false,
|
|
266
|
+
pattern,
|
|
267
|
+
candidate,
|
|
268
|
+
error: error instanceof Error ? error.message : String(error),
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
// Perform matching
|
|
272
|
+
const match = this.wildcardMatch(candidateId, patternId);
|
|
273
|
+
return {
|
|
274
|
+
match,
|
|
275
|
+
pattern,
|
|
276
|
+
candidate,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
return {
|
|
281
|
+
match: false,
|
|
282
|
+
pattern,
|
|
283
|
+
candidate,
|
|
284
|
+
error: error instanceof Error ? error.message : String(error),
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
static validateWildcard(pattern) {
|
|
289
|
+
const p = pattern.trim();
|
|
290
|
+
// Must start with gts.
|
|
291
|
+
if (!p.startsWith(types_1.GTS_PREFIX)) {
|
|
292
|
+
throw new types_1.InvalidGtsIDError(pattern, `Does not start with '${types_1.GTS_PREFIX}'`);
|
|
293
|
+
}
|
|
294
|
+
// Count wildcards
|
|
295
|
+
const wildcardCount = (p.match(/\*/g) || []).length;
|
|
296
|
+
if (wildcardCount > 1) {
|
|
297
|
+
throw new types_1.InvalidGtsIDError(pattern, "The wildcard '*' token is allowed only once");
|
|
298
|
+
}
|
|
299
|
+
// If wildcard exists, validate its position
|
|
300
|
+
if (wildcardCount === 1) {
|
|
301
|
+
// Wildcard must be at a token boundary at the end (either .* or ~*)
|
|
302
|
+
// Pattern like "gts.a.b.c.d.v1~a.*" is valid (wildcard at end after .)
|
|
303
|
+
// Pattern like "gts.a.b.c.d.v1~a.*~" is invalid (wildcard not at end of pattern)
|
|
304
|
+
// Pattern like "gts.a.b.c.d.v1~a*" is invalid (wildcard not at token boundary)
|
|
305
|
+
// Pattern like "gts.a.b.c.*.v1~a.*" is invalid (wildcard in middle of segment)
|
|
306
|
+
const wildcardIndex = p.indexOf('*');
|
|
307
|
+
// Check if wildcard is at the very end
|
|
308
|
+
if (wildcardIndex !== p.length - 1) {
|
|
309
|
+
throw new types_1.InvalidGtsIDError(pattern, "The wildcard '*' token is allowed only at the end of the pattern");
|
|
310
|
+
}
|
|
311
|
+
// Check if wildcard is preceded by . or ~ (token boundary)
|
|
312
|
+
if (wildcardIndex > 0 && p[wildcardIndex - 1] !== '.' && p[wildcardIndex - 1] !== '~') {
|
|
313
|
+
throw new types_1.InvalidGtsIDError(pattern, "The wildcard '*' must be preceded by '.' or '~' (token boundary)");
|
|
314
|
+
}
|
|
315
|
+
// Check that there's no wildcard in the middle of a segment (before a ~)
|
|
316
|
+
// Split by ~ to get segments, check if any segment except the last has a wildcard
|
|
317
|
+
const segments = p.split('~');
|
|
318
|
+
for (let i = 0; i < segments.length - 1; i++) {
|
|
319
|
+
if (segments[i].includes('*')) {
|
|
320
|
+
throw new types_1.InvalidGtsIDError(pattern, "The wildcard '*' token cannot appear in the middle of a chained ID");
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
// Parse the pattern - parseGtsID will handle the segment validation
|
|
325
|
+
return this.parseGtsIDInternal(p, true);
|
|
326
|
+
}
|
|
327
|
+
// Internal parse method that can be called with wildcard mode
|
|
328
|
+
static parseGtsIDInternal(id, allowWildcard = false) {
|
|
329
|
+
const raw = id.trim();
|
|
330
|
+
if (raw !== raw.toLowerCase()) {
|
|
331
|
+
throw new types_1.InvalidGtsIDError(id, 'Must be lower case');
|
|
332
|
+
}
|
|
333
|
+
if (raw.includes('-')) {
|
|
334
|
+
throw new types_1.InvalidGtsIDError(id, "Must not contain '-'");
|
|
335
|
+
}
|
|
336
|
+
if (!raw.startsWith(types_1.GTS_PREFIX)) {
|
|
337
|
+
throw new types_1.InvalidGtsIDError(id, `Does not start with '${types_1.GTS_PREFIX}'`);
|
|
338
|
+
}
|
|
339
|
+
if (raw.length > types_1.MAX_ID_LENGTH) {
|
|
340
|
+
throw new types_1.InvalidGtsIDError(id, 'Too long');
|
|
341
|
+
}
|
|
342
|
+
// Additional validation
|
|
343
|
+
if (raw.includes('..')) {
|
|
344
|
+
throw new types_1.InvalidGtsIDError(id, 'Double dots not allowed');
|
|
345
|
+
}
|
|
346
|
+
if (raw.endsWith('.') && !raw.endsWith('.*')) {
|
|
347
|
+
throw new types_1.InvalidGtsIDError(id, 'Cannot end with a dot');
|
|
348
|
+
}
|
|
349
|
+
if (raw.includes('~~')) {
|
|
350
|
+
throw new types_1.InvalidGtsIDError(id, 'Double tildes not allowed');
|
|
351
|
+
}
|
|
352
|
+
if (raw === types_1.GTS_PREFIX || raw === types_1.GTS_PREFIX + '~') {
|
|
353
|
+
throw new types_1.InvalidGtsIDError(id, 'ID cannot be just the prefix');
|
|
354
|
+
}
|
|
355
|
+
const gtsId = {
|
|
356
|
+
id: raw,
|
|
357
|
+
segments: [],
|
|
358
|
+
};
|
|
359
|
+
const remainder = raw.substring(types_1.GTS_PREFIX.length);
|
|
360
|
+
const parts = this.splitPreservingTilde(remainder);
|
|
361
|
+
let offset = types_1.GTS_PREFIX.length;
|
|
362
|
+
for (let i = 0; i < parts.length; i++) {
|
|
363
|
+
const part = parts[i];
|
|
364
|
+
if (part === '') {
|
|
365
|
+
continue;
|
|
366
|
+
}
|
|
367
|
+
const segment = this.parseSegment(i + 1, offset, part);
|
|
368
|
+
gtsId.segments.push(segment);
|
|
369
|
+
offset += part.length;
|
|
370
|
+
}
|
|
371
|
+
// Ensure we have at least one segment
|
|
372
|
+
if (gtsId.segments.length === 0) {
|
|
373
|
+
throw new types_1.InvalidGtsIDError(id, 'No valid segments found');
|
|
374
|
+
}
|
|
375
|
+
// v0.7: Single-segment instance IDs are prohibited (skip for wildcard patterns)
|
|
376
|
+
if (!allowWildcard && !raw.includes('*')) {
|
|
377
|
+
const lastSegment = gtsId.segments[gtsId.segments.length - 1];
|
|
378
|
+
if (!lastSegment.isType && gtsId.segments.length === 1) {
|
|
379
|
+
throw new types_1.InvalidGtsIDError(id, 'Single-segment instance IDs are prohibited. Instance IDs must be chained with a type segment (e.g., gts.vendor.pkg.ns.type.v1~instance.segment.v1)');
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return gtsId;
|
|
383
|
+
}
|
|
384
|
+
static wildcardMatch(candidate, pattern) {
|
|
385
|
+
if (!candidate || !pattern) {
|
|
386
|
+
return false;
|
|
387
|
+
}
|
|
388
|
+
// If no wildcard in pattern, perform exact match with version flexibility
|
|
389
|
+
if (!pattern.id.includes('*')) {
|
|
390
|
+
return this.matchSegments(pattern.segments, candidate.segments);
|
|
391
|
+
}
|
|
392
|
+
// Wildcard case
|
|
393
|
+
if ((pattern.id.match(/\*/g) || []).length > 1 || !pattern.id.endsWith('*')) {
|
|
394
|
+
return false;
|
|
395
|
+
}
|
|
396
|
+
// Use segment matching for wildcard patterns too
|
|
397
|
+
return this.matchSegments(pattern.segments, candidate.segments);
|
|
398
|
+
}
|
|
399
|
+
static matchSegments(patternSegs, candidateSegs) {
|
|
400
|
+
// If pattern is longer than candidate, no match
|
|
401
|
+
if (patternSegs.length > candidateSegs.length) {
|
|
402
|
+
return false;
|
|
403
|
+
}
|
|
404
|
+
for (let i = 0; i < patternSegs.length; i++) {
|
|
405
|
+
const pSeg = patternSegs[i];
|
|
406
|
+
const cSeg = candidateSegs[i];
|
|
407
|
+
// If pattern segment is a wildcard, check non-wildcard fields first
|
|
408
|
+
if (pSeg.isWildcard) {
|
|
409
|
+
// Check the fields that are set (non-empty) in the wildcard pattern
|
|
410
|
+
if (pSeg.vendor && pSeg.vendor !== cSeg.vendor) {
|
|
411
|
+
return false;
|
|
412
|
+
}
|
|
413
|
+
if (pSeg.package && pSeg.package !== cSeg.package) {
|
|
414
|
+
return false;
|
|
415
|
+
}
|
|
416
|
+
if (pSeg.namespace && pSeg.namespace !== cSeg.namespace) {
|
|
417
|
+
return false;
|
|
418
|
+
}
|
|
419
|
+
if (pSeg.type && pSeg.type !== cSeg.type) {
|
|
420
|
+
return false;
|
|
421
|
+
}
|
|
422
|
+
// Check version fields if they are set in the pattern
|
|
423
|
+
if (pSeg.verMajor !== 0 && pSeg.verMajor !== cSeg.verMajor) {
|
|
424
|
+
return false;
|
|
425
|
+
}
|
|
426
|
+
if (pSeg.verMinor !== undefined && (cSeg.verMinor === undefined || pSeg.verMinor !== cSeg.verMinor)) {
|
|
427
|
+
return false;
|
|
428
|
+
}
|
|
429
|
+
// Check is_type flag if set
|
|
430
|
+
if (pSeg.isType && pSeg.isType !== cSeg.isType) {
|
|
431
|
+
return false;
|
|
432
|
+
}
|
|
433
|
+
// Wildcard matches - accept anything after this point
|
|
434
|
+
return true;
|
|
435
|
+
}
|
|
436
|
+
// Non-wildcard segment - all fields must match
|
|
437
|
+
if (pSeg.vendor !== cSeg.vendor) {
|
|
438
|
+
return false;
|
|
439
|
+
}
|
|
440
|
+
if (pSeg.package !== cSeg.package) {
|
|
441
|
+
return false;
|
|
442
|
+
}
|
|
443
|
+
if (pSeg.namespace !== cSeg.namespace) {
|
|
444
|
+
return false;
|
|
445
|
+
}
|
|
446
|
+
if (pSeg.type !== cSeg.type) {
|
|
447
|
+
return false;
|
|
448
|
+
}
|
|
449
|
+
// Check version matching
|
|
450
|
+
// Major version must match
|
|
451
|
+
if (pSeg.verMajor !== cSeg.verMajor) {
|
|
452
|
+
return false;
|
|
453
|
+
}
|
|
454
|
+
// Minor version: if pattern has no minor version, accept any minor in candidate
|
|
455
|
+
// If pattern has minor version, it must match exactly
|
|
456
|
+
if (pSeg.verMinor !== undefined) {
|
|
457
|
+
if (cSeg.verMinor === undefined || pSeg.verMinor !== cSeg.verMinor) {
|
|
458
|
+
return false;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
// else: pattern has no minor version, so any minor version in candidate is OK
|
|
462
|
+
// Check is_type flag matches
|
|
463
|
+
if (pSeg.isType !== cSeg.isType) {
|
|
464
|
+
return false;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
// If we've matched all pattern segments, it's a match
|
|
468
|
+
return true;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
exports.Gts = Gts;
|
|
472
|
+
//# sourceMappingURL=gts.js.map
|
package/dist/gts.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gts.js","sourceRoot":"","sources":["../src/gts.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export * from './types';
|
|
2
|
+
export { Gts } from './gts';
|
|
3
|
+
export { GtsExtractor } from './extract';
|
|
4
|
+
export { GtsStore, createJsonEntity } from './store';
|
|
5
|
+
export { GtsRelationships } from './relationships';
|
|
6
|
+
export { GtsCompatibility } from './compatibility';
|
|
7
|
+
export { GtsCast } from './cast';
|
|
8
|
+
export { GtsQuery } from './query';
|
|
9
|
+
import { ValidationResult, ParseResult, MatchResult, UUIDResult, ExtractResult, AttributeResult, QueryResult, RelationshipResult, CompatibilityResult, CastResult, GtsConfig } from './types';
|
|
10
|
+
export declare const isValidGtsID: (id: string) => boolean;
|
|
11
|
+
export declare const validateGtsID: (id: string) => ValidationResult;
|
|
12
|
+
export declare const parseGtsID: (id: string) => ParseResult;
|
|
13
|
+
export declare const matchIDPattern: (candidate: string, pattern: string) => MatchResult;
|
|
14
|
+
export declare const idToUUID: (id: string) => UUIDResult;
|
|
15
|
+
export declare const extractID: (content: any, schemaContent?: any) => ExtractResult;
|
|
16
|
+
export declare class GTS {
|
|
17
|
+
private store;
|
|
18
|
+
constructor(config?: Partial<GtsConfig>);
|
|
19
|
+
register(content: any): void;
|
|
20
|
+
get(id: string): any;
|
|
21
|
+
validateInstance(id: string): ValidationResult;
|
|
22
|
+
getAttribute(path: string): AttributeResult;
|
|
23
|
+
query(expression: string, limit?: number): QueryResult;
|
|
24
|
+
resolveRelationships(id: string): RelationshipResult;
|
|
25
|
+
checkCompatibility(oldId: string, newId: string, mode?: 'backward' | 'forward' | 'full'): CompatibilityResult;
|
|
26
|
+
castInstance(fromId: string, toSchemaId: string): CastResult;
|
|
27
|
+
}
|
|
28
|
+
export default GTS;
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AASnC,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,UAAU,EACV,aAAa,EACb,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,EACV,SAAS,EACV,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,YAAY,GAAI,IAAI,MAAM,KAAG,OAA+B,CAAC;AAC1E,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,KAAG,gBAAyC,CAAC;AACrF,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,KAAG,WAA8B,CAAC;AACvE,eAAO,MAAM,cAAc,GAAI,WAAW,MAAM,EAAE,SAAS,MAAM,KAAG,WAC5B,CAAC;AACzC,eAAO,MAAM,QAAQ,GAAI,IAAI,MAAM,KAAG,UAA8B,CAAC;AACrE,eAAO,MAAM,SAAS,GAAI,SAAS,GAAG,EAAE,gBAAgB,GAAG,KAAG,aACd,CAAC;AAEjD,qBAAa,GAAG;IACd,OAAO,CAAC,KAAK,CAAW;gBAEZ,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;IAIvC,QAAQ,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAK5B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG;IAKpB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB;IAI9C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAe3C,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW;IAItD,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB;IAIpD,kBAAkB,CAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,UAAU,GAAG,SAAS,GAAG,MAAe,GAC7C,mBAAmB;IAItB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU;CAG7D;AAED,eAAe,GAAG,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.GTS = exports.extractID = exports.idToUUID = exports.matchIDPattern = exports.parseGtsID = exports.validateGtsID = exports.isValidGtsID = exports.GtsQuery = exports.GtsCast = exports.GtsCompatibility = exports.GtsRelationships = exports.createJsonEntity = exports.GtsStore = exports.GtsExtractor = exports.Gts = void 0;
|
|
18
|
+
__exportStar(require("./types"), exports);
|
|
19
|
+
var gts_1 = require("./gts");
|
|
20
|
+
Object.defineProperty(exports, "Gts", { enumerable: true, get: function () { return gts_1.Gts; } });
|
|
21
|
+
var extract_1 = require("./extract");
|
|
22
|
+
Object.defineProperty(exports, "GtsExtractor", { enumerable: true, get: function () { return extract_1.GtsExtractor; } });
|
|
23
|
+
var store_1 = require("./store");
|
|
24
|
+
Object.defineProperty(exports, "GtsStore", { enumerable: true, get: function () { return store_1.GtsStore; } });
|
|
25
|
+
Object.defineProperty(exports, "createJsonEntity", { enumerable: true, get: function () { return store_1.createJsonEntity; } });
|
|
26
|
+
var relationships_1 = require("./relationships");
|
|
27
|
+
Object.defineProperty(exports, "GtsRelationships", { enumerable: true, get: function () { return relationships_1.GtsRelationships; } });
|
|
28
|
+
var compatibility_1 = require("./compatibility");
|
|
29
|
+
Object.defineProperty(exports, "GtsCompatibility", { enumerable: true, get: function () { return compatibility_1.GtsCompatibility; } });
|
|
30
|
+
var cast_1 = require("./cast");
|
|
31
|
+
Object.defineProperty(exports, "GtsCast", { enumerable: true, get: function () { return cast_1.GtsCast; } });
|
|
32
|
+
var query_1 = require("./query");
|
|
33
|
+
Object.defineProperty(exports, "GtsQuery", { enumerable: true, get: function () { return query_1.GtsQuery; } });
|
|
34
|
+
const gts_2 = require("./gts");
|
|
35
|
+
const extract_2 = require("./extract");
|
|
36
|
+
const store_2 = require("./store");
|
|
37
|
+
const relationships_2 = require("./relationships");
|
|
38
|
+
const compatibility_2 = require("./compatibility");
|
|
39
|
+
const cast_2 = require("./cast");
|
|
40
|
+
const query_2 = require("./query");
|
|
41
|
+
const isValidGtsID = (id) => gts_2.Gts.isValidGtsID(id);
|
|
42
|
+
exports.isValidGtsID = isValidGtsID;
|
|
43
|
+
const validateGtsID = (id) => gts_2.Gts.validateGtsID(id);
|
|
44
|
+
exports.validateGtsID = validateGtsID;
|
|
45
|
+
const parseGtsID = (id) => gts_2.Gts.parseID(id);
|
|
46
|
+
exports.parseGtsID = parseGtsID;
|
|
47
|
+
const matchIDPattern = (candidate, pattern) => gts_2.Gts.matchIDPattern(candidate, pattern);
|
|
48
|
+
exports.matchIDPattern = matchIDPattern;
|
|
49
|
+
const idToUUID = (id) => gts_2.Gts.idToUUID(id);
|
|
50
|
+
exports.idToUUID = idToUUID;
|
|
51
|
+
const extractID = (content, schemaContent) => extract_2.GtsExtractor.extractID(content, schemaContent);
|
|
52
|
+
exports.extractID = extractID;
|
|
53
|
+
class GTS {
|
|
54
|
+
constructor(config) {
|
|
55
|
+
this.store = new store_2.GtsStore(config);
|
|
56
|
+
}
|
|
57
|
+
register(content) {
|
|
58
|
+
const entity = (0, store_2.createJsonEntity)(content);
|
|
59
|
+
this.store.register(entity);
|
|
60
|
+
}
|
|
61
|
+
get(id) {
|
|
62
|
+
const entity = this.store.get(id);
|
|
63
|
+
return entity?.content;
|
|
64
|
+
}
|
|
65
|
+
validateInstance(id) {
|
|
66
|
+
return this.store.validateInstance(id);
|
|
67
|
+
}
|
|
68
|
+
getAttribute(path) {
|
|
69
|
+
// Parse the combined path format: gts_id@attr_path
|
|
70
|
+
const atIndex = path.indexOf('@');
|
|
71
|
+
if (atIndex === -1) {
|
|
72
|
+
return {
|
|
73
|
+
path,
|
|
74
|
+
resolved: false,
|
|
75
|
+
error: 'Invalid attribute path: missing @',
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
const gtsId = path.substring(0, atIndex);
|
|
79
|
+
const attrPath = path.substring(atIndex + 1);
|
|
80
|
+
return this.store.getAttribute(gtsId, attrPath);
|
|
81
|
+
}
|
|
82
|
+
query(expression, limit) {
|
|
83
|
+
return query_2.GtsQuery.query(this.store, expression, limit);
|
|
84
|
+
}
|
|
85
|
+
resolveRelationships(id) {
|
|
86
|
+
return relationships_2.GtsRelationships.resolveRelationships(this.store, id);
|
|
87
|
+
}
|
|
88
|
+
checkCompatibility(oldId, newId, mode = 'full') {
|
|
89
|
+
return compatibility_2.GtsCompatibility.checkCompatibility(this.store, oldId, newId, mode);
|
|
90
|
+
}
|
|
91
|
+
castInstance(fromId, toSchemaId) {
|
|
92
|
+
return cast_2.GtsCast.castInstance(this.store, fromId, toSchemaId);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.GTS = GTS;
|
|
96
|
+
exports.default = GTS;
|
|
97
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AACZ,qCAAyC;AAAhC,uGAAA,YAAY,OAAA;AACrB,iCAAqD;AAA5C,iGAAA,QAAQ,OAAA;AAAE,yGAAA,gBAAgB,OAAA;AACnC,iDAAmD;AAA1C,iHAAA,gBAAgB,OAAA;AACzB,iDAAmD;AAA1C,iHAAA,gBAAgB,OAAA;AACzB,+BAAiC;AAAxB,+FAAA,OAAO,OAAA;AAChB,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA;AAEjB,+BAA4B;AAC5B,uCAAyC;AACzC,mCAAqD;AACrD,mDAAmD;AACnD,mDAAmD;AACnD,iCAAiC;AACjC,mCAAmC;AAe5B,MAAM,YAAY,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,SAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAA7D,QAAA,YAAY,gBAAiD;AACnE,MAAM,aAAa,GAAG,CAAC,EAAU,EAAoB,EAAE,CAAC,SAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAAxE,QAAA,aAAa,iBAA2D;AAC9E,MAAM,UAAU,GAAG,CAAC,EAAU,EAAe,EAAE,CAAC,SAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAA1D,QAAA,UAAU,cAAgD;AAChE,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAe,EAAE,CAChF,SAAG,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAD5B,QAAA,cAAc,kBACc;AAClC,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAc,EAAE,CAAC,SAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAAxD,QAAA,QAAQ,YAAgD;AAC9D,MAAM,SAAS,GAAG,CAAC,OAAY,EAAE,aAAmB,EAAiB,EAAE,CAC5E,sBAAY,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AADpC,QAAA,SAAS,aAC2B;AAEjD,MAAa,GAAG;IAGd,YAAY,MAA2B;QACrC,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,OAAY;QACnB,MAAM,MAAM,GAAG,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,OAAO,MAAM,EAAE,OAAO,CAAC;IACzB,CAAC;IAED,gBAAgB,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,mDAAmD;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;YACnB,OAAO;gBACL,IAAI;gBACJ,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,mCAAmC;aAC3C,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,UAAkB,EAAE,KAAc;QACtC,OAAO,gBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,oBAAoB,CAAC,EAAU;QAC7B,OAAO,gCAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,kBAAkB,CAChB,KAAa,EACb,KAAa,EACb,OAAwC,MAAM;QAE9C,OAAO,gCAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,UAAkB;QAC7C,OAAO,cAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;CACF;AAvDD,kBAuDC;AAED,kBAAe,GAAG,CAAC"}
|
package/dist/query.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { QueryResult } from './types';
|
|
2
|
+
import { GtsStore } from './store';
|
|
3
|
+
export declare class GtsQuery {
|
|
4
|
+
static query(store: GtsStore, expression: string, limit?: number): QueryResult;
|
|
5
|
+
private static parseQueryExpression;
|
|
6
|
+
private static validateQueryPattern;
|
|
7
|
+
private static matchesIDPattern;
|
|
8
|
+
private static matchesFilters;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,qBAAa,QAAQ;IACnB,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAY,GAAG,WAAW;IAmDnF,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA4DnC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA2CnC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAM/B,OAAO,CAAC,MAAM,CAAC,cAAc;CAyB9B"}
|