@isahaq/kosh-server 0.0.0-stage → 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/LICENSE +21 -0
- package/README.md +21 -2
- package/dist/api/client.d.ts +18 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +380 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/idempotency.d.ts +23 -0
- package/dist/api/idempotency.d.ts.map +1 -0
- package/dist/api/idempotency.js +52 -0
- package/dist/api/idempotency.js.map +1 -0
- package/dist/api/metadata.d.ts +65 -0
- package/dist/api/metadata.d.ts.map +1 -0
- package/dist/api/metadata.js +88 -0
- package/dist/api/metadata.js.map +1 -0
- package/dist/api/navigation.d.ts +46 -0
- package/dist/api/navigation.d.ts.map +1 -0
- package/dist/api/navigation.js +131 -0
- package/dist/api/navigation.js.map +1 -0
- package/dist/api/openapi.d.ts +22 -0
- package/dist/api/openapi.d.ts.map +1 -0
- package/dist/api/openapi.js +349 -0
- package/dist/api/openapi.js.map +1 -0
- package/dist/api/rest.d.ts +28 -0
- package/dist/api/rest.d.ts.map +1 -0
- package/dist/api/rest.js +435 -0
- package/dist/api/rest.js.map +1 -0
- package/dist/api/views.d.ts +67 -0
- package/dist/api/views.d.ts.map +1 -0
- package/dist/api/views.js +307 -0
- package/dist/api/views.js.map +1 -0
- package/dist/audit.d.ts +21 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +26 -0
- package/dist/audit.js.map +1 -0
- package/dist/auth/admins.d.ts +26 -0
- package/dist/auth/admins.d.ts.map +1 -0
- package/dist/auth/admins.js +70 -0
- package/dist/auth/admins.js.map +1 -0
- package/dist/auth/base.d.ts +12 -0
- package/dist/auth/base.d.ts.map +1 -0
- package/dist/auth/base.js +192 -0
- package/dist/auth/base.js.map +1 -0
- package/dist/auth/crypto.d.ts +20 -0
- package/dist/auth/crypto.d.ts.map +1 -0
- package/dist/auth/crypto.js +100 -0
- package/dist/auth/crypto.js.map +1 -0
- package/dist/auth/install.d.ts +24 -0
- package/dist/auth/install.d.ts.map +1 -0
- package/dist/auth/install.js +18 -0
- package/dist/auth/install.js.map +1 -0
- package/dist/auth/routes.d.ts +20 -0
- package/dist/auth/routes.d.ts.map +1 -0
- package/dist/auth/routes.js +56 -0
- package/dist/auth/routes.js.map +1 -0
- package/dist/auth/service.d.ts +108 -0
- package/dist/auth/service.d.ts.map +1 -0
- package/dist/auth/service.js +477 -0
- package/dist/auth/service.js.map +1 -0
- package/dist/errors.d.ts +21 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +78 -0
- package/dist/errors.js.map +1 -0
- package/dist/identity.d.ts +49 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +58 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/orm.d.ts +14 -0
- package/dist/orm.d.ts.map +1 -0
- package/dist/orm.js +12 -0
- package/dist/orm.js.map +1 -0
- package/dist/registry.d.ts +19 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +26 -0
- package/dist/registry.js.map +1 -0
- package/dist/server.d.ts +93 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +223 -0
- package/dist/server.js.map +1 -0
- package/dist/telemetry.d.ts +23 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +38 -0
- package/dist/telemetry.js.map +1 -0
- package/package.json +63 -3
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenTelemetry (CLAUDE.md, observability): one span per request (`HTTP GET /api/...`, with method, route, status and
|
|
3
|
+
* request id) and a child span around the Shutro transaction. `startTelemetry` installs the SDK when an exporter is
|
|
4
|
+
* configured (OTLP over HTTP via `OTEL_EXPORTER_OTLP_ENDPOINT`, or span processors passed in, e.g. in tests).
|
|
5
|
+
*/
|
|
6
|
+
import { type Span, trace } from '@opentelemetry/api';
|
|
7
|
+
import { tracing } from '@opentelemetry/sdk-node';
|
|
8
|
+
/** The tracer Kosh's spans come from. */
|
|
9
|
+
export declare const tracer: ReturnType<typeof trace.getTracer>;
|
|
10
|
+
/** A started telemetry SDK. */
|
|
11
|
+
export interface Telemetry {
|
|
12
|
+
shutdown(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Starts the OpenTelemetry SDK when there is somewhere to send spans; otherwise does nothing (the API is a no-op).
|
|
16
|
+
*/
|
|
17
|
+
export declare function startTelemetry(options?: {
|
|
18
|
+
readonly serviceName?: string;
|
|
19
|
+
readonly spanProcessors?: readonly tracing.SpanProcessor[];
|
|
20
|
+
}): Telemetry;
|
|
21
|
+
/** Ends a request span with its status. */
|
|
22
|
+
export declare function endSpan(span: Span, status: number, error?: unknown): void;
|
|
23
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,IAAI,EAAkB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAW,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE3D,yCAAyC;AACzC,eAAO,MAAM,MAAM,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,SAAS,CAA2C,CAAC;AAElG,+BAA+B;AAC/B,MAAM,WAAW,SAAS;IACxB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,GAAE;IACP,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,OAAO,CAAC,aAAa,EAAE,CAAC;CACvD,GACL,SAAS,CAaX;AAED,2CAA2C;AAC3C,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAMzE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenTelemetry (CLAUDE.md, observability): one span per request (`HTTP GET /api/...`, with method, route, status and
|
|
3
|
+
* request id) and a child span around the Shutro transaction. `startTelemetry` installs the SDK when an exporter is
|
|
4
|
+
* configured (OTLP over HTTP via `OTEL_EXPORTER_OTLP_ENDPOINT`, or span processors passed in, e.g. in tests).
|
|
5
|
+
*/
|
|
6
|
+
import { SpanStatusCode, trace } from '@opentelemetry/api';
|
|
7
|
+
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
8
|
+
import { NodeSDK, tracing } from '@opentelemetry/sdk-node';
|
|
9
|
+
/** The tracer Kosh's spans come from. */
|
|
10
|
+
export const tracer = trace.getTracer('kosh-server', '0.1.0');
|
|
11
|
+
/**
|
|
12
|
+
* Starts the OpenTelemetry SDK when there is somewhere to send spans; otherwise does nothing (the API is a no-op).
|
|
13
|
+
*/
|
|
14
|
+
export function startTelemetry(options = {}) {
|
|
15
|
+
const endpoint = process.env['OTEL_EXPORTER_OTLP_ENDPOINT'];
|
|
16
|
+
const processors = [
|
|
17
|
+
...(options.spanProcessors ?? []),
|
|
18
|
+
...(endpoint === undefined ? [] : [new tracing.BatchSpanProcessor(new OTLPTraceExporter())]),
|
|
19
|
+
];
|
|
20
|
+
if (processors.length === 0)
|
|
21
|
+
return { shutdown: async () => { } };
|
|
22
|
+
const sdk = new NodeSDK({
|
|
23
|
+
serviceName: options.serviceName ?? 'kosh',
|
|
24
|
+
spanProcessors: processors,
|
|
25
|
+
});
|
|
26
|
+
sdk.start();
|
|
27
|
+
return { shutdown: () => sdk.shutdown() };
|
|
28
|
+
}
|
|
29
|
+
/** Ends a request span with its status. */
|
|
30
|
+
export function endSpan(span, status, error) {
|
|
31
|
+
span.setAttribute('http.response.status_code', status);
|
|
32
|
+
if (error !== undefined)
|
|
33
|
+
span.recordException(error instanceof Error ? error : new Error(String(error)));
|
|
34
|
+
if (status >= 500)
|
|
35
|
+
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
36
|
+
span.end();
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAa,cAAc,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE3D,yCAAyC;AACzC,MAAM,CAAC,MAAM,MAAM,GAAuC,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAOlG;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAO,GAGH,EAAE;IAEN,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG;QACjB,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;QACjC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC;KAC7F,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,EAAE,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,MAAM;QAC1C,cAAc,EAAE,UAAU;KAC3B,CAAC,CAAC;IACH,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC5C,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,OAAO,CAAC,IAAU,EAAE,MAAc,EAAE,KAAe;IACjE,IAAI,CAAC,YAAY,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;IACvD,IAAI,KAAK,KAAK,SAAS;QACrB,IAAI,CAAC,eAAe,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClF,IAAI,MAAM,IAAI,GAAG;QAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;IAClE,IAAI,CAAC,GAAG,EAAE,CAAC;AACb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,66 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@isahaq/kosh-server",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Fastify app, module loader, REST/OpenAPI generator, auth, Shutro environment per request (RFC 0002)",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"kosh",
|
|
7
|
+
"erp",
|
|
8
|
+
"typescript",
|
|
9
|
+
"postgresql",
|
|
10
|
+
"shutro"
|
|
11
|
+
],
|
|
12
|
+
"author": "Isahaq <hmisahaq01@gmail.com>",
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"homepage": "https://github.com/isahaq1/kosh/tree/main/packages/server#readme",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/isahaq1/kosh/issues"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "git+https://github.com/isahaq1/kosh.git",
|
|
21
|
+
"directory": "packages/server"
|
|
22
|
+
},
|
|
23
|
+
"type": "module",
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"@kosh/source": "./src/index.ts",
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
29
|
+
"default": "./dist/index.js"
|
|
30
|
+
},
|
|
31
|
+
"./orm": {
|
|
32
|
+
"@kosh/source": "./src/orm.ts",
|
|
33
|
+
"types": "./dist/orm.d.ts",
|
|
34
|
+
"default": "./dist/orm.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"dist"
|
|
39
|
+
],
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=24"
|
|
42
|
+
},
|
|
43
|
+
"publishConfig": {
|
|
44
|
+
"access": "public"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@fastify/rate-limit": "^11.2.1",
|
|
48
|
+
"@opentelemetry/api": "^1.9.1",
|
|
49
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.223.0",
|
|
50
|
+
"@opentelemetry/sdk-node": "^0.223.0",
|
|
51
|
+
"fastify": "^5.12.7",
|
|
52
|
+
"iovalkey": "^0.4.0",
|
|
53
|
+
"shutro": "^0.2.0",
|
|
54
|
+
"@isahaq/kosh-modules-sdk": "0.1.0",
|
|
55
|
+
"@isahaq/kosh-views": "0.1.0"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@testcontainers/postgresql": "^12.2.1",
|
|
59
|
+
"testcontainers": "^12.2.1",
|
|
60
|
+
"@isahaq/kosh-search": "0.1.0"
|
|
61
|
+
},
|
|
62
|
+
"scripts": {
|
|
63
|
+
"build": "tsc -p tsconfig.build.json",
|
|
64
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
65
|
+
}
|
|
6
66
|
}
|