@ontemper/sdk 0.7.1-postgresql.4 → 0.7.1-postgresql.6
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 +7 -26
- package/dist/Manifest.d.ts +1 -1
- package/dist/Manifest.js +1 -1
- package/dist/Redaction.js +1 -1
- package/dist/Redaction.js.map +1 -1
- package/dist/Resources.d.ts +4 -7
- package/dist/Resources.d.ts.map +1 -1
- package/dist/Resources.js +4 -5
- package/dist/Resources.js.map +1 -1
- package/dist/ResourcesErrors.d.ts +1 -5
- package/dist/ResourcesErrors.d.ts.map +1 -1
- package/dist/ResourcesErrors.js +2 -5
- package/dist/ResourcesErrors.js.map +1 -1
- package/dist/ResourcesToken.d.ts +1 -8
- package/dist/ResourcesToken.d.ts.map +1 -1
- package/dist/ResourcesToken.js +7 -18
- package/dist/ResourcesToken.js.map +1 -1
- package/dist/RuntimeResources.d.ts +1 -14
- package/dist/RuntimeResources.d.ts.map +1 -1
- package/dist/RuntimeResources.js +8 -15
- package/dist/RuntimeResources.js.map +1 -1
- package/package.json +2 -2
- package/dist/ExpiringMap.d.ts +0 -21
- package/dist/ExpiringMap.d.ts.map +0 -1
- package/dist/ExpiringMap.js +0 -79
- package/dist/ExpiringMap.js.map +0 -1
- package/dist/ResourcesCache.d.ts +0 -33
- package/dist/ResourcesCache.d.ts.map +0 -1
- package/dist/ResourcesCache.js +0 -205
- package/dist/ResourcesCache.js.map +0 -1
- package/dist/ResourcesEnv.d.ts +0 -81
- package/dist/ResourcesEnv.d.ts.map +0 -1
- package/dist/ResourcesEnv.js +0 -110
- package/dist/ResourcesEnv.js.map +0 -1
package/README.md
CHANGED
|
@@ -355,9 +355,8 @@ registry; inside a workflow handler, prefer `makePostgresqlPool`, which register
|
|
|
355
355
|
|
|
356
356
|
## Resource records and Kafka
|
|
357
357
|
|
|
358
|
-
`@temper/workflow/resources` gives Effect workflows
|
|
359
|
-
|
|
360
|
-
`env` for code that cannot run an Effect. Declare the Resource with `Resource` from the root; its secrets arrive as
|
|
358
|
+
`@temper/workflow/resources` gives Effect workflows the record schemas and Kafka options of `@ontemper/resources`:
|
|
359
|
+
`KafkaResource`, `S3Resource`, `AzureBlobResource`, `SftpResource`, `PostgresqlResource`, and `kafkaConfig`. Declare the Resource with `Resource` from the root; its secrets arrive as
|
|
361
360
|
`Redacted` values, and `kafkaConfig` unwraps them itself. It loads the optional peers `@aws-sdk/credential-providers` and
|
|
362
361
|
`aws-msk-iam-sasl-signer-js` only for AWS MSK IAM.
|
|
363
362
|
|
|
@@ -371,30 +370,12 @@ class Events extends Resource<Events>()('events', { type: 'kafka', schema: Kafka
|
|
|
371
370
|
// In an Effect: const kafka = new Kafka(kafkaConfig(yield* Events));
|
|
372
371
|
```
|
|
373
372
|
|
|
374
|
-
|
|
373
|
+
A record that a built-in schema rejects fails the read with the field name, never the value. An unknown closed
|
|
374
|
+
value, such as a new `sslmode`, fails with `UnknownRecordValueError`.
|
|
375
375
|
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
const archive = await env.resources.resolve('archive', S3Resource);
|
|
380
|
-
const metadata = await env.resources.inspect('archive');
|
|
381
|
-
const { key } = await env.resources.select({ resourceTypeKey: 'http_api', match: { tenantKey } });
|
|
382
|
-
const region = await env.variables.get('PARTNER_REGION');
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
Without a schema, `resolve` returns the JSON object; with one, it decodes it and keeps extension fields.
|
|
386
|
-
`ResourceNotFoundError` means the key or selection has no record. A found record with a missing reference
|
|
387
|
-
fails with `InvalidResourceError`; unknown closed values in a built-in schema fail with `UnknownRecordValueError`.
|
|
388
|
-
Authorization failures use `ResourcesUnauthorizedError`; outages use `ResourcesUnavailableError`.
|
|
389
|
-
|
|
390
|
-
Promise reads use the same runtime API and Run token as the declarations. Their cache matches the legacy
|
|
391
|
-
resolver: a 30 s TTL, up to 15 min of stale reads through an outage (5 min for selections), and a separate
|
|
392
|
-
10 s select-miss cache with a cap of 60 distinct misses per minute. `{ cache: false }` bypasses it;
|
|
393
|
-
`{ ttlMs }` sets a read's TTL. The legacy cache environment settings still apply.
|
|
394
|
-
|
|
395
|
-
The runtime API cannot list Variables, so snapshot `initialize`, `reload`, `variables.tryGet`, and
|
|
396
|
-
`variables.has` have no equivalent. The legacy partners and connections APIs are also excluded.
|
|
397
|
-
Existing workflows can keep `@ontemper/resources`; this entry does not modify that package.
|
|
376
|
+
This release has no promise-style `env`: no `env.resources`, `env.variables`, `initialize`, or `reload`. Code that
|
|
377
|
+
cannot run an Effect keeps `@ontemper/resources`; this entry does not modify that package. The legacy partners and
|
|
378
|
+
connections APIs are excluded.
|
|
398
379
|
|
|
399
380
|
## Versions
|
|
400
381
|
|
package/dist/Manifest.d.ts
CHANGED
|
@@ -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.
|
|
3
|
+
export declare const SDK_VERSION = "0.7.1-postgresql.6";
|
|
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.
|
|
8
|
+
export const SDK_VERSION = '0.7.1-postgresql.6';
|
|
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';
|
package/dist/Redaction.js
CHANGED
|
@@ -167,7 +167,7 @@ const makeMasks = (shared, limit = MASK_LIMIT) => {
|
|
|
167
167
|
};
|
|
168
168
|
};
|
|
169
169
|
export const makeSecretMasks = (limit) => makeMasks(undefined, limit);
|
|
170
|
-
// Reads outside a workflow fiber (
|
|
170
|
+
// Reads outside a workflow fiber (`createPostgresqlPool`) register here, as legacy masked globally.
|
|
171
171
|
const processSecretMasks = makeMasks();
|
|
172
172
|
/** A module's own registry that also masks every secret registered process-wide, in one longest-first pass. */
|
|
173
173
|
export const makeWorkflowSecretMasks = () => makeMasks(processSecretMasks.own);
|
package/dist/Redaction.js.map
CHANGED
|
@@ -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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"}
|
package/dist/Resources.d.ts
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Resource
|
|
3
|
-
* `import { makePostgresqlPool, KafkaResource, kafkaConfig } from '@temper/workflow/resources'`.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Resource pools, records, and Kafka client options:
|
|
3
|
+
* `import { makePostgresqlPool, KafkaResource, kafkaConfig } from '@temper/workflow/resources'`. PostgreSQL pools load
|
|
4
|
+
* the optional `pg` and `ws` peers when a pool is built, and Kafka's optional AWS peers load only for MSK IAM, so
|
|
5
|
+
* importing this module needs none.
|
|
6
6
|
*/
|
|
7
7
|
export { As2IdentityResource, As2PartnerResource } from './As2Resource.js';
|
|
8
8
|
export { getDatabaseTunnelAuthorization } from './DatabaseTunnelAuthorization.js';
|
|
9
9
|
export { HttpApiAuth, HttpApiResource, HttpApiUnsupportedAuth, HttpProxy, OAuthTokenRequest, TlsSettings, } from './HttpApiResource.js';
|
|
10
10
|
export { createPostgresqlPool, makePostgresqlPool, type PostgresqlPoolError } from './PostgreSql.js';
|
|
11
|
-
/** A resolved Variable value; the root's `Variable` export is the Effect declaration instead. */
|
|
12
|
-
export type Variable = string;
|
|
13
11
|
export { AzureBlobResource, type JsonObject, type JsonValue, KafkaResource, PostgresqlResource, S3Resource, SftpResource, UnknownRecordValueError, } from './ResourceRecords.js';
|
|
14
12
|
export { kafkaConfig, type KafkaClientConfig, type KafkaClientSasl, type KafkaClientTlsOptions, type KafkaConfigOptions, OptionalKafkaDependencyError, UnsupportedKafkaAuthError, } from './Kafka.js';
|
|
15
|
-
export { env, type RuntimeEnv, type RuntimeEnvConfig, type RuntimeEnvLogger, type RuntimeResourceReads, type RuntimeVariableReads, type RuntimeResolveOptions, type RuntimeResourceRecord, type RuntimeSelectResourceInput, type RuntimeSelectResourceOutput, } from './ResourcesEnv.js';
|
|
16
13
|
export { InvalidResourceError, ResourceNotFoundError, ResourceNotSelectableError, ResourcesUnauthorizedError, ResourcesUnavailableError, } from './ResourcesErrors.js';
|
|
17
14
|
//# sourceMappingURL=Resources.d.ts.map
|
package/dist/Resources.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resources.d.ts","sourceRoot":"","sources":["../src/Resources.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EACL,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAErG,
|
|
1
|
+
{"version":3,"file":"Resources.d.ts","sourceRoot":"","sources":["../src/Resources.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EACL,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAErG,OAAO,EACL,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC"}
|
package/dist/Resources.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Resource
|
|
3
|
-
* `import { makePostgresqlPool, KafkaResource, kafkaConfig } from '@temper/workflow/resources'`.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Resource pools, records, and Kafka client options:
|
|
3
|
+
* `import { makePostgresqlPool, KafkaResource, kafkaConfig } from '@temper/workflow/resources'`. PostgreSQL pools load
|
|
4
|
+
* the optional `pg` and `ws` peers when a pool is built, and Kafka's optional AWS peers load only for MSK IAM, so
|
|
5
|
+
* importing this module needs none.
|
|
6
6
|
*/
|
|
7
7
|
export { As2IdentityResource, As2PartnerResource } from './As2Resource.js';
|
|
8
8
|
export { getDatabaseTunnelAuthorization } from './DatabaseTunnelAuthorization.js';
|
|
@@ -10,6 +10,5 @@ export { HttpApiAuth, HttpApiResource, HttpApiUnsupportedAuth, HttpProxy, OAuthT
|
|
|
10
10
|
export { createPostgresqlPool, makePostgresqlPool } from './PostgreSql.js';
|
|
11
11
|
export { AzureBlobResource, KafkaResource, PostgresqlResource, S3Resource, SftpResource, UnknownRecordValueError, } from './ResourceRecords.js';
|
|
12
12
|
export { kafkaConfig, OptionalKafkaDependencyError, UnsupportedKafkaAuthError, } from './Kafka.js';
|
|
13
|
-
export { env, } from './ResourcesEnv.js';
|
|
14
13
|
export { InvalidResourceError, ResourceNotFoundError, ResourceNotSelectableError, ResourcesUnauthorizedError, ResourcesUnavailableError, } from './ResourcesErrors.js';
|
|
15
14
|
//# sourceMappingURL=Resources.js.map
|
package/dist/Resources.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resources.js","sourceRoot":"","sources":["../src/Resources.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EACL,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAA4B,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"Resources.js","sourceRoot":"","sources":["../src/Resources.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EACL,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAA4B,MAAM,iBAAiB,CAAC;AAErG,OAAO,EACL,iBAAiB,EAGjB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,WAAW,EAKX,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC"}
|
|
@@ -28,12 +28,8 @@ export declare class ResourcesUnauthorizedError extends ResourcesUnauthorizedErr
|
|
|
28
28
|
}
|
|
29
29
|
declare const ResourcesUnavailableError_base: Schema.Class<ResourcesUnavailableError, Schema.TaggedStruct<"ResourcesUnavailableError", {
|
|
30
30
|
readonly message: Schema.String;
|
|
31
|
-
readonly status: Schema.optional<Schema.Number>;
|
|
32
31
|
}>, import("effect/Cause").YieldableError>;
|
|
33
|
-
/**
|
|
34
|
-
* The runtime API gave no usable answer: a transport failure, a timeout, a 5xx, a status the contract does not
|
|
35
|
-
* declare, or a body the SDK cannot read. `status` is the HTTP status when an answer arrived.
|
|
36
|
-
*/
|
|
32
|
+
/** The runtime API gave no usable answer: a transport failure, a timeout, a 5xx, or a body the SDK cannot read. */
|
|
37
33
|
export declare class ResourcesUnavailableError extends ResourcesUnavailableError_base {
|
|
38
34
|
}
|
|
39
35
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesErrors.d.ts","sourceRoot":"","sources":["../src/ResourcesErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;AAIhC,2HAA2H;AAC3H,qBAAa,qBAAsB,SAAQ,0BAGzC;CAAG;;;;;AAEL,+HAA+H;AAC/H,qBAAa,0BAA2B,SAAQ,+BAM/C;CAAG;;;;;AAEJ,sJAAsJ;AACtJ,qBAAa,oBAAqB,SAAQ,yBAGxC;CAAG;;;;AAEL,4IAA4I;AAC5I,qBAAa,0BAA2B,SAAQ,+BAG/C;CAAG
|
|
1
|
+
{"version":3,"file":"ResourcesErrors.d.ts","sourceRoot":"","sources":["../src/ResourcesErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;AAIhC,2HAA2H;AAC3H,qBAAa,qBAAsB,SAAQ,0BAGzC;CAAG;;;;;AAEL,+HAA+H;AAC/H,qBAAa,0BAA2B,SAAQ,+BAM/C;CAAG;;;;;AAEJ,sJAAsJ;AACtJ,qBAAa,oBAAqB,SAAQ,yBAGxC;CAAG;;;;AAEL,4IAA4I;AAC5I,qBAAa,0BAA2B,SAAQ,+BAG/C;CAAG;;;;AAEJ,mHAAmH;AACnH,qBAAa,yBAA0B,SAAQ,8BAG9C;CAAG"}
|
package/dist/ResourcesErrors.js
CHANGED
|
@@ -21,10 +21,7 @@ export class InvalidResourceError extends Schema.TaggedError()('InvalidResourceE
|
|
|
21
21
|
/** The runtime identity is missing or refused: no API URL or runtime token, a provider that never published a fresh token, or a 401/403. */
|
|
22
22
|
export class ResourcesUnauthorizedError extends Schema.TaggedError()('ResourcesUnauthorizedError', { message: Schema.String }) {
|
|
23
23
|
}
|
|
24
|
-
/**
|
|
25
|
-
|
|
26
|
-
* declare, or a body the SDK cannot read. `status` is the HTTP status when an answer arrived.
|
|
27
|
-
*/
|
|
28
|
-
export class ResourcesUnavailableError extends Schema.TaggedError()('ResourcesUnavailableError', { message: Schema.String, status: Schema.optional(Schema.Number) }) {
|
|
24
|
+
/** The runtime API gave no usable answer: a transport failure, a timeout, a 5xx, or a body the SDK cannot read. */
|
|
25
|
+
export class ResourcesUnavailableError extends Schema.TaggedError()('ResourcesUnavailableError', { message: Schema.String }) {
|
|
29
26
|
}
|
|
30
27
|
//# sourceMappingURL=ResourcesErrors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesErrors.js","sourceRoot":"","sources":["../src/ResourcesErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,gHAAgH;AAEhH,2HAA2H;AAC3H,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,WAAW,EAAyB,CAAC,uBAAuB,EAAE;IAC9G,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,+HAA+H;AAC/H,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,WAAW,EAA8B,CAC9F,4BAA4B,EAC5B;IACE,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,sJAAsJ;AACtJ,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,EAAwB,CAAC,sBAAsB,EAAE;IAC3G,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,4IAA4I;AAC5I,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,WAAW,EAA8B,CAC9F,4BAA4B,EAC5B,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAC3B;CAAG;AAEJ
|
|
1
|
+
{"version":3,"file":"ResourcesErrors.js","sourceRoot":"","sources":["../src/ResourcesErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,gHAAgH;AAEhH,2HAA2H;AAC3H,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,WAAW,EAAyB,CAAC,uBAAuB,EAAE;IAC9G,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,+HAA+H;AAC/H,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,WAAW,EAA8B,CAC9F,4BAA4B,EAC5B;IACE,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,sJAAsJ;AACtJ,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,EAAwB,CAAC,sBAAsB,EAAE;IAC3G,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,4IAA4I;AAC5I,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,WAAW,EAA8B,CAC9F,4BAA4B,EAC5B,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAC3B;CAAG;AAEJ,mHAAmH;AACnH,MAAM,OAAO,yBAA0B,SAAQ,MAAM,CAAC,WAAW,EAA6B,CAC5F,2BAA2B,EAC3B,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAC3B;CAAG"}
|
package/dist/ResourcesToken.d.ts
CHANGED
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
import { Effect } from 'effect';
|
|
2
2
|
import { ResourcesUnauthorizedError } from './ResourcesErrors.js';
|
|
3
|
-
/** The provider published no usable token in time;
|
|
3
|
+
/** The provider published no usable token in time; a database tunnel reads it as an outage. */
|
|
4
4
|
export declare const TOKEN_NOT_PUBLISHED = "Runtime resolver token provider did not publish a fresh token.";
|
|
5
|
-
/**
|
|
6
|
-
* Which token a read sends. `refreshWindow` waits for a token outside the refresh window: a database tunnel re-checks
|
|
7
|
-
* it every 2 s. `unexpired` sends any unexpired token at once and waits 2 s for an expired one, as the legacy
|
|
8
|
-
* resolver did, so a stalled provider costs a short wait and an outage instead of a 35 s stall.
|
|
9
|
-
*/
|
|
10
|
-
export type RuntimeTokenPolicy = 'refreshWindow' | 'unexpired';
|
|
11
5
|
export interface RuntimeTokens {
|
|
12
6
|
/** The provider's token when it outlives the refresh window, otherwise the next one it publishes. */
|
|
13
7
|
readonly current: Effect.Effect<string, ResourcesUnauthorizedError>;
|
|
14
8
|
/** The first usable token other than the one the runtime API just refused. */
|
|
15
9
|
readonly replacing: (refused: string) => Effect.Effect<string, ResourcesUnauthorizedError>;
|
|
16
10
|
}
|
|
17
|
-
export declare const makeRuntimeTokensWith: (policy: RuntimeTokenPolicy) => Effect.Effect<RuntimeTokens>;
|
|
18
11
|
export declare const makeRuntimeTokens: Effect.Effect<RuntimeTokens>;
|
|
19
12
|
//# sourceMappingURL=ResourcesToken.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesToken.d.ts","sourceRoot":"","sources":["../src/ResourcesToken.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,MAAM,EAAsC,MAAM,QAAQ,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE
|
|
1
|
+
{"version":3,"file":"ResourcesToken.d.ts","sourceRoot":"","sources":["../src/ResourcesToken.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,MAAM,EAAsC,MAAM,QAAQ,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB,mEAAmE,CAAC;AAqEpG,MAAM,WAAW,aAAa;IAC5B,qGAAqG;IACrG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpE,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CAC5F;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAWzD,CAAC"}
|
package/dist/ResourcesToken.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
2
|
import { Cache, Clock, Config, Duration, Effect, Option, Redacted, Schedule, Schema } from 'effect';
|
|
3
3
|
import { ResourcesUnauthorizedError } from './ResourcesErrors.js';
|
|
4
|
-
/** The provider published no usable token in time;
|
|
4
|
+
/** The provider published no usable token in time; a database tunnel reads it as an outage. */
|
|
5
5
|
export const TOKEN_NOT_PUBLISHED = 'Runtime resolver token provider did not publish a fresh token.';
|
|
6
6
|
/** A token this close to `exp` could lapse mid-request, so it counts as spent. */
|
|
7
7
|
const REFRESH_WINDOW_MS = 30_000;
|
|
@@ -10,13 +10,11 @@ const PUBLISH_TIMEOUT = Duration.seconds(35);
|
|
|
10
10
|
const POLL_INTERVAL = Duration.millis(100);
|
|
11
11
|
const TokenExpiry = Schema.StringFromBase64Url.pipe(Schema.decodeTo(Schema.fromJsonString(Schema.Struct({ exp: Schema.Number }))));
|
|
12
12
|
const decodeTokenExpiry = Schema.decodeUnknownOption(TokenExpiry);
|
|
13
|
-
/**
|
|
14
|
-
const
|
|
13
|
+
/** Only a JWT that outlives the refresh window is sent; one without `exp` never is, as in `@ontemper/resources`. */
|
|
14
|
+
const outlivesRefreshWindow = (token, now) => Option.match(decodeTokenExpiry(token.split('.')[1]), {
|
|
15
15
|
onNone: () => false,
|
|
16
|
-
onSome: ({ exp }) => exp * 1000 - now >
|
|
16
|
+
onSome: ({ exp }) => exp * 1000 - now > REFRESH_WINDOW_MS,
|
|
17
17
|
});
|
|
18
|
-
const outlivesRefreshWindow = (token, now) => outlives(token, now, REFRESH_WINDOW_MS);
|
|
19
|
-
const EXPIRED_TOKEN_WAIT = Duration.seconds(2);
|
|
20
18
|
const TokenSources = Config.all({
|
|
21
19
|
file: Config.option(Config.String('UNNBOUND_RUNTIME_TOKEN_FILE')),
|
|
22
20
|
token: Config.option(Config.Redacted('UNNBOUND_RUNTIME_TOKEN')),
|
|
@@ -53,26 +51,17 @@ Effect.map((published) => Option.getOrThrow(published)), Effect.timeoutOrElse({
|
|
|
53
51
|
duration: PUBLISH_TIMEOUT,
|
|
54
52
|
orElse: () => Effect.fail(new ResourcesUnauthorizedError({ message: TOKEN_NOT_PUBLISHED })),
|
|
55
53
|
}));
|
|
56
|
-
export const
|
|
54
|
+
export const makeRuntimeTokens = Effect.gen(function* () {
|
|
57
55
|
// Waiters on one refused token share a single poll; a refusal of a newer token starts its own.
|
|
58
56
|
const published = yield* Cache.makeWith(awaitPublished, { capacity: 8, timeToLive: () => Duration.zero });
|
|
59
57
|
const replacing = (refused) => Cache.get(published, refused);
|
|
60
58
|
const current = Effect.gen(function* () {
|
|
61
59
|
const token = yield* readToken;
|
|
62
60
|
const now = yield* Clock.currentTimeMillis;
|
|
63
|
-
if (Option.
|
|
64
|
-
return yield* replacing('');
|
|
65
|
-
if (policy === 'refreshWindow') {
|
|
66
|
-
return outlivesRefreshWindow(token.value, now) ? token.value : yield* replacing(token.value);
|
|
67
|
-
}
|
|
68
|
-
if (outlives(token.value, now, 0))
|
|
61
|
+
if (Option.isSome(token) && outlivesRefreshWindow(token.value, now))
|
|
69
62
|
return token.value;
|
|
70
|
-
return yield* replacing(
|
|
71
|
-
duration: EXPIRED_TOKEN_WAIT,
|
|
72
|
-
orElse: () => Effect.fail(new ResourcesUnauthorizedError({ message: TOKEN_NOT_PUBLISHED })),
|
|
73
|
-
}));
|
|
63
|
+
return yield* replacing(Option.getOrElse(token, () => ''));
|
|
74
64
|
});
|
|
75
65
|
return { current, replacing };
|
|
76
66
|
});
|
|
77
|
-
export const makeRuntimeTokens = makeRuntimeTokensWith('refreshWindow');
|
|
78
67
|
//# sourceMappingURL=ResourcesToken.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesToken.js","sourceRoot":"","sources":["../src/ResourcesToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE
|
|
1
|
+
{"version":3,"file":"ResourcesToken.js","sourceRoot":"","sources":["../src/ResourcesToken.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,25 +2,12 @@ import { Context, Effect, Layer, Redacted, Schema } from 'effect';
|
|
|
2
2
|
import { HttpClient } from 'effect/http';
|
|
3
3
|
import { type RuntimeInspectedResourceSchema, type SelectResourceRuntimeInputSchema } from './Contract/RuntimeApi.js';
|
|
4
4
|
import { InvalidResourceError, ResourceNotFoundError, ResourceNotSelectableError, ResourcesUnauthorizedError, ResourcesUnavailableError } from './ResourcesErrors.js';
|
|
5
|
-
import { type RuntimeTokenPolicy } from './ResourcesToken.js';
|
|
6
5
|
/** Finds the one record of a type whose `x-selectable` field equals the value a tenant presented. */
|
|
7
6
|
export type ResourceSelector = typeof SelectResourceRuntimeInputSchema.Type;
|
|
8
7
|
export type ReadError = ResourceNotFoundError | InvalidResourceError | ResourcesUnauthorizedError | ResourcesUnavailableError;
|
|
9
8
|
/** The resolver's answer to `inspect`: literal fields and metadata, never a secret. */
|
|
10
9
|
export type InspectedResource = typeof RuntimeInspectedResourceSchema.Type;
|
|
11
|
-
/**
|
|
12
|
-
export declare const runtimeResourceClient: (policy: RuntimeTokenPolicy) => Effect.Effect<{
|
|
13
|
-
/**
|
|
14
|
-
* The token for one database tunnel; re-read on every call, never cached by the caller. The tunnel re-checks it
|
|
15
|
-
* every 2 s, so a token in its 30 s refresh window would end the connection when it expires.
|
|
16
|
-
*/
|
|
17
|
-
tunnelToken: Effect.Effect<string, ResourcesUnauthorizedError, never>;
|
|
18
|
-
variable: (key: string) => Effect.Effect<string, ReadError, never>;
|
|
19
|
-
resolve: (key: string) => Effect.Effect<Schema.Json, ReadError, never>;
|
|
20
|
-
inspect: (key: string) => Effect.Effect<InspectedResource, ReadError>;
|
|
21
|
-
select: (selector: ResourceSelector) => Effect.Effect<string, ResourceNotSelectableError | ReadError, never>;
|
|
22
|
-
}, never, HttpClient.HttpClient>;
|
|
23
|
-
/** The `./postgresql` client: tunnel tokens must outlive their refresh window. */
|
|
10
|
+
/** The `./resources` pool client: uncached runtime reads and the current runtime token. */
|
|
24
11
|
export declare const makeRuntimeResourceClient: Effect.Effect<{
|
|
25
12
|
/**
|
|
26
13
|
* The token for one database tunnel; re-read on every call, never cached by the caller. The tunnel re-checks it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeResources.d.ts","sourceRoot":"","sources":["../src/RuntimeResources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,OAAO,EAAY,MAAM,EAAQ,KAAK,EAAU,QAAQ,EAAE,MAAM,EAAc,MAAM,QAAQ,CAAC;AAErH,OAAO,EAAE,UAAU,EAA2C,MAAM,aAAa,CAAC;AAElF,OAAO,EAQL,KAAK,8BAA8B,EACnC,KAAK,gCAAgC,EACtC,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"RuntimeResources.d.ts","sourceRoot":"","sources":["../src/RuntimeResources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,OAAO,EAAY,MAAM,EAAQ,KAAK,EAAU,QAAQ,EAAE,MAAM,EAAc,MAAM,QAAQ,CAAC;AAErH,OAAO,EAAE,UAAU,EAA2C,MAAM,aAAa,CAAC;AAElF,OAAO,EAQL,KAAK,8BAA8B,EACnC,KAAK,gCAAgC,EACtC,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAY9B,qGAAqG;AACrG,MAAM,MAAM,gBAAgB,GAAG,OAAO,gCAAgC,CAAC,IAAI,CAAC;AAE5E,MAAM,MAAM,SAAS,GACjB,qBAAqB,GACrB,oBAAoB,GACpB,0BAA0B,GAC1B,yBAAyB,CAAC;AA0B9B,uFAAuF;AACvF,MAAM,MAAM,iBAAiB,GAAG,OAAO,8BAA8B,CAAC,IAAI,CAAC;AAgJ3E,2FAA2F;AAC3F,eAAO,MAAM,yBAAyB;IAGlC;;;OAGG;;oBAEa,MAAM;mBACP,MAAM;mBACN,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,SAAS,CAAC;uBAChD,gBAAgB;gCAErC,CAAC;AA8BH,yGAAyG;AACzG,MAAM,WAAW,cAAc;IAC7B,wGAAwG;IACxG,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;IACxF,uEAAuE;IACvE,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,MAAM,EAAE,CACf,QAAQ,EAAE,gBAAgB,KACvB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,0BAA0B,GAAG,oBAAoB,CAAC,CAAC;CAC3F;;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,qBAErC;IAEC,MAAM,CAAC,QAAQ,CAAC,KAAK,8DAAiD;CACvE"}
|
package/dist/RuntimeResources.js
CHANGED
|
@@ -5,7 +5,7 @@ import { HttpApiClient } from 'effect/http-api';
|
|
|
5
5
|
import { ResourcesRuntimeApi, } from './Contract/RuntimeApi.js';
|
|
6
6
|
import { registerSecrets } from './Redaction.js';
|
|
7
7
|
import { InvalidResourceError, ResourceNotFoundError, ResourceNotSelectableError, ResourcesUnauthorizedError, ResourcesUnavailableError, } from './ResourcesErrors.js';
|
|
8
|
-
import {
|
|
8
|
+
import { makeRuntimeTokens } from './ResourcesToken.js';
|
|
9
9
|
// Resolved values are live configuration: an edit, or a revoked secret, reaches a warm process within this window.
|
|
10
10
|
const CACHE_TTL = Duration.seconds(30);
|
|
11
11
|
// Bounds memory for a workflow that selects across many tenants; the least recently read entry goes first.
|
|
@@ -27,8 +27,8 @@ const statusOfRuntimeError = {
|
|
|
27
27
|
RuntimeResourcesUnavailableError: 503,
|
|
28
28
|
};
|
|
29
29
|
// One authenticated runtime API caller; `RuntimeResources` and the `@temper/workflow/resources` pools share it.
|
|
30
|
-
const
|
|
31
|
-
const tokens = yield*
|
|
30
|
+
const makeRuntimeCaller = Effect.gen(function* () {
|
|
31
|
+
const tokens = yield* makeRuntimeTokens;
|
|
32
32
|
// Each attempt's scope owns its request: leaving the scope aborts it, so no response outlives its attempt.
|
|
33
33
|
const platform = HttpClient.withScope(yield* HttpClient.HttpClient).pipe(HttpClient.mapRequestEffect((request) => Config.NonEmptyString('UNNBOUND_API_URL').pipe(Effect.map((apiUrl) => HttpClientRequest.prependUrl(request, apiUrl)), Effect.mapError(() => new ApiUrlMissing()))));
|
|
34
34
|
// A 401's body is the fixed `Unauthorized`; failing before it is read lets a refused attempt end at once.
|
|
@@ -46,13 +46,9 @@ const runtimeCaller = (policy) => Effect.gen(function* () {
|
|
|
46
46
|
case 'TokenRefused':
|
|
47
47
|
return new ResourcesUnauthorizedError({ message: failed('401 Unauthorized') });
|
|
48
48
|
case 'HttpClientError':
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
: new ResourcesUnavailableError({
|
|
53
|
-
message: failed(`${error.response.status}`),
|
|
54
|
-
status: error.response.status,
|
|
55
|
-
});
|
|
49
|
+
return new ResourcesUnavailableError({
|
|
50
|
+
message: failed(error.response === undefined ? error.message : `${error.response.status}`),
|
|
51
|
+
});
|
|
56
52
|
case 'SchemaError':
|
|
57
53
|
return new ResourcesUnavailableError({ message: failed('unreadable answer') });
|
|
58
54
|
default: {
|
|
@@ -92,7 +88,6 @@ const runtimeCaller = (policy) => Effect.gen(function* () {
|
|
|
92
88
|
});
|
|
93
89
|
// Registers the answer's secrets in the caller's context, so a cached read masks them like a fresh one.
|
|
94
90
|
const unwrap = (read) => read.pipe(Effect.tap(({ redactionMasks }) => registerSecrets(redactionMasks ?? [])), Effect.map(({ value }) => value));
|
|
95
|
-
const makeRuntimeCaller = runtimeCaller('refreshWindow');
|
|
96
91
|
// The four runtime reads, uncached; each answer still carries its `redactionMasks`.
|
|
97
92
|
const runtimeReads = (call) => ({
|
|
98
93
|
variable: (key) => call('resolveVariable', `key ${key}`, (api, authorization) => api.resolveVariable({ headers: { authorization }, payload: { key } })),
|
|
@@ -107,8 +102,8 @@ const runtimeReads = (call) => ({
|
|
|
107
102
|
: undefined);
|
|
108
103
|
},
|
|
109
104
|
});
|
|
110
|
-
/**
|
|
111
|
-
export const
|
|
105
|
+
/** The `./resources` pool client: uncached runtime reads and the current runtime token. */
|
|
106
|
+
export const makeRuntimeResourceClient = Effect.map(makeRuntimeCaller, ({ tokens, call }) => {
|
|
112
107
|
const reads = runtimeReads(call);
|
|
113
108
|
return {
|
|
114
109
|
/**
|
|
@@ -122,8 +117,6 @@ export const runtimeResourceClient = (policy) => Effect.map(runtimeCaller(policy
|
|
|
122
117
|
select: (selector) => Effect.map(unwrap(reads.select(selector)), (selected) => selected.key),
|
|
123
118
|
};
|
|
124
119
|
});
|
|
125
|
-
/** The `./postgresql` client: tunnel tokens must outlive their refresh window. */
|
|
126
|
-
export const makeRuntimeResourceClient = runtimeResourceClient('refreshWindow');
|
|
127
120
|
const ResourcesMake = Effect.gen(function* () {
|
|
128
121
|
const reads = runtimeReads((yield* makeRuntimeCaller).call);
|
|
129
122
|
const cache = (lookup) => Cache.makeWith(lookup, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeResources.js","sourceRoot":"","sources":["../src/RuntimeResources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAc,MAAM,QAAQ,CAAC;AACrH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAwB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,mBAAmB,GASpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"RuntimeResources.js","sourceRoot":"","sources":["../src/RuntimeResources.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ontemper/sdk",
|
|
3
|
-
"version": "0.7.1-postgresql.
|
|
3
|
+
"version": "0.7.1-postgresql.6",
|
|
4
4
|
"description": "Effect workflow SDK for Temper.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
},
|
|
106
106
|
"license": "MIT",
|
|
107
107
|
"sideEffects": false,
|
|
108
|
-
"gitHead": "
|
|
108
|
+
"gitHead": "f1899ad6f8de899c5c43c308806366f3c52894dc",
|
|
109
109
|
"scripts": {
|
|
110
110
|
"build": "tsc -p tsconfig.json",
|
|
111
111
|
"test": "vitest run",
|
package/dist/ExpiringMap.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/ExpiringMap.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
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
|
package/dist/ExpiringMap.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ExpiringMap.js","sourceRoot":"","sources":["../src/ExpiringMap.ts"],"names":[],"mappings":"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"}
|
package/dist/ResourcesCache.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { type Schema } from 'effect';
|
|
2
|
-
import type { RuntimeEnvConfig, RuntimeEnvLogger, RuntimeResolveOptions } from './ResourcesEnv.js';
|
|
3
|
-
export interface CachePolicy {
|
|
4
|
-
readonly staleIfErrorMs: number;
|
|
5
|
-
readonly cacheMisses: boolean;
|
|
6
|
-
}
|
|
7
|
-
/** The legacy resolver cache, keyed by operation and target; every caller gets its own copy of a value. */
|
|
8
|
-
export declare class RuntimeReadCache {
|
|
9
|
-
private readonly values;
|
|
10
|
-
private readonly misses;
|
|
11
|
-
private readonly inFlight;
|
|
12
|
-
private readonly defaultTtlMs;
|
|
13
|
-
readonly readPolicy: CachePolicy;
|
|
14
|
-
readonly selectPolicy: CachePolicy;
|
|
15
|
-
private readonly notFoundTtlMs;
|
|
16
|
-
private readonly missCapPerMinute;
|
|
17
|
-
private missWindowStart;
|
|
18
|
-
private readonly missedInWindow;
|
|
19
|
-
private holdingMisses;
|
|
20
|
-
private generation;
|
|
21
|
-
private readonly now;
|
|
22
|
-
private readonly logger;
|
|
23
|
-
constructor(config: RuntimeEnvConfig & {
|
|
24
|
-
readonly logger: RuntimeEnvLogger;
|
|
25
|
-
});
|
|
26
|
-
read<A extends Schema.Json>(target: string, options: RuntimeResolveOptions | undefined, policy: CachePolicy, fetch: () => Promise<A>): Promise<A>;
|
|
27
|
-
private nextGeneration;
|
|
28
|
-
private rollMissWindow;
|
|
29
|
-
private recordConfirmedMiss;
|
|
30
|
-
private invalidate;
|
|
31
|
-
private load;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=ResourcesCache.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesCache.d.ts","sourceRoot":"","sources":["../src/ResourcesCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAsCnG,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAmBD,2GAA2G;AAC3G,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IAEjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,eAAe,CAA4B;IAEnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IAGpD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAE1C,YAAY,MAAM,EAAE,gBAAgB,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;KAAE,EA2B3E;IAEK,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,IAAI,EAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,qBAAqB,GAAG,SAAS,EAC1C,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,CAAC,CAAC,CA6CZ;IAED,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,UAAU;YAaJ,IAAI;CAyCnB"}
|
package/dist/ResourcesCache.js
DELETED
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
import {} from 'effect';
|
|
2
|
-
import { ExpiringMap } from './ExpiringMap.js';
|
|
3
|
-
import { ResourceNotFoundError, ResourcesUnauthorizedError, ResourcesUnavailableError } from './ResourcesErrors.js';
|
|
4
|
-
import { TOKEN_NOT_PUBLISHED } from './ResourcesToken.js';
|
|
5
|
-
const DEFAULT_TTL_MS = 30_000;
|
|
6
|
-
const DEFAULT_STALE_IF_ERROR_MS = 15 * 60_000;
|
|
7
|
-
const DEFAULT_SELECT_STALE_IF_ERROR_MS = 5 * 60_000;
|
|
8
|
-
const DEFAULT_NOT_FOUND_TTL_MS = 10_000;
|
|
9
|
-
// One tenant costs a select, a resolve, and its Variables, so 1,000 entries held only ~450 tenants per process.
|
|
10
|
-
const DEFAULT_MAX_ENTRIES = 10_000;
|
|
11
|
-
const DEFAULT_MISS_CAP_PER_MINUTE = 60;
|
|
12
|
-
const MISS_WINDOW_MS = 60_000;
|
|
13
|
-
const RETRY_AFTER_UNAVAILABLE_MS = 5_000;
|
|
14
|
-
const readEnvInteger = (name, fallback, min) => {
|
|
15
|
-
const raw = process.env[name];
|
|
16
|
-
if (!raw)
|
|
17
|
-
return fallback;
|
|
18
|
-
const value = Number(raw);
|
|
19
|
-
return Number.isSafeInteger(value) && value >= min ? value : fallback;
|
|
20
|
-
};
|
|
21
|
-
// No usable answer: a transport fault, a timeout, a 5xx, or a token provider that stopped publishing (an API outage).
|
|
22
|
-
// An undeclared 4xx carries its status: it is an answer, so it drops the cached value instead of serving it stale.
|
|
23
|
-
const isOutage = (error) => (error instanceof ResourcesUnavailableError &&
|
|
24
|
-
(error.status === undefined || error.status >= 500 || error.status < 400)) ||
|
|
25
|
-
(error instanceof ResourcesUnauthorizedError && error.message === TOKEN_NOT_PUBLISHED);
|
|
26
|
-
/** The legacy resolver cache, keyed by operation and target; every caller gets its own copy of a value. */
|
|
27
|
-
export class RuntimeReadCache {
|
|
28
|
-
values;
|
|
29
|
-
// Misses live apart from values so a flood of unknown tenant keys cannot evict the known ones.
|
|
30
|
-
misses;
|
|
31
|
-
inFlight = new Map();
|
|
32
|
-
defaultTtlMs;
|
|
33
|
-
readPolicy;
|
|
34
|
-
selectPolicy;
|
|
35
|
-
notFoundTtlMs;
|
|
36
|
-
missCapPerMinute;
|
|
37
|
-
missWindowStart = Number.NEGATIVE_INFINITY;
|
|
38
|
-
// Distinct select keys the API answered 404 for in the current window, until the cap is reached.
|
|
39
|
-
missedInWindow = new Set();
|
|
40
|
-
// Past the cap a 404 is cached until the window ends: every unseen key still reaches the API once, but no key the API
|
|
41
|
-
// just refused is sent again that minute.
|
|
42
|
-
holdingMisses = false;
|
|
43
|
-
generation = 0;
|
|
44
|
-
now;
|
|
45
|
-
logger;
|
|
46
|
-
constructor(config) {
|
|
47
|
-
// Zero or a negative age would expire every entry on write and turn each read into a resolver call.
|
|
48
|
-
this.defaultTtlMs =
|
|
49
|
-
config.defaultTtlMs ?? readEnvInteger('UNNBOUND_RUNTIME_RESOLVE_CACHE_MAX_AGE', DEFAULT_TTL_MS, 1);
|
|
50
|
-
this.readPolicy = {
|
|
51
|
-
staleIfErrorMs: config.staleIfErrorMs ??
|
|
52
|
-
readEnvInteger('TEMPER_RUNTIME_RESOLVE_STALE_IF_ERROR_MAX_AGE', DEFAULT_STALE_IF_ERROR_MS, 0),
|
|
53
|
-
cacheMisses: false,
|
|
54
|
-
};
|
|
55
|
-
this.selectPolicy = {
|
|
56
|
-
staleIfErrorMs: config.selectStaleIfErrorMs ??
|
|
57
|
-
readEnvInteger('TEMPER_RUNTIME_RESOLVE_SELECT_STALE_IF_ERROR_MAX_AGE', DEFAULT_SELECT_STALE_IF_ERROR_MS, 0),
|
|
58
|
-
cacheMisses: true,
|
|
59
|
-
};
|
|
60
|
-
this.notFoundTtlMs =
|
|
61
|
-
config.notFoundTtlMs ?? readEnvInteger('TEMPER_RUNTIME_RESOLVE_NOT_FOUND_MAX_AGE', DEFAULT_NOT_FOUND_TTL_MS, 0);
|
|
62
|
-
this.missCapPerMinute =
|
|
63
|
-
config.missCapPerMinute ??
|
|
64
|
-
readEnvInteger('TEMPER_RUNTIME_RESOLVE_MISS_CAP_PER_MINUTE', DEFAULT_MISS_CAP_PER_MINUTE, 0);
|
|
65
|
-
const maxEntries = config.maxEntries ?? readEnvInteger('TEMPER_RUNTIME_RESOLVE_CACHE_MAX_ENTRIES', DEFAULT_MAX_ENTRIES, 1);
|
|
66
|
-
this.values = new ExpiringMap(maxEntries);
|
|
67
|
-
this.misses = new ExpiringMap(maxEntries);
|
|
68
|
-
this.now = config.now ?? Date.now;
|
|
69
|
-
this.logger = config.logger;
|
|
70
|
-
}
|
|
71
|
-
async read(target, options, policy, fetch) {
|
|
72
|
-
// A reader can serve multiple workflow identities during its life; a cache hit must belong to this one.
|
|
73
|
-
const key = JSON.stringify([
|
|
74
|
-
process.env.UNNBOUND_API_URL ?? '',
|
|
75
|
-
process.env.UNNBOUND_WORKFLOW_ID ?? '',
|
|
76
|
-
process.env.UNNBOUND_DEPLOYMENT_ID ?? '',
|
|
77
|
-
process.env.TEMPER_ENVIRONMENT ?? process.env.UNNBOUND_ENVIRONMENT ?? '',
|
|
78
|
-
target,
|
|
79
|
-
]);
|
|
80
|
-
// SAFETY: `key` encodes the operation, so every value under it was stored by the same call site with the same `A`.
|
|
81
|
-
const deliver = (value) => structuredClone(value);
|
|
82
|
-
if (options?.cache === false) {
|
|
83
|
-
const started = this.nextGeneration();
|
|
84
|
-
try {
|
|
85
|
-
const value = await fetch();
|
|
86
|
-
this.invalidate(key, started);
|
|
87
|
-
return deliver(value);
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
// Only an outage leaves the cache alone; any API answer replaces what the cache knew about this key.
|
|
91
|
-
if (!(error instanceof Error && isOutage(error)))
|
|
92
|
-
this.invalidate(key, started);
|
|
93
|
-
throw error;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
const now = this.now();
|
|
97
|
-
const entry = this.values.get(key, now);
|
|
98
|
-
if (entry && (now < entry.freshUntil || now < entry.retryAt))
|
|
99
|
-
return deliver(entry.value);
|
|
100
|
-
const miss = this.misses.get(key, now);
|
|
101
|
-
if (miss)
|
|
102
|
-
throw new ResourceNotFoundError({ target: miss.error.target, message: miss.error.message });
|
|
103
|
-
const existing = this.inFlight.get(key);
|
|
104
|
-
if (existing)
|
|
105
|
-
return deliver(await existing.promise);
|
|
106
|
-
const token = { superseded: false, generation: this.nextGeneration() };
|
|
107
|
-
const load = {
|
|
108
|
-
token,
|
|
109
|
-
promise: this.load(key, fetch, options?.ttlMs ?? this.defaultTtlMs, policy, token),
|
|
110
|
-
};
|
|
111
|
-
this.inFlight.set(key, load);
|
|
112
|
-
try {
|
|
113
|
-
return deliver(await load.promise);
|
|
114
|
-
}
|
|
115
|
-
finally {
|
|
116
|
-
if (this.inFlight.get(key) === load)
|
|
117
|
-
this.inFlight.delete(key);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
nextGeneration() {
|
|
121
|
-
this.generation += 1;
|
|
122
|
-
return this.generation;
|
|
123
|
-
}
|
|
124
|
-
rollMissWindow(now) {
|
|
125
|
-
if (now - this.missWindowStart < MISS_WINDOW_MS)
|
|
126
|
-
return;
|
|
127
|
-
this.missWindowStart = now;
|
|
128
|
-
this.missedInWindow.clear();
|
|
129
|
-
this.holdingMisses = false;
|
|
130
|
-
}
|
|
131
|
-
// The cap limits the rate of distinct confirmed misses, never a first request: a valid tenant this process has not
|
|
132
|
-
// seen is indistinguishable from a rotating miss until the API answers. Returns when the 404 stops being cached.
|
|
133
|
-
recordConfirmedMiss(key, now) {
|
|
134
|
-
const expiresAt = now + this.notFoundTtlMs;
|
|
135
|
-
if (this.missCapPerMinute === 0)
|
|
136
|
-
return expiresAt;
|
|
137
|
-
this.rollMissWindow(now);
|
|
138
|
-
const windowEnd = this.missWindowStart + MISS_WINDOW_MS;
|
|
139
|
-
if (!this.holdingMisses) {
|
|
140
|
-
this.missedInWindow.add(key);
|
|
141
|
-
if (this.missedInWindow.size < this.missCapPerMinute)
|
|
142
|
-
return expiresAt;
|
|
143
|
-
this.holdingMisses = true;
|
|
144
|
-
// The 404s that filled the cap are held too, unless a newer answer or eviction already removed them.
|
|
145
|
-
for (const missed of this.missedInWindow)
|
|
146
|
-
this.misses.extend(missed, windowEnd, now);
|
|
147
|
-
this.missedInWindow.clear();
|
|
148
|
-
this.logger.warn({ missCapPerMinute: this.missCapPerMinute }, 'Runtime resolver select miss cap reached; keys answered 404 are not sent again until the minute ends.');
|
|
149
|
-
}
|
|
150
|
-
return Math.max(expiresAt, windowEnd);
|
|
151
|
-
}
|
|
152
|
-
// A `cache: false` answer replaces what older reads cached or still have in flight; a read that started after the
|
|
153
|
-
// bypass carries a newer answer and stays.
|
|
154
|
-
invalidate(key, started) {
|
|
155
|
-
const value = this.values.peek(key);
|
|
156
|
-
if (value && value.generation < started)
|
|
157
|
-
this.values.delete(key);
|
|
158
|
-
const miss = this.misses.peek(key);
|
|
159
|
-
if (miss && miss.generation < started)
|
|
160
|
-
this.misses.delete(key);
|
|
161
|
-
const pending = this.inFlight.get(key);
|
|
162
|
-
if (pending && pending.token.generation < started) {
|
|
163
|
-
pending.token.superseded = true;
|
|
164
|
-
this.inFlight.delete(key);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
// An outage serves the last good value; any answer from the resolver (401, 403, 404, 409) drops it.
|
|
168
|
-
async load(key, fetch, ttlMs, policy, token) {
|
|
169
|
-
try {
|
|
170
|
-
const value = await fetch();
|
|
171
|
-
// A refresh that a newer `cache: false` answer superseded must not write its older answer back.
|
|
172
|
-
if (token.superseded)
|
|
173
|
-
return value;
|
|
174
|
-
const now = this.now();
|
|
175
|
-
const freshUntil = now + ttlMs;
|
|
176
|
-
const entry = { value, freshUntil, retryAt: 0, warned: false, generation: token.generation };
|
|
177
|
-
this.values.set(key, entry, freshUntil + policy.staleIfErrorMs, now, freshUntil);
|
|
178
|
-
return value;
|
|
179
|
-
}
|
|
180
|
-
catch (error) {
|
|
181
|
-
// A superseded answer is older than the bypass that replaced it: it neither counts as a miss nor changes the cache.
|
|
182
|
-
if (token.superseded)
|
|
183
|
-
throw error;
|
|
184
|
-
const now = this.now();
|
|
185
|
-
if (!(error instanceof Error && isOutage(error))) {
|
|
186
|
-
this.values.delete(key);
|
|
187
|
-
if (policy.cacheMisses && error instanceof ResourceNotFoundError) {
|
|
188
|
-
const expiresAt = this.recordConfirmedMiss(key, now);
|
|
189
|
-
this.misses.set(key, { error, generation: token.generation }, expiresAt, now);
|
|
190
|
-
}
|
|
191
|
-
throw error;
|
|
192
|
-
}
|
|
193
|
-
const last = this.values.get(key, now);
|
|
194
|
-
if (!last)
|
|
195
|
-
throw error;
|
|
196
|
-
last.retryAt = now + RETRY_AFTER_UNAVAILABLE_MS;
|
|
197
|
-
if (!last.warned) {
|
|
198
|
-
last.warned = true;
|
|
199
|
-
this.logger.warn({ err: error.message, staleForMs: now - last.freshUntil }, 'Runtime resolver unavailable; serving the last good value.');
|
|
200
|
-
}
|
|
201
|
-
return last.value;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
//# sourceMappingURL=ResourcesCache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesCache.js","sourceRoot":"","sources":["../src/ResourcesCache.ts"],"names":[],"mappings":"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"}
|
package/dist/ResourcesEnv.d.ts
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { Effect, Schema } from 'effect';
|
|
2
|
-
import { type JsonObject, type RecordSchema } from './ResourceRecords.js';
|
|
3
|
-
import { RuntimeReadCache } from './ResourcesCache.js';
|
|
4
|
-
import { type InspectedResource } from './RuntimeResources.js';
|
|
5
|
-
/** Per-read cache control, as in `@ontemper/resources`. */
|
|
6
|
-
export interface RuntimeResolveOptions {
|
|
7
|
-
/** `false` reads the resolver and replaces what the cache held for this read. */
|
|
8
|
-
cache?: boolean;
|
|
9
|
-
/** How long this answer stays fresh; default 30 s (`UNNBOUND_RUNTIME_RESOLVE_CACHE_MAX_AGE`). */
|
|
10
|
-
ttlMs?: number;
|
|
11
|
-
}
|
|
12
|
-
/** The resource record as `inspect` returns it: literal fields only, secrets left to `resolve`. */
|
|
13
|
-
export type RuntimeResourceRecord = InspectedResource;
|
|
14
|
-
export interface RuntimeSelectResourceInput {
|
|
15
|
-
resourceTypeKey: string;
|
|
16
|
-
match: Record<string, string>;
|
|
17
|
-
}
|
|
18
|
-
export interface RuntimeSelectResourceOutput {
|
|
19
|
-
key: string;
|
|
20
|
-
}
|
|
21
|
-
/** Where a warning goes; the SDK line logger on stdout by default. */
|
|
22
|
-
export interface RuntimeEnvLogger {
|
|
23
|
-
readonly warn: (fields: Readonly<Record<string, string | number>>, message: string) => void;
|
|
24
|
-
}
|
|
25
|
-
/** Cache settings; each defaults to its `@ontemper/resources` environment variable, then to the legacy default. */
|
|
26
|
-
export interface RuntimeEnvConfig {
|
|
27
|
-
readonly now?: () => number;
|
|
28
|
-
readonly defaultTtlMs?: number;
|
|
29
|
-
/** How long past its TTL a value still serves while the resolver is unavailable; 0 turns stale serving off. */
|
|
30
|
-
readonly staleIfErrorMs?: number;
|
|
31
|
-
/** The same window for `select`, shorter because a selection can authorize a tenant the API now refuses. */
|
|
32
|
-
readonly selectStaleIfErrorMs?: number;
|
|
33
|
-
readonly notFoundTtlMs?: number;
|
|
34
|
-
readonly maxEntries?: number;
|
|
35
|
-
/** Distinct `select` 404s per minute; past it, a 404 stays cached until the minute ends. 0 turns it off. */
|
|
36
|
-
readonly missCapPerMinute?: number;
|
|
37
|
-
readonly logger?: RuntimeEnvLogger;
|
|
38
|
-
}
|
|
39
|
-
declare const makeClient: Effect.Effect<{
|
|
40
|
-
tunnelToken: Effect.Effect<string, import("./ResourcesErrors.js").ResourcesUnauthorizedError, never>;
|
|
41
|
-
variable: (key: string) => Effect.Effect<string, import("./RuntimeResources.js").ReadError, never>;
|
|
42
|
-
resolve: (key: string) => Effect.Effect<Schema.Json, import("./RuntimeResources.js").ReadError, never>;
|
|
43
|
-
inspect: (key: string) => Effect.Effect<InspectedResource, import("./RuntimeResources.js").ReadError>;
|
|
44
|
-
select: (selector: import("./RuntimeResources.js").ResourceSelector) => Effect.Effect<string, import("./ResourcesErrors.js").ResourceNotSelectableError | import("./RuntimeResources.js").ReadError, never>;
|
|
45
|
-
}, never, import("effect/http/HttpClient").HttpClient>;
|
|
46
|
-
type Client = Effect.Success<typeof makeClient>;
|
|
47
|
-
/** `env.resources`: the reads of `@ontemper/resources` `ResourceAccessor`. */
|
|
48
|
-
export declare class RuntimeResourceReads {
|
|
49
|
-
private readonly cache;
|
|
50
|
-
private readonly connect;
|
|
51
|
-
constructor(cache: RuntimeReadCache, connect: () => Promise<Client>);
|
|
52
|
-
/** The record without its secret fields: type, scope, and literal values. */
|
|
53
|
-
inspect(key: string, options?: RuntimeResolveOptions): Promise<RuntimeResourceRecord>;
|
|
54
|
-
/** The value with every secret field filled in; given a `schema` (such as `SftpResource`), the decoded value. */
|
|
55
|
-
resolve(key: string, schema?: undefined, options?: RuntimeResolveOptions): Promise<JsonObject>;
|
|
56
|
-
resolve<S extends RecordSchema>(key: string, schema: S, options?: RuntimeResolveOptions): Promise<S['Type']>;
|
|
57
|
-
/** The key of the record whose selectable field matches; feed it to `resolve`. */
|
|
58
|
-
select(input: RuntimeSelectResourceInput, options?: RuntimeResolveOptions): Promise<RuntimeSelectResourceOutput>;
|
|
59
|
-
}
|
|
60
|
-
/** `env.variables`: live Variable reads through the runtime resolver. */
|
|
61
|
-
export declare class RuntimeVariableReads {
|
|
62
|
-
private readonly cache;
|
|
63
|
-
private readonly connect;
|
|
64
|
-
constructor(cache: RuntimeReadCache, connect: () => Promise<Client>);
|
|
65
|
-
/** The Variable's live value. */
|
|
66
|
-
get(key: string, options?: RuntimeResolveOptions): Promise<string>;
|
|
67
|
-
}
|
|
68
|
-
/** One reader per process, with the Run token of `UNNBOUND_RUNTIME_TOKEN_FILE` or `UNNBOUND_RUNTIME_TOKEN`. */
|
|
69
|
-
export declare class RuntimeEnv {
|
|
70
|
-
readonly resources: RuntimeResourceReads;
|
|
71
|
-
readonly variables: RuntimeVariableReads;
|
|
72
|
-
private client;
|
|
73
|
-
constructor(config?: RuntimeEnvConfig);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Promise reads of Resources and Variables, with the signatures of `@ontemper/resources` `env`. Errors reject with
|
|
77
|
-
* the SDK's Resource errors; `ResourceNotFoundError` means that no record answers the key or the `select` match.
|
|
78
|
-
*/
|
|
79
|
-
export declare const env: Pick<RuntimeEnv, 'resources' | 'variables'>;
|
|
80
|
-
export {};
|
|
81
|
-
//# sourceMappingURL=ResourcesEnv.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesEnv.d.ts","sourceRoot":"","sources":["../src/ResourcesEnv.ts"],"names":[],"mappings":"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"}
|
package/dist/ResourcesEnv.js
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { Cause, ConfigProvider, Effect, Exit, Layer, Option, Schema } from 'effect';
|
|
2
|
-
import { FetchHttpClient } from 'effect/http';
|
|
3
|
-
import { loggerLayer, writeStdoutLine } from './Logger.js';
|
|
4
|
-
import { decodeRecord } from './ResourceRecords.js';
|
|
5
|
-
import { RuntimeReadCache } from './ResourcesCache.js';
|
|
6
|
-
import { InvalidResourceError, ResourceNotFoundError, ResourcesUnavailableError } from './ResourcesErrors.js';
|
|
7
|
-
import { runtimeResourceClient } from './RuntimeResources.js';
|
|
8
|
-
const normalizeKey = (key) => {
|
|
9
|
-
const normalized = key.trim();
|
|
10
|
-
if (!normalized)
|
|
11
|
-
throw new Error('Runtime resolver key is required.');
|
|
12
|
-
return normalized;
|
|
13
|
-
};
|
|
14
|
-
// Key order must not split the cache: `{a,b}` and `{b,a}` select the same record.
|
|
15
|
-
const selectTarget = ({ resourceTypeKey, match }) => JSON.stringify([
|
|
16
|
-
resourceTypeKey,
|
|
17
|
-
Object.keys(match)
|
|
18
|
-
.sort()
|
|
19
|
-
.map((field) => [field, match[field]]),
|
|
20
|
-
]);
|
|
21
|
-
const decodeJsonObject = Schema.decodeUnknownOption(Schema.Record(Schema.String, Schema.MutableJson));
|
|
22
|
-
// The resolver answers a record as a JSON object; anything else cannot serve the read.
|
|
23
|
-
const asRecord = (key, value) => {
|
|
24
|
-
const record = Option.getOrUndefined(decodeJsonObject(value));
|
|
25
|
-
return record !== undefined
|
|
26
|
-
? Effect.succeed(record)
|
|
27
|
-
: Effect.fail(new InvalidResourceError({ target: `key ${key}`, message: `Resource ${key} did not resolve to a JSON object` }));
|
|
28
|
-
};
|
|
29
|
-
// The live environment on every read, as `workflow()` provides it; Effect's default provider keeps a first-use copy.
|
|
30
|
-
const liveConfig = Layer.unwrap(Effect.sync(() => ConfigProvider.layer(ConfigProvider.fromEnvRecord(process.env, { preserveEmptyStrings: true }))));
|
|
31
|
-
const standalone = loggerLayer(writeStdoutLine).pipe(Layer.orDie, Layer.provideMerge(liveConfig));
|
|
32
|
-
const run = async (effect) => {
|
|
33
|
-
const exit = await Effect.runPromiseExit(effect.pipe(Effect.provide(liveConfig)));
|
|
34
|
-
if (Exit.isSuccess(exit))
|
|
35
|
-
return exit.value;
|
|
36
|
-
throw Cause.squash(exit.cause);
|
|
37
|
-
};
|
|
38
|
-
const sdkLogger = {
|
|
39
|
-
warn: (fields, message) => Effect.runFork(Effect.logWarning(message).pipe(Effect.annotateLogs(fields), Effect.provide(standalone))),
|
|
40
|
-
};
|
|
41
|
-
const makeClient = runtimeResourceClient('unexpired');
|
|
42
|
-
// A resolve 404 cannot tell a missing record from a broken reference inside a found one; inspect answers 404 only
|
|
43
|
-
// for the first, as the `./resources` PostgreSQL pool reads it. When inspect cannot answer, the error keeps the
|
|
44
|
-
// resolver's 404: an answer, so the cache drops the value instead of serving a credential whose Variable is gone.
|
|
45
|
-
const resolveRecord = (client, key) => client.resolve(key).pipe(Effect.catchTag('ResourceNotFoundError', (notFound) => client.inspect(key).pipe(Effect.catchTag('ResourceNotFoundError', () => Effect.fail(notFound)), Effect.mapError((error) => error instanceof ResourceNotFoundError
|
|
46
|
-
? error
|
|
47
|
-
: new ResourcesUnavailableError({
|
|
48
|
-
status: 404,
|
|
49
|
-
message: `${notFound.message}; inspect could not tell a missing record from a broken reference: ${error.message}`,
|
|
50
|
-
})), Effect.flatMap(() => Effect.fail(new InvalidResourceError({ target: notFound.target, message: notFound.message }))))), Effect.flatMap((value) => asRecord(key, value)));
|
|
51
|
-
/** `env.resources`: the reads of `@ontemper/resources` `ResourceAccessor`. */
|
|
52
|
-
export class RuntimeResourceReads {
|
|
53
|
-
cache;
|
|
54
|
-
connect;
|
|
55
|
-
constructor(cache, connect) {
|
|
56
|
-
this.cache = cache;
|
|
57
|
-
this.connect = connect;
|
|
58
|
-
}
|
|
59
|
-
/** The record without its secret fields: type, scope, and literal values. */
|
|
60
|
-
async inspect(key, options) {
|
|
61
|
-
const normalized = normalizeKey(key);
|
|
62
|
-
return this.cache.read(`resource.inspect:${normalized}`, options, this.cache.readPolicy, async () => run((await this.connect()).inspect(normalized)));
|
|
63
|
-
}
|
|
64
|
-
async resolve(key, schema, options) {
|
|
65
|
-
const normalized = normalizeKey(key);
|
|
66
|
-
const value = await this.cache.read(`resource.resolve:${normalized}`, options, this.cache.readPolicy, async () => run(resolveRecord(await this.connect(), normalized)));
|
|
67
|
-
return schema === undefined ? value : run(decodeRecord(schema, normalized, value));
|
|
68
|
-
}
|
|
69
|
-
/** The key of the record whose selectable field matches; feed it to `resolve`. */
|
|
70
|
-
async select(input, options) {
|
|
71
|
-
const selector = { resourceTypeKey: input.resourceTypeKey, match: { ...input.match } };
|
|
72
|
-
const key = await this.cache.read(`resource.select:${selectTarget(selector)}`, options, this.cache.selectPolicy, async () => run((await this.connect()).select(selector)));
|
|
73
|
-
return { key };
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/** `env.variables`: live Variable reads through the runtime resolver. */
|
|
77
|
-
export class RuntimeVariableReads {
|
|
78
|
-
cache;
|
|
79
|
-
connect;
|
|
80
|
-
constructor(cache, connect) {
|
|
81
|
-
this.cache = cache;
|
|
82
|
-
this.connect = connect;
|
|
83
|
-
}
|
|
84
|
-
/** The Variable's live value. */
|
|
85
|
-
async get(key, options) {
|
|
86
|
-
const normalized = normalizeKey(key);
|
|
87
|
-
return this.cache.read(`variable.resolve:${normalized}`, options, this.cache.readPolicy, async () => run((await this.connect()).variable(normalized)));
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/** One reader per process, with the Run token of `UNNBOUND_RUNTIME_TOKEN_FILE` or `UNNBOUND_RUNTIME_TOKEN`. */
|
|
91
|
-
export class RuntimeEnv {
|
|
92
|
-
resources;
|
|
93
|
-
variables;
|
|
94
|
-
client;
|
|
95
|
-
constructor(config = {}) {
|
|
96
|
-
const cache = new RuntimeReadCache({ ...config, logger: config.logger ?? sdkLogger });
|
|
97
|
-
const connect = () => {
|
|
98
|
-
this.client ??= Effect.runPromise(makeClient.pipe(Effect.provide(FetchHttpClient.layer)));
|
|
99
|
-
return this.client;
|
|
100
|
-
};
|
|
101
|
-
this.resources = new RuntimeResourceReads(cache, connect);
|
|
102
|
-
this.variables = new RuntimeVariableReads(cache, connect);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Promise reads of Resources and Variables, with the signatures of `@ontemper/resources` `env`. Errors reject with
|
|
107
|
-
* the SDK's Resource errors; `ResourceNotFoundError` means that no record answers the key or the `select` match.
|
|
108
|
-
*/
|
|
109
|
-
export const env = new RuntimeEnv();
|
|
110
|
-
//# sourceMappingURL=ResourcesEnv.js.map
|
package/dist/ResourcesEnv.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesEnv.js","sourceRoot":"","sources":["../src/ResourcesEnv.ts"],"names":[],"mappings":"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"}
|