@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/query.js
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GtsQuery = void 0;
|
|
4
|
+
const gts_1 = require("./gts");
|
|
5
|
+
class GtsQuery {
|
|
6
|
+
static query(store, expression, limit = 100) {
|
|
7
|
+
try {
|
|
8
|
+
// Parse the query expression to extract base pattern and filters
|
|
9
|
+
const { basePattern, filters, error } = this.parseQueryExpression(expression);
|
|
10
|
+
if (error) {
|
|
11
|
+
return {
|
|
12
|
+
query: expression,
|
|
13
|
+
count: 0,
|
|
14
|
+
items: [],
|
|
15
|
+
error: error,
|
|
16
|
+
limit: limit,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const results = [];
|
|
20
|
+
// Iterate through all entities in the store
|
|
21
|
+
for (const [id, entity] of store['byId']) {
|
|
22
|
+
if (results.length >= limit)
|
|
23
|
+
break;
|
|
24
|
+
// Check if ID matches the pattern
|
|
25
|
+
if (!this.matchesIDPattern(id, basePattern)) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
// Check filters
|
|
29
|
+
if (!this.matchesFilters(entity.content, filters)) {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
results.push(entity.content);
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
query: expression,
|
|
36
|
+
count: results.length,
|
|
37
|
+
items: results,
|
|
38
|
+
limit: limit,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return {
|
|
43
|
+
query: expression,
|
|
44
|
+
count: 0,
|
|
45
|
+
items: [],
|
|
46
|
+
error: error instanceof Error ? error.message : String(error),
|
|
47
|
+
limit: limit,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
static parseQueryExpression(expr) {
|
|
52
|
+
// Split by '[' to separate base pattern from filters
|
|
53
|
+
const parts = expr.split('[');
|
|
54
|
+
const basePattern = parts[0].trim();
|
|
55
|
+
const filters = new Map();
|
|
56
|
+
if (parts.length > 1) {
|
|
57
|
+
// Extract filter string (remove trailing ])
|
|
58
|
+
let filterStr = parts[1].trim();
|
|
59
|
+
if (!filterStr.endsWith(']')) {
|
|
60
|
+
return {
|
|
61
|
+
basePattern,
|
|
62
|
+
filters,
|
|
63
|
+
error: "Invalid query: missing closing bracket ']'",
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
filterStr = filterStr.slice(0, -1);
|
|
67
|
+
// Check if base pattern ends with ~ or ~* (type ID/pattern) - filters not allowed on type queries
|
|
68
|
+
if (basePattern.endsWith('~') || basePattern.endsWith('~*')) {
|
|
69
|
+
return {
|
|
70
|
+
basePattern,
|
|
71
|
+
filters,
|
|
72
|
+
error: 'Invalid query: filters cannot be used with type patterns (ending with ~ or ~*)',
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// Parse filters
|
|
76
|
+
const filterParts = filterStr.split(',');
|
|
77
|
+
for (const part of filterParts) {
|
|
78
|
+
const trimmed = part.trim();
|
|
79
|
+
if (trimmed.includes('=')) {
|
|
80
|
+
const [key, ...valueParts] = trimmed.split('=');
|
|
81
|
+
const value = valueParts
|
|
82
|
+
.join('=')
|
|
83
|
+
.trim()
|
|
84
|
+
.replace(/^["']|["']$/g, '');
|
|
85
|
+
filters.set(key.trim(), value);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Validate the pattern
|
|
90
|
+
const isWildcard = basePattern.includes('*');
|
|
91
|
+
const validationError = this.validateQueryPattern(basePattern, isWildcard);
|
|
92
|
+
if (validationError) {
|
|
93
|
+
return {
|
|
94
|
+
basePattern,
|
|
95
|
+
filters,
|
|
96
|
+
error: validationError,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return { basePattern, filters };
|
|
100
|
+
}
|
|
101
|
+
static validateQueryPattern(basePattern, isWildcard) {
|
|
102
|
+
if (isWildcard) {
|
|
103
|
+
// Wildcard pattern must end with .* or ~*
|
|
104
|
+
if (!basePattern.endsWith('.*') && !basePattern.endsWith('~*')) {
|
|
105
|
+
return 'Invalid query: wildcard patterns must end with .* or ~*';
|
|
106
|
+
}
|
|
107
|
+
// Validate as wildcard pattern
|
|
108
|
+
try {
|
|
109
|
+
// Just check it's a valid pattern format
|
|
110
|
+
if (!basePattern.startsWith('gts.')) {
|
|
111
|
+
return "Invalid query: pattern must start with 'gts.'";
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
return `Invalid query: ${err}`;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// Non-wildcard pattern must be a complete valid GTS ID
|
|
120
|
+
try {
|
|
121
|
+
const result = gts_1.Gts.parseID(basePattern);
|
|
122
|
+
if (!result.ok) {
|
|
123
|
+
return `Invalid query: ${result.error}`;
|
|
124
|
+
}
|
|
125
|
+
// Check if pattern is incomplete (missing version or type)
|
|
126
|
+
// A complete GTS ID must end with a version (v1, v1.2) or ~ for types
|
|
127
|
+
const segments = result.segments || [];
|
|
128
|
+
if (segments.length === 0) {
|
|
129
|
+
return 'Invalid query: GTS ID has no valid segments';
|
|
130
|
+
}
|
|
131
|
+
const lastSeg = segments[segments.length - 1];
|
|
132
|
+
if (!lastSeg.isType && !lastSeg.verMajor) {
|
|
133
|
+
return 'Invalid query: incomplete GTS ID pattern';
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
return `Invalid query: ${err}`;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
static matchesIDPattern(entityID, basePattern) {
|
|
143
|
+
// Always use the proper matchIDPattern function which handles wildcards and version matching
|
|
144
|
+
const matchResult = gts_1.Gts.matchIDPattern(entityID, basePattern);
|
|
145
|
+
return matchResult.match;
|
|
146
|
+
}
|
|
147
|
+
static matchesFilters(entityContent, filters) {
|
|
148
|
+
if (filters.size === 0) {
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
if (!entityContent || typeof entityContent !== 'object') {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
for (const [key, value] of filters) {
|
|
155
|
+
const entityValue = String(entityContent[key] ?? '');
|
|
156
|
+
// Support wildcard in filter values
|
|
157
|
+
if (value === '*') {
|
|
158
|
+
// Wildcard matches any non-empty value
|
|
159
|
+
if (!entityValue || entityValue === 'null' || entityValue === 'undefined') {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else if (entityValue !== value) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
exports.GtsQuery = GtsQuery;
|
|
171
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { RelationshipResult } from './types';
|
|
2
|
+
import { GtsStore } from './store';
|
|
3
|
+
export declare class GtsRelationships {
|
|
4
|
+
static resolveRelationships(store: GtsStore, gtsId: string): RelationshipResult;
|
|
5
|
+
private static findRelationships;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=relationships.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../src/relationships.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB;IAyC/E,OAAO,CAAC,MAAM,CAAC,iBAAiB;CA4CjC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GtsRelationships = void 0;
|
|
4
|
+
const gts_1 = require("./gts");
|
|
5
|
+
class GtsRelationships {
|
|
6
|
+
static resolveRelationships(store, gtsId) {
|
|
7
|
+
try {
|
|
8
|
+
const entity = store.get(gtsId);
|
|
9
|
+
if (!entity) {
|
|
10
|
+
return {
|
|
11
|
+
id: gtsId,
|
|
12
|
+
relationships: [],
|
|
13
|
+
brokenReferences: [],
|
|
14
|
+
error: `Entity not found: ${gtsId}`,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
const relationships = new Set();
|
|
18
|
+
const brokenReferences = new Set();
|
|
19
|
+
const visited = new Set();
|
|
20
|
+
this.findRelationships(store, entity.content, relationships, brokenReferences, visited);
|
|
21
|
+
if (entity.schemaId) {
|
|
22
|
+
relationships.add(entity.schemaId);
|
|
23
|
+
const schemaEntity = store.get(entity.schemaId);
|
|
24
|
+
if (!schemaEntity) {
|
|
25
|
+
brokenReferences.add(entity.schemaId);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
id: gtsId,
|
|
30
|
+
relationships: Array.from(relationships).sort(),
|
|
31
|
+
brokenReferences: Array.from(brokenReferences).sort(),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
return {
|
|
36
|
+
id: gtsId,
|
|
37
|
+
relationships: [],
|
|
38
|
+
brokenReferences: [],
|
|
39
|
+
error: error instanceof Error ? error.message : String(error),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
static findRelationships(store, obj, relationships, brokenReferences, visited) {
|
|
44
|
+
if (!obj || typeof obj !== 'object' || visited.has(obj)) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
visited.add(obj);
|
|
48
|
+
if ('$ref' in obj && typeof obj['$ref'] === 'string') {
|
|
49
|
+
const ref = obj['$ref'];
|
|
50
|
+
const normalized = ref.startsWith('gts://') ? ref.substring(6) : ref;
|
|
51
|
+
if (gts_1.Gts.isValidGtsID(normalized)) {
|
|
52
|
+
relationships.add(normalized);
|
|
53
|
+
if (!store.get(normalized)) {
|
|
54
|
+
brokenReferences.add(normalized);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if ('x-gts-ref' in obj && typeof obj['x-gts-ref'] === 'string') {
|
|
59
|
+
const ref = obj['x-gts-ref'];
|
|
60
|
+
if (gts_1.Gts.isValidGtsID(ref)) {
|
|
61
|
+
relationships.add(ref);
|
|
62
|
+
if (!store.get(ref)) {
|
|
63
|
+
brokenReferences.add(ref);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (Array.isArray(obj)) {
|
|
68
|
+
for (const item of obj) {
|
|
69
|
+
this.findRelationships(store, item, relationships, brokenReferences, visited);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
for (const value of Object.values(obj)) {
|
|
74
|
+
this.findRelationships(store, value, relationships, brokenReferences, visited);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.GtsRelationships = GtsRelationships;
|
|
80
|
+
//# sourceMappingURL=relationships.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationships.js","sourceRoot":"","sources":["../src/relationships.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,132 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const commander_1 = require("commander");
|
|
37
|
+
const server_1 = require("./server");
|
|
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-server')
|
|
44
|
+
.description('GTS HTTP Server')
|
|
45
|
+
.version('0.1.0')
|
|
46
|
+
.option('-h, --host <host>', 'Host to bind to', '127.0.0.1')
|
|
47
|
+
.option('-p, --port <port>', 'Port to listen on', '8000')
|
|
48
|
+
.option('-v, --verbose <level>', 'Verbosity level (0=silent, 1=info, 2=debug)', '1')
|
|
49
|
+
.option('--path <path>', 'Path to JSON/schema files to preload')
|
|
50
|
+
.action(async (options) => {
|
|
51
|
+
const config = {
|
|
52
|
+
host: options.host,
|
|
53
|
+
port: parseInt(options.port, 10),
|
|
54
|
+
verbose: parseInt(options.verbose, 10),
|
|
55
|
+
path: options.path,
|
|
56
|
+
};
|
|
57
|
+
console.log(`Starting GTS server on http://${config.host}:${config.port}`);
|
|
58
|
+
const server = new server_1.GtsServer(config);
|
|
59
|
+
// Preload entities from path if provided
|
|
60
|
+
if (config.path) {
|
|
61
|
+
await loadEntitiesFromPath(server, config.path);
|
|
62
|
+
}
|
|
63
|
+
// Handle graceful shutdown
|
|
64
|
+
process.on('SIGINT', async () => {
|
|
65
|
+
console.log('\nShutting down server...');
|
|
66
|
+
await server.stop();
|
|
67
|
+
process.exit(0);
|
|
68
|
+
});
|
|
69
|
+
process.on('SIGTERM', async () => {
|
|
70
|
+
console.log('\nShutting down server...');
|
|
71
|
+
await server.stop();
|
|
72
|
+
process.exit(0);
|
|
73
|
+
});
|
|
74
|
+
// Start the server
|
|
75
|
+
await server.start();
|
|
76
|
+
});
|
|
77
|
+
async function loadEntitiesFromPath(server, dirPath) {
|
|
78
|
+
if (!fs.existsSync(dirPath)) {
|
|
79
|
+
console.warn(`Path does not exist: ${dirPath}`);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const stats = fs.statSync(dirPath);
|
|
83
|
+
if (!stats.isDirectory()) {
|
|
84
|
+
console.warn(`Path is not a directory: ${dirPath}`);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
console.log(`Loading entities from: ${dirPath}`);
|
|
88
|
+
const files = fs.readdirSync(dirPath);
|
|
89
|
+
let loaded = 0;
|
|
90
|
+
let errors = 0;
|
|
91
|
+
for (const file of files) {
|
|
92
|
+
if (!file.endsWith('.json'))
|
|
93
|
+
continue;
|
|
94
|
+
const filePath = path.join(dirPath, file);
|
|
95
|
+
try {
|
|
96
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
97
|
+
const data = JSON.parse(content);
|
|
98
|
+
// Handle arrays of entities
|
|
99
|
+
const entities = Array.isArray(data) ? data : [data];
|
|
100
|
+
for (const entity of entities) {
|
|
101
|
+
try {
|
|
102
|
+
const gtsEntity = (0, index_1.createJsonEntity)(entity);
|
|
103
|
+
if (gtsEntity.id) {
|
|
104
|
+
server['store'].register(entity);
|
|
105
|
+
loaded++;
|
|
106
|
+
if (server['config'].verbose >= 2) {
|
|
107
|
+
console.log(` Loaded: ${gtsEntity.id}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
errors++;
|
|
113
|
+
if (server['config'].verbose >= 1) {
|
|
114
|
+
console.warn(` Failed to load entity from ${file}: ${err}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
errors++;
|
|
121
|
+
if (server['config'].verbose >= 1) {
|
|
122
|
+
console.warn(` Failed to read ${file}: ${err}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
console.log(`Loaded ${loaded} entities (${errors} errors)`);
|
|
127
|
+
}
|
|
128
|
+
// Run the CLI if this is the main module
|
|
129
|
+
if (require.main === module) {
|
|
130
|
+
program.parse(process.argv);
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ServerConfig } from './types';
|
|
2
|
+
export declare class GtsServer {
|
|
3
|
+
private fastify;
|
|
4
|
+
private store;
|
|
5
|
+
private config;
|
|
6
|
+
constructor(config: ServerConfig);
|
|
7
|
+
private setupMiddleware;
|
|
8
|
+
private registerRoutes;
|
|
9
|
+
private handleGetEntities;
|
|
10
|
+
private handleGetEntity;
|
|
11
|
+
private handleAddEntity;
|
|
12
|
+
private validateSchemaStrict;
|
|
13
|
+
private validateSchemaRefs;
|
|
14
|
+
private handleAddEntities;
|
|
15
|
+
private handleAddSchema;
|
|
16
|
+
private handleValidateID;
|
|
17
|
+
private handleExtractID;
|
|
18
|
+
private handleParseID;
|
|
19
|
+
private handleMatchIDPattern;
|
|
20
|
+
private handleUUID;
|
|
21
|
+
private handleValidateInstance;
|
|
22
|
+
private handleResolveRelationships;
|
|
23
|
+
private handleCompatibility;
|
|
24
|
+
private handleCast;
|
|
25
|
+
private handleQuery;
|
|
26
|
+
private handleAttribute;
|
|
27
|
+
private handleOpenAPI;
|
|
28
|
+
private getOpenAPIPaths;
|
|
29
|
+
private getOpenAPIComponents;
|
|
30
|
+
start(): Promise<void>;
|
|
31
|
+
stop(): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EAWb,MAAM,SAAS,CAAC;AAGjB,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,YAAY;IAiBhC,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,cAAc;YAoDR,iBAAiB;YAmBjB,eAAe;YAiBf,eAAe;IAwF7B,OAAO,CAAC,oBAAoB;IAyC5B,OAAO,CAAC,kBAAkB;YAwDZ,iBAAiB;YA4CjB,eAAe;YAKf,gBAAgB;YAgBhB,eAAe;YAMf,aAAa;YAwCb,oBAAoB;YAepB,UAAU;YAeV,sBAAsB;YAetB,0BAA0B;YAe1B,mBAAmB;YAgBnB,UAAU;YAaV,WAAW;YA4BX,eAAe;YAgCf,aAAa;IAmB3B,OAAO,CAAC,eAAe;IAiHvB,OAAO,CAAC,oBAAoB;IAmCf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAGnC"}
|