@ontemper/sdk 0.7.1-postgresql.1 → 0.7.1-postgresql.3
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 +50 -6
- 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/DatabaseTunnelAuthorization.d.ts +11 -0
- package/dist/DatabaseTunnelAuthorization.d.ts.map +1 -0
- package/dist/DatabaseTunnelAuthorization.js +35 -0
- package/dist/DatabaseTunnelAuthorization.js.map +1 -0
- package/dist/ExpiringMap.d.ts +21 -0
- package/dist/ExpiringMap.d.ts.map +1 -0
- package/dist/ExpiringMap.js +79 -0
- package/dist/ExpiringMap.js.map +1 -0
- package/dist/HttpApiResource.d.ts +2904 -177
- package/dist/HttpApiResource.d.ts.map +1 -1
- package/dist/HttpApiResource.js +81 -59
- 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 +2 -2
- package/dist/PostgreSql.d.ts.map +1 -1
- package/dist/PostgreSql.js +4 -13
- package/dist/PostgreSql.js.map +1 -1
- package/dist/PostgreSqlPool.d.ts +2 -40
- package/dist/PostgreSqlPool.d.ts.map +1 -1
- package/dist/PostgreSqlPool.js +13 -26
- package/dist/PostgreSqlPool.js.map +1 -1
- package/dist/PostgreSqlTimeouts.d.ts +4 -2
- package/dist/PostgreSqlTimeouts.d.ts.map +1 -1
- package/dist/PostgreSqlTimeouts.js +5 -4
- package/dist/PostgreSqlTimeouts.js.map +1 -1
- package/dist/Redaction.d.ts +2 -0
- package/dist/Redaction.d.ts.map +1 -1
- package/dist/Redaction.js +16 -4
- package/dist/Redaction.js.map +1 -1
- 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 +17 -0
- package/dist/Resources.d.ts.map +1 -0
- package/dist/Resources.js +15 -0
- package/dist/Resources.js.map +1 -0
- package/dist/ResourcesCache.d.ts +33 -0
- package/dist/ResourcesCache.d.ts.map +1 -0
- package/dist/ResourcesCache.js +205 -0
- package/dist/ResourcesCache.js.map +1 -0
- package/dist/ResourcesEnv.d.ts +81 -0
- package/dist/ResourcesEnv.d.ts.map +1 -0
- package/dist/ResourcesEnv.js +104 -0
- package/dist/ResourcesEnv.js.map +1 -0
- package/dist/ResourcesErrors.d.ts +5 -1
- package/dist/ResourcesErrors.d.ts.map +1 -1
- package/dist/ResourcesErrors.js +5 -2
- package/dist/ResourcesErrors.js.map +1 -1
- package/dist/ResourcesToken.d.ts +9 -0
- package/dist/ResourcesToken.d.ts.map +1 -1
- package/dist/ResourcesToken.js +20 -7
- package/dist/ResourcesToken.js.map +1 -1
- package/dist/RuntimeResources.d.ts +18 -3
- package/dist/RuntimeResources.d.ts.map +1 -1
- package/dist/RuntimeResources.js +54 -30
- 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/dist/Workflow.js +2 -2
- package/dist/Workflow.js.map +1 -1
- package/package.json +17 -5
package/dist/As2Resource.js
CHANGED
|
@@ -1,58 +1,59 @@
|
|
|
1
|
-
import { Effect, Schema } from 'effect';
|
|
1
|
+
import { Effect, Option, Schema, SchemaTransformation } from 'effect';
|
|
2
|
+
import { AbsoluteHttpUrl, recordStruct } from './HttpApiResource.js';
|
|
2
3
|
import { TransportAuth, TransportProxy, TransportTls } from './TransportResource.js';
|
|
3
4
|
// An `x-secret` field: the value arrives `Redacted`, so logging the record never prints it; an empty key cannot sign.
|
|
4
5
|
const Secret = Schema.RedactedFromValue(Schema.String.check(Schema.isMinLength(1)));
|
|
5
|
-
|
|
6
|
+
// An emptied secondary slot is absent before pair validation, including its private-key wrapper.
|
|
7
|
+
const BlankAsAbsent = Schema.optional(Schema.String).pipe(Schema.decodeTo(Schema.optional(Schema.String), SchemaTransformation.transformOptional({
|
|
8
|
+
decode: Option.filter((value) => value !== '' && value !== undefined),
|
|
9
|
+
encode: (value) => value,
|
|
10
|
+
})));
|
|
11
|
+
const SwitchOn = Schema.Boolean.pipe(Schema.withDecodingDefault(Effect.succeed(true)));
|
|
6
12
|
// Our key pair with the slot for the one it overlaps with during a rotation; a secondary slot is set or cleared as a pair.
|
|
7
13
|
const as2KeyPairSlotFields = {
|
|
8
14
|
certificate: Schema.String.check(Schema.isMinLength(1)),
|
|
9
15
|
privateKey: Secret,
|
|
10
|
-
secondaryCertificate:
|
|
11
|
-
secondaryPrivateKey: Schema.
|
|
16
|
+
secondaryCertificate: BlankAsAbsent,
|
|
17
|
+
secondaryPrivateKey: BlankAsAbsent.pipe(Schema.decodeTo(Schema.optional(Secret))),
|
|
12
18
|
};
|
|
13
|
-
const pairedSlots = Schema.makeFilter((slots) => (slots.secondaryCertificate === undefined) === (slots.secondaryPrivateKey === undefined) ||
|
|
14
|
-
'
|
|
15
|
-
|
|
19
|
+
const pairedSlots = Schema.makeFilter((slots) => (slots.secondaryCertificate === undefined) === (slots.secondaryPrivateKey === undefined) || {
|
|
20
|
+
path: ['secondaryCertificate'],
|
|
21
|
+
issue: 'Expected secondaryCertificate and secondaryPrivateKey together or neither',
|
|
22
|
+
});
|
|
23
|
+
const As2KeyPairSlots = recordStruct(as2KeyPairSlotFields).check(pairedSlots);
|
|
16
24
|
const As2IdentityKeys = Schema.Union([
|
|
17
|
-
|
|
18
|
-
|
|
25
|
+
recordStruct({ mode: Schema.Literal('combined'), ...as2KeyPairSlotFields }).check(pairedSlots),
|
|
26
|
+
recordStruct({ mode: Schema.Literal('separate'), signing: As2KeyPairSlots, encryption: As2KeyPairSlots }),
|
|
19
27
|
]);
|
|
20
28
|
/** The resolved value of the `as2_identity` system type: our AS2 ID and the key pairs that sign and decrypt. */
|
|
21
|
-
export const As2IdentityResource =
|
|
29
|
+
export const As2IdentityResource = recordStruct({
|
|
22
30
|
as2Id: Schema.String.check(Schema.isMinLength(1)),
|
|
23
31
|
keys: As2IdentityKeys,
|
|
24
32
|
});
|
|
25
33
|
// A secondary slot is either a certificate or absent; a blank string would reach the engine as a certificate.
|
|
26
|
-
const As2CertificateSlots =
|
|
34
|
+
const As2CertificateSlots = recordStruct({
|
|
27
35
|
certificate: Schema.String.check(Schema.isMinLength(1)),
|
|
28
|
-
secondaryCertificate:
|
|
36
|
+
secondaryCertificate: BlankAsAbsent,
|
|
29
37
|
});
|
|
30
38
|
const As2PartnerCertificates = Schema.Union([
|
|
31
|
-
|
|
32
|
-
|
|
39
|
+
recordStruct({ mode: Schema.Literal('combined'), ...As2CertificateSlots.schema.fields }),
|
|
40
|
+
recordStruct({ mode: Schema.Literal('separate'), encryption: As2CertificateSlots, signing: As2CertificateSlots }),
|
|
33
41
|
]);
|
|
34
42
|
/** The resolved value of the `as2_partner` system type; the referenced identity arrives inline under `identity`. */
|
|
35
|
-
export const As2PartnerResource =
|
|
43
|
+
export const As2PartnerResource = recordStruct({
|
|
36
44
|
identity: As2IdentityResource,
|
|
37
45
|
as2Id: Schema.String.check(Schema.isMinLength(1)),
|
|
38
46
|
// The URL is a plain field that reaches logs, so userinfo in it would log a credential.
|
|
39
|
-
url: Schema.
|
|
40
|
-
if (!URL.canParse(url))
|
|
41
|
-
return 'Expected an absolute http(s) URL';
|
|
42
|
-
const parsed = new URL(url);
|
|
43
|
-
if (!['http:', 'https:'].includes(parsed.protocol))
|
|
44
|
-
return 'Expected an absolute http(s) URL';
|
|
45
|
-
return (!parsed.username && !parsed.password) || 'Expected a URL without embedded credentials';
|
|
46
|
-
}))),
|
|
47
|
+
url: Schema.optional(AbsoluteHttpUrl),
|
|
47
48
|
certificates: As2PartnerCertificates,
|
|
48
49
|
signOutgoing: SwitchOn,
|
|
49
50
|
encryptOutgoing: SwitchOn,
|
|
50
51
|
requireSignedIncoming: SwitchOn,
|
|
51
52
|
requireEncryptedIncoming: SwitchOn,
|
|
52
|
-
compression: Schema.Literals(['none', 'zlib']).pipe(Schema.
|
|
53
|
-
receipt: Schema.Literals(['none', 'sync', 'async']).pipe(Schema.
|
|
54
|
-
receiptSigningAlgorithm: Schema.Literals(['sha-1', 'sha-256', 'sha-384', 'sha-512']).pipe(Schema.
|
|
55
|
-
digestAlgorithm: Schema.Literals(['sha-1', 'sha-256', 'sha-384', 'sha-512']).pipe(Schema.
|
|
53
|
+
compression: Schema.Literals(['none', 'zlib']).pipe(Schema.withDecodingDefault(Effect.succeed('none'))),
|
|
54
|
+
receipt: Schema.Literals(['none', 'sync', 'async']).pipe(Schema.withDecodingDefault(Effect.succeed('sync'))),
|
|
55
|
+
receiptSigningAlgorithm: Schema.Literals(['sha-1', 'sha-256', 'sha-384', 'sha-512']).pipe(Schema.withDecodingDefault(Effect.succeed('sha-256'))),
|
|
56
|
+
digestAlgorithm: Schema.Literals(['sha-1', 'sha-256', 'sha-384', 'sha-512']).pipe(Schema.withDecodingDefault(Effect.succeed('sha-256'))),
|
|
56
57
|
encryptionAlgorithm: Schema.Literals([
|
|
57
58
|
'3des',
|
|
58
59
|
'aes128-cbc',
|
|
@@ -60,9 +61,9 @@ export const As2PartnerResource = Schema.Struct({
|
|
|
60
61
|
'aes256-cbc',
|
|
61
62
|
'aes128-gcm',
|
|
62
63
|
'aes256-gcm',
|
|
63
|
-
]).pipe(Schema.
|
|
64
|
+
]).pipe(Schema.withDecodingDefault(Effect.succeed('aes256-cbc'))),
|
|
64
65
|
httpAuth: TransportAuth,
|
|
65
|
-
tls: Schema.
|
|
66
|
-
proxy: Schema.
|
|
66
|
+
tls: Schema.optional(TransportTls),
|
|
67
|
+
proxy: Schema.optional(TransportProxy),
|
|
67
68
|
});
|
|
68
69
|
//# sourceMappingURL=As2Resource.js.map
|
package/dist/As2Resource.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"As2Resource.js","sourceRoot":"","sources":["../src/As2Resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"As2Resource.js","sourceRoot":"","sources":["../src/As2Resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"As2Transport.d.ts","sourceRoot":"","sources":["../src/As2Transport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,kHAAkH;AAClH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"As2Transport.d.ts","sourceRoot":"","sources":["../src/As2Transport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,kHAAkH;AAClH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAiBlF,yFAAyF;AACzF,eAAO,MAAM,QAAQ,QAAO,OAA8B,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,iBAAiB,YAAa,kBAAkB,OAAO,GAAG,OAAO,OAAO,KAAG,oBA+DvF,CAAC;AAEF,gGAAgG;AAChG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;CAClC;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAS,GAAG,WAAW,MAAM,KAAG,iBAO7D,CAAC"}
|
package/dist/As2Transport.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { rootCertificates } from 'node:tls';
|
|
2
2
|
import { Redacted } from 'effect';
|
|
3
|
-
|
|
3
|
+
// Only the declared fields configure TLS; an extension key a newer catalog adds must not trigger the TLS refusals.
|
|
4
|
+
const hasSettings = (tls) => tls !== undefined &&
|
|
5
|
+
[tls.caCertificate, tls.clientCertificate, tls.clientKey, tls.clientKeyPassphrase, tls.serverName].some((value) => value !== undefined);
|
|
4
6
|
const refused = (code, message) => ({ kind: 'refused', code, message });
|
|
5
7
|
const defined = (value) => value !== undefined;
|
|
6
8
|
/** True where the global `fetch` is Bun's, the only one that takes `tls` and `proxy`. */
|
package/dist/As2Transport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"As2Transport.js","sourceRoot":"","sources":["../src/As2Transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAWlC,MAAM,WAAW,GAAG,CAAC,GAAQ,EAA2B,EAAE,CACxD,GAAG,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"As2Transport.js","sourceRoot":"","sources":["../src/As2Transport.ts"],"names":[],"mappings":"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"}
|
package/dist/As2Wire.d.ts
CHANGED
|
@@ -111,23 +111,29 @@ export declare const partiesOf: (operation: As2Operation, options: {
|
|
|
111
111
|
readonly identity?: As2IdentityResource | undefined;
|
|
112
112
|
}) => Effect.Effect<{
|
|
113
113
|
partner: {
|
|
114
|
+
readonly [x: string]: unknown;
|
|
114
115
|
readonly identity: {
|
|
116
|
+
readonly [x: string]: unknown;
|
|
115
117
|
readonly as2Id: string;
|
|
116
118
|
readonly keys: {
|
|
119
|
+
readonly [x: string]: unknown;
|
|
117
120
|
readonly certificate: string;
|
|
118
121
|
readonly privateKey: Redacted.Redacted<string>;
|
|
119
122
|
readonly secondaryCertificate?: string | undefined;
|
|
120
123
|
readonly secondaryPrivateKey?: Redacted.Redacted<string> | undefined;
|
|
121
124
|
readonly mode: "combined";
|
|
122
125
|
} | {
|
|
126
|
+
readonly [x: string]: unknown;
|
|
123
127
|
readonly mode: "separate";
|
|
124
128
|
readonly signing: {
|
|
129
|
+
readonly [x: string]: unknown;
|
|
125
130
|
readonly certificate: string;
|
|
126
131
|
readonly privateKey: Redacted.Redacted<string>;
|
|
127
132
|
readonly secondaryCertificate?: string | undefined;
|
|
128
133
|
readonly secondaryPrivateKey?: Redacted.Redacted<string> | undefined;
|
|
129
134
|
};
|
|
130
135
|
readonly encryption: {
|
|
136
|
+
readonly [x: string]: unknown;
|
|
131
137
|
readonly certificate: string;
|
|
132
138
|
readonly privateKey: Redacted.Redacted<string>;
|
|
133
139
|
readonly secondaryCertificate?: string | undefined;
|
|
@@ -138,16 +144,20 @@ export declare const partiesOf: (operation: As2Operation, options: {
|
|
|
138
144
|
readonly as2Id: string;
|
|
139
145
|
readonly url?: string | undefined;
|
|
140
146
|
readonly certificates: {
|
|
147
|
+
readonly [x: string]: unknown;
|
|
141
148
|
readonly certificate: string;
|
|
142
149
|
readonly secondaryCertificate?: string | undefined;
|
|
143
150
|
readonly mode: "combined";
|
|
144
151
|
} | {
|
|
152
|
+
readonly [x: string]: unknown;
|
|
145
153
|
readonly mode: "separate";
|
|
146
154
|
readonly encryption: {
|
|
155
|
+
readonly [x: string]: unknown;
|
|
147
156
|
readonly certificate: string;
|
|
148
157
|
readonly secondaryCertificate?: string | undefined;
|
|
149
158
|
};
|
|
150
159
|
readonly signing: {
|
|
160
|
+
readonly [x: string]: unknown;
|
|
151
161
|
readonly certificate: string;
|
|
152
162
|
readonly secondaryCertificate?: string | undefined;
|
|
153
163
|
};
|
|
@@ -162,13 +172,16 @@ export declare const partiesOf: (operation: As2Operation, options: {
|
|
|
162
172
|
readonly digestAlgorithm: "sha-1" | "sha-256" | "sha-384" | "sha-512";
|
|
163
173
|
readonly encryptionAlgorithm: "3des" | "aes128-cbc" | "aes128-gcm" | "aes192-cbc" | "aes256-cbc" | "aes256-gcm";
|
|
164
174
|
readonly httpAuth: {
|
|
175
|
+
readonly [x: string]: unknown;
|
|
165
176
|
readonly type: "none";
|
|
166
177
|
} | {
|
|
178
|
+
readonly [x: string]: unknown;
|
|
167
179
|
readonly type: "basic";
|
|
168
180
|
readonly username: string;
|
|
169
181
|
readonly password: Redacted.Redacted<string>;
|
|
170
182
|
};
|
|
171
183
|
readonly tls?: {
|
|
184
|
+
readonly [x: string]: unknown;
|
|
172
185
|
readonly caCertificate?: string | undefined;
|
|
173
186
|
readonly clientCertificate?: string | undefined;
|
|
174
187
|
readonly clientKey?: Redacted.Redacted<string> | undefined;
|
|
@@ -176,15 +189,19 @@ export declare const partiesOf: (operation: As2Operation, options: {
|
|
|
176
189
|
readonly serverName?: string | undefined;
|
|
177
190
|
} | undefined;
|
|
178
191
|
readonly proxy?: {
|
|
192
|
+
readonly [x: string]: unknown;
|
|
179
193
|
readonly url: string;
|
|
180
194
|
readonly auth: {
|
|
195
|
+
readonly [x: string]: unknown;
|
|
181
196
|
readonly type: "none";
|
|
182
197
|
} | {
|
|
198
|
+
readonly [x: string]: unknown;
|
|
183
199
|
readonly type: "basic";
|
|
184
200
|
readonly username: string;
|
|
185
201
|
readonly password: Redacted.Redacted<string>;
|
|
186
202
|
};
|
|
187
203
|
readonly tls?: {
|
|
204
|
+
readonly [x: string]: unknown;
|
|
188
205
|
readonly caCertificate?: string | undefined;
|
|
189
206
|
readonly clientCertificate?: string | undefined;
|
|
190
207
|
readonly clientKey?: Redacted.Redacted<string> | undefined;
|
|
@@ -194,22 +211,27 @@ export declare const partiesOf: (operation: As2Operation, options: {
|
|
|
194
211
|
} | undefined;
|
|
195
212
|
};
|
|
196
213
|
identity: {
|
|
214
|
+
readonly [x: string]: unknown;
|
|
197
215
|
readonly as2Id: string;
|
|
198
216
|
readonly keys: {
|
|
217
|
+
readonly [x: string]: unknown;
|
|
199
218
|
readonly certificate: string;
|
|
200
219
|
readonly privateKey: Redacted.Redacted<string>;
|
|
201
220
|
readonly secondaryCertificate?: string | undefined;
|
|
202
221
|
readonly secondaryPrivateKey?: Redacted.Redacted<string> | undefined;
|
|
203
222
|
readonly mode: "combined";
|
|
204
223
|
} | {
|
|
224
|
+
readonly [x: string]: unknown;
|
|
205
225
|
readonly mode: "separate";
|
|
206
226
|
readonly signing: {
|
|
227
|
+
readonly [x: string]: unknown;
|
|
207
228
|
readonly certificate: string;
|
|
208
229
|
readonly privateKey: Redacted.Redacted<string>;
|
|
209
230
|
readonly secondaryCertificate?: string | undefined;
|
|
210
231
|
readonly secondaryPrivateKey?: Redacted.Redacted<string> | undefined;
|
|
211
232
|
};
|
|
212
233
|
readonly encryption: {
|
|
234
|
+
readonly [x: string]: unknown;
|
|
213
235
|
readonly certificate: string;
|
|
214
236
|
readonly privateKey: Redacted.Redacted<string>;
|
|
215
237
|
readonly secondaryCertificate?: string | undefined;
|
|
@@ -221,19 +243,24 @@ export declare const partiesOf: (operation: As2Operation, options: {
|
|
|
221
243
|
/** The platform wants the partner without its inlined identity, and the identity beside it. */
|
|
222
244
|
export declare const wireParties: ({ partner, identity }: Parties) => Effect.Effect<{
|
|
223
245
|
partner: {
|
|
246
|
+
readonly [x: string]: unknown;
|
|
224
247
|
as2Id: string;
|
|
225
248
|
url?: string | undefined;
|
|
226
249
|
certificates: {
|
|
250
|
+
readonly [x: string]: unknown;
|
|
227
251
|
readonly certificate: string;
|
|
228
252
|
readonly secondaryCertificate?: string | undefined;
|
|
229
253
|
readonly mode: "combined";
|
|
230
254
|
} | {
|
|
255
|
+
readonly [x: string]: unknown;
|
|
231
256
|
readonly mode: "separate";
|
|
232
257
|
readonly encryption: {
|
|
258
|
+
readonly [x: string]: unknown;
|
|
233
259
|
readonly certificate: string;
|
|
234
260
|
readonly secondaryCertificate?: string | undefined;
|
|
235
261
|
};
|
|
236
262
|
readonly signing: {
|
|
263
|
+
readonly [x: string]: unknown;
|
|
237
264
|
readonly certificate: string;
|
|
238
265
|
readonly secondaryCertificate?: string | undefined;
|
|
239
266
|
};
|
|
@@ -248,13 +275,16 @@ export declare const wireParties: ({ partner, identity }: Parties) => Effect.Eff
|
|
|
248
275
|
digestAlgorithm?: "sha-1" | "sha-256" | "sha-384" | "sha-512" | undefined;
|
|
249
276
|
encryptionAlgorithm?: "3des" | "aes128-cbc" | "aes128-gcm" | "aes192-cbc" | "aes256-cbc" | "aes256-gcm" | undefined;
|
|
250
277
|
httpAuth?: {
|
|
278
|
+
readonly [x: string]: unknown;
|
|
251
279
|
readonly type: "none";
|
|
252
280
|
} | {
|
|
281
|
+
readonly [x: string]: unknown;
|
|
253
282
|
readonly type: "basic";
|
|
254
283
|
readonly username: string;
|
|
255
284
|
readonly password: string;
|
|
256
285
|
} | undefined;
|
|
257
286
|
tls?: {
|
|
287
|
+
readonly [x: string]: unknown;
|
|
258
288
|
readonly caCertificate?: string | undefined;
|
|
259
289
|
readonly clientCertificate?: string | undefined;
|
|
260
290
|
readonly clientKey?: string | undefined;
|
|
@@ -262,15 +292,19 @@ export declare const wireParties: ({ partner, identity }: Parties) => Effect.Eff
|
|
|
262
292
|
readonly serverName?: string | undefined;
|
|
263
293
|
} | undefined;
|
|
264
294
|
proxy?: {
|
|
295
|
+
readonly [x: string]: unknown;
|
|
265
296
|
readonly url: string;
|
|
266
297
|
readonly auth?: {
|
|
298
|
+
readonly [x: string]: unknown;
|
|
267
299
|
readonly type: "none";
|
|
268
300
|
} | {
|
|
301
|
+
readonly [x: string]: unknown;
|
|
269
302
|
readonly type: "basic";
|
|
270
303
|
readonly username: string;
|
|
271
304
|
readonly password: string;
|
|
272
305
|
} | undefined;
|
|
273
306
|
readonly tls?: {
|
|
307
|
+
readonly [x: string]: unknown;
|
|
274
308
|
readonly caCertificate?: string | undefined;
|
|
275
309
|
readonly clientCertificate?: string | undefined;
|
|
276
310
|
readonly clientKey?: string | undefined;
|
|
@@ -280,22 +314,27 @@ export declare const wireParties: ({ partner, identity }: Parties) => Effect.Eff
|
|
|
280
314
|
} | undefined;
|
|
281
315
|
};
|
|
282
316
|
identity: {
|
|
317
|
+
readonly [x: string]: unknown;
|
|
283
318
|
readonly as2Id: string;
|
|
284
319
|
readonly keys: {
|
|
320
|
+
readonly [x: string]: unknown;
|
|
285
321
|
readonly certificate: string;
|
|
286
322
|
readonly privateKey: string;
|
|
287
323
|
readonly secondaryCertificate?: string | undefined;
|
|
288
324
|
readonly secondaryPrivateKey?: string | undefined;
|
|
289
325
|
readonly mode: "combined";
|
|
290
326
|
} | {
|
|
327
|
+
readonly [x: string]: unknown;
|
|
291
328
|
readonly mode: "separate";
|
|
292
329
|
readonly signing: {
|
|
330
|
+
readonly [x: string]: unknown;
|
|
293
331
|
readonly certificate: string;
|
|
294
332
|
readonly privateKey: string;
|
|
295
333
|
readonly secondaryCertificate?: string | undefined;
|
|
296
334
|
readonly secondaryPrivateKey?: string | undefined;
|
|
297
335
|
};
|
|
298
336
|
readonly encryption: {
|
|
337
|
+
readonly [x: string]: unknown;
|
|
299
338
|
readonly certificate: string;
|
|
300
339
|
readonly privateKey: string;
|
|
301
340
|
readonly secondaryCertificate?: string | undefined;
|
package/dist/As2Wire.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"As2Wire.d.ts","sourceRoot":"","sources":["../src/As2Wire.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAa,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAI9D,eAAO,MAAM,WAAW,aAYtB,CAAC;AAEH,yGAAyG;AACzG,eAAO,MAAM,eAAe,YAAa,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;;CAKlF,CAAC;AAEJ,eAAO,MAAM,QAAQ,YAAa,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,MAAM,KAAG,MAAM,GAAG,SAClB,CAAC;AAE3E,yHAAyH;AACzH,eAAO,MAAM,0BAA0B,QAAkB,CAAC;AAC1D,yGAAyG;AACzG,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,eAAO,MAAM,SAAS,8CAA8C,CAAC;AACrE,eAAO,MAAM,OAAO,6CAAqC,CAAC;AAC1D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;IAuBxB,CAAC;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;EAS5B,CAAC;AACH,eAAO,MAAM,UAAU;;;;;;;;;EASrB,CAAC;AACH,eAAO,MAAM,aAAa;;;;;;;;EAQxB,CAAC;AACH,eAAO,MAAM,YAAY;;;;EAIvB,CAAC;AACH,eAAO,MAAM,WAAW;;;;;EAEtB,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;EAMnB,CAAC;AAEH,eAAO,MAAM,OAAO,UAAW,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,6CACI,CAAC;AAEpE,eAAO,MAAM,QAAQ,UAAW,UAAU,WACwC,CAAC;AACnF,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,UAAyD,CAAC;AACpG,eAAO,MAAM,OAAO,UAAW,UAAU,GAAG,MAAM,KAAG,UACgB,CAAC;AAEtE,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAE3D,eAAO,MAAM,cAAc,UAAW;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAAE,aAG3G,CAAC;AAEF,eAAO,MAAM,UAAU,QAAS;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,aAGjH,CAAC;AAEF,+GAA+G;AAC/G,eAAO,MAAM,SAAS,0BAA2B,OAAO,KAAG,KAAK,CAAC,MAAM,CASQ,CAAC;AAEhF,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;CACxC;AAED,eAAO,MAAM,SAAS,cACT,YAAY,WACd;IAAE,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAA;CAAE
|
|
1
|
+
{"version":3,"file":"As2Wire.d.ts","sourceRoot":"","sources":["../src/As2Wire.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAa,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAI9D,eAAO,MAAM,WAAW,aAYtB,CAAC;AAEH,yGAAyG;AACzG,eAAO,MAAM,eAAe,YAAa,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;;CAKlF,CAAC;AAEJ,eAAO,MAAM,QAAQ,YAAa,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,MAAM,KAAG,MAAM,GAAG,SAClB,CAAC;AAE3E,yHAAyH;AACzH,eAAO,MAAM,0BAA0B,QAAkB,CAAC;AAC1D,yGAAyG;AACzG,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,eAAO,MAAM,SAAS,8CAA8C,CAAC;AACrE,eAAO,MAAM,OAAO,6CAAqC,CAAC;AAC1D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;IAuBxB,CAAC;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;EAS5B,CAAC;AACH,eAAO,MAAM,UAAU;;;;;;;;;EASrB,CAAC;AACH,eAAO,MAAM,aAAa;;;;;;;;EAQxB,CAAC;AACH,eAAO,MAAM,YAAY;;;;EAIvB,CAAC;AACH,eAAO,MAAM,WAAW;;;;;EAEtB,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;EAMnB,CAAC;AAEH,eAAO,MAAM,OAAO,UAAW,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,6CACI,CAAC;AAEpE,eAAO,MAAM,QAAQ,UAAW,UAAU,WACwC,CAAC;AACnF,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,UAAyD,CAAC;AACpG,eAAO,MAAM,OAAO,UAAW,UAAU,GAAG,MAAM,KAAG,UACgB,CAAC;AAEtE,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAE3D,eAAO,MAAM,cAAc,UAAW;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAAE,aAG3G,CAAC;AAEF,eAAO,MAAM,UAAU,QAAS;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,aAGjH,CAAC;AAEF,+GAA+G;AAC/G,eAAO,MAAM,SAAS,0BAA2B,OAAO,KAAG,KAAK,CAAC,MAAM,CASQ,CAAC;AAEhF,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;CACxC;AAED,eAAO,MAAM,SAAS,cACT,YAAY,WACd;IAAE,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAcpG,CAAC;AAEL,+FAA+F;AAC/F,eAAO,MAAM,WAAW,0BAA2B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAKtD,CAAC;AAEL,eAAO,MAAM,SAAS,UAAW,MAAM,KAAG,OAIzC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAGjG,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,QAMxC,CAAC;AAGF,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,QAItC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAE7D,eAAO,MAAM,OAAO,WAAY,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAG,SAIpE,CAAC;AAEF,6GAA6G;AAC7G,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,kBAAkB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAMhF,CAAC;AAEJ,eAAO,MAAM,WAAW,UAAW,eAAe,CAAC,eAAe,GAAG,QAAQ,KAAG,OACI,CAAC;AAErF,qHAAqH;AACrH,eAAO,MAAM,KAAK,GAAI,CAAC,WAAW,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,WAAW,QAAQ;;;;;;;;;CAK6B,CAAC;AAE7G,qGAAqG;AACrG,eAAO,MAAM,aAAa,UAAW,KAAK,KAAG,MAQ5C,CAAC;AAEF,eAAO,MAAM,cAAc,UAAkB,CAAC;AAC9C,eAAO,MAAM,cAAc,UAAkB,CAAC;AAE9C,8HAA8H;AAC9H,eAAO,MAAM,kBAAkB,UAAW,QAAQ,KAAG,kBAAkB,CAAC,kBAOvE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Config, Effect } from 'effect';
|
|
2
|
+
export declare const databaseTunnelUrl: (key: string) => Effect.Effect<string, Config.ConfigError | Error, never>;
|
|
3
|
+
/**
|
|
4
|
+
* Current runtime authorization for a PostgreSQL tunnel; never cache its token. No database client is loaded.
|
|
5
|
+
* A token provider that publishes no usable token within 10 s rejects with `ResourcesUnavailableError`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getDatabaseTunnelAuthorization(key: string): Promise<{
|
|
8
|
+
url: string;
|
|
9
|
+
token: string;
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=DatabaseTunnelAuthorization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseTunnelAuthorization.d.ts","sourceRoot":"","sources":["../src/DatabaseTunnelAuthorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAA4B,MAAM,EAAQ,MAAM,QAAQ,CAAC;AAQ/E,eAAO,MAAM,iBAAiB,QAAS,MAAM,6DASzC,CAAC;AAKL;;;GAGG;AACH,wBAAsB,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBzG"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Cause, Config, ConfigProvider, Duration, Effect, Exit } from 'effect';
|
|
2
|
+
import { ResourcesUnavailableError } from './ResourcesErrors.js';
|
|
3
|
+
import { makeRuntimeTokens, TOKEN_NOT_PUBLISHED } from './ResourcesToken.js';
|
|
4
|
+
// pg's connect timeout is 10 s, so a token wait ends with the connection attempt, as `./postgresql` bounds it.
|
|
5
|
+
const TOKEN_WAIT = Duration.seconds(10);
|
|
6
|
+
// The tunnel router treats literal dots as a file extension; encode them before the key's path-component encoding.
|
|
7
|
+
export const databaseTunnelUrl = (key) => Effect.gen(function* () {
|
|
8
|
+
const apiUrl = yield* Config.NonEmptyString('UNNBOUND_API_URL');
|
|
9
|
+
const endpoint = new URL(`/api/runtime/databases/${encodeURIComponent(key.replaceAll('.', '%2E'))}/tunnel`, apiUrl);
|
|
10
|
+
if (endpoint.protocol !== 'https:' && endpoint.protocol !== 'http:') {
|
|
11
|
+
return yield* Effect.fail(new Error('Temper API URL must use HTTP or HTTPS.'));
|
|
12
|
+
}
|
|
13
|
+
endpoint.protocol = endpoint.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
14
|
+
return endpoint.href;
|
|
15
|
+
});
|
|
16
|
+
const unavailable = () => new ResourcesUnavailableError({ message: `${TOKEN_NOT_PUBLISHED} No usable token within 10 s.` });
|
|
17
|
+
/**
|
|
18
|
+
* Current runtime authorization for a PostgreSQL tunnel; never cache its token. No database client is loaded.
|
|
19
|
+
* A token provider that publishes no usable token within 10 s rejects with `ResourcesUnavailableError`.
|
|
20
|
+
*/
|
|
21
|
+
export async function getDatabaseTunnelAuthorization(key) {
|
|
22
|
+
const authorization = Effect.gen(function* () {
|
|
23
|
+
const url = yield* databaseTunnelUrl(key).pipe(
|
|
24
|
+
// The legacy message for a missing API URL, instead of Effect's ConfigError.
|
|
25
|
+
Effect.catchTag('ConfigError', () => Effect.fail(new Error('UNNBOUND_API_URL is not defined.'))));
|
|
26
|
+
const tokens = yield* makeRuntimeTokens;
|
|
27
|
+
const token = yield* tokens.current.pipe(Effect.timeoutOrElse({ duration: TOKEN_WAIT, orElse: () => Effect.fail(unavailable()) }), Effect.catchIf((error) => error._tag === 'ResourcesUnauthorizedError' && error.message === TOKEN_NOT_PUBLISHED, () => Effect.fail(unavailable())));
|
|
28
|
+
return { url, token };
|
|
29
|
+
});
|
|
30
|
+
const exit = await Effect.runPromiseExit(authorization.pipe(Effect.provide(ConfigProvider.layer(ConfigProvider.fromEnvRecord(process.env, { preserveEmptyStrings: true })))));
|
|
31
|
+
if (Exit.isSuccess(exit))
|
|
32
|
+
return exit.value;
|
|
33
|
+
throw Cause.squash(exit.cause);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=DatabaseTunnelAuthorization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseTunnelAuthorization.js","sourceRoot":"","sources":["../src/DatabaseTunnelAuthorization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A read drops an expired entry; a write sweeps all expired entries at most once per sweep interval. At `maxEntries`, a
|
|
3
|
+
* write evicts one entry in this order: an expired entry, the least recently used entry outside its stale window, then
|
|
4
|
+
* the least recently used entry inside it. Losing a fresh entry costs one re-fetch; losing a stale-window entry during
|
|
5
|
+
* an outage fails the read that needed it.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ExpiringMap<V> {
|
|
8
|
+
private readonly maxEntries;
|
|
9
|
+
private readonly sweepIntervalMs;
|
|
10
|
+
private readonly entries;
|
|
11
|
+
private nextSweepAt;
|
|
12
|
+
constructor(maxEntries: number, sweepIntervalMs?: number);
|
|
13
|
+
get(key: string, now: number): V | undefined;
|
|
14
|
+
peek(key: string): V | undefined;
|
|
15
|
+
extend(key: string, until: number, now: number): void;
|
|
16
|
+
set(key: string, value: V, expiresAt: number, now: number, staleFrom?: number): void;
|
|
17
|
+
delete(key: string): void;
|
|
18
|
+
get size(): number;
|
|
19
|
+
private evictionCandidate;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=ExpiringMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpiringMap.d.ts","sourceRoot":"","sources":["../src/ExpiringMap.ts"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,qBAAa,WAAW,CAAC,CAAC;IAKtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IALlC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,WAAW,CAAK;IAExB,YACmB,UAAU,EAAE,MAAM,EAClB,eAAe,SAA4B,EAC1D;IAEJ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAQ3C;IAGD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAE/B;IAGD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAKpD;IAGD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,SAAY,GAAG,IAAI,CActF;IAED,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAExB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAGD,OAAO,CAAC,iBAAiB;CAU1B"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// A port of `@ontemper/resources` `expiring-map.ts`, so the promise `env` evicts as the legacy resolver does.
|
|
2
|
+
const DEFAULT_SWEEP_INTERVAL_MS = 60_000;
|
|
3
|
+
/**
|
|
4
|
+
* A read drops an expired entry; a write sweeps all expired entries at most once per sweep interval. At `maxEntries`, a
|
|
5
|
+
* write evicts one entry in this order: an expired entry, the least recently used entry outside its stale window, then
|
|
6
|
+
* the least recently used entry inside it. Losing a fresh entry costs one re-fetch; losing a stale-window entry during
|
|
7
|
+
* an outage fails the read that needed it.
|
|
8
|
+
*/
|
|
9
|
+
export class ExpiringMap {
|
|
10
|
+
maxEntries;
|
|
11
|
+
sweepIntervalMs;
|
|
12
|
+
entries = new Map();
|
|
13
|
+
nextSweepAt = 0;
|
|
14
|
+
constructor(maxEntries, sweepIntervalMs = DEFAULT_SWEEP_INTERVAL_MS) {
|
|
15
|
+
this.maxEntries = maxEntries;
|
|
16
|
+
this.sweepIntervalMs = sweepIntervalMs;
|
|
17
|
+
}
|
|
18
|
+
get(key, now) {
|
|
19
|
+
const entry = this.entries.get(key);
|
|
20
|
+
if (!entry)
|
|
21
|
+
return undefined;
|
|
22
|
+
this.entries.delete(key);
|
|
23
|
+
if (entry.expiresAt <= now)
|
|
24
|
+
return undefined;
|
|
25
|
+
// Map iteration follows insertion order, so re-inserting a hit makes the first key the least recently used.
|
|
26
|
+
this.entries.set(key, entry);
|
|
27
|
+
return entry.value;
|
|
28
|
+
}
|
|
29
|
+
// The value without a recency touch or an expiry check, for a caller that only compares it before deleting it.
|
|
30
|
+
peek(key) {
|
|
31
|
+
return this.entries.get(key)?.value;
|
|
32
|
+
}
|
|
33
|
+
// Keeps a live entry that is never served stale at least until `until`, without a recency touch; never shortens it.
|
|
34
|
+
extend(key, until, now) {
|
|
35
|
+
const entry = this.entries.get(key);
|
|
36
|
+
if (!entry || entry.expiresAt <= now || until <= entry.expiresAt)
|
|
37
|
+
return;
|
|
38
|
+
entry.expiresAt = until;
|
|
39
|
+
entry.staleFrom = until;
|
|
40
|
+
}
|
|
41
|
+
// `staleFrom` marks when the entry enters its stale window; omit it for an entry that is never served stale.
|
|
42
|
+
set(key, value, expiresAt, now, staleFrom = expiresAt) {
|
|
43
|
+
this.entries.delete(key);
|
|
44
|
+
if (now >= this.nextSweepAt) {
|
|
45
|
+
for (const [candidate, entry] of this.entries) {
|
|
46
|
+
if (entry.expiresAt <= now)
|
|
47
|
+
this.entries.delete(candidate);
|
|
48
|
+
}
|
|
49
|
+
this.nextSweepAt = now + this.sweepIntervalMs;
|
|
50
|
+
}
|
|
51
|
+
while (this.entries.size >= this.maxEntries) {
|
|
52
|
+
const victim = this.evictionCandidate(now);
|
|
53
|
+
if (victim === undefined)
|
|
54
|
+
break;
|
|
55
|
+
this.entries.delete(victim);
|
|
56
|
+
}
|
|
57
|
+
this.entries.set(key, { value, expiresAt, staleFrom });
|
|
58
|
+
}
|
|
59
|
+
delete(key) {
|
|
60
|
+
this.entries.delete(key);
|
|
61
|
+
}
|
|
62
|
+
get size() {
|
|
63
|
+
return this.entries.size;
|
|
64
|
+
}
|
|
65
|
+
// One pass in least-recently-used order; the scan runs only when the map is full.
|
|
66
|
+
evictionCandidate(now) {
|
|
67
|
+
let outsideStaleWindow;
|
|
68
|
+
let first;
|
|
69
|
+
for (const [candidate, entry] of this.entries) {
|
|
70
|
+
if (entry.expiresAt <= now)
|
|
71
|
+
return candidate;
|
|
72
|
+
first ??= candidate;
|
|
73
|
+
if (outsideStaleWindow === undefined && now < entry.staleFrom)
|
|
74
|
+
outsideStaleWindow = candidate;
|
|
75
|
+
}
|
|
76
|
+
return outsideStaleWindow ?? first;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=ExpiringMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpiringMap.js","sourceRoot":"","sources":["../src/ExpiringMap.ts"],"names":[],"mappings":"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"}
|