@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
@@ -0,0 +1,318 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ const commander_1 = require("commander");
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const index_1 = require("../index");
41
+ const program = new commander_1.Command();
42
+ program
43
+ .name('gts')
44
+ .description('GTS CLI - Global Type System command-line interface')
45
+ .version('0.1.0')
46
+ .option('--path <path>', 'Path to JSON and schema files', process.env.GTS_PATH)
47
+ .option('--config <config>', 'Path to GTS config JSON file', process.env.GTS_CONFIG)
48
+ .option('-v, --verbose', 'Verbose output', false);
49
+ // OP#1 - Validate ID
50
+ program
51
+ .command('validate-id')
52
+ .description('Validate a GTS ID')
53
+ .requiredOption('-i, --id <id>', 'GTS ID to validate')
54
+ .action((options) => {
55
+ const result = (0, index_1.validateGtsID)(options.id);
56
+ console.log(JSON.stringify(result, null, 2));
57
+ process.exit(result.ok ? 0 : 1);
58
+ });
59
+ // OP#2 - Extract ID
60
+ program
61
+ .command('extract-id')
62
+ .description('Extract GTS ID from JSON content')
63
+ .requiredOption('-f, --file <file>', 'JSON file to extract ID from')
64
+ .action((options) => {
65
+ try {
66
+ const content = JSON.parse(fs.readFileSync(options.file, 'utf-8'));
67
+ const result = (0, index_1.extractID)(content);
68
+ console.log(JSON.stringify(result, null, 2));
69
+ }
70
+ catch (error) {
71
+ console.error(`Error: ${error instanceof Error ? error.message : error}`);
72
+ process.exit(1);
73
+ }
74
+ });
75
+ // OP#3 - Parse ID
76
+ program
77
+ .command('parse-id')
78
+ .description('Parse a GTS ID into components')
79
+ .requiredOption('-i, --id <id>', 'GTS ID to parse')
80
+ .action((options) => {
81
+ const result = (0, index_1.parseGtsID)(options.id);
82
+ console.log(JSON.stringify(result, null, 2));
83
+ process.exit(result.ok ? 0 : 1);
84
+ });
85
+ // OP#4 - Match ID
86
+ program
87
+ .command('match-id')
88
+ .description('Match GTS ID against pattern')
89
+ .requiredOption('-p, --pattern <pattern>', 'Pattern to match against')
90
+ .requiredOption('-c, --candidate <candidate>', 'Candidate ID to match')
91
+ .action((options) => {
92
+ const result = (0, index_1.matchIDPattern)(options.candidate, options.pattern);
93
+ console.log(JSON.stringify(result, null, 2));
94
+ process.exit(result.match ? 0 : 1);
95
+ });
96
+ // OP#5 - UUID
97
+ program
98
+ .command('uuid')
99
+ .description('Generate UUID from GTS ID')
100
+ .requiredOption('-i, --id <id>', 'GTS ID to convert')
101
+ .action((options) => {
102
+ const result = (0, index_1.idToUUID)(options.id);
103
+ if (result.error) {
104
+ console.error(`Error: ${result.error}`);
105
+ process.exit(1);
106
+ }
107
+ console.log(result.uuid);
108
+ });
109
+ // OP#6 - Validate Instance
110
+ program
111
+ .command('validate')
112
+ .description('Validate instance against schema')
113
+ .requiredOption('-i, --id <id>', 'Instance ID to validate')
114
+ .action((options, command) => {
115
+ const gts = loadStore(command.parent);
116
+ const result = gts.validateInstance(options.id);
117
+ console.log(JSON.stringify(result, null, 2));
118
+ process.exit(result.ok ? 0 : 1);
119
+ });
120
+ // OP#7 - Relationships
121
+ program
122
+ .command('relationships')
123
+ .description('Resolve relationships for an entity')
124
+ .requiredOption('-i, --id <id>', 'Entity ID')
125
+ .action((options, command) => {
126
+ const gts = loadStore(command.parent);
127
+ const result = gts.resolveRelationships(options.id);
128
+ console.log(JSON.stringify(result, null, 2));
129
+ });
130
+ // OP#8 - Compatibility
131
+ program
132
+ .command('compatibility')
133
+ .description('Check schema compatibility')
134
+ .requiredOption('-o, --old <old>', 'Old schema ID')
135
+ .requiredOption('-n, --new <new>', 'New schema ID')
136
+ .option('-m, --mode <mode>', 'Compatibility mode (backward|forward|full)', 'full')
137
+ .action((options, command) => {
138
+ const gts = loadStore(command.parent);
139
+ const result = gts.checkCompatibility(options.old, options.new, options.mode);
140
+ console.log(JSON.stringify(result, null, 2));
141
+ process.exit(result.compatible ? 0 : 1);
142
+ });
143
+ // OP#9 - Cast
144
+ program
145
+ .command('cast')
146
+ .description('Cast instance to different schema version')
147
+ .requiredOption('-f, --from <from>', 'Source instance ID')
148
+ .requiredOption('-t, --to <to>', 'Target schema ID')
149
+ .action((options, command) => {
150
+ const gts = loadStore(command.parent);
151
+ const result = gts.castInstance(options.from, options.to);
152
+ console.log(JSON.stringify(result, null, 2));
153
+ process.exit(result.ok ? 0 : 1);
154
+ });
155
+ // OP#10 - Query
156
+ program
157
+ .command('query')
158
+ .description('Query entities')
159
+ .requiredOption('-e, --expr <expr>', 'Query expression')
160
+ .option('-l, --limit <limit>', 'Maximum results', '100')
161
+ .action((options, command) => {
162
+ const gts = loadStore(command.parent);
163
+ const result = gts.query(options.expr, parseInt(options.limit, 10));
164
+ console.log(JSON.stringify(result, null, 2));
165
+ });
166
+ // OP#11 - Attribute
167
+ program
168
+ .command('attr')
169
+ .description('Get attribute value')
170
+ .requiredOption('-p, --path <path>', 'Attribute path (e.g., gts.vendor.pkg.ns.type.v1.0@name)')
171
+ .action((options, command) => {
172
+ const gts = loadStore(command.parent);
173
+ const result = gts.getAttribute(options.path);
174
+ console.log(JSON.stringify(result, null, 2));
175
+ process.exit(result.resolved ? 0 : 1);
176
+ });
177
+ // List entities
178
+ program
179
+ .command('list')
180
+ .description('List all entities')
181
+ .option('-l, --limit <limit>', 'Maximum results', '100')
182
+ .action((options, command) => {
183
+ const gts = loadStore(command.parent);
184
+ const entities = gts['store'].getAll().slice(0, parseInt(options.limit, 10));
185
+ const result = {
186
+ count: entities.length,
187
+ items: entities.map((e) => e.id),
188
+ };
189
+ console.log(JSON.stringify(result, null, 2));
190
+ });
191
+ // Server command
192
+ program
193
+ .command('server')
194
+ .description('Start HTTP server')
195
+ .option('--host <host>', 'Host to bind to', '127.0.0.1')
196
+ .option('--port <port>', 'Port to listen on', '8000')
197
+ .action(async (options, command) => {
198
+ const parentOpts = command.parent.opts();
199
+ // Import server dynamically
200
+ const { GtsServer } = await Promise.resolve().then(() => __importStar(require('../server/server')));
201
+ const config = {
202
+ host: options.host,
203
+ port: parseInt(options.port, 10),
204
+ verbose: parentOpts.verbose ? 2 : 1,
205
+ path: parentOpts.path,
206
+ };
207
+ const server = new GtsServer(config);
208
+ // Load entities if path provided
209
+ if (config.path) {
210
+ const gts = loadStore(command.parent);
211
+ // Transfer loaded entities to server
212
+ const entities = gts['store'].getAll();
213
+ for (const entity of entities) {
214
+ server['store'].register(entity.content);
215
+ }
216
+ console.log(`Loaded ${entities.length} entities from ${config.path}`);
217
+ }
218
+ await server.start();
219
+ });
220
+ // OpenAPI command
221
+ program
222
+ .command('openapi')
223
+ .description('Generate OpenAPI specification')
224
+ .option('-o, --out <file>', 'Output file')
225
+ .action((options) => {
226
+ const spec = {
227
+ openapi: '3.0.0',
228
+ info: {
229
+ title: 'GTS API',
230
+ version: '0.1.0',
231
+ description: 'Global Type System API',
232
+ },
233
+ servers: [
234
+ {
235
+ url: 'http://127.0.0.1:8000',
236
+ description: 'Default GTS Server',
237
+ },
238
+ ],
239
+ paths: {},
240
+ components: {},
241
+ };
242
+ const output = JSON.stringify(spec, null, 2);
243
+ if (options.out) {
244
+ fs.writeFileSync(options.out, output);
245
+ console.log(`OpenAPI spec written to ${options.out}`);
246
+ }
247
+ else {
248
+ console.log(output);
249
+ }
250
+ });
251
+ // Helper function to load entities from path
252
+ function loadStore(command) {
253
+ const options = command.opts();
254
+ const gts = new index_1.GTS({ validateRefs: false });
255
+ if (!options.path) {
256
+ return gts;
257
+ }
258
+ const paths = options.path.split(',');
259
+ for (const dirPath of paths) {
260
+ if (!fs.existsSync(dirPath)) {
261
+ if (options.verbose) {
262
+ console.warn(`Path does not exist: ${dirPath}`);
263
+ }
264
+ continue;
265
+ }
266
+ const stats = fs.statSync(dirPath);
267
+ if (!stats.isDirectory()) {
268
+ if (options.verbose) {
269
+ console.warn(`Path is not a directory: ${dirPath}`);
270
+ }
271
+ continue;
272
+ }
273
+ loadEntitiesFromDir(gts, dirPath, options.verbose);
274
+ }
275
+ return gts;
276
+ }
277
+ function loadEntitiesFromDir(gts, dirPath, verbose) {
278
+ const files = fs.readdirSync(dirPath);
279
+ for (const file of files) {
280
+ if (!file.endsWith('.json'))
281
+ continue;
282
+ const filePath = path.join(dirPath, file);
283
+ try {
284
+ const content = fs.readFileSync(filePath, 'utf-8');
285
+ const data = JSON.parse(content);
286
+ // Handle arrays of entities
287
+ const entities = Array.isArray(data) ? data : [data];
288
+ for (const entity of entities) {
289
+ try {
290
+ const gtsEntity = (0, index_1.createJsonEntity)(entity);
291
+ if (gtsEntity.id) {
292
+ gts.register(entity);
293
+ if (verbose) {
294
+ console.log(`Loaded: ${gtsEntity.id}`);
295
+ }
296
+ }
297
+ }
298
+ catch (err) {
299
+ if (verbose) {
300
+ console.warn(`Failed to load entity from ${file}: ${err}`);
301
+ }
302
+ }
303
+ }
304
+ }
305
+ catch (err) {
306
+ if (verbose) {
307
+ console.warn(`Failed to read ${file}: ${err}`);
308
+ }
309
+ }
310
+ }
311
+ }
312
+ // Parse arguments
313
+ program.parse(process.argv);
314
+ // Show help if no command provided
315
+ if (!process.argv.slice(2).length) {
316
+ program.outputHelp();
317
+ }
318
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { CompatibilityResult } from './types';
2
+ import { GtsStore } from './store';
3
+ export declare class GtsCompatibility {
4
+ static checkCompatibility(store: GtsStore, oldId: string, newId: string, mode?: 'backward' | 'forward' | 'full'): CompatibilityResult;
5
+ private static checkBackwardCompatibility;
6
+ private static checkForwardCompatibility;
7
+ private static checkPropertyCompatibility;
8
+ private static normalizeType;
9
+ private static areTypesCompatible;
10
+ }
11
+ //# sourceMappingURL=compatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../src/compatibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,kBAAkB,CACvB,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,UAAU,GAAG,SAAS,GAAG,MAAe,GAC7C,mBAAmB;IA+DtB,OAAO,CAAC,MAAM,CAAC,0BAA0B;IA8BzC,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAyBxC,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAuCzC,OAAO,CAAC,MAAM,CAAC,aAAa;IAO5B,OAAO,CAAC,MAAM,CAAC,kBAAkB;CA0BlC"}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GtsCompatibility = void 0;
4
+ const gts_1 = require("./gts");
5
+ class GtsCompatibility {
6
+ static checkCompatibility(store, oldId, newId, mode = 'full') {
7
+ const errors = [];
8
+ const warnings = [];
9
+ try {
10
+ const oldGtsId = gts_1.Gts.parseGtsID(oldId);
11
+ const newGtsId = gts_1.Gts.parseGtsID(newId);
12
+ const oldEntity = store.get(oldGtsId.id);
13
+ const newEntity = store.get(newGtsId.id);
14
+ if (!oldEntity) {
15
+ errors.push(`Old schema not found: ${oldId}`);
16
+ return { compatible: false, oldId, newId, mode, errors, warnings };
17
+ }
18
+ if (!newEntity) {
19
+ errors.push(`New schema not found: ${newId}`);
20
+ return { compatible: false, oldId, newId, mode, errors, warnings };
21
+ }
22
+ if (!oldEntity.isSchema) {
23
+ errors.push(`Old entity is not a schema: ${oldId}`);
24
+ return { compatible: false, oldId, newId, mode, errors, warnings };
25
+ }
26
+ if (!newEntity.isSchema) {
27
+ errors.push(`New entity is not a schema: ${newId}`);
28
+ return { compatible: false, oldId, newId, mode, errors, warnings };
29
+ }
30
+ const oldSchema = oldEntity.content;
31
+ const newSchema = newEntity.content;
32
+ if (mode === 'backward' || mode === 'full') {
33
+ this.checkBackwardCompatibility(oldSchema, newSchema, errors, warnings);
34
+ }
35
+ if (mode === 'forward' || mode === 'full') {
36
+ this.checkForwardCompatibility(oldSchema, newSchema, errors, warnings);
37
+ }
38
+ return {
39
+ compatible: errors.length === 0,
40
+ oldId,
41
+ newId,
42
+ mode,
43
+ errors,
44
+ warnings,
45
+ };
46
+ }
47
+ catch (error) {
48
+ errors.push(error instanceof Error ? error.message : String(error));
49
+ return {
50
+ compatible: false,
51
+ oldId,
52
+ newId,
53
+ mode,
54
+ errors,
55
+ warnings,
56
+ };
57
+ }
58
+ }
59
+ static checkBackwardCompatibility(oldSchema, newSchema, errors, warnings) {
60
+ const oldProps = oldSchema.properties || {};
61
+ const newProps = newSchema.properties || {};
62
+ const oldRequired = new Set(oldSchema.required || []);
63
+ const newRequired = new Set(newSchema.required || []);
64
+ for (const prop of oldRequired) {
65
+ if (!newRequired.has(prop)) {
66
+ warnings.push(`Property '${prop}' is no longer required in new schema`);
67
+ }
68
+ }
69
+ for (const [propName, propSchema] of Object.entries(oldProps)) {
70
+ if (!(propName in newProps)) {
71
+ if (oldRequired.has(propName)) {
72
+ errors.push(`Required property '${propName}' removed in new schema`);
73
+ }
74
+ else {
75
+ warnings.push(`Optional property '${propName}' removed in new schema`);
76
+ }
77
+ }
78
+ else {
79
+ this.checkPropertyCompatibility(propName, propSchema, newProps[propName], errors, warnings, 'backward');
80
+ }
81
+ }
82
+ }
83
+ static checkForwardCompatibility(oldSchema, newSchema, errors, warnings) {
84
+ const oldProps = oldSchema.properties || {};
85
+ const newProps = newSchema.properties || {};
86
+ const oldRequired = new Set(oldSchema.required || []);
87
+ const newRequired = new Set(newSchema.required || []);
88
+ for (const prop of newRequired) {
89
+ if (!oldRequired.has(prop)) {
90
+ errors.push(`New required property '${prop}' added in new schema`);
91
+ }
92
+ }
93
+ for (const [propName, propSchema] of Object.entries(newProps)) {
94
+ if (!(propName in oldProps)) {
95
+ if (newRequired.has(propName)) {
96
+ errors.push(`New required property '${propName}' added`);
97
+ }
98
+ else {
99
+ warnings.push(`New optional property '${propName}' added`);
100
+ }
101
+ }
102
+ else {
103
+ this.checkPropertyCompatibility(propName, oldProps[propName], propSchema, errors, warnings, 'forward');
104
+ }
105
+ }
106
+ }
107
+ static checkPropertyCompatibility(propName, oldProp, newProp, errors, warnings, direction) {
108
+ const oldType = this.normalizeType(oldProp.type);
109
+ const newType = this.normalizeType(newProp.type);
110
+ if (oldType !== newType) {
111
+ if (this.areTypesCompatible(oldType, newType, direction)) {
112
+ warnings.push(`Property '${propName}' type changed from ${oldType} to ${newType}`);
113
+ }
114
+ else {
115
+ errors.push(`Property '${propName}' type incompatibly changed from ${oldType} to ${newType}`);
116
+ }
117
+ }
118
+ if (oldProp.enum && newProp.enum) {
119
+ const oldEnum = new Set(oldProp.enum);
120
+ const newEnum = new Set(newProp.enum);
121
+ if (direction === 'backward') {
122
+ for (const value of oldEnum) {
123
+ if (!newEnum.has(value)) {
124
+ errors.push(`Enum value '${value}' removed from property '${propName}'`);
125
+ }
126
+ }
127
+ }
128
+ else {
129
+ for (const value of newEnum) {
130
+ if (!oldEnum.has(value)) {
131
+ warnings.push(`Enum value '${value}' added to property '${propName}'`);
132
+ }
133
+ }
134
+ }
135
+ }
136
+ }
137
+ static normalizeType(type) {
138
+ if (Array.isArray(type)) {
139
+ return type.join('|');
140
+ }
141
+ return type || 'any';
142
+ }
143
+ static areTypesCompatible(oldType, newType, direction) {
144
+ if (oldType === newType)
145
+ return true;
146
+ if (direction === 'backward') {
147
+ if (newType === 'any')
148
+ return true;
149
+ if (oldType === 'integer' && newType === 'number')
150
+ return true;
151
+ }
152
+ else {
153
+ if (oldType === 'any')
154
+ return true;
155
+ if (newType === 'integer' && oldType === 'number')
156
+ return true;
157
+ }
158
+ const oldTypes = new Set(oldType.split('|'));
159
+ const newTypes = new Set(newType.split('|'));
160
+ if (direction === 'backward') {
161
+ for (const t of oldTypes) {
162
+ if (!newTypes.has(t))
163
+ return false;
164
+ }
165
+ }
166
+ else {
167
+ for (const t of newTypes) {
168
+ if (!oldTypes.has(t))
169
+ return false;
170
+ }
171
+ }
172
+ return true;
173
+ }
174
+ }
175
+ exports.GtsCompatibility = GtsCompatibility;
176
+ //# sourceMappingURL=compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../src/compatibility.ts"],"names":[],"mappings":";;;AAEA,+BAA4B;AAE5B,MAAa,gBAAgB;IAC3B,MAAM,CAAC,kBAAkB,CACvB,KAAe,EACf,KAAa,EACb,KAAa,EACb,OAAwC,MAAM;QAE9C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,SAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,SAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAEvC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAEzC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;gBAC9C,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YACrE,CAAC;YAED,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;gBAC9C,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YACrE,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;gBACpD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YACrE,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;gBACpD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YACrE,CAAC;YAED,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC;YACpC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC;YAEpC,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3C,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC1E,CAAC;YAED,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1C,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YACzE,CAAC;YAED,OAAO;gBACL,UAAU,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;gBAC/B,KAAK;gBACL,KAAK;gBACL,IAAI;gBACJ,MAAM;gBACN,QAAQ;aACT,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACpE,OAAO;gBACL,UAAU,EAAE,KAAK;gBACjB,KAAK;gBACL,KAAK;gBACL,IAAI;gBACJ,MAAM;gBACN,QAAQ;aACT,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,0BAA0B,CACvC,SAAc,EACd,SAAc,EACd,MAAgB,EAChB,QAAkB;QAElB,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAEtD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,aAAa,IAAI,uCAAuC,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,CAAC;gBAC5B,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC9B,MAAM,CAAC,IAAI,CAAC,sBAAsB,QAAQ,yBAAyB,CAAC,CAAC;gBACvE,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,CAAC,sBAAsB,QAAQ,yBAAyB,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC1G,CAAC;QACH,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,yBAAyB,CAAC,SAAc,EAAE,SAAc,EAAE,MAAgB,EAAE,QAAkB;QAC3G,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAEtD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,uBAAuB,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,CAAC;gBAC5B,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC9B,MAAM,CAAC,IAAI,CAAC,0BAA0B,QAAQ,SAAS,CAAC,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,CAAC,0BAA0B,QAAQ,SAAS,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YACzG,CAAC;QACH,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,0BAA0B,CACvC,QAAgB,EAChB,OAAY,EACZ,OAAY,EACZ,MAAgB,EAChB,QAAkB,EAClB,SAAiC;QAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;gBACzD,QAAQ,CAAC,IAAI,CAAC,aAAa,QAAQ,uBAAuB,OAAO,OAAO,OAAO,EAAE,CAAC,CAAC;YACrF,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,aAAa,QAAQ,oCAAoC,OAAO,OAAO,OAAO,EAAE,CAAC,CAAC;YAChG,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEtC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBACxB,MAAM,CAAC,IAAI,CAAC,eAAe,KAAK,4BAA4B,QAAQ,GAAG,CAAC,CAAC;oBAC3E,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBACxB,QAAQ,CAAC,IAAI,CAAC,eAAe,KAAK,wBAAwB,QAAQ,GAAG,CAAC,CAAC;oBACzE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,IAAS;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,IAAI,KAAK,CAAC;IACvB,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,OAAe,EAAE,OAAe,EAAE,SAAiC;QACnG,IAAI,OAAO,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QAErC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,IAAI,OAAO,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAC;YACnC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAC;YACnC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;QACjE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YACrC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YACrC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AApMD,4CAoMC"}
@@ -0,0 +1,13 @@
1
+ import { ExtractResult } from './types';
2
+ export interface GtsConfig {
3
+ entityIdFields: string[];
4
+ schemaIdFields: string[];
5
+ }
6
+ export declare function getDefaultConfig(): GtsConfig;
7
+ export declare class GtsExtractor {
8
+ private static normalizeValue;
9
+ private static findFirstValidField;
10
+ private static isJsonSchema;
11
+ static extractID(content: any, schemaContent?: any): ExtractResult;
12
+ }
13
+ //# sourceMappingURL=extract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA8B,MAAM,SAAS,CAAC;AAGpE,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,IAAI,SAAS,CAgB5C;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,cAAc;IAa7B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA8BlC,OAAO,CAAC,MAAM,CAAC,YAAY;IAsB3B,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa,CAAC,EAAE,GAAG,GAAG,aAAa;CAwHnE"}