@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.
Files changed (81) hide show
  1. package/.eslintrc.json +16 -0
  2. package/.github/workflows/ci.yml +198 -0
  3. package/.gitmodules +3 -0
  4. package/.prettierrc +7 -0
  5. package/LICENSE +201 -0
  6. package/Makefile +64 -0
  7. package/README.md +298 -0
  8. package/dist/cast.d.ts +9 -0
  9. package/dist/cast.d.ts.map +1 -0
  10. package/dist/cast.js +153 -0
  11. package/dist/cast.js.map +1 -0
  12. package/dist/cli/index.d.ts +3 -0
  13. package/dist/cli/index.d.ts.map +1 -0
  14. package/dist/cli/index.js +318 -0
  15. package/dist/cli/index.js.map +1 -0
  16. package/dist/compatibility.d.ts +11 -0
  17. package/dist/compatibility.d.ts.map +1 -0
  18. package/dist/compatibility.js +176 -0
  19. package/dist/compatibility.js.map +1 -0
  20. package/dist/extract.d.ts +13 -0
  21. package/dist/extract.d.ts.map +1 -0
  22. package/dist/extract.js +194 -0
  23. package/dist/extract.js.map +1 -0
  24. package/dist/gts.d.ts +18 -0
  25. package/dist/gts.d.ts.map +1 -0
  26. package/dist/gts.js +472 -0
  27. package/dist/gts.js.map +1 -0
  28. package/dist/index.d.ts +29 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +97 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/query.d.ts +10 -0
  33. package/dist/query.d.ts.map +1 -0
  34. package/dist/query.js +171 -0
  35. package/dist/query.js.map +1 -0
  36. package/dist/relationships.d.ts +7 -0
  37. package/dist/relationships.d.ts.map +1 -0
  38. package/dist/relationships.js +80 -0
  39. package/dist/relationships.js.map +1 -0
  40. package/dist/server/index.d.ts +2 -0
  41. package/dist/server/index.d.ts.map +1 -0
  42. package/dist/server/index.js +132 -0
  43. package/dist/server/index.js.map +1 -0
  44. package/dist/server/server.d.ts +33 -0
  45. package/dist/server/server.d.ts.map +1 -0
  46. package/dist/server/server.js +678 -0
  47. package/dist/server/server.js.map +1 -0
  48. package/dist/server/types.d.ts +61 -0
  49. package/dist/server/types.d.ts.map +1 -0
  50. package/dist/server/types.js +3 -0
  51. package/dist/server/types.js.map +1 -0
  52. package/dist/store.d.ts +39 -0
  53. package/dist/store.d.ts.map +1 -0
  54. package/dist/store.js +1026 -0
  55. package/dist/store.js.map +1 -0
  56. package/dist/types.d.ts +111 -0
  57. package/dist/types.d.ts.map +1 -0
  58. package/dist/types.js +29 -0
  59. package/dist/types.js.map +1 -0
  60. package/dist/x-gts-ref.d.ts +35 -0
  61. package/dist/x-gts-ref.d.ts.map +1 -0
  62. package/dist/x-gts-ref.js +304 -0
  63. package/dist/x-gts-ref.js.map +1 -0
  64. package/jest.config.js +13 -0
  65. package/package.json +54 -0
  66. package/src/cast.ts +179 -0
  67. package/src/cli/index.ts +315 -0
  68. package/src/compatibility.ts +201 -0
  69. package/src/extract.ts +213 -0
  70. package/src/gts.ts +550 -0
  71. package/src/index.ts +97 -0
  72. package/src/query.ts +191 -0
  73. package/src/relationships.ts +91 -0
  74. package/src/server/index.ts +112 -0
  75. package/src/server/server.ts +771 -0
  76. package/src/server/types.ts +74 -0
  77. package/src/store.ts +1178 -0
  78. package/src/types.ts +138 -0
  79. package/src/x-gts-ref.ts +349 -0
  80. package/tests/gts.test.ts +525 -0
  81. 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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gts.js","sourceRoot":"","sources":["../src/gts.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}
@@ -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"}