@caryyon/core 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/dist/constants/index.d.ts +50 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +53 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/types/connection.d.ts +22 -0
- package/dist/types/connection.d.ts.map +1 -0
- package/dist/types/connection.js +3 -0
- package/dist/types/connection.js.map +1 -0
- package/dist/types/dependency.d.ts +35 -0
- package/dist/types/dependency.d.ts.map +1 -0
- package/dist/types/dependency.js +18 -0
- package/dist/types/dependency.js.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +9 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/plugin.d.ts +20 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +3 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/types/route.d.ts +49 -0
- package/dist/types/route.d.ts.map +1 -0
- package/dist/types/route.js +15 -0
- package/dist/types/route.js.map +1 -0
- package/dist/types/service.d.ts +39 -0
- package/dist/types/service.d.ts.map +1 -0
- package/dist/types/service.js +23 -0
- package/dist/types/service.js.map +1 -0
- package/dist/utils/id-generator.d.ts +4 -0
- package/dist/utils/id-generator.d.ts.map +1 -0
- package/dist/utils/id-generator.js +20 -0
- package/dist/utils/id-generator.js.map +1 -0
- package/dist/validators/schema-validator.d.ts +24 -0
- package/dist/validators/schema-validator.d.ts.map +1 -0
- package/dist/validators/schema-validator.js +137 -0
- package/dist/validators/schema-validator.js.map +1 -0
- package/package.json +37 -0
@@ -0,0 +1,50 @@
|
|
1
|
+
export declare const API_ENDPOINTS: {
|
2
|
+
readonly INGEST_METADATA: "/ingest/metadata";
|
3
|
+
readonly SERVICES: "/services";
|
4
|
+
readonly SERVICE_DETAIL: (id: string) => string;
|
5
|
+
readonly GRAPH: "/graph";
|
6
|
+
readonly GRAPH_DEPENDENCIES: (id: string) => string;
|
7
|
+
readonly GRAPH_DEPENDENTS: (id: string) => string;
|
8
|
+
readonly ROUTES: "/routes";
|
9
|
+
readonly DEPENDENCIES: "/dependencies";
|
10
|
+
readonly METRICS_STREAM: "/metrics/stream";
|
11
|
+
readonly HEALTH: "/health";
|
12
|
+
readonly SCHEMA: (version: string) => string;
|
13
|
+
};
|
14
|
+
export declare const API_CONFIG: {
|
15
|
+
readonly DEFAULT_ENDPOINT: "https://api.lattice.dev/v1";
|
16
|
+
readonly DEFAULT_TIMEOUT: 5000;
|
17
|
+
readonly DEFAULT_RETRY_ATTEMPTS: 3;
|
18
|
+
};
|
19
|
+
export declare const SCHEMA_VERSIONS: {
|
20
|
+
readonly CURRENT: "1.0.0";
|
21
|
+
readonly SUPPORTED: readonly ["1.0.0"];
|
22
|
+
};
|
23
|
+
export declare const HTTP_HEADERS: {
|
24
|
+
readonly API_KEY: "X-Lattice-API-Key";
|
25
|
+
readonly TRACE_ID: "X-Trace-ID";
|
26
|
+
readonly ORIGIN_SERVICE: "X-Origin-Service";
|
27
|
+
readonly SCHEMA_VERSION: "X-Lattice-Schema-Version";
|
28
|
+
};
|
29
|
+
export declare const SERVICE_STATUS: {
|
30
|
+
readonly ACTIVE: "active";
|
31
|
+
readonly INACTIVE: "inactive";
|
32
|
+
readonly UNKNOWN: "unknown";
|
33
|
+
};
|
34
|
+
export declare const DEFAULTS: {
|
35
|
+
readonly SUBMIT_INTERVAL: 300000;
|
36
|
+
readonly INACTIVE_THRESHOLD: 3600000;
|
37
|
+
readonly DEPENDENCY_DEPTH: 1;
|
38
|
+
readonly SERVICE_NAME_FALLBACK: "unknown-service";
|
39
|
+
};
|
40
|
+
export declare const ENV_VARS: {
|
41
|
+
readonly LATTICE_API_ENDPOINT: "LATTICE_API_ENDPOINT";
|
42
|
+
readonly LATTICE_API_KEY: "LATTICE_API_KEY";
|
43
|
+
readonly LATTICE_SERVICE_NAME: "LATTICE_SERVICE_NAME";
|
44
|
+
readonly LATTICE_ENABLED: "LATTICE_ENABLED";
|
45
|
+
readonly LATTICE_AUTO_SUBMIT: "LATTICE_AUTO_SUBMIT";
|
46
|
+
readonly LATTICE_SUBMIT_INTERVAL: "LATTICE_SUBMIT_INTERVAL";
|
47
|
+
readonly SERVICE_NAME: "SERVICE_NAME";
|
48
|
+
readonly NODE_ENV: "NODE_ENV";
|
49
|
+
};
|
50
|
+
//# sourceMappingURL=index.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,aAAa;;;kCAGH,MAAM;;sCAEF,MAAM;oCACR,MAAM;;;;;+BAKX,MAAM;CAChB,CAAC;AAKX,eAAO,MAAM,UAAU;;;;CAIb,CAAC;AAKX,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AAKX,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAKX,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAKX,eAAO,MAAM,QAAQ;;;;;CAKX,CAAC;AAKX,eAAO,MAAM,QAAQ;;;;;;;;;CASX,CAAC"}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ENV_VARS = exports.DEFAULTS = exports.SERVICE_STATUS = exports.HTTP_HEADERS = exports.SCHEMA_VERSIONS = exports.API_CONFIG = exports.API_ENDPOINTS = void 0;
|
4
|
+
exports.API_ENDPOINTS = {
|
5
|
+
INGEST_METADATA: '/ingest/metadata',
|
6
|
+
SERVICES: '/services',
|
7
|
+
SERVICE_DETAIL: (id) => `/services/${id}`,
|
8
|
+
GRAPH: '/graph',
|
9
|
+
GRAPH_DEPENDENCIES: (id) => `/graph/dependencies/${id}`,
|
10
|
+
GRAPH_DEPENDENTS: (id) => `/graph/dependents/${id}`,
|
11
|
+
ROUTES: '/routes',
|
12
|
+
DEPENDENCIES: '/dependencies',
|
13
|
+
METRICS_STREAM: '/metrics/stream',
|
14
|
+
HEALTH: '/health',
|
15
|
+
SCHEMA: (version) => `/schemas/${version}`,
|
16
|
+
};
|
17
|
+
exports.API_CONFIG = {
|
18
|
+
DEFAULT_ENDPOINT: 'https://api.lattice.dev/v1',
|
19
|
+
DEFAULT_TIMEOUT: 5000,
|
20
|
+
DEFAULT_RETRY_ATTEMPTS: 3,
|
21
|
+
};
|
22
|
+
exports.SCHEMA_VERSIONS = {
|
23
|
+
CURRENT: '1.0.0',
|
24
|
+
SUPPORTED: ['1.0.0'],
|
25
|
+
};
|
26
|
+
exports.HTTP_HEADERS = {
|
27
|
+
API_KEY: 'X-Lattice-API-Key',
|
28
|
+
TRACE_ID: 'X-Trace-ID',
|
29
|
+
ORIGIN_SERVICE: 'X-Origin-Service',
|
30
|
+
SCHEMA_VERSION: 'X-Lattice-Schema-Version',
|
31
|
+
};
|
32
|
+
exports.SERVICE_STATUS = {
|
33
|
+
ACTIVE: 'active',
|
34
|
+
INACTIVE: 'inactive',
|
35
|
+
UNKNOWN: 'unknown',
|
36
|
+
};
|
37
|
+
exports.DEFAULTS = {
|
38
|
+
SUBMIT_INTERVAL: 300000,
|
39
|
+
INACTIVE_THRESHOLD: 3600000,
|
40
|
+
DEPENDENCY_DEPTH: 1,
|
41
|
+
SERVICE_NAME_FALLBACK: 'unknown-service',
|
42
|
+
};
|
43
|
+
exports.ENV_VARS = {
|
44
|
+
LATTICE_API_ENDPOINT: 'LATTICE_API_ENDPOINT',
|
45
|
+
LATTICE_API_KEY: 'LATTICE_API_KEY',
|
46
|
+
LATTICE_SERVICE_NAME: 'LATTICE_SERVICE_NAME',
|
47
|
+
LATTICE_ENABLED: 'LATTICE_ENABLED',
|
48
|
+
LATTICE_AUTO_SUBMIT: 'LATTICE_AUTO_SUBMIT',
|
49
|
+
LATTICE_SUBMIT_INTERVAL: 'LATTICE_SUBMIT_INTERVAL',
|
50
|
+
SERVICE_NAME: 'SERVICE_NAME',
|
51
|
+
NODE_ENV: 'NODE_ENV',
|
52
|
+
};
|
53
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":";;;AAOa,QAAA,aAAa,GAAG;IAC3B,eAAe,EAAE,kBAAkB;IACnC,QAAQ,EAAE,WAAW;IACrB,cAAc,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE;IACjD,KAAK,EAAE,QAAQ;IACf,kBAAkB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,uBAAuB,EAAE,EAAE;IAC/D,gBAAgB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,qBAAqB,EAAE,EAAE;IAC3D,MAAM,EAAE,SAAS;IACjB,YAAY,EAAE,eAAe;IAC7B,cAAc,EAAE,iBAAiB;IACjC,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,YAAY,OAAO,EAAE;CAC1C,CAAC;AAKE,QAAA,UAAU,GAAG;IACxB,gBAAgB,EAAE,4BAA4B;IAC9C,eAAe,EAAE,IAAI;IACrB,sBAAsB,EAAE,CAAC;CACjB,CAAC;AAKE,QAAA,eAAe,GAAG;IAC7B,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,CAAC,OAAO,CAAC;CACZ,CAAC;AAKE,QAAA,YAAY,GAAG;IAC1B,OAAO,EAAE,mBAAmB;IAC5B,QAAQ,EAAE,YAAY;IACtB,cAAc,EAAE,kBAAkB;IAClC,cAAc,EAAE,0BAA0B;CAClC,CAAC;AAKE,QAAA,cAAc,GAAG;IAC5B,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;CACV,CAAC;AAKE,QAAA,QAAQ,GAAG;IACtB,eAAe,EAAE,MAAM;IACvB,kBAAkB,EAAE,OAAO;IAC3B,gBAAgB,EAAE,CAAC;IACnB,qBAAqB,EAAE,iBAAiB;CAChC,CAAC;AAKE,QAAA,QAAQ,GAAG;IACtB,oBAAoB,EAAE,sBAAsB;IAC5C,eAAe,EAAE,iBAAiB;IAClC,oBAAoB,EAAE,sBAAsB;IAC5C,eAAe,EAAE,iBAAiB;IAClC,mBAAmB,EAAE,qBAAqB;IAC1C,uBAAuB,EAAE,yBAAyB;IAClD,YAAY,EAAE,cAAc;IAC5B,QAAQ,EAAE,UAAU;CACZ,CAAC"}
|
package/dist/index.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,cAAc,SAAS,CAAC;AAGxB,cAAc,+BAA+B,CAAC;AAG9C,cAAc,aAAa,CAAC;AAG5B,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const tslib_1 = require("tslib");
|
4
|
+
tslib_1.__exportStar(require("./types"), exports);
|
5
|
+
tslib_1.__exportStar(require("./validators/schema-validator"), exports);
|
6
|
+
tslib_1.__exportStar(require("./constants"), exports);
|
7
|
+
tslib_1.__exportStar(require("./utils/id-generator"), exports);
|
8
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAMA,kDAAwB;AAGxB,wEAA8C;AAG9C,sDAA4B;AAG5B,+DAAqC"}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
export interface Connection {
|
2
|
+
id: string;
|
3
|
+
sourceServiceId: string;
|
4
|
+
targetServiceId: string;
|
5
|
+
targetRouteId?: string;
|
6
|
+
method: string;
|
7
|
+
path: string;
|
8
|
+
callCount: number;
|
9
|
+
avgResponseTimeMs?: number;
|
10
|
+
p95ResponseTimeMs?: number;
|
11
|
+
p99ResponseTimeMs?: number;
|
12
|
+
successCount: number;
|
13
|
+
errorCount: number;
|
14
|
+
errorRate: number;
|
15
|
+
requestFrequency?: number;
|
16
|
+
peakTime?: string;
|
17
|
+
firstSeen: Date;
|
18
|
+
lastSeen: Date;
|
19
|
+
sampleTraceIds?: string[];
|
20
|
+
metadata?: Record<string, unknown>;
|
21
|
+
}
|
22
|
+
//# sourceMappingURL=connection.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/types/connection.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IAEzB,EAAE,EAAE,MAAM,CAAC;IAGX,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IAGxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IAGb,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAGlB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IAGf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAG1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/types/connection.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
export interface Dependency {
|
2
|
+
id: string;
|
3
|
+
serviceId: string;
|
4
|
+
packageName: string;
|
5
|
+
version: string;
|
6
|
+
versionRange?: string;
|
7
|
+
dependencyType: DependencyType;
|
8
|
+
scope?: string;
|
9
|
+
installedSize?: number;
|
10
|
+
publishSize?: number;
|
11
|
+
fileCount?: number;
|
12
|
+
hasVulnerabilities?: boolean;
|
13
|
+
vulnerabilityCount?: number;
|
14
|
+
highestSeverity?: VulnerabilitySeverity;
|
15
|
+
description?: string;
|
16
|
+
license?: string;
|
17
|
+
repository?: string;
|
18
|
+
homepage?: string;
|
19
|
+
firstSeen: Date;
|
20
|
+
lastSeen: Date;
|
21
|
+
metadata?: Record<string, unknown>;
|
22
|
+
}
|
23
|
+
export declare enum DependencyType {
|
24
|
+
Direct = "direct",
|
25
|
+
Transitive = "transitive",
|
26
|
+
Peer = "peer",
|
27
|
+
Dev = "dev"
|
28
|
+
}
|
29
|
+
export declare enum VulnerabilitySeverity {
|
30
|
+
Critical = "critical",
|
31
|
+
High = "high",
|
32
|
+
Medium = "medium",
|
33
|
+
Low = "low"
|
34
|
+
}
|
35
|
+
//# sourceMappingURL=dependency.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"dependency.d.ts","sourceRoot":"","sources":["../../src/types/dependency.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IAEzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAGlB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,cAAc,EAAE,cAAc,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,qBAAqB,CAAC;IAGxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IAGf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAKD,oBAAY,cAAc;IACxB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,IAAI,SAAS;IACb,GAAG,QAAQ;CACZ;AAKD,oBAAY,qBAAqB;IAC/B,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ"}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.VulnerabilitySeverity = exports.DependencyType = void 0;
|
4
|
+
var DependencyType;
|
5
|
+
(function (DependencyType) {
|
6
|
+
DependencyType["Direct"] = "direct";
|
7
|
+
DependencyType["Transitive"] = "transitive";
|
8
|
+
DependencyType["Peer"] = "peer";
|
9
|
+
DependencyType["Dev"] = "dev";
|
10
|
+
})(DependencyType || (exports.DependencyType = DependencyType = {}));
|
11
|
+
var VulnerabilitySeverity;
|
12
|
+
(function (VulnerabilitySeverity) {
|
13
|
+
VulnerabilitySeverity["Critical"] = "critical";
|
14
|
+
VulnerabilitySeverity["High"] = "high";
|
15
|
+
VulnerabilitySeverity["Medium"] = "medium";
|
16
|
+
VulnerabilitySeverity["Low"] = "low";
|
17
|
+
})(VulnerabilitySeverity || (exports.VulnerabilitySeverity = VulnerabilitySeverity = {}));
|
18
|
+
//# sourceMappingURL=dependency.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"dependency.js","sourceRoot":"","sources":["../../src/types/dependency.ts"],"names":[],"mappings":";;;AA4CA,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,2CAAyB,CAAA;IACzB,+BAAa,CAAA;IACb,6BAAW,CAAA;AACb,CAAC,EALW,cAAc,8BAAd,cAAc,QAKzB;AAKD,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,8CAAqB,CAAA;IACrB,sCAAa,CAAA;IACb,0CAAiB,CAAA;IACjB,oCAAW,CAAA;AACb,CAAC,EALW,qBAAqB,qCAArB,qBAAqB,QAKhC"}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
export * from './service';
|
2
|
+
export * from './route';
|
3
|
+
export * from './dependency';
|
4
|
+
export * from './connection';
|
5
|
+
export * from './plugin';
|
6
|
+
export interface ServiceMetadataSubmission {
|
7
|
+
service: import('./service').Service;
|
8
|
+
routes?: import('./route').Route[];
|
9
|
+
dependencies?: import('./dependency').Dependency[];
|
10
|
+
}
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAIA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AAMzB,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,WAAW,EAAE,OAAO,CAAC;IACrC,MAAM,CAAC,EAAE,OAAO,SAAS,EAAE,KAAK,EAAE,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,cAAc,EAAE,UAAU,EAAE,CAAC;CACpD"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const tslib_1 = require("tslib");
|
4
|
+
tslib_1.__exportStar(require("./service"), exports);
|
5
|
+
tslib_1.__exportStar(require("./route"), exports);
|
6
|
+
tslib_1.__exportStar(require("./dependency"), exports);
|
7
|
+
tslib_1.__exportStar(require("./connection"), exports);
|
8
|
+
tslib_1.__exportStar(require("./plugin"), exports);
|
9
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAIA,oDAA0B;AAC1B,kDAAwB;AACxB,uDAA6B;AAC7B,uDAA6B;AAC7B,mDAAyB"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
export interface Plugin {
|
2
|
+
id: string;
|
3
|
+
name: string;
|
4
|
+
version: string;
|
5
|
+
supportedFrameworks: string[];
|
6
|
+
supportedSchemaVersions: string[];
|
7
|
+
preferredSchemaVersion: string;
|
8
|
+
canDiscoverRoutes: boolean;
|
9
|
+
canDiscoverDependencies: boolean;
|
10
|
+
canTrackConnections: boolean;
|
11
|
+
description?: string;
|
12
|
+
author?: string;
|
13
|
+
repository?: string;
|
14
|
+
documentation?: string;
|
15
|
+
servicesUsing?: number;
|
16
|
+
registeredAt: Date;
|
17
|
+
lastUsed?: Date;
|
18
|
+
metadata?: Record<string, unknown>;
|
19
|
+
}
|
20
|
+
//# sourceMappingURL=plugin.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,MAAM;IAErB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAGhB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,sBAAsB,EAAE,MAAM,CAAC;IAG/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,uBAAuB,EAAE,OAAO,CAAC;IACjC,mBAAmB,EAAE,OAAO,CAAC;IAG7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,YAAY,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAGhB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
export interface Route {
|
2
|
+
id: string;
|
3
|
+
serviceId: string;
|
4
|
+
method: HttpMethod;
|
5
|
+
path: string;
|
6
|
+
middlewareChain?: string[];
|
7
|
+
handlerLocation?: HandlerLocation;
|
8
|
+
pathParameters?: RouteParameter[];
|
9
|
+
queryParameters?: RouteParameter[];
|
10
|
+
requestSchema?: JSONSchema;
|
11
|
+
responseSchema?: JSONSchema;
|
12
|
+
description?: string;
|
13
|
+
tags?: string[];
|
14
|
+
avgResponseTimeMs?: number;
|
15
|
+
callFrequency?: number;
|
16
|
+
errorRate?: number;
|
17
|
+
firstSeen: Date;
|
18
|
+
lastSeen: Date;
|
19
|
+
metadata?: Record<string, unknown>;
|
20
|
+
}
|
21
|
+
export declare enum HttpMethod {
|
22
|
+
GET = "GET",
|
23
|
+
POST = "POST",
|
24
|
+
PUT = "PUT",
|
25
|
+
PATCH = "PATCH",
|
26
|
+
DELETE = "DELETE",
|
27
|
+
HEAD = "HEAD",
|
28
|
+
OPTIONS = "OPTIONS",
|
29
|
+
ALL = "ALL"
|
30
|
+
}
|
31
|
+
export interface HandlerLocation {
|
32
|
+
file: string;
|
33
|
+
line?: number;
|
34
|
+
function?: string;
|
35
|
+
}
|
36
|
+
export interface RouteParameter {
|
37
|
+
name: string;
|
38
|
+
type?: 'string' | 'number' | 'boolean' | 'object' | 'array';
|
39
|
+
required: boolean;
|
40
|
+
description?: string;
|
41
|
+
example?: unknown;
|
42
|
+
}
|
43
|
+
export interface JSONSchema {
|
44
|
+
type: string;
|
45
|
+
properties?: Record<string, JSONSchema>;
|
46
|
+
required?: string[];
|
47
|
+
[key: string]: unknown;
|
48
|
+
}
|
49
|
+
//# sourceMappingURL=route.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/types/route.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,KAAK;IAEpB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAGlB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IAGb,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,eAAe,CAAC;IAGlC,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;IAClC,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IAGnC,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,cAAc,CAAC,EAAE,UAAU,CAAC;IAG5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAGhB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IAGf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAKD,oBAAY,UAAU;IACpB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,GAAG,QAAQ;CACZ;AAKD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5D,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAKD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.HttpMethod = void 0;
|
4
|
+
var HttpMethod;
|
5
|
+
(function (HttpMethod) {
|
6
|
+
HttpMethod["GET"] = "GET";
|
7
|
+
HttpMethod["POST"] = "POST";
|
8
|
+
HttpMethod["PUT"] = "PUT";
|
9
|
+
HttpMethod["PATCH"] = "PATCH";
|
10
|
+
HttpMethod["DELETE"] = "DELETE";
|
11
|
+
HttpMethod["HEAD"] = "HEAD";
|
12
|
+
HttpMethod["OPTIONS"] = "OPTIONS";
|
13
|
+
HttpMethod["ALL"] = "ALL";
|
14
|
+
})(HttpMethod || (exports.HttpMethod = HttpMethod = {}));
|
15
|
+
//# sourceMappingURL=route.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/types/route.ts"],"names":[],"mappings":";;;AA4CA,IAAY,UASX;AATD,WAAY,UAAU;IACpB,yBAAW,CAAA;IACX,2BAAa,CAAA;IACb,yBAAW,CAAA;IACX,6BAAe,CAAA;IACf,+BAAiB,CAAA;IACjB,2BAAa,CAAA;IACb,iCAAmB,CAAA;IACnB,yBAAW,CAAA;AACb,CAAC,EATW,UAAU,0BAAV,UAAU,QASrB"}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
export interface Service {
|
2
|
+
id: string;
|
3
|
+
name: string;
|
4
|
+
version?: string;
|
5
|
+
environment?: 'development' | 'staging' | 'production' | string;
|
6
|
+
deploymentType?: 'kubernetes' | 'docker' | 'serverless' | 'bare-metal';
|
7
|
+
language: string;
|
8
|
+
framework: string;
|
9
|
+
runtime?: string;
|
10
|
+
description?: string;
|
11
|
+
repository?: string;
|
12
|
+
healthCheckUrl?: string;
|
13
|
+
status: 'active' | 'inactive' | 'unknown';
|
14
|
+
firstSeen: Date;
|
15
|
+
lastSeen: Date;
|
16
|
+
discoveredBy: {
|
17
|
+
pluginName: string;
|
18
|
+
pluginVersion: string;
|
19
|
+
schemaVersion: string;
|
20
|
+
};
|
21
|
+
metadata?: Record<string, unknown>;
|
22
|
+
}
|
23
|
+
export declare enum ServiceStatus {
|
24
|
+
Active = "active",
|
25
|
+
Inactive = "inactive",
|
26
|
+
Unknown = "unknown"
|
27
|
+
}
|
28
|
+
export declare enum DeploymentType {
|
29
|
+
Kubernetes = "kubernetes",
|
30
|
+
Docker = "docker",
|
31
|
+
Serverless = "serverless",
|
32
|
+
BareMetal = "bare-metal"
|
33
|
+
}
|
34
|
+
export declare enum Environment {
|
35
|
+
Development = "development",
|
36
|
+
Staging = "staging",
|
37
|
+
Production = "production"
|
38
|
+
}
|
39
|
+
//# sourceMappingURL=service.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/types/service.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,OAAO;IAEtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,WAAW,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,YAAY,GAAG,MAAM,CAAC;IAChE,cAAc,CAAC,EAAE,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;IAGvE,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IAGf,YAAY,EAAE;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAGF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAKD,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAKD,oBAAY,cAAc;IACxB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,SAAS,eAAe;CACzB;AAKD,oBAAY,WAAW;IACrB,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;CAC1B"}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.Environment = exports.DeploymentType = exports.ServiceStatus = void 0;
|
4
|
+
var ServiceStatus;
|
5
|
+
(function (ServiceStatus) {
|
6
|
+
ServiceStatus["Active"] = "active";
|
7
|
+
ServiceStatus["Inactive"] = "inactive";
|
8
|
+
ServiceStatus["Unknown"] = "unknown";
|
9
|
+
})(ServiceStatus || (exports.ServiceStatus = ServiceStatus = {}));
|
10
|
+
var DeploymentType;
|
11
|
+
(function (DeploymentType) {
|
12
|
+
DeploymentType["Kubernetes"] = "kubernetes";
|
13
|
+
DeploymentType["Docker"] = "docker";
|
14
|
+
DeploymentType["Serverless"] = "serverless";
|
15
|
+
DeploymentType["BareMetal"] = "bare-metal";
|
16
|
+
})(DeploymentType || (exports.DeploymentType = DeploymentType = {}));
|
17
|
+
var Environment;
|
18
|
+
(function (Environment) {
|
19
|
+
Environment["Development"] = "development";
|
20
|
+
Environment["Staging"] = "staging";
|
21
|
+
Environment["Production"] = "production";
|
22
|
+
})(Environment || (exports.Environment = Environment = {}));
|
23
|
+
//# sourceMappingURL=service.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/types/service.ts"],"names":[],"mappings":";;;AA0CA,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;IACrB,oCAAmB,CAAA;AACrB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAKD,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,2CAAyB,CAAA;IACzB,mCAAiB,CAAA;IACjB,2CAAyB,CAAA;IACzB,0CAAwB,CAAA;AAC1B,CAAC,EALW,cAAc,8BAAd,cAAc,QAKzB;AAKD,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,0CAA2B,CAAA;IAC3B,kCAAmB,CAAA;IACnB,wCAAyB,CAAA;AAC3B,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"id-generator.d.ts","sourceRoot":"","sources":["../../src/utils/id-generator.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,UAAU,QAAO,MAE7B,CAAC;AAKF,eAAO,MAAM,eAAe,QAAO,MAElC,CAAC;AAKF,eAAO,MAAM,SAAS,GAAI,IAAI,MAAM,KAAG,OAGtC,CAAC"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.isValidId = exports.generateTraceId = exports.generateId = void 0;
|
4
|
+
const cuid2_1 = require("@paralleldrive/cuid2");
|
5
|
+
const createId = (0, cuid2_1.init)({
|
6
|
+
length: 24,
|
7
|
+
});
|
8
|
+
const generateId = () => {
|
9
|
+
return createId();
|
10
|
+
};
|
11
|
+
exports.generateId = generateId;
|
12
|
+
const generateTraceId = () => {
|
13
|
+
return createId();
|
14
|
+
};
|
15
|
+
exports.generateTraceId = generateTraceId;
|
16
|
+
const isValidId = (id) => {
|
17
|
+
return /^[a-z0-9]{24}$/.test(id);
|
18
|
+
};
|
19
|
+
exports.isValidId = isValidId;
|
20
|
+
//# sourceMappingURL=id-generator.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"id-generator.js","sourceRoot":"","sources":["../../src/utils/id-generator.ts"],"names":[],"mappings":";;;AAAA,gDAA4C;AAM5C,MAAM,QAAQ,GAAG,IAAA,YAAI,EAAC;IACpB,MAAM,EAAE,EAAE;CACX,CAAC,CAAC;AAEI,MAAM,UAAU,GAAG,GAAW,EAAE;IACrC,OAAO,QAAQ,EAAE,CAAC;AACpB,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAKK,MAAM,eAAe,GAAG,GAAW,EAAE;IAC1C,OAAO,QAAQ,EAAE,CAAC;AACpB,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B;AAKK,MAAM,SAAS,GAAG,CAAC,EAAU,EAAW,EAAE;IAE/C,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnC,CAAC,CAAC;AAHW,QAAA,SAAS,aAGpB"}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import type { ServiceMetadataSubmission } from '../types';
|
2
|
+
export declare class SchemaValidator {
|
3
|
+
private ajv;
|
4
|
+
private validateService;
|
5
|
+
private validateRoute;
|
6
|
+
private validateDependency;
|
7
|
+
private validateConnection;
|
8
|
+
private validateSubmission;
|
9
|
+
constructor();
|
10
|
+
validateServiceMetadata(data: unknown): ValidationResult<ServiceMetadataSubmission>;
|
11
|
+
validateServiceObject(data: unknown): ValidationResult;
|
12
|
+
validateRouteObject(data: unknown): ValidationResult;
|
13
|
+
validateDependencyObject(data: unknown): ValidationResult;
|
14
|
+
validateConnectionObject(data: unknown): ValidationResult;
|
15
|
+
private formatErrors;
|
16
|
+
getSchemaVersion(): string;
|
17
|
+
}
|
18
|
+
export interface ValidationResult<T = unknown> {
|
19
|
+
valid: boolean;
|
20
|
+
data?: T;
|
21
|
+
errors?: string[];
|
22
|
+
}
|
23
|
+
export declare const schemaValidator: SchemaValidator;
|
24
|
+
//# sourceMappingURL=schema-validator.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"schema-validator.d.ts","sourceRoot":"","sources":["../../src/validators/schema-validator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAK1D,qBAAa,eAAe;IAC1B,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,kBAAkB,CAA+B;;IAoCzD,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC,yBAAyB,CAAC;IA0BnF,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB;IAuBtD,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB;IAuBpD,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB;IAuBzD,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB;IAuBzD,OAAO,CAAC,YAAY;IAWpB,gBAAgB,IAAI,MAAM;CAG3B;AAKD,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAKD,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|
@@ -0,0 +1,137 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.schemaValidator = exports.SchemaValidator = void 0;
|
4
|
+
const tslib_1 = require("tslib");
|
5
|
+
const ajv_1 = tslib_1.__importDefault(require("ajv"));
|
6
|
+
const ajv_formats_1 = tslib_1.__importDefault(require("ajv-formats"));
|
7
|
+
const schema_v1_json_1 = tslib_1.__importDefault(require("../../../../specs/001-service-discovery-and/contracts/schema-v1.json"));
|
8
|
+
class SchemaValidator {
|
9
|
+
ajv;
|
10
|
+
validateService;
|
11
|
+
validateRoute;
|
12
|
+
validateDependency;
|
13
|
+
validateConnection;
|
14
|
+
validateSubmission;
|
15
|
+
constructor() {
|
16
|
+
this.ajv = new ajv_1.default({
|
17
|
+
allErrors: true,
|
18
|
+
strict: false,
|
19
|
+
validateFormats: true,
|
20
|
+
});
|
21
|
+
(0, ajv_formats_1.default)(this.ajv);
|
22
|
+
if (schema_v1_json_1.default.definitions) {
|
23
|
+
this.ajv.addSchema(schema_v1_json_1.default);
|
24
|
+
this.validateService = this.ajv.compile({
|
25
|
+
$ref: `${schema_v1_json_1.default.$id}#/definitions/Service`
|
26
|
+
});
|
27
|
+
this.validateRoute = this.ajv.compile({
|
28
|
+
$ref: `${schema_v1_json_1.default.$id}#/definitions/Route`
|
29
|
+
});
|
30
|
+
this.validateDependency = this.ajv.compile({
|
31
|
+
$ref: `${schema_v1_json_1.default.$id}#/definitions/Dependency`
|
32
|
+
});
|
33
|
+
this.validateConnection = this.ajv.compile({
|
34
|
+
$ref: `${schema_v1_json_1.default.$id}#/definitions/Connection`
|
35
|
+
});
|
36
|
+
this.validateSubmission = this.ajv.compile({
|
37
|
+
$ref: `${schema_v1_json_1.default.$id}#/definitions/ServiceMetadataSubmission`
|
38
|
+
});
|
39
|
+
}
|
40
|
+
}
|
41
|
+
validateServiceMetadata(data) {
|
42
|
+
if (!this.validateSubmission) {
|
43
|
+
return {
|
44
|
+
valid: false,
|
45
|
+
errors: ['Schema validator not initialized'],
|
46
|
+
};
|
47
|
+
}
|
48
|
+
const valid = this.validateSubmission(data);
|
49
|
+
if (valid) {
|
50
|
+
return {
|
51
|
+
valid: true,
|
52
|
+
data: data,
|
53
|
+
};
|
54
|
+
}
|
55
|
+
return {
|
56
|
+
valid: false,
|
57
|
+
errors: this.formatErrors(this.validateSubmission.errors || []),
|
58
|
+
};
|
59
|
+
}
|
60
|
+
validateServiceObject(data) {
|
61
|
+
if (!this.validateService) {
|
62
|
+
return {
|
63
|
+
valid: false,
|
64
|
+
errors: ['Schema validator not initialized'],
|
65
|
+
};
|
66
|
+
}
|
67
|
+
const valid = this.validateService(data);
|
68
|
+
if (valid) {
|
69
|
+
return { valid: true, data };
|
70
|
+
}
|
71
|
+
return {
|
72
|
+
valid: false,
|
73
|
+
errors: this.formatErrors(this.validateService.errors || []),
|
74
|
+
};
|
75
|
+
}
|
76
|
+
validateRouteObject(data) {
|
77
|
+
if (!this.validateRoute) {
|
78
|
+
return {
|
79
|
+
valid: false,
|
80
|
+
errors: ['Schema validator not initialized'],
|
81
|
+
};
|
82
|
+
}
|
83
|
+
const valid = this.validateRoute(data);
|
84
|
+
if (valid) {
|
85
|
+
return { valid: true, data };
|
86
|
+
}
|
87
|
+
return {
|
88
|
+
valid: false,
|
89
|
+
errors: this.formatErrors(this.validateRoute.errors || []),
|
90
|
+
};
|
91
|
+
}
|
92
|
+
validateDependencyObject(data) {
|
93
|
+
if (!this.validateDependency) {
|
94
|
+
return {
|
95
|
+
valid: false,
|
96
|
+
errors: ['Schema validator not initialized'],
|
97
|
+
};
|
98
|
+
}
|
99
|
+
const valid = this.validateDependency(data);
|
100
|
+
if (valid) {
|
101
|
+
return { valid: true, data };
|
102
|
+
}
|
103
|
+
return {
|
104
|
+
valid: false,
|
105
|
+
errors: this.formatErrors(this.validateDependency.errors || []),
|
106
|
+
};
|
107
|
+
}
|
108
|
+
validateConnectionObject(data) {
|
109
|
+
if (!this.validateConnection) {
|
110
|
+
return {
|
111
|
+
valid: false,
|
112
|
+
errors: ['Schema validator not initialized'],
|
113
|
+
};
|
114
|
+
}
|
115
|
+
const valid = this.validateConnection(data);
|
116
|
+
if (valid) {
|
117
|
+
return { valid: true, data };
|
118
|
+
}
|
119
|
+
return {
|
120
|
+
valid: false,
|
121
|
+
errors: this.formatErrors(this.validateConnection.errors || []),
|
122
|
+
};
|
123
|
+
}
|
124
|
+
formatErrors(errors) {
|
125
|
+
return errors.map((error) => {
|
126
|
+
const path = error.instancePath || 'root';
|
127
|
+
const message = error.message || 'validation failed';
|
128
|
+
return `${path}: ${message}`;
|
129
|
+
});
|
130
|
+
}
|
131
|
+
getSchemaVersion() {
|
132
|
+
return schema_v1_json_1.default.version;
|
133
|
+
}
|
134
|
+
}
|
135
|
+
exports.SchemaValidator = SchemaValidator;
|
136
|
+
exports.schemaValidator = new SchemaValidator();
|
137
|
+
//# sourceMappingURL=schema-validator.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"schema-validator.js","sourceRoot":"","sources":["../../src/validators/schema-validator.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
{
|
2
|
+
"name": "@caryyon/core",
|
3
|
+
"version": "0.1.0",
|
4
|
+
"description": "Core types, validators, and utilities for Lattice",
|
5
|
+
"main": "dist/index.js",
|
6
|
+
"types": "dist/index.d.ts",
|
7
|
+
"scripts": {
|
8
|
+
"build": "tsc",
|
9
|
+
"dev": "tsc --watch",
|
10
|
+
"test": "vitest run",
|
11
|
+
"test:watch": "vitest",
|
12
|
+
"lint": "eslint src --ext .ts",
|
13
|
+
"clean": "rm -rf dist"
|
14
|
+
},
|
15
|
+
"dependencies": {
|
16
|
+
"@paralleldrive/cuid2": "^2.2.2",
|
17
|
+
"ajv": "^8.12.0",
|
18
|
+
"ajv-formats": "^2.1.1",
|
19
|
+
"tslib": "^2.6.2"
|
20
|
+
},
|
21
|
+
"devDependencies": {
|
22
|
+
"@types/node": "^20.10.0",
|
23
|
+
"typescript": "^5.3.0",
|
24
|
+
"vitest": "^1.0.0"
|
25
|
+
},
|
26
|
+
"files": [
|
27
|
+
"dist"
|
28
|
+
],
|
29
|
+
"publishConfig": {
|
30
|
+
"access": "public"
|
31
|
+
},
|
32
|
+
"repository": {
|
33
|
+
"type": "git",
|
34
|
+
"url": "https://github.com/Caryyon/lattice.git",
|
35
|
+
"directory": "packages/core"
|
36
|
+
}
|
37
|
+
}
|