@ontemper/sdk 0.8.0 → 0.8.2
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/README.md +56 -2
- package/dist/As2Resource.d.ts +431 -76
- package/dist/As2Resource.d.ts.map +1 -1
- package/dist/As2Resource.js +31 -30
- package/dist/As2Resource.js.map +1 -1
- package/dist/As2Transport.d.ts.map +1 -1
- package/dist/As2Transport.js +3 -1
- package/dist/As2Transport.js.map +1 -1
- package/dist/As2Wire.d.ts +39 -0
- package/dist/As2Wire.d.ts.map +1 -1
- package/dist/Contract/RuntimeApi.d.ts +19 -0
- package/dist/Contract/RuntimeApi.d.ts.map +1 -1
- package/dist/Contract/RuntimeApi.js +1 -1
- package/dist/Contract/RuntimeApi.js.map +1 -1
- package/dist/DatabaseTunnelAuthorization.d.ts +3 -0
- package/dist/DatabaseTunnelAuthorization.d.ts.map +1 -0
- package/dist/DatabaseTunnelAuthorization.js +12 -0
- package/dist/DatabaseTunnelAuthorization.js.map +1 -0
- package/dist/HttpApiResource.d.ts +2916 -177
- package/dist/HttpApiResource.d.ts.map +1 -1
- package/dist/HttpApiResource.js +82 -60
- package/dist/HttpApiResource.js.map +1 -1
- package/dist/Kafka.d.ts +89 -0
- package/dist/Kafka.d.ts.map +1 -0
- package/dist/Kafka.js +297 -0
- package/dist/Kafka.js.map +1 -0
- package/dist/Manifest.d.ts +1 -1
- package/dist/Manifest.js +1 -1
- package/dist/PostgreSql.d.ts +18 -0
- package/dist/PostgreSql.d.ts.map +1 -0
- package/dist/PostgreSql.js +40 -0
- package/dist/PostgreSql.js.map +1 -0
- package/dist/PostgreSqlPool.d.ts +34 -0
- package/dist/PostgreSqlPool.d.ts.map +1 -0
- package/dist/PostgreSqlPool.js +146 -0
- package/dist/PostgreSqlPool.js.map +1 -0
- package/dist/PostgreSqlTimeouts.d.ts +6 -0
- package/dist/PostgreSqlTimeouts.d.ts.map +1 -0
- package/dist/PostgreSqlTimeouts.js +17 -0
- package/dist/PostgreSqlTimeouts.js.map +1 -0
- package/dist/PostgreSqlTunnel.d.ts +25 -0
- package/dist/PostgreSqlTunnel.d.ts.map +1 -0
- package/dist/PostgreSqlTunnel.js +114 -0
- package/dist/PostgreSqlTunnel.js.map +1 -0
- package/dist/ResourceRecords.d.ts +1086 -0
- package/dist/ResourceRecords.d.ts.map +1 -0
- package/dist/ResourceRecords.js +303 -0
- package/dist/ResourceRecords.js.map +1 -0
- package/dist/Resources.d.ts +13 -0
- package/dist/Resources.d.ts.map +1 -0
- package/dist/Resources.js +13 -0
- package/dist/Resources.js.map +1 -0
- package/dist/RuntimeResources.d.ts +15 -1
- package/dist/RuntimeResources.d.ts.map +1 -1
- package/dist/RuntimeResources.js +42 -13
- package/dist/RuntimeResources.js.map +1 -1
- package/dist/TransportResource.d.ts +1 -32
- package/dist/TransportResource.d.ts.map +1 -1
- package/dist/TransportResource.js +1 -19
- package/dist/TransportResource.js.map +1 -1
- package/package.json +37 -4
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Calls `report` once per statement timeout on any connection of the pool, without changing query results. */
|
|
2
|
+
export const observePostgreSqlTimeouts = (driver, pool, report) => {
|
|
3
|
+
pool.on('connect', (client) => {
|
|
4
|
+
if (!(client instanceof driver.Client) || !client.connection)
|
|
5
|
+
return;
|
|
6
|
+
// Wire errors cover pool, checked-out client, and callback queries without changing their return values.
|
|
7
|
+
client.connection.on('errorMessage', (error) => {
|
|
8
|
+
if (error instanceof driver.DatabaseError &&
|
|
9
|
+
error.code === '57014' &&
|
|
10
|
+
error.message.includes('statement timeout')) {
|
|
11
|
+
report();
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
return pool;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=PostgreSqlTimeouts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgreSqlTimeouts.js","sourceRoot":"","sources":["../src/PostgreSqlTimeouts.ts"],"names":[],"mappings":"AAKA,+GAA+G;AAC/G,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAiB,EAAE,IAAa,EAAE,MAAkB,EAAW,EAAE;IACzG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;QAC5B,IAAI,CAAC,CAAC,MAAM,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO;QACrE,yGAAyG;QACzG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,KAAY,EAAE,EAAE;YACpD,IACE,KAAK,YAAY,MAAM,CAAC,aAAa;gBACrC,KAAK,CAAC,IAAI,KAAK,OAAO;gBACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAC3C,CAAC;gBACD,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Duplex } from 'node:stream';
|
|
2
|
+
/** Reads current runtime authorization; called once per physical connection, so a renewed token is used at once. */
|
|
3
|
+
export type TunnelAuthorization = () => Promise<{
|
|
4
|
+
readonly url: string;
|
|
5
|
+
readonly token: string;
|
|
6
|
+
}>;
|
|
7
|
+
/** A pg socket over the Resources-authenticated WebSocket tunnel; any failure ends the connection, never falls back to TCP. */
|
|
8
|
+
export declare class PostgreSqlTunnelStream extends Duplex {
|
|
9
|
+
private readonly authorize;
|
|
10
|
+
private transport;
|
|
11
|
+
private socket;
|
|
12
|
+
private referenced;
|
|
13
|
+
private closingCleanly;
|
|
14
|
+
constructor(authorize: TunnelAuthorization);
|
|
15
|
+
setNoDelay(): this;
|
|
16
|
+
setKeepAlive(): this;
|
|
17
|
+
ref(): this;
|
|
18
|
+
unref(): this;
|
|
19
|
+
connect(): this;
|
|
20
|
+
_read(): void;
|
|
21
|
+
_write(chunk: Buffer, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
|
|
22
|
+
_final(callback: (error?: Error | null) => void): void;
|
|
23
|
+
_destroy(error: Error | null, callback: (error?: Error | null) => void): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=PostgreSqlTunnel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgreSqlTunnel.d.ts","sourceRoot":"","sources":["../src/PostgreSqlTunnel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,oHAAoH;AACpH,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAIlG,+HAA+H;AAC/H,qBAAa,sBAAuB,SAAQ,MAAM;IAKpC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJtC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,cAAc,CAAS;IAC/B,YAA6B,SAAS,EAAE,mBAAmB,EAE1D;IACD,UAAU,SAET;IACD,YAAY,SAEX;IACD,GAAG,SAIF;IACD,KAAK,SAIJ;IACD,OAAO,SA6CN;IACQ,KAAK,SAEb;IACQ,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,QAYjG;IACQ,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,QAIvD;IACQ,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,QAG9E;CACF"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Duplex } from 'node:stream';
|
|
2
|
+
import { createWebSocketStream, WebSocket } from 'ws';
|
|
3
|
+
const unavailable = () => new Error('Database tunnel disconnected. Retry the connection to Temper.');
|
|
4
|
+
/** A pg socket over the Resources-authenticated WebSocket tunnel; any failure ends the connection, never falls back to TCP. */
|
|
5
|
+
export class PostgreSqlTunnelStream extends Duplex {
|
|
6
|
+
authorize;
|
|
7
|
+
transport;
|
|
8
|
+
socket;
|
|
9
|
+
referenced = true;
|
|
10
|
+
closingCleanly = false;
|
|
11
|
+
constructor(authorize) {
|
|
12
|
+
super({ highWaterMark: 65_536 });
|
|
13
|
+
this.authorize = authorize;
|
|
14
|
+
}
|
|
15
|
+
setNoDelay() {
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
18
|
+
setKeepAlive() {
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
21
|
+
ref() {
|
|
22
|
+
this.referenced = true;
|
|
23
|
+
this.socket?.ref();
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
unref() {
|
|
27
|
+
this.referenced = false;
|
|
28
|
+
this.socket?.unref();
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
connect() {
|
|
32
|
+
void this.authorize()
|
|
33
|
+
.then(({ url, token }) => {
|
|
34
|
+
if (this.destroyed)
|
|
35
|
+
return;
|
|
36
|
+
const endpoint = new URL(url);
|
|
37
|
+
if (endpoint.protocol !== 'wss:' &&
|
|
38
|
+
!(endpoint.protocol === 'ws:' && ['127.0.0.1', 'localhost', '[::1]'].includes(endpoint.hostname)))
|
|
39
|
+
throw unavailable();
|
|
40
|
+
if (endpoint.username || endpoint.password || endpoint.search || endpoint.hash)
|
|
41
|
+
throw unavailable();
|
|
42
|
+
const websocket = new WebSocket(endpoint, {
|
|
43
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
44
|
+
handshakeTimeout: 10_000,
|
|
45
|
+
maxPayload: 65_536,
|
|
46
|
+
perMessageDeflate: false,
|
|
47
|
+
followRedirects: false,
|
|
48
|
+
finishRequest: (request) => {
|
|
49
|
+
request.once('socket', (socket) => {
|
|
50
|
+
this.socket = socket;
|
|
51
|
+
if (!this.referenced)
|
|
52
|
+
socket.unref();
|
|
53
|
+
});
|
|
54
|
+
request.end();
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
const stream = createWebSocketStream(websocket, { highWaterMark: 65_536 });
|
|
58
|
+
this.transport = stream;
|
|
59
|
+
stream.on('error', () => this.destroy(unavailable()));
|
|
60
|
+
stream.on('data', (data) => {
|
|
61
|
+
if (!this.push(data))
|
|
62
|
+
stream.pause();
|
|
63
|
+
});
|
|
64
|
+
stream.on('end', () => {
|
|
65
|
+
if (this.closingCleanly)
|
|
66
|
+
this.push(null);
|
|
67
|
+
else
|
|
68
|
+
this.destroy(unavailable());
|
|
69
|
+
});
|
|
70
|
+
stream.on('close', () => {
|
|
71
|
+
if (this.closingCleanly)
|
|
72
|
+
this.destroy();
|
|
73
|
+
else
|
|
74
|
+
this.destroy(unavailable());
|
|
75
|
+
});
|
|
76
|
+
websocket.once('open', () => {
|
|
77
|
+
if (!this.destroyed)
|
|
78
|
+
this.emit('connect');
|
|
79
|
+
});
|
|
80
|
+
})
|
|
81
|
+
.catch(() => this.destroy(unavailable()));
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
_read() {
|
|
85
|
+
this.transport?.resume();
|
|
86
|
+
}
|
|
87
|
+
_write(chunk, _encoding, callback) {
|
|
88
|
+
const stream = this.transport;
|
|
89
|
+
if (!stream)
|
|
90
|
+
return callback(unavailable());
|
|
91
|
+
let offset = 0;
|
|
92
|
+
const next = () => {
|
|
93
|
+
if (offset >= chunk.length)
|
|
94
|
+
return callback();
|
|
95
|
+
const end = Math.min(offset + 65_536, chunk.length);
|
|
96
|
+
const frame = chunk.subarray(offset, end);
|
|
97
|
+
offset = end;
|
|
98
|
+
stream.write(frame, (error) => (error ? callback(unavailable()) : next()));
|
|
99
|
+
};
|
|
100
|
+
next();
|
|
101
|
+
}
|
|
102
|
+
_final(callback) {
|
|
103
|
+
this.closingCleanly = true;
|
|
104
|
+
if (this.transport)
|
|
105
|
+
this.transport.end(callback);
|
|
106
|
+
else
|
|
107
|
+
callback();
|
|
108
|
+
}
|
|
109
|
+
_destroy(error, callback) {
|
|
110
|
+
this.transport?.destroy();
|
|
111
|
+
callback(error);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=PostgreSqlTunnel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgreSqlTunnel.js","sourceRoot":"","sources":["../src/PostgreSqlTunnel.ts"],"names":[],"mappings":"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"}
|