@ontemper/sdk 0.7.1-postgresql.2 → 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.
Files changed (74) hide show
  1. package/README.md +46 -2
  2. package/dist/As2Resource.d.ts +431 -76
  3. package/dist/As2Resource.d.ts.map +1 -1
  4. package/dist/As2Resource.js +31 -30
  5. package/dist/As2Resource.js.map +1 -1
  6. package/dist/As2Transport.d.ts.map +1 -1
  7. package/dist/As2Transport.js +3 -1
  8. package/dist/As2Transport.js.map +1 -1
  9. package/dist/As2Wire.d.ts +39 -0
  10. package/dist/As2Wire.d.ts.map +1 -1
  11. package/dist/DatabaseTunnelAuthorization.d.ts +11 -0
  12. package/dist/DatabaseTunnelAuthorization.d.ts.map +1 -0
  13. package/dist/DatabaseTunnelAuthorization.js +35 -0
  14. package/dist/DatabaseTunnelAuthorization.js.map +1 -0
  15. package/dist/ExpiringMap.d.ts +21 -0
  16. package/dist/ExpiringMap.d.ts.map +1 -0
  17. package/dist/ExpiringMap.js +79 -0
  18. package/dist/ExpiringMap.js.map +1 -0
  19. package/dist/HttpApiResource.d.ts +2904 -177
  20. package/dist/HttpApiResource.d.ts.map +1 -1
  21. package/dist/HttpApiResource.js +81 -59
  22. package/dist/HttpApiResource.js.map +1 -1
  23. package/dist/Kafka.d.ts +89 -0
  24. package/dist/Kafka.d.ts.map +1 -0
  25. package/dist/Kafka.js +297 -0
  26. package/dist/Kafka.js.map +1 -0
  27. package/dist/Manifest.d.ts +1 -1
  28. package/dist/Manifest.js +1 -1
  29. package/dist/PostgreSql.d.ts.map +1 -1
  30. package/dist/PostgreSql.js +2 -11
  31. package/dist/PostgreSql.js.map +1 -1
  32. package/dist/PostgreSqlPool.d.ts +1 -39
  33. package/dist/PostgreSqlPool.d.ts.map +1 -1
  34. package/dist/PostgreSqlPool.js +2 -22
  35. package/dist/PostgreSqlPool.js.map +1 -1
  36. package/dist/Redaction.d.ts +2 -0
  37. package/dist/Redaction.d.ts.map +1 -1
  38. package/dist/Redaction.js +16 -4
  39. package/dist/Redaction.js.map +1 -1
  40. package/dist/ResourceRecords.d.ts +1086 -0
  41. package/dist/ResourceRecords.d.ts.map +1 -0
  42. package/dist/ResourceRecords.js +303 -0
  43. package/dist/ResourceRecords.js.map +1 -0
  44. package/dist/Resources.d.ts +13 -3
  45. package/dist/Resources.d.ts.map +1 -1
  46. package/dist/Resources.js +11 -3
  47. package/dist/Resources.js.map +1 -1
  48. package/dist/ResourcesCache.d.ts +33 -0
  49. package/dist/ResourcesCache.d.ts.map +1 -0
  50. package/dist/ResourcesCache.js +205 -0
  51. package/dist/ResourcesCache.js.map +1 -0
  52. package/dist/ResourcesEnv.d.ts +81 -0
  53. package/dist/ResourcesEnv.d.ts.map +1 -0
  54. package/dist/ResourcesEnv.js +104 -0
  55. package/dist/ResourcesEnv.js.map +1 -0
  56. package/dist/ResourcesErrors.d.ts +5 -1
  57. package/dist/ResourcesErrors.d.ts.map +1 -1
  58. package/dist/ResourcesErrors.js +5 -2
  59. package/dist/ResourcesErrors.js.map +1 -1
  60. package/dist/ResourcesToken.d.ts +9 -0
  61. package/dist/ResourcesToken.d.ts.map +1 -1
  62. package/dist/ResourcesToken.js +20 -7
  63. package/dist/ResourcesToken.js.map +1 -1
  64. package/dist/RuntimeResources.d.ts +18 -3
  65. package/dist/RuntimeResources.d.ts.map +1 -1
  66. package/dist/RuntimeResources.js +53 -29
  67. package/dist/RuntimeResources.js.map +1 -1
  68. package/dist/TransportResource.d.ts +1 -32
  69. package/dist/TransportResource.d.ts.map +1 -1
  70. package/dist/TransportResource.js +1 -19
  71. package/dist/TransportResource.js.map +1 -1
  72. package/dist/Workflow.js +2 -2
  73. package/dist/Workflow.js.map +1 -1
  74. package/package.json +14 -2
package/dist/Kafka.js ADDED
@@ -0,0 +1,297 @@
1
+ import { constants, createPrivateKey, createSign, randomUUID } from 'node:crypto';
2
+ import { Option, Redacted, Schema } from 'effect';
3
+ export class OptionalKafkaDependencyError extends Error {
4
+ constructor(packageName) {
5
+ super(`Kafka authentication requires the optional package ${packageName}.`);
6
+ this.name = 'OptionalKafkaDependencyError';
7
+ }
8
+ }
9
+ export class UnsupportedKafkaAuthError extends Error {
10
+ constructor(field) {
11
+ super(`Kafka record uses an unsupported ${field}. Upgrade @ontemper/sdk to support it.`);
12
+ this.name = 'UnsupportedKafkaAuthError';
13
+ }
14
+ }
15
+ // STS credentials are reused until this long before they expire.
16
+ const ASSUMED_ROLE_REFRESH_MARGIN_MS = 60_000;
17
+ const OAUTH_TOKEN_REQUEST_TIMEOUT_MS = 15_000;
18
+ const base64Url = (value) => Buffer.from(value).toString('base64url');
19
+ const formEncode = (value) => encodeURIComponent(value).replace(/%20/g, '+');
20
+ function privateKeyAssertion(tokenRequest, now) {
21
+ const clientAuthentication = tokenRequest.clientAuthentication;
22
+ if (clientAuthentication.type !== 'private_key_jwt') {
23
+ throw new UnsupportedKafkaAuthError('auth.tokenRequest.clientAuthentication');
24
+ }
25
+ const header = {
26
+ alg: clientAuthentication.algorithm,
27
+ typ: 'JWT',
28
+ };
29
+ if (clientAuthentication.keyId !== undefined) {
30
+ header.kid = clientAuthentication.keyId;
31
+ }
32
+ const issuedAt = Math.floor(now / 1000);
33
+ const claims = {
34
+ iss: tokenRequest.clientId,
35
+ sub: tokenRequest.clientId,
36
+ aud: tokenRequest.tokenUrl,
37
+ exp: issuedAt + 60,
38
+ iat: issuedAt,
39
+ jti: randomUUID(),
40
+ };
41
+ const signed = `${base64Url(JSON.stringify(header))}.${base64Url(JSON.stringify(claims))}`;
42
+ const signature = createSign('SHA256');
43
+ signature.update(signed);
44
+ signature.end();
45
+ const value = clientAuthentication.algorithm === 'ES256'
46
+ ? signature.sign({ key: Redacted.value(clientAuthentication.privateKey), dsaEncoding: 'ieee-p1363' })
47
+ : clientAuthentication.algorithm === 'PS256'
48
+ ? signature.sign({
49
+ key: Redacted.value(clientAuthentication.privateKey),
50
+ padding: constants.RSA_PKCS1_PSS_PADDING,
51
+ saltLength: constants.RSA_PSS_SALTLEN_DIGEST,
52
+ })
53
+ : signature.sign(Redacted.value(clientAuthentication.privateKey));
54
+ return `${signed}.${base64Url(value)}`;
55
+ }
56
+ function oauthBearerProvider(tokenRequest, options) {
57
+ const fetchImpl = options.fetch ?? globalThis.fetch;
58
+ const now = options.now ?? Date.now;
59
+ let cached;
60
+ // Concurrent broker authentications share one in-flight token request.
61
+ let pendingFetch = null;
62
+ const fetchToken = async () => {
63
+ const clientAuthentication = tokenRequest.clientAuthentication;
64
+ if (!['none', 'basic', 'body', 'query', 'private_key_jwt'].includes(clientAuthentication.type)) {
65
+ throw new UnsupportedKafkaAuthError('auth.tokenRequest.clientAuthentication');
66
+ }
67
+ const parameters = new URLSearchParams({ ...tokenRequest.extraParams, grant_type: 'client_credentials' });
68
+ if (tokenRequest.scope !== undefined)
69
+ parameters.set('scope', tokenRequest.scope);
70
+ if (tokenRequest.audience !== undefined)
71
+ parameters.set('audience', tokenRequest.audience);
72
+ const headers = {};
73
+ const tokenUrl = new URL(tokenRequest.tokenUrl);
74
+ switch (clientAuthentication.type) {
75
+ case 'none':
76
+ parameters.set('client_id', tokenRequest.clientId);
77
+ break;
78
+ case 'basic':
79
+ headers.Authorization = `Basic ${Buffer.from(`${formEncode(tokenRequest.clientId)}:${formEncode(Redacted.value(clientAuthentication.clientSecret))}`).toString('base64')}`;
80
+ break;
81
+ case 'body':
82
+ parameters.set('client_id', tokenRequest.clientId);
83
+ parameters.set('client_secret', Redacted.value(clientAuthentication.clientSecret));
84
+ break;
85
+ case 'query':
86
+ tokenUrl.searchParams.set('client_id', tokenRequest.clientId);
87
+ tokenUrl.searchParams.set('client_secret', Redacted.value(clientAuthentication.clientSecret));
88
+ break;
89
+ case 'private_key_jwt':
90
+ parameters.set('client_id', tokenRequest.clientId);
91
+ parameters.set('client_assertion_type', 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer');
92
+ parameters.set('client_assertion', privateKeyAssertion(tokenRequest, now()));
93
+ break;
94
+ }
95
+ const isJson = tokenRequest.tokenRequestFormat === 'json';
96
+ headers['Content-Type'] = isJson ? 'application/json' : 'application/x-www-form-urlencoded';
97
+ const response = await fetchImpl(tokenUrl, {
98
+ method: 'POST',
99
+ headers,
100
+ body: isJson ? JSON.stringify(Object.fromEntries(parameters)) : parameters,
101
+ redirect: 'error',
102
+ signal: AbortSignal.timeout(OAUTH_TOKEN_REQUEST_TIMEOUT_MS),
103
+ });
104
+ if (!response.ok)
105
+ throw new Error(`OAuth token request failed with status ${response.status}.`);
106
+ const body = await response.json();
107
+ const parsed = decodeTokenResponse(body);
108
+ if (Option.isNone(parsed))
109
+ throw new Error('OAuth token response did not include an access token.');
110
+ const accessToken = parsed.value.access_token;
111
+ const expiresIn = Option.getOrUndefined(decodeExpiresIn(parsed.value.expires_in));
112
+ // Without a stated lifetime the token's expiry is unknown, so each authentication requests a fresh one.
113
+ cached =
114
+ expiresIn === undefined
115
+ ? undefined
116
+ : { value: accessToken, expiresAt: now() + Math.max(0, expiresIn - 30) * 1000 };
117
+ return { value: accessToken };
118
+ };
119
+ return () => {
120
+ if (cached !== undefined && cached.expiresAt > now())
121
+ return Promise.resolve({ value: cached.value });
122
+ if (pendingFetch !== null)
123
+ return pendingFetch;
124
+ const request = (async () => {
125
+ try {
126
+ return await fetchToken();
127
+ }
128
+ finally {
129
+ pendingFetch = null;
130
+ }
131
+ })();
132
+ pendingFetch = request;
133
+ return request;
134
+ };
135
+ }
136
+ const decodeTokenResponse = Schema.decodeUnknownOption(Schema.Struct({
137
+ access_token: Schema.String.check(Schema.isMinLength(1)),
138
+ expires_in: Schema.optionalKey(Schema.Unknown),
139
+ }));
140
+ // A missing, non-numeric, or non-positive expires_in reads as absent, so the token is not cached.
141
+ const decodeExpiresIn = Schema.decodeUnknownOption(Schema.Finite.check(Schema.isGreaterThan(0)));
142
+ function mskOAuthBearerProvider(resource, options) {
143
+ const auth = resource.auth;
144
+ if (auth.type !== 'aws_msk_iam')
145
+ throw new UnsupportedKafkaAuthError('auth.type');
146
+ const loadMskSigner = options.loadMskSigner ??
147
+ (async () => {
148
+ // The optional peer is absent in workflows that do not use MSK IAM, so loading it must remain lazy.
149
+ try {
150
+ return await import('aws-msk-iam-sasl-signer-js');
151
+ }
152
+ catch (error) {
153
+ if (error instanceof Error && 'code' in error && error.code === 'ERR_MODULE_NOT_FOUND') {
154
+ throw new OptionalKafkaDependencyError('aws-msk-iam-sasl-signer-js');
155
+ }
156
+ throw error;
157
+ }
158
+ });
159
+ const loadCredentialProviders = options.loadCredentialProviders ??
160
+ (async () => {
161
+ // The optional peer is loaded only when a record asks the client to assume an AWS role.
162
+ try {
163
+ return await import('@aws-sdk/credential-providers');
164
+ }
165
+ catch (error) {
166
+ if (error instanceof Error && 'code' in error && error.code === 'ERR_MODULE_NOT_FOUND') {
167
+ throw new OptionalKafkaDependencyError('@aws-sdk/credential-providers');
168
+ }
169
+ throw error;
170
+ }
171
+ });
172
+ const now = options.now ?? Date.now;
173
+ // One STS provider per config, and its credentials reused until shortly before expiry, so each broker
174
+ // authentication does not send its own AssumeRole call.
175
+ let assumeRoleProvider;
176
+ let assumedCredentials;
177
+ const loadAssumeRoleProvider = async (params) => {
178
+ try {
179
+ return (await loadCredentialProviders()).fromTemporaryCredentials({
180
+ params,
181
+ clientConfig: { region: auth.region },
182
+ });
183
+ }
184
+ catch (error) {
185
+ // A failed load is retried on the next authentication instead of caching the rejection.
186
+ assumeRoleProvider = undefined;
187
+ throw error;
188
+ }
189
+ };
190
+ const assumedRoleCredentials = async (params) => {
191
+ if (assumedCredentials !== undefined && assumedCredentials.refreshAt > now())
192
+ return assumedCredentials.credentials;
193
+ assumeRoleProvider ??= loadAssumeRoleProvider(params);
194
+ const { expiration, ...credentials } = await (await assumeRoleProvider)();
195
+ assumedCredentials =
196
+ expiration === undefined
197
+ ? undefined
198
+ : { credentials, refreshAt: expiration.getTime() - ASSUMED_ROLE_REFRESH_MARGIN_MS };
199
+ return credentials;
200
+ };
201
+ return async () => {
202
+ const signer = await loadMskSigner();
203
+ const awsAuth = auth.awsAuth;
204
+ if (!['access_key', 'assume_role', 'ambient'].includes(awsAuth.type)) {
205
+ throw new UnsupportedKafkaAuthError('auth.awsAuth');
206
+ }
207
+ const token = awsAuth.type === 'access_key'
208
+ ? await signer.generateAuthTokenFromCredentialsProvider({
209
+ region: auth.region,
210
+ awsCredentialsProvider: async () => {
211
+ const creds = {
212
+ accessKeyId: awsAuth.accessKeyId,
213
+ secretAccessKey: Redacted.value(awsAuth.secretAccessKey),
214
+ };
215
+ if (awsAuth.sessionToken !== undefined)
216
+ creds.sessionToken = Redacted.value(awsAuth.sessionToken);
217
+ return creds;
218
+ },
219
+ })
220
+ : awsAuth.type === 'assume_role'
221
+ ? await signer.generateAuthTokenFromCredentialsProvider({
222
+ region: auth.region,
223
+ awsCredentialsProvider: () => {
224
+ const params = { RoleArn: awsAuth.roleArn, RoleSessionName: 'temper-kafka' };
225
+ if (awsAuth.externalId !== undefined)
226
+ params.ExternalId = awsAuth.externalId;
227
+ return assumedRoleCredentials(params);
228
+ },
229
+ })
230
+ : await signer.generateAuthToken({ region: auth.region });
231
+ return { value: token.token };
232
+ };
233
+ }
234
+ // A bad endpoint or key would otherwise surface only at the first broker authentication, deep inside KafkaJS.
235
+ function assertTokenRequestUsable(tokenRequest) {
236
+ const tokenUrl = URL.canParse(tokenRequest.tokenUrl) ? new URL(tokenRequest.tokenUrl) : undefined;
237
+ if (tokenUrl?.protocol !== 'https:') {
238
+ throw new Error('Kafka OAuth auth.tokenRequest.tokenUrl must be an https URL.');
239
+ }
240
+ const clientAuthentication = tokenRequest.clientAuthentication;
241
+ if (clientAuthentication.type !== 'private_key_jwt')
242
+ return;
243
+ try {
244
+ createPrivateKey(Redacted.value(clientAuthentication.privateKey));
245
+ }
246
+ catch {
247
+ throw new Error('Kafka OAuth auth.tokenRequest.clientAuthentication.privateKey is not a valid PEM private key.');
248
+ }
249
+ }
250
+ /** Maps a resolved Kafka record to the options accepted by `new Kafka(...)`. */
251
+ export function kafkaConfig(resource, options = {}) {
252
+ if (resource.brokers.some((broker) => broker.startsWith('['))) {
253
+ throw new Error('KafkaJS does not support bracketed IPv6 bootstrap broker addresses; configure a hostname or IPv4 address.');
254
+ }
255
+ let ssl;
256
+ if (resource.tls !== undefined) {
257
+ const tlsOptions = {};
258
+ if (resource.tls.caCertificate !== undefined)
259
+ tlsOptions.ca = resource.tls.caCertificate;
260
+ if (resource.tls.clientCertificate !== undefined)
261
+ tlsOptions.cert = resource.tls.clientCertificate;
262
+ if (resource.tls.clientKey !== undefined)
263
+ tlsOptions.key = Redacted.value(resource.tls.clientKey);
264
+ if (resource.tls.clientKeyPassphrase !== undefined) {
265
+ tlsOptions.passphrase = Redacted.value(resource.tls.clientKeyPassphrase);
266
+ }
267
+ if (resource.tls.serverName !== undefined)
268
+ tlsOptions.servername = resource.tls.serverName;
269
+ ssl = Object.keys(tlsOptions).length === 0 ? true : tlsOptions;
270
+ }
271
+ const auth = resource.auth;
272
+ if (!['none', 'sasl_plain', 'sasl_scram', 'oauthbearer', 'aws_msk_iam'].includes(auth.type)) {
273
+ throw new UnsupportedKafkaAuthError('auth.type');
274
+ }
275
+ if (auth.type === 'oauthbearer')
276
+ assertTokenRequestUsable(auth.tokenRequest);
277
+ const sasl = auth.type === 'none'
278
+ ? undefined
279
+ : auth.type === 'sasl_plain'
280
+ ? { mechanism: 'plain', username: auth.username, password: Redacted.value(auth.password) }
281
+ : auth.type === 'sasl_scram'
282
+ ? auth.mechanism === 'SCRAM-SHA-256'
283
+ ? { mechanism: 'scram-sha-256', username: auth.username, password: Redacted.value(auth.password) }
284
+ : { mechanism: 'scram-sha-512', username: auth.username, password: Redacted.value(auth.password) }
285
+ : auth.type === 'oauthbearer'
286
+ ? { mechanism: 'oauthbearer', oauthBearerProvider: oauthBearerProvider(auth.tokenRequest, options) }
287
+ : { mechanism: 'oauthbearer', oauthBearerProvider: mskOAuthBearerProvider(resource, options) };
288
+ const config = { brokers: [...resource.brokers] };
289
+ if (resource.clientId !== undefined)
290
+ config.clientId = resource.clientId;
291
+ if (ssl !== undefined)
292
+ config.ssl = ssl;
293
+ if (sasl !== undefined)
294
+ config.sasl = sasl;
295
+ return config;
296
+ }
297
+ //# sourceMappingURL=Kafka.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Kafka.js","sourceRoot":"","sources":["../src/Kafka.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { HttpApi, type HttpApiGroup } from 'effect/http-api';
2
2
  import { type WorkflowManifest } from './Contract/Manifest.js';
3
- export declare const SDK_VERSION = "0.7.1-postgresql.2";
3
+ export declare const SDK_VERSION = "0.7.1-postgresql.3";
4
4
  export declare const RUNTIME_API_VERSION = 1;
5
5
  /** The route the SDK serves for platform probes; an API declaring `GET` on it collides with it on every request. */
6
6
  export declare const HEALTHCHECK_PATH = "/healthcheck";
package/dist/Manifest.js CHANGED
@@ -5,7 +5,7 @@ import { declarationOf } from './Resource.js';
5
5
  import { Trigger } from './Trigger.js';
6
6
  const decodeTrigger = Schema.decodeUnknownSync(TriggerMetadata, { onExcessProperty: 'error' });
7
7
  const identityOf = (resource) => `${resource.kind}:${resource.kind === 'resourceType' ? resource.type : resource.key}`;
8
- export const SDK_VERSION = '0.7.1-postgresql.2';
8
+ export const SDK_VERSION = '0.7.1-postgresql.3';
9
9
  export const RUNTIME_API_VERSION = 1;
10
10
  /** The route the SDK serves for platform probes; an API declaring `GET` on it collides with it on every request. */
11
11
  export const HEALTHCHECK_PATH = '/healthcheck';
@@ -1 +1 @@
1
- {"version":3,"file":"PostgreSql.d.ts","sourceRoot":"","sources":["../src/PostgreSql.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAA2C,MAAM,EAAuB,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE1G,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAGzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,0GAA0G;AAC1G,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,oBAAoB,CAAC;AAiDnE;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAS,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAC7C,CAAC;AAS5D;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAIxE"}
1
+ {"version":3,"file":"PostgreSql.d.ts","sourceRoot":"","sources":["../src/PostgreSql.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAA2C,MAAM,EAAuB,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE1G,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAIzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,0GAA0G;AAC1G,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,oBAAoB,CAAC;AAqCnE;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAS,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAC7C,CAAC;AAS5D;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAIxE"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { Cause, Config, ConfigProvider, Duration, Effect, Exit, Layer, Option } from 'effect';
6
6
  import { FetchHttpClient, HttpClient } from 'effect/http';
7
+ import { databaseTunnelUrl } from './DatabaseTunnelAuthorization.js';
7
8
  import { loggerLayer, writeStdoutLine } from './Logger.js';
8
9
  import { endPool, makeResourcePool, tunnelEnabled } from './PostgreSqlPool.js';
9
10
  import { makeRuntimeResourceClient } from './RuntimeResources.js';
@@ -11,16 +12,6 @@ export { PostgresqlResource } from './PostgreSqlPool.js';
11
12
  // A token in its refresh window waits for the provider's next publish. pg's connect timeout is 10 s, so the wait
12
13
  // ends with the connection attempt instead of holding the process open.
13
14
  const TUNNEL_AUTHORIZATION_TIMEOUT = Duration.seconds(10);
14
- // The tunnel path keeps literal dots out of the router's file-extension handling, as @ontemper/resources did.
15
- const tunnelAuthorization = (key) => Effect.gen(function* () {
16
- const apiUrl = yield* Config.NonEmptyString('UNNBOUND_API_URL');
17
- const endpoint = new URL(`/api/runtime/databases/${encodeURIComponent(key.replaceAll('.', '%2E'))}/tunnel`, apiUrl);
18
- if (endpoint.protocol !== 'https:' && endpoint.protocol !== 'http:') {
19
- return yield* Effect.fail(new Error('Temper API URL must use HTTP or HTTPS.'));
20
- }
21
- endpoint.protocol = endpoint.protocol === 'https:' ? 'wss:' : 'ws:';
22
- return endpoint.href;
23
- });
24
15
  const open = (rawKey) => Effect.gen(function* () {
25
16
  const key = rawKey.trim();
26
17
  // A workflow's own HttpClient when there is one; resolver calls disable its tracing either way.
@@ -34,7 +25,7 @@ const open = (rawKey) => Effect.gen(function* () {
34
25
  resolve: client.resolve,
35
26
  inspect: client.inspect,
36
27
  authorizeTunnel: tunnel
37
- ? (tunnelKey) => Effect.runPromiseWith(context)(Effect.all({ url: tunnelAuthorization(tunnelKey), token: client.tunnelToken }).pipe(Effect.timeoutOrElse({
28
+ ? (tunnelKey) => Effect.runPromiseWith(context)(Effect.all({ url: databaseTunnelUrl(tunnelKey), token: client.tunnelToken }).pipe(Effect.timeoutOrElse({
38
29
  duration: TUNNEL_AUTHORIZATION_TIMEOUT,
39
30
  orElse: () => Effect.fail(new Error('No runtime token for the database tunnel within 10 s.')),
40
31
  })))
@@ -1 +1 @@
1
- {"version":3,"file":"PostgreSql.js","sourceRoot":"","sources":["../src/PostgreSql.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PostgreSql.js","sourceRoot":"","sources":["../src/PostgreSql.ts"],"names":[],"mappings":"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"}
@@ -2,45 +2,7 @@ import { type Duration, Effect, Option, Schema } from 'effect';
2
2
  import type pg from 'pg';
3
3
  import { InvalidResourceError } from './ResourcesErrors.js';
4
4
  import type { InspectedResource, ReadError } from './RuntimeResources.js';
5
- /** A `postgresql` record as `@ontemper/resources` reads it; `sslmode` carries libpq semantics, and `tls` the CA and client certificate. */
6
- export declare const PostgresqlResource: Schema.Struct<{
7
- readonly host: Schema.String;
8
- readonly port: Schema.withDecodingDefaultKey<Schema.Int, never>;
9
- readonly dbname: Schema.String;
10
- readonly user: Schema.String;
11
- readonly auth: Schema.Union<readonly [Schema.Struct<{
12
- readonly type: Schema.Literal<"password">;
13
- readonly password: Schema.RedactedFromValue<Schema.String>;
14
- }>, Schema.Struct<{
15
- readonly type: Schema.Literal<"rds_iam">;
16
- readonly region: Schema.String;
17
- readonly awsAuth: Schema.Union<readonly [Schema.Struct<{
18
- readonly type: Schema.Literal<"access_key">;
19
- readonly accessKeyId: Schema.String;
20
- readonly secretAccessKey: Schema.RedactedFromValue<Schema.String>;
21
- readonly sessionToken: Schema.optionalKey<Schema.RedactedFromValue<Schema.String>>;
22
- }>, Schema.Struct<{
23
- readonly type: Schema.Literal<"assume_role">;
24
- readonly roleArn: Schema.String;
25
- readonly externalId: Schema.optionalKey<Schema.String>;
26
- }>, Schema.Struct<{
27
- readonly type: Schema.Literal<"ambient">;
28
- }>]>;
29
- }>, Schema.Struct<{
30
- readonly type: Schema.Literal<"none">;
31
- }>]>;
32
- readonly sslmode: Schema.withDecodingDefaultKey<Schema.Literals<readonly ["disable", "require", "verify-ca", "verify-full"]>, never>;
33
- readonly tls: Schema.optionalKey<Schema.Struct<{
34
- readonly caCertificate: Schema.optionalKey<Schema.String>;
35
- readonly clientCertificate: Schema.optionalKey<Schema.String>;
36
- readonly clientKey: Schema.optionalKey<Schema.RedactedFromValue<Schema.String>>;
37
- readonly clientKeyPassphrase: Schema.optionalKey<Schema.RedactedFromValue<Schema.String>>;
38
- readonly serverName: Schema.optionalKey<Schema.String>;
39
- }>>;
40
- readonly sshTunnel: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>>;
41
- readonly options: Schema.optionalKey<Schema.String>;
42
- }>;
43
- export type PostgresqlResource = typeof PostgresqlResource.Type;
5
+ export { PostgresqlResource } from './ResourceRecords.js';
44
6
  /** Where a pool reads its Resource: the runtime API in a workflow, fixed answers in tests. */
45
7
  export interface ResourceSource {
46
8
  readonly resolve: (key: string) => Effect.Effect<Schema.Json, ReadError | InvalidResourceError>;
@@ -1 +1 @@
1
- {"version":3,"file":"PostgreSqlPool.d.ts","sourceRoot":"","sources":["../src/PostgreSqlPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAuB,MAAM,EAAE,MAAM,QAAQ,CAAC;AACpF,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAIzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAK1E,2IAA2I;AAC3I,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAC;AAEhE,8FAA8F;AAC9F,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,oBAAoB,CAAC,CAAC;IAChG,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC;IACjG,8FAA8F;IAC9F,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,GAAG,SAAS,CAAC;CACrH;AAgFD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QACtB,MAAM,UACH,cAAc,KACrB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,oBAAoB,CAwCtD,CAAC;AAEL,eAAO,MAAM,aAAa,UAAW,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAwC,CAAC;AAEnG,+GAA+G;AAC/G,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,KAAoB,CAAC;AAE7D;;;GAGG;AACH,eAAO,MAAM,OAAO,SACZ;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,YAClC,QAAQ,CAAC,KAAK,KACtB,MAAM,CAAC,MAAM,CAAC,IAAI,CAUlB,CAAC"}
1
+ {"version":3,"file":"PostgreSqlPool.d.ts","sourceRoot":"","sources":["../src/PostgreSqlPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAuB,MAAM,EAAE,MAAM,QAAQ,CAAC;AACpF,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAIzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,8FAA8F;AAC9F,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,oBAAoB,CAAC,CAAC;IAChG,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC;IACjG,8FAA8F;IAC9F,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,GAAG,SAAS,CAAC;CACrH;AAgFD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QACtB,MAAM,UACH,cAAc,KACrB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,oBAAoB,CAwCtD,CAAC;AAEL,eAAO,MAAM,aAAa,UAAW,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAwC,CAAC;AAEnG,+GAA+G;AAC/G,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,KAAoB,CAAC;AAE7D;;;GAGG;AACH,eAAO,MAAM,OAAO,SACZ;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,YAClC,QAAQ,CAAC,KAAK,KACtB,MAAM,CAAC,MAAM,CAAC,IAAI,CAUlB,CAAC"}
@@ -1,29 +1,9 @@
1
1
  import { Effect, Option, Predicate, Redacted, Schema } from 'effect';
2
- import { AwsAuth, TlsSettings } from './HttpApiResource.js';
3
2
  import { observePostgreSqlTimeouts } from './PostgreSqlTimeouts.js';
4
3
  import { registerSecrets } from './Redaction.js';
4
+ import { PostgresqlResource } from './ResourceRecords.js';
5
5
  import { InvalidResourceError } from './ResourcesErrors.js';
6
- const NonEmptyString = Schema.String.check(Schema.isMinLength(1));
7
- const Secret = Schema.RedactedFromValue(Schema.String);
8
- /** A `postgresql` record as `@ontemper/resources` reads it; `sslmode` carries libpq semantics, and `tls` the CA and client certificate. */
9
- export const PostgresqlResource = Schema.Struct({
10
- host: NonEmptyString,
11
- port: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 65_535 })).pipe(Schema.withDecodingDefaultKey(Effect.succeed(5432))),
12
- dbname: NonEmptyString,
13
- user: NonEmptyString,
14
- // Closed: the type decides how the client signs in.
15
- auth: Schema.Union([
16
- Schema.Struct({ type: Schema.Literal('password'), password: Secret }),
17
- Schema.Struct({ type: Schema.Literal('rds_iam'), region: NonEmptyString, awsAuth: AwsAuth }),
18
- Schema.Struct({ type: Schema.Literal('none') }),
19
- ]),
20
- // Closed: libpq's weaker `allow` and `prefer` would map to no TLS at all.
21
- sslmode: Schema.Literals(['disable', 'require', 'verify-ca', 'verify-full']).pipe(Schema.withDecodingDefaultKey(Effect.succeed('verify-full'))),
22
- tls: Schema.optionalKey(TlsSettings),
23
- // Only its presence matters: this pool refuses a bastion tunnel.
24
- sshTunnel: Schema.optionalKey(Schema.Record(Schema.String, Schema.Json)),
25
- options: Schema.optionalKey(Schema.String),
26
- });
6
+ export { PostgresqlResource } from './ResourceRecords.js';
27
7
  const validate = Schema.toStandardSchemaV1(PostgresqlResource)['~standard'].validate;
28
8
  // Names only the failing paths: a schema message can quote the value, which may be a secret.
29
9
  const decode = (key, value) => Effect.suspend(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"PostgreSqlPool.js","sourceRoot":"","sources":["../src/PostgreSqlPool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PostgreSqlPool.js","sourceRoot":"","sources":["../src/PostgreSqlPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAW1D,MAAM,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;AAErF,6FAA6F;AAC7F,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,KAAkB,EAAE,EAAE,CACjD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;IAClB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,MAAM,YAAY,OAAO;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;IACxG,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAC7B,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAC7G,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,oBAAoB,CAAC;QACvB,MAAM,EAAE,OAAO,GAAG,EAAE;QACpB,OAAO,EAAE,YAAY,GAAG,gDAAgD,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KACzG,CAAC,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,SAAS,SAAS,CAAC,QAA4B;IAC7C,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;IACzB,MAAM,iBAAiB,GAAG,GAAG,EAAE,iBAAiB;QAC9C,CAAC,CAAC;YACE,IAAI,EAAE,GAAG,CAAC,iBAAiB;YAC3B,GAAG,EAAE,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;YAC5E,UAAU,EAAE,GAAG,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;SACxG;QACH,CAAC,CAAC,EAAE,CAAC;IACP,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC;QACzB,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,iBAAiB,EAAE,CAAC;QAC7D,KAAK,WAAW;YACd,OAAO;gBACL,kBAAkB,EAAE,IAAI;gBACxB,EAAE,EAAE,GAAG,EAAE,aAAa;gBACtB,GAAG,iBAAiB;gBACpB,mBAAmB,EAAE,GAAG,EAAE,CAAC,SAAS;aACrC,CAAC;QACJ,KAAK,aAAa;YAChB,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,iBAAiB,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;IACnH,CAAC;AACH,CAAC;AAED,wGAAwG;AACxG,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,QAA4B,EAAE,EAAE;IACrE,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7G,IAAI,QAAQ,CAAC,SAAS;QACpB,OAAO,MAAM,CAAC,uBAAuB,GAAG,qDAAqD,CAAC,CAAC;IACjG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,uBAAuB,GAAG,gEAAgE,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzG,CAAC,CAAC;AAEF,8GAA8G;AAC9G,MAAM,YAAY,GAAG,CAAI,IAAY,EAAE,IAAsB,EAAE,EAAE,CAC/D,MAAM,CAAC,UAAU,CAAC;IAChB,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,GAAG,EAAE,CACV,IAAI,KAAK,CAAC,sCAAsC,IAAI,iBAAiB,IAAI,gCAAgC,CAAC;CAC7G,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACvF,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAE7E,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACtF,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAE9C,+GAA+G;AAC/G,sEAAsE;AACtE,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE,CACtC,IAAI,oBAAoB,CAAC;IACvB,MAAM,EAAE,OAAO,GAAG,EAAE;IACpB,OAAO,EAAE,YAAY,GAAG,0GAA0G;CACnI,CAAC,CAAC;AAEL;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,GAAW,EACX,MAAsB,EACoC,EAAE,CAC5D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAC9C,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EACjF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAC9C,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACxD,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC;IACzC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC;IAC7B,MAAM,YAAY,GAAG,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC;IACnG,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAS,CAAC;IAC/C,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,OAAe,EAAE,MAAM,GAA2B,EAAE,EAAE,EAAE;QACnF,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1G,CAAC,CAAC;IACF,kHAAkH;IAClH,MAAM,MAAM,GAAG,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpG,qGAAqG;IACrG,MAAM,IAAI,GAAG,yBAAyB,CACpC,MAAM,EACN,IAAI,MAAM,CAAC,IAAI,CAAC;QACd,MAAM;QACN,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ;QACxB,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC;QACxB,GAAG,EAAE,CAAC;QACN,uBAAuB,EAAE,MAAM;QAC/B,iBAAiB,EAAE,MAAM;QACzB,iBAAiB,EAAE,MAAM;KAC1B,CAAC,EACF,GAAG,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,iCAAiC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAClG,CAAC;IACF,wGAAwG;IACxG,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kCAAkC,EAAE,uCAAuC,CAAC,CAAC,CAAC;IAC1G,OAAO,IAAI,CAAC;AACd,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAA4B,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAEnG,+GAA+G;AAC/G,MAAM,CAAC,MAAM,gBAAgB,GAAmB,YAAY,CAAC;AAE7D;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,IAA2C,EAC3C,OAAO,GAAmB,gBAAgB,EACrB,EAAE,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAC1D,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACvB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC,MAAM,CAAC,IAAI;IACb,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,mEAAmE,CAAC,CAAC,IAAI,CACzF,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC,CACnE,CACN,CACF,CAAC"}
@@ -17,6 +17,8 @@ export interface SecretMasks {
17
17
  readonly mask: (text: string) => string;
18
18
  }
19
19
  export declare const makeSecretMasks: () => SecretMasks;
20
+ /** A module's own registry that also masks every secret registered process-wide, in one longest-first pass. */
21
+ export declare const makeWorkflowSecretMasks: () => SecretMasks;
20
22
  /** `workflow()` installs one registry per module, so a secret seen by one request stays masked in every later one. */
21
23
  export declare const SecretMasks: Context.Reference<SecretMasks>;
22
24
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Redaction.d.ts","sourceRoot":"","sources":["../src/Redaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,+FAA+F;AAC/F,eAAO,MAAM,QAAQ,eAAe,CAAC;AAkFrC;;;;;GAKG;AACH,eAAO,MAAM,UAAU,SAAU;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,KAAG,IAoB7D,CAAC;AAEF,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC;AAaD,eAAO,MAAM,eAAe,QAAO,WAoClC,CAAC;AAEF,sHAAsH;AACtH,eAAO,MAAM,WAAW,gCAEtB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe,WAAY,QAAQ,CAAC,MAAM,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CACrB,CAAC"}
1
+ {"version":3,"file":"Redaction.d.ts","sourceRoot":"","sources":["../src/Redaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,+FAA+F;AAC/F,eAAO,MAAM,QAAQ,eAAe,CAAC;AAkFrC;;;;;GAKG;AACH,eAAO,MAAM,UAAU,SAAU;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,KAAG,IAoB7D,CAAC;AAEF,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC;AA6DD,eAAO,MAAM,eAAe,QAAO,WAA0B,CAAC;AAK9D,+GAA+G;AAC/G,eAAO,MAAM,uBAAuB,QAAO,WAAmD,CAAC;AAE/F,sHAAsH;AACtH,eAAO,MAAM,WAAW,gCAEtB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe,WAAY,QAAQ,CAAC,MAAM,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CACrB,CAAC"}
package/dist/Redaction.js CHANGED
@@ -118,11 +118,14 @@ const encodingsOf = (value) => {
118
118
  return [value, form];
119
119
  }
120
120
  };
121
- export const makeSecretMasks = () => {
121
+ /** Masks with one longest-first pattern over this registry's values and, when given, the `shared` registry's. */
122
+ const makeMasks = (shared) => {
122
123
  const values = new Set();
123
124
  // Alternation tries the longest secret first at each position, as the legacy scanner did.
124
125
  let pattern;
126
+ let sharedSize = shared?.size ?? 0;
125
127
  return {
128
+ values,
126
129
  register: (candidates) => {
127
130
  for (const candidate of candidates) {
128
131
  if (candidate.length === 0)
@@ -136,9 +139,13 @@ export const makeSecretMasks = () => {
136
139
  }
137
140
  },
138
141
  mask: (text) => {
139
- if (values.size === 0)
142
+ if (shared !== undefined && shared.size !== sharedSize) {
143
+ sharedSize = shared.size;
144
+ pattern = undefined;
145
+ }
146
+ if (values.size + (shared?.size ?? 0) === 0)
140
147
  return text;
141
- pattern ??= new RegExp([...values]
148
+ pattern ??= new RegExp([...values, ...(shared ?? [])]
142
149
  .sort((left, right) => right.length - left.length)
143
150
  .map((value) => value
144
151
  .replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
@@ -149,9 +156,14 @@ export const makeSecretMasks = () => {
149
156
  },
150
157
  };
151
158
  };
159
+ export const makeSecretMasks = () => makeMasks();
160
+ // Reads outside a workflow fiber (the promise `env`, `createPostgresqlPool`) register here, as legacy masked globally.
161
+ const processSecretMasks = makeMasks();
162
+ /** A module's own registry that also masks every secret registered process-wide, in one longest-first pass. */
163
+ export const makeWorkflowSecretMasks = () => makeMasks(processSecretMasks.values);
152
164
  /** `workflow()` installs one registry per module, so a secret seen by one request stays masked in every later one. */
153
165
  export const SecretMasks = Context.Reference('@temper/workflow/SecretMasks', {
154
- defaultValue: makeSecretMasks,
166
+ defaultValue: () => processSecretMasks,
155
167
  });
156
168
  /**
157
169
  * Masks each non-empty value, and its `encodeURIComponent` and form-urlencoded forms, as `[Redacted]`
@@ -1 +1 @@
1
- {"version":3,"file":"Redaction.js","sourceRoot":"","sources":["../src/Redaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Redaction.js","sourceRoot":"","sources":["../src/Redaction.ts"],"names":[],"mappings":"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"}