rdapify 0.1.8 → 0.2.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/CHANGELOG.md +126 -10
- package/README.md +50 -31
- package/dist/application/client/RDAPClient.d.ts +6 -1
- package/dist/application/client/RDAPClient.d.ts.map +1 -1
- package/dist/application/client/RDAPClient.js +85 -24
- package/dist/application/client/RDAPClient.js.map +1 -1
- package/dist/application/hooks/MiddlewareHooks.d.ts +4 -2
- package/dist/application/hooks/MiddlewareHooks.d.ts.map +1 -1
- package/dist/application/hooks/MiddlewareHooks.js +41 -3
- package/dist/application/hooks/MiddlewareHooks.js.map +1 -1
- package/dist/application/services/BatchProcessor.d.ts +6 -0
- package/dist/application/services/BatchProcessor.d.ts.map +1 -1
- package/dist/application/services/BatchProcessor.js +54 -2
- package/dist/application/services/BatchProcessor.js.map +1 -1
- package/dist/application/services/QueryOrchestrator.d.ts +3 -2
- package/dist/application/services/QueryOrchestrator.d.ts.map +1 -1
- package/dist/application/services/QueryOrchestrator.js +16 -5
- package/dist/application/services/QueryOrchestrator.js.map +1 -1
- package/dist/index.d.ts +27 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -2
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/cache/RedisCache.d.ts +10 -0
- package/dist/infrastructure/cache/RedisCache.d.ts.map +1 -1
- package/dist/infrastructure/cache/RedisCache.js +37 -1
- package/dist/infrastructure/cache/RedisCache.js.map +1 -1
- package/dist/infrastructure/http/BootstrapDiscovery.d.ts +6 -3
- package/dist/infrastructure/http/BootstrapDiscovery.d.ts.map +1 -1
- package/dist/infrastructure/http/BootstrapDiscovery.js +55 -12
- package/dist/infrastructure/http/BootstrapDiscovery.js.map +1 -1
- package/dist/infrastructure/http/BrowserFetcher.d.ts +16 -0
- package/dist/infrastructure/http/BrowserFetcher.d.ts.map +1 -0
- package/dist/infrastructure/http/BrowserFetcher.js +47 -0
- package/dist/infrastructure/http/BrowserFetcher.js.map +1 -0
- package/dist/infrastructure/http/BunFetcher.d.ts +19 -0
- package/dist/infrastructure/http/BunFetcher.d.ts.map +1 -0
- package/dist/infrastructure/http/BunFetcher.js +51 -0
- package/dist/infrastructure/http/BunFetcher.js.map +1 -0
- package/dist/infrastructure/http/CircuitBreaker.d.ts +33 -0
- package/dist/infrastructure/http/CircuitBreaker.d.ts.map +1 -0
- package/dist/infrastructure/http/CircuitBreaker.js +104 -0
- package/dist/infrastructure/http/CircuitBreaker.js.map +1 -0
- package/dist/infrastructure/http/CloudflareWorkersFetcher.d.ts +18 -0
- package/dist/infrastructure/http/CloudflareWorkersFetcher.d.ts.map +1 -0
- package/dist/infrastructure/http/CloudflareWorkersFetcher.js +44 -0
- package/dist/infrastructure/http/CloudflareWorkersFetcher.js.map +1 -0
- package/dist/infrastructure/http/DenoFetcher.d.ts +18 -0
- package/dist/infrastructure/http/DenoFetcher.d.ts.map +1 -0
- package/dist/infrastructure/http/DenoFetcher.js +43 -0
- package/dist/infrastructure/http/DenoFetcher.js.map +1 -0
- package/dist/infrastructure/http/Fetcher.d.ts +2 -0
- package/dist/infrastructure/http/Fetcher.d.ts.map +1 -1
- package/dist/infrastructure/http/Fetcher.js +5 -0
- package/dist/infrastructure/http/Fetcher.js.map +1 -1
- package/dist/infrastructure/monitoring/GrafanaDashboard.d.ts +571 -0
- package/dist/infrastructure/monitoring/GrafanaDashboard.d.ts.map +1 -0
- package/dist/infrastructure/monitoring/GrafanaDashboard.js +119 -0
- package/dist/infrastructure/monitoring/GrafanaDashboard.js.map +1 -0
- package/dist/infrastructure/monitoring/PrometheusExporter.d.ts +20 -0
- package/dist/infrastructure/monitoring/PrometheusExporter.d.ts.map +1 -0
- package/dist/infrastructure/monitoring/PrometheusExporter.js +77 -0
- package/dist/infrastructure/monitoring/PrometheusExporter.js.map +1 -0
- package/dist/infrastructure/monitoring/TelemetryExporter.d.ts +42 -0
- package/dist/infrastructure/monitoring/TelemetryExporter.d.ts.map +1 -0
- package/dist/infrastructure/monitoring/TelemetryExporter.js +117 -0
- package/dist/infrastructure/monitoring/TelemetryExporter.js.map +1 -0
- package/dist/infrastructure/native/NativeBackend.js +2 -2
- package/dist/infrastructure/native/NativeBackend.js.map +1 -1
- package/dist/integrations/express.d.ts +23 -0
- package/dist/integrations/express.d.ts.map +1 -0
- package/dist/integrations/express.js +49 -0
- package/dist/integrations/express.js.map +1 -0
- package/dist/integrations/graphql.d.ts +20 -0
- package/dist/integrations/graphql.d.ts.map +1 -0
- package/dist/integrations/graphql.js +85 -0
- package/dist/integrations/graphql.js.map +1 -0
- package/dist/integrations/nestjs.d.ts +18 -0
- package/dist/integrations/nestjs.d.ts.map +1 -0
- package/dist/integrations/nestjs.js +29 -0
- package/dist/integrations/nestjs.js.map +1 -0
- package/dist/shared/errors/base.error.d.ts +3 -0
- package/dist/shared/errors/base.error.d.ts.map +1 -1
- package/dist/shared/errors/base.error.js +7 -1
- package/dist/shared/errors/base.error.js.map +1 -1
- package/dist/shared/types/index.d.ts +1 -1
- package/dist/shared/types/index.d.ts.map +1 -1
- package/dist/shared/types/options.d.ts +19 -0
- package/dist/shared/types/options.d.ts.map +1 -1
- package/dist/shared/types/options.js +9 -0
- package/dist/shared/types/options.js.map +1 -1
- package/dist/shared/types/responses.d.ts +5 -0
- package/dist/shared/types/responses.d.ts.map +1 -1
- package/dist/shared/utils/deprecation.d.ts +3 -0
- package/dist/shared/utils/deprecation.d.ts.map +1 -0
- package/dist/shared/utils/deprecation.js +25 -0
- package/dist/shared/utils/deprecation.js.map +1 -0
- package/package.json +17 -3
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RDAPIFY_GRAFANA_DASHBOARD = void 0;
|
|
4
|
+
exports.RDAPIFY_GRAFANA_DASHBOARD = {
|
|
5
|
+
__inputs: [
|
|
6
|
+
{
|
|
7
|
+
name: 'DS_PROMETHEUS',
|
|
8
|
+
label: 'Prometheus',
|
|
9
|
+
description: '',
|
|
10
|
+
type: 'datasource',
|
|
11
|
+
pluginId: 'prometheus',
|
|
12
|
+
pluginName: 'Prometheus',
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
__requires: [
|
|
16
|
+
{ type: 'grafana', id: 'grafana', name: 'Grafana', version: '9.0.0' },
|
|
17
|
+
{ type: 'datasource', id: 'prometheus', name: 'Prometheus', version: '1.0.0' },
|
|
18
|
+
{ type: 'panel', id: 'timeseries', name: 'Time series', version: '' },
|
|
19
|
+
{ type: 'panel', id: 'stat', name: 'Stat', version: '' },
|
|
20
|
+
{ type: 'panel', id: 'gauge', name: 'Gauge', version: '' },
|
|
21
|
+
],
|
|
22
|
+
annotations: { list: [{ builtIn: 1, datasource: { type: 'grafana', uid: '-- Grafana --' }, enable: true, hide: true, iconColor: 'rgba(0, 211, 255, 1)', name: 'Annotations & Alerts', type: 'dashboard' }] },
|
|
23
|
+
description: 'RDAPify RDAP client metrics — query rates, cache performance, and error tracking',
|
|
24
|
+
editable: true,
|
|
25
|
+
fiscalYearStartMonth: 0,
|
|
26
|
+
graphTooltip: 1,
|
|
27
|
+
id: null,
|
|
28
|
+
links: [],
|
|
29
|
+
liveNow: false,
|
|
30
|
+
panels: [
|
|
31
|
+
{
|
|
32
|
+
datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' },
|
|
33
|
+
fieldConfig: { defaults: { color: { mode: 'thresholds' }, mappings: [], thresholds: { mode: 'absolute', steps: [{ color: 'green', value: null }] }, unit: 'short' }, overrides: [] },
|
|
34
|
+
gridPos: { h: 4, w: 4, x: 0, y: 0 },
|
|
35
|
+
id: 1,
|
|
36
|
+
options: { colorMode: 'background', graphMode: 'area', justifyMode: 'auto', orientation: 'auto', reduceOptions: { calcs: ['lastNotNull'], fields: '', values: false }, textMode: 'auto' },
|
|
37
|
+
title: 'Total Queries',
|
|
38
|
+
type: 'stat',
|
|
39
|
+
targets: [{ datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' }, expr: 'rdapify_queries_total', legendFormat: 'Queries', refId: 'A' }],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' },
|
|
43
|
+
fieldConfig: { defaults: { color: { mode: 'thresholds' }, mappings: [], thresholds: { mode: 'absolute', steps: [{ color: 'red', value: null }, { color: 'orange', value: 0.8 }, { color: 'green', value: 0.95 }] }, unit: 'percentunit', max: 1, min: 0 }, overrides: [] },
|
|
44
|
+
gridPos: { h: 4, w: 4, x: 4, y: 0 },
|
|
45
|
+
id: 2,
|
|
46
|
+
options: { colorMode: 'background', graphMode: 'none', justifyMode: 'auto', orientation: 'auto', reduceOptions: { calcs: ['lastNotNull'], fields: '', values: false }, textMode: 'auto' },
|
|
47
|
+
title: 'Success Rate',
|
|
48
|
+
type: 'stat',
|
|
49
|
+
targets: [{ datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' }, expr: 'rdapify_success_rate', legendFormat: 'Success Rate', refId: 'A' }],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' },
|
|
53
|
+
fieldConfig: { defaults: { color: { mode: 'thresholds' }, mappings: [], thresholds: { mode: 'absolute', steps: [{ color: 'red', value: null }, { color: 'orange', value: 0.3 }, { color: 'green', value: 0.7 }] }, unit: 'percentunit', max: 1, min: 0 }, overrides: [] },
|
|
54
|
+
gridPos: { h: 4, w: 4, x: 8, y: 0 },
|
|
55
|
+
id: 3,
|
|
56
|
+
options: { colorMode: 'background', graphMode: 'none', justifyMode: 'auto', orientation: 'auto', reduceOptions: { calcs: ['lastNotNull'], fields: '', values: false }, textMode: 'auto' },
|
|
57
|
+
title: 'Cache Hit Rate',
|
|
58
|
+
type: 'stat',
|
|
59
|
+
targets: [{ datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' }, expr: 'rdapify_cache_hit_rate', legendFormat: 'Cache Hit Rate', refId: 'A' }],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' },
|
|
63
|
+
fieldConfig: { defaults: { color: { mode: 'thresholds' }, mappings: [], thresholds: { mode: 'absolute', steps: [{ color: 'green', value: null }, { color: 'orange', value: 500 }, { color: 'red', value: 2000 }] }, unit: 'ms' }, overrides: [] },
|
|
64
|
+
gridPos: { h: 4, w: 4, x: 12, y: 0 },
|
|
65
|
+
id: 4,
|
|
66
|
+
options: { colorMode: 'value', graphMode: 'area', justifyMode: 'auto', orientation: 'auto', reduceOptions: { calcs: ['lastNotNull'], fields: '', values: false }, textMode: 'auto' },
|
|
67
|
+
title: 'Avg Response Time',
|
|
68
|
+
type: 'stat',
|
|
69
|
+
targets: [{ datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' }, expr: 'rdapify_response_time_avg_ms', legendFormat: 'Avg', refId: 'A' }],
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' },
|
|
73
|
+
fieldConfig: { defaults: { color: { mode: 'palette-classic' }, custom: { axisCenteredZero: false, axisColorMode: 'text', axisLabel: '', axisPlacement: 'auto', barAlignment: 0, drawStyle: 'line', fillOpacity: 10, gradientMode: 'none', hideFrom: { legend: false, tooltip: false, viz: false }, lineInterpolation: 'linear', lineWidth: 1, pointSize: 5, scaleDistribution: { type: 'linear' }, showPoints: 'auto', spanNulls: false, stacking: { group: 'A', mode: 'none' }, thresholdsStyle: { mode: 'off' } }, mappings: [], thresholds: { mode: 'absolute', steps: [{ color: 'green', value: null }, { color: 'red', value: 80 }] }, unit: 'ms' }, overrides: [] },
|
|
74
|
+
gridPos: { h: 8, w: 12, x: 0, y: 4 },
|
|
75
|
+
id: 5,
|
|
76
|
+
options: { legend: { calcs: [], displayMode: 'list', placement: 'bottom', showLegend: true }, tooltip: { mode: 'single', sort: 'none' } },
|
|
77
|
+
title: 'Response Time Percentiles',
|
|
78
|
+
type: 'timeseries',
|
|
79
|
+
targets: [
|
|
80
|
+
{ datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' }, expr: 'rdapify_response_time_p50_ms', legendFormat: 'P50', refId: 'A' },
|
|
81
|
+
{ datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' }, expr: 'rdapify_response_time_p90_ms', legendFormat: 'P90', refId: 'B' },
|
|
82
|
+
{ datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' }, expr: 'rdapify_response_time_p99_ms', legendFormat: 'P99', refId: 'C' },
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' },
|
|
87
|
+
fieldConfig: { defaults: { color: { mode: 'palette-classic' }, custom: { axisCenteredZero: false, axisColorMode: 'text', axisLabel: '', axisPlacement: 'auto', barAlignment: 0, drawStyle: 'line', fillOpacity: 10, gradientMode: 'none', hideFrom: { legend: false, tooltip: false, viz: false }, lineInterpolation: 'linear', lineWidth: 1, pointSize: 5, scaleDistribution: { type: 'linear' }, showPoints: 'auto', spanNulls: false, stacking: { group: 'A', mode: 'none' }, thresholdsStyle: { mode: 'off' } }, mappings: [], thresholds: { mode: 'absolute', steps: [{ color: 'green', value: null }] }, unit: 'short' }, overrides: [] },
|
|
88
|
+
gridPos: { h: 8, w: 12, x: 12, y: 4 },
|
|
89
|
+
id: 6,
|
|
90
|
+
options: { legend: { calcs: [], displayMode: 'list', placement: 'bottom', showLegend: true }, tooltip: { mode: 'single', sort: 'none' } },
|
|
91
|
+
title: 'Queries by Type',
|
|
92
|
+
type: 'timeseries',
|
|
93
|
+
targets: [{ datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' }, expr: 'rdapify_queries_by_type_total', legendFormat: '{{type}}', refId: 'A' }],
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' },
|
|
97
|
+
fieldConfig: { defaults: { color: { mode: 'palette-classic' }, custom: { axisCenteredZero: false, axisColorMode: 'text', axisLabel: '', axisPlacement: 'auto', barAlignment: 0, drawStyle: 'bars', fillOpacity: 80, gradientMode: 'none', hideFrom: { legend: false, tooltip: false, viz: false }, lineInterpolation: 'linear', lineWidth: 1, pointSize: 5, scaleDistribution: { type: 'linear' }, showPoints: 'auto', spanNulls: false, stacking: { group: 'A', mode: 'normal' }, thresholdsStyle: { mode: 'off' } }, mappings: [], thresholds: { mode: 'absolute', steps: [{ color: 'green', value: null }] }, unit: 'short' }, overrides: [] },
|
|
98
|
+
gridPos: { h: 8, w: 24, x: 0, y: 12 },
|
|
99
|
+
id: 7,
|
|
100
|
+
options: { legend: { calcs: [], displayMode: 'list', placement: 'bottom', showLegend: true }, tooltip: { mode: 'single', sort: 'none' } },
|
|
101
|
+
title: 'Errors by Type',
|
|
102
|
+
type: 'timeseries',
|
|
103
|
+
targets: [{ datasource: { type: 'prometheus', uid: '${DS_PROMETHEUS}' }, expr: 'rdapify_errors_by_type_total', legendFormat: '{{error_type}}', refId: 'A' }],
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
refresh: '30s',
|
|
107
|
+
schemaVersion: 38,
|
|
108
|
+
style: 'dark',
|
|
109
|
+
tags: ['rdapify', 'rdap'],
|
|
110
|
+
templating: { list: [] },
|
|
111
|
+
time: { from: 'now-1h', to: 'now' },
|
|
112
|
+
timepicker: {},
|
|
113
|
+
timezone: '',
|
|
114
|
+
title: 'RDAPify',
|
|
115
|
+
uid: 'rdapify-dashboard',
|
|
116
|
+
version: 1,
|
|
117
|
+
weekStart: '',
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=GrafanaDashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrafanaDashboard.js","sourceRoot":"","sources":["../../../src/infrastructure/monitoring/GrafanaDashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { MetricsSummary } from './MetricsCollector';
|
|
2
|
+
export interface PrometheusExporterOptions {
|
|
3
|
+
prefix?: string;
|
|
4
|
+
labels?: Record<string, string>;
|
|
5
|
+
}
|
|
6
|
+
export declare class PrometheusExporter {
|
|
7
|
+
static readonly CONTENT_TYPE = "text/plain; version=0.0.4; charset=utf-8";
|
|
8
|
+
private readonly prefix;
|
|
9
|
+
private readonly labels;
|
|
10
|
+
private readonly getMetrics;
|
|
11
|
+
constructor(getMetrics: (since?: number) => MetricsSummary, options?: PrometheusExporterOptions);
|
|
12
|
+
export(): string;
|
|
13
|
+
createHttpHandler(): (req: unknown, res: {
|
|
14
|
+
setHeader(k: string, v: string): void;
|
|
15
|
+
end(body: string): void;
|
|
16
|
+
}) => void;
|
|
17
|
+
private formatLabels;
|
|
18
|
+
private escapeLabel;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=PrometheusExporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrometheusExporter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/monitoring/PrometheusExporter.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQzD,MAAM,WAAW,yBAAyB;IAIxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAKhB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAKD,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,QAAQ,CAAC,YAAY,8CAAgB;IAE5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;gBAQ9D,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,cAAc,EAC9C,OAAO,GAAE,yBAA8B;IAWzC,MAAM,IAAI,MAAM;IAsEhB,iBAAiB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;QAAE,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI;IAOpH,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,WAAW;CAGpB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrometheusExporter = void 0;
|
|
4
|
+
const CONTENT_TYPE = 'text/plain; version=0.0.4; charset=utf-8';
|
|
5
|
+
class PrometheusExporter {
|
|
6
|
+
constructor(getMetrics, options = {}) {
|
|
7
|
+
this.getMetrics = getMetrics;
|
|
8
|
+
this.prefix = options.prefix ?? 'rdapify';
|
|
9
|
+
this.labels = options.labels ?? {};
|
|
10
|
+
}
|
|
11
|
+
export() {
|
|
12
|
+
const m = this.getMetrics();
|
|
13
|
+
const lbl = this.formatLabels(this.labels);
|
|
14
|
+
const p = this.prefix;
|
|
15
|
+
const lines = [];
|
|
16
|
+
const gauge = (name, help, value, extraLabels = {}) => {
|
|
17
|
+
const fullName = `${p}_${name}`;
|
|
18
|
+
lines.push(`# HELP ${fullName} ${help}`);
|
|
19
|
+
lines.push(`# TYPE ${fullName} gauge`);
|
|
20
|
+
lines.push(`${fullName}${this.formatLabels({ ...this.labels, ...extraLabels })} ${value}`);
|
|
21
|
+
};
|
|
22
|
+
const counter = (name, help, value, extraLabels = {}) => {
|
|
23
|
+
const fullName = `${p}_${name}`;
|
|
24
|
+
lines.push(`# HELP ${fullName} ${help}`);
|
|
25
|
+
lines.push(`# TYPE ${fullName} counter`);
|
|
26
|
+
lines.push(`${fullName}_total${this.formatLabels({ ...this.labels, ...extraLabels })} ${value}`);
|
|
27
|
+
};
|
|
28
|
+
counter('queries', 'Total number of RDAP queries executed', m.total);
|
|
29
|
+
counter('queries_successful', 'Total number of successful RDAP queries', m.successful);
|
|
30
|
+
counter('queries_failed', 'Total number of failed RDAP queries', m.failed);
|
|
31
|
+
const types = Object.entries(m.queriesByType);
|
|
32
|
+
const fullTypeName = `${p}_queries_by_type_total`;
|
|
33
|
+
lines.push(`# HELP ${fullTypeName} Total RDAP queries broken down by query type`);
|
|
34
|
+
lines.push(`# TYPE ${fullTypeName} counter`);
|
|
35
|
+
for (const [type, count] of types) {
|
|
36
|
+
lines.push(`${fullTypeName}${this.formatLabels({ ...this.labels, type })} ${count}`);
|
|
37
|
+
}
|
|
38
|
+
gauge('success_rate', 'Fraction of successful queries (0–1)', m.successRate);
|
|
39
|
+
gauge('cache_hit_rate', 'Fraction of queries served from cache (0–1)', m.cacheHitRate);
|
|
40
|
+
gauge('response_time_avg_ms', 'Average RDAP query response time in milliseconds', m.avgResponseTime);
|
|
41
|
+
gauge('response_time_min_ms', 'Minimum RDAP query response time in milliseconds', m.minResponseTime);
|
|
42
|
+
gauge('response_time_max_ms', 'Maximum RDAP query response time in milliseconds', m.maxResponseTime);
|
|
43
|
+
gauge('response_time_p50_ms', 'P50 (median) RDAP query response time in milliseconds', m.p50ResponseTime);
|
|
44
|
+
gauge('response_time_p90_ms', 'P90 RDAP query response time in milliseconds', m.p90ResponseTime);
|
|
45
|
+
gauge('response_time_p99_ms', 'P99 RDAP query response time in milliseconds', m.p99ResponseTime);
|
|
46
|
+
const errorEntries = Object.entries(m.errorsByType);
|
|
47
|
+
if (errorEntries.length > 0) {
|
|
48
|
+
const fullErrName = `${p}_errors_by_type_total`;
|
|
49
|
+
lines.push(`# HELP ${fullErrName} Total RDAP errors broken down by error type`);
|
|
50
|
+
lines.push(`# TYPE ${fullErrName} counter`);
|
|
51
|
+
for (const [errorType, count] of errorEntries) {
|
|
52
|
+
lines.push(`${fullErrName}${this.formatLabels({ ...this.labels, error_type: errorType })} ${count}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
void lbl;
|
|
56
|
+
return lines.join('\n') + '\n';
|
|
57
|
+
}
|
|
58
|
+
createHttpHandler() {
|
|
59
|
+
return (_req, res) => {
|
|
60
|
+
res.setHeader('Content-Type', CONTENT_TYPE);
|
|
61
|
+
res.end(this.export());
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
formatLabels(labels) {
|
|
65
|
+
const entries = Object.entries(labels);
|
|
66
|
+
if (entries.length === 0)
|
|
67
|
+
return '';
|
|
68
|
+
const pairs = entries.map(([k, v]) => `${k}="${this.escapeLabel(v)}"`).join(',');
|
|
69
|
+
return `{${pairs}}`;
|
|
70
|
+
}
|
|
71
|
+
escapeLabel(value) {
|
|
72
|
+
return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.PrometheusExporter = PrometheusExporter;
|
|
76
|
+
PrometheusExporter.CONTENT_TYPE = CONTENT_TYPE;
|
|
77
|
+
//# sourceMappingURL=PrometheusExporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrometheusExporter.js","sourceRoot":"","sources":["../../../src/infrastructure/monitoring/PrometheusExporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { TelemetryOptions } from '../../shared/types/options';
|
|
2
|
+
export interface SpanData {
|
|
3
|
+
traceId: string;
|
|
4
|
+
spanId: string;
|
|
5
|
+
parentSpanId?: string;
|
|
6
|
+
name: string;
|
|
7
|
+
startTimeUnixNano: string;
|
|
8
|
+
endTimeUnixNano: string;
|
|
9
|
+
attributes?: Array<{
|
|
10
|
+
key: string;
|
|
11
|
+
value: {
|
|
12
|
+
stringValue?: string;
|
|
13
|
+
intValue?: number;
|
|
14
|
+
boolValue?: boolean;
|
|
15
|
+
};
|
|
16
|
+
}>;
|
|
17
|
+
status?: {
|
|
18
|
+
code: 0 | 1 | 2;
|
|
19
|
+
message?: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export declare class TelemetryExporter {
|
|
23
|
+
private readonly endpoint;
|
|
24
|
+
private readonly serviceName;
|
|
25
|
+
private readonly serviceVersion;
|
|
26
|
+
private readonly resourceAttributes;
|
|
27
|
+
private readonly enabled;
|
|
28
|
+
constructor(options: TelemetryOptions);
|
|
29
|
+
isEnabled(): boolean;
|
|
30
|
+
exportSpans(spans: SpanData[]): Promise<void>;
|
|
31
|
+
startSpan(name: string, attributes?: Record<string, string | number | boolean>, parentSpanId?: string): SpanData;
|
|
32
|
+
endSpan(span: SpanData, status?: {
|
|
33
|
+
code: 0 | 1 | 2;
|
|
34
|
+
message?: string;
|
|
35
|
+
}): Promise<void>;
|
|
36
|
+
private buildOtlpPayload;
|
|
37
|
+
private encodeAttributes;
|
|
38
|
+
private sendRequest;
|
|
39
|
+
private generateId;
|
|
40
|
+
private nowNano;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=TelemetryExporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryExporter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/monitoring/TelemetryExporter.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAMnE,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAC7G,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAKD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAyB;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAEtB,OAAO,EAAE,gBAAgB;IAWrC,SAAS,IAAI,OAAO;IAQd,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnD,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EACtD,YAAY,CAAC,EAAE,MAAM,GACpB,QAAQ;IAgBL,OAAO,CACX,IAAI,EAAE,QAAQ,EACd,MAAM,GAAE;QAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAgB,GAC1D,OAAO,CAAC,IAAI,CAAC;IAMhB,OAAO,CAAC,gBAAgB;IAkCxB,OAAO,CAAC,gBAAgB;YAcV,WAAW;IAoBzB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,OAAO;CAGhB"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TelemetryExporter = void 0;
|
|
4
|
+
const RDAPIFY_VERSION = '0.2.3';
|
|
5
|
+
class TelemetryExporter {
|
|
6
|
+
constructor(options) {
|
|
7
|
+
this.endpoint = options.endpoint ?? '';
|
|
8
|
+
this.serviceName = options.serviceName ?? 'rdapify';
|
|
9
|
+
this.serviceVersion = options.serviceVersion ?? RDAPIFY_VERSION;
|
|
10
|
+
this.resourceAttributes = options.resourceAttributes ?? {};
|
|
11
|
+
this.enabled = options.enabled !== false && Boolean(this.endpoint);
|
|
12
|
+
}
|
|
13
|
+
isEnabled() {
|
|
14
|
+
return this.enabled;
|
|
15
|
+
}
|
|
16
|
+
async exportSpans(spans) {
|
|
17
|
+
if (!this.enabled || spans.length === 0)
|
|
18
|
+
return;
|
|
19
|
+
const payload = this.buildOtlpPayload(spans);
|
|
20
|
+
try {
|
|
21
|
+
const body = JSON.stringify(payload);
|
|
22
|
+
await this.sendRequest(body);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
startSpan(name, attributes, parentSpanId) {
|
|
28
|
+
const span = {
|
|
29
|
+
traceId: this.generateId(16),
|
|
30
|
+
spanId: this.generateId(8),
|
|
31
|
+
parentSpanId,
|
|
32
|
+
name,
|
|
33
|
+
startTimeUnixNano: this.nowNano(),
|
|
34
|
+
endTimeUnixNano: '0',
|
|
35
|
+
attributes: attributes ? this.encodeAttributes(attributes) : [],
|
|
36
|
+
};
|
|
37
|
+
return span;
|
|
38
|
+
}
|
|
39
|
+
async endSpan(span, status = { code: 0 }) {
|
|
40
|
+
span.endTimeUnixNano = this.nowNano();
|
|
41
|
+
span.status = status;
|
|
42
|
+
await this.exportSpans([span]);
|
|
43
|
+
}
|
|
44
|
+
buildOtlpPayload(spans) {
|
|
45
|
+
const resourceAttrs = this.encodeAttributes({
|
|
46
|
+
'service.name': this.serviceName,
|
|
47
|
+
'service.version': this.serviceVersion,
|
|
48
|
+
'telemetry.sdk.name': 'rdapify',
|
|
49
|
+
'telemetry.sdk.language': 'javascript',
|
|
50
|
+
...this.resourceAttributes,
|
|
51
|
+
});
|
|
52
|
+
return {
|
|
53
|
+
resourceSpans: [
|
|
54
|
+
{
|
|
55
|
+
resource: { attributes: resourceAttrs },
|
|
56
|
+
scopeSpans: [
|
|
57
|
+
{
|
|
58
|
+
scope: { name: 'rdapify', version: this.serviceVersion },
|
|
59
|
+
spans: spans.map((s) => ({
|
|
60
|
+
traceId: s.traceId,
|
|
61
|
+
spanId: s.spanId,
|
|
62
|
+
parentSpanId: s.parentSpanId,
|
|
63
|
+
name: s.name,
|
|
64
|
+
kind: 3,
|
|
65
|
+
startTimeUnixNano: s.startTimeUnixNano,
|
|
66
|
+
endTimeUnixNano: s.endTimeUnixNano,
|
|
67
|
+
attributes: s.attributes ?? [],
|
|
68
|
+
status: s.status ?? { code: 0 },
|
|
69
|
+
})),
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
encodeAttributes(attrs) {
|
|
77
|
+
return Object.entries(attrs).map(([key, value]) => {
|
|
78
|
+
if (typeof value === 'boolean') {
|
|
79
|
+
return { key, value: { boolValue: value } };
|
|
80
|
+
}
|
|
81
|
+
else if (typeof value === 'number') {
|
|
82
|
+
return { key, value: { intValue: value } };
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
return { key, value: { stringValue: String(value) } };
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
async sendRequest(body) {
|
|
90
|
+
const fetchFn = typeof globalThis !== 'undefined' && typeof globalThis['fetch'] === 'function'
|
|
91
|
+
? globalThis['fetch']
|
|
92
|
+
: (() => { throw new Error('No fetch available'); })();
|
|
93
|
+
const response = await fetchFn(this.endpoint, {
|
|
94
|
+
method: 'POST',
|
|
95
|
+
headers: {
|
|
96
|
+
'Content-Type': 'application/json',
|
|
97
|
+
'Accept': 'application/json',
|
|
98
|
+
},
|
|
99
|
+
body,
|
|
100
|
+
});
|
|
101
|
+
if (!response.ok) {
|
|
102
|
+
throw new Error(`OTLP export failed: ${response.status} ${response.statusText}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
generateId(bytes) {
|
|
106
|
+
const hex = [];
|
|
107
|
+
for (let i = 0; i < bytes * 2; i++) {
|
|
108
|
+
hex.push(Math.floor(Math.random() * 16).toString(16));
|
|
109
|
+
}
|
|
110
|
+
return hex.join('');
|
|
111
|
+
}
|
|
112
|
+
nowNano() {
|
|
113
|
+
return (BigInt(Date.now()) * BigInt(1000000)).toString();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.TelemetryExporter = TelemetryExporter;
|
|
117
|
+
//# sourceMappingURL=TelemetryExporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryExporter.js","sourceRoot":"","sources":["../../../src/infrastructure/monitoring/TelemetryExporter.ts"],"names":[],"mappings":";;;AA4BA,MAAM,eAAe,GAAG,OAAO,CAAC;AAiBhC,MAAa,iBAAiB;IAO5B,YAAY,OAAyB;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;QACpD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,eAAe,CAAC;QAChE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IAKD,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAMD,KAAK,CAAC,WAAW,CAAC,KAAiB;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEhD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACH,CAAC;IAKD,SAAS,CACP,IAAY,EACZ,UAAsD,EACtD,YAAqB;QAErB,MAAM,IAAI,GAAa;YACrB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC1B,YAAY;YACZ,IAAI;YACJ,iBAAiB,EAAE,IAAI,CAAC,OAAO,EAAE;YACjC,eAAe,EAAE,GAAG;YACpB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;SAChE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,KAAK,CAAC,OAAO,CACX,IAAc,EACd,SAAgD,EAAE,IAAI,EAAE,CAAC,EAAE;QAE3D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACjC,CAAC;IAEO,gBAAgB,CAAC,KAAiB;QACxC,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC1C,cAAc,EAAE,IAAI,CAAC,WAAW;YAChC,iBAAiB,EAAE,IAAI,CAAC,cAAc;YACtC,oBAAoB,EAAE,SAAS;YAC/B,wBAAwB,EAAE,YAAY;YACtC,GAAG,IAAI,CAAC,kBAAkB;SAC3B,CAAC,CAAC;QAEH,OAAO;YACL,aAAa,EAAE;gBACb;oBACE,QAAQ,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE;oBACvC,UAAU,EAAE;wBACV;4BACE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE;4BACxD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gCACvB,OAAO,EAAE,CAAC,CAAC,OAAO;gCAClB,MAAM,EAAE,CAAC,CAAC,MAAM;gCAChB,YAAY,EAAE,CAAC,CAAC,YAAY;gCAC5B,IAAI,EAAE,CAAC,CAAC,IAAI;gCACZ,IAAI,EAAE,CAAC;gCACP,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;gCACtC,eAAe,EAAE,CAAC,CAAC,eAAe;gCAClC,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE;gCAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;6BAChC,CAAC,CAAC;yBACJ;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAEO,gBAAgB,CACtB,KAAgD;QAEhD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAChD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;YAC9C,CAAC;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACxD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,IAAY;QACpC,MAAM,OAAO,GACX,OAAO,UAAU,KAAK,WAAW,IAAI,OAAQ,UAAsC,CAAC,OAAO,CAAC,KAAK,UAAU;YACzG,CAAC,CAAE,UAAsC,CAAC,OAAO,CAAiB;YAClE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,kBAAkB;aAC7B;YACD,IAAI;SACL,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IAEO,OAAO;QACb,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,OAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7D,CAAC;CACF;AAtJD,8CAsJC"}
|
|
@@ -7,7 +7,7 @@ function tryLoadCore() {
|
|
|
7
7
|
if (_module !== undefined)
|
|
8
8
|
return _module;
|
|
9
9
|
try {
|
|
10
|
-
_module = require('
|
|
10
|
+
_module = require('rdapify-nd');
|
|
11
11
|
}
|
|
12
12
|
catch {
|
|
13
13
|
_module = null;
|
|
@@ -39,7 +39,7 @@ class NativeBackend {
|
|
|
39
39
|
const core = tryLoadCore();
|
|
40
40
|
if (!core) {
|
|
41
41
|
if (mode === 'native') {
|
|
42
|
-
throw new Error('
|
|
42
|
+
throw new Error('rdapify-nd is not installed. Run: npm install rdapify-nd\n' +
|
|
43
43
|
'Or use backend: "auto" to fall back to the TypeScript backend.');
|
|
44
44
|
}
|
|
45
45
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeBackend.js","sourceRoot":"","sources":["../../../src/infrastructure/native/NativeBackend.ts"],"names":[],"mappings":";;;AAkDA,8CAEC;AAhBD,IAAI,OAAsC,CAAC;AAE3C,SAAS,WAAW;IAClB,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC1C,IAAI,CAAC;QAEH,OAAO,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"NativeBackend.js","sourceRoot":"","sources":["../../../src/infrastructure/native/NativeBackend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { RDAPClient } from '../application/client';
|
|
2
|
+
export interface RouterLike {
|
|
3
|
+
get(path: string, handler: RouteHandler): this;
|
|
4
|
+
}
|
|
5
|
+
export interface RequestLike {
|
|
6
|
+
params: Record<string, string>;
|
|
7
|
+
}
|
|
8
|
+
export interface ResponseLike {
|
|
9
|
+
status(code: number): this;
|
|
10
|
+
json(body: unknown): this;
|
|
11
|
+
}
|
|
12
|
+
type RouteHandler = (req: RequestLike, res: ResponseLike) => void | Promise<void>;
|
|
13
|
+
interface RouteEntry {
|
|
14
|
+
path: string;
|
|
15
|
+
handler: RouteHandler;
|
|
16
|
+
}
|
|
17
|
+
export declare class MinimalRouter implements RouterLike {
|
|
18
|
+
readonly routes: RouteEntry[];
|
|
19
|
+
get(path: string, handler: RouteHandler): this;
|
|
20
|
+
}
|
|
21
|
+
export declare function rdapifyExpress<R extends RouterLike>(client: RDAPClient, router?: R): R | MinimalRouter;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=express.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../src/integrations/express.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMxD,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B;AAED,KAAK,YAAY,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAMlF,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;CACvB;AASD,qBAAa,aAAc,YAAW,UAAU;IAC9C,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAM;IAEnC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;CAI/C;AAoBD,wBAAgB,cAAc,CAAC,CAAC,SAAS,UAAU,EACjD,MAAM,EAAE,UAAU,EAClB,MAAM,CAAC,EAAE,CAAC,GACT,CAAC,GAAG,aAAa,CAkCnB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MinimalRouter = void 0;
|
|
4
|
+
exports.rdapifyExpress = rdapifyExpress;
|
|
5
|
+
class MinimalRouter {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.routes = [];
|
|
8
|
+
}
|
|
9
|
+
get(path, handler) {
|
|
10
|
+
this.routes.push({ path, handler });
|
|
11
|
+
return this;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.MinimalRouter = MinimalRouter;
|
|
15
|
+
function rdapifyExpress(client, router) {
|
|
16
|
+
const r = router ?? new MinimalRouter();
|
|
17
|
+
r.get('/domain/:name', async (req, res) => {
|
|
18
|
+
try {
|
|
19
|
+
const result = await client.domain(req.params['name'] ?? '');
|
|
20
|
+
res.json(result);
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
24
|
+
res.status(500).json({ error: message });
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
r.get('/ip/:address', async (req, res) => {
|
|
28
|
+
try {
|
|
29
|
+
const result = await client.ip(req.params['address'] ?? '');
|
|
30
|
+
res.json(result);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
34
|
+
res.status(500).json({ error: message });
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
r.get('/asn/:number', async (req, res) => {
|
|
38
|
+
try {
|
|
39
|
+
const result = await client.asn(req.params['number'] ?? '');
|
|
40
|
+
res.json(result);
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
44
|
+
res.status(500).json({ error: message });
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return r;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=express.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../src/integrations/express.ts"],"names":[],"mappings":";;;AAuFA,wCAqCC;AAhED,MAAa,aAAa;IAA1B;QACW,WAAM,GAAiB,EAAE,CAAC;IAMrC,CAAC;IAJC,GAAG,CAAC,IAAY,EAAE,OAAqB;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAPD,sCAOC;AAoBD,SAAgB,cAAc,CAC5B,MAAkB,EAClB,MAAU;IAEV,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;IAExC,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,GAAgB,EAAE,GAAiB,EAAE,EAAE;QACnE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,GAAgB,EAAE,GAAiB,EAAE,EAAE;QAClE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,GAAgB,EAAE,GAAiB,EAAE,EAAE;QAClE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { RDAPClient } from '../application/client';
|
|
2
|
+
export declare const RDAPIFY_TYPE_DEFS = "\n type DomainResponse {\n query: String!\n ldhName: String\n registrar: String\n status: [String!]!\n expiresAt: String\n createdAt: String\n updatedAt: String\n }\n\n type IpResponse {\n query: String!\n country: String\n name: String\n status: [String!]!\n startAddress: String\n endAddress: String\n }\n\n type AsnResponse {\n query: String!\n name: String\n status: [String!]!\n startAutnum: Int\n endAutnum: Int\n }\n\n type Query {\n \"\"\"Query RDAP information for a domain name.\"\"\"\n domain(name: String!): DomainResponse\n\n \"\"\"Query RDAP information for an IP address (IPv4 or IPv6).\"\"\"\n ip(address: String!): IpResponse\n\n \"\"\"Query RDAP information for an Autonomous System Number.\"\"\"\n asn(number: String!): AsnResponse\n }\n";
|
|
3
|
+
export interface RdapifyResolvers {
|
|
4
|
+
Query: {
|
|
5
|
+
domain(_: unknown, args: {
|
|
6
|
+
name: string;
|
|
7
|
+
}): Promise<unknown>;
|
|
8
|
+
ip(_: unknown, args: {
|
|
9
|
+
address: string;
|
|
10
|
+
}): Promise<unknown>;
|
|
11
|
+
asn(_: unknown, args: {
|
|
12
|
+
number: string;
|
|
13
|
+
}): Promise<unknown>;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export declare function createRdapifySchema(client: RDAPClient): {
|
|
17
|
+
typeDefs: string;
|
|
18
|
+
resolvers: RdapifyResolvers;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=graphql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../src/integrations/graphql.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMxD,eAAO,MAAM,iBAAiB,86BAsC7B,CAAC;AAMF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE;QACL,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5D,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KAC7D,CAAC;CACH;AAYD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,gBAAgB,CAAC;CAC7B,CA4CA"}
|