@ontemper/sdk 0.7.0 → 0.7.1-postgresql.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -2
- package/dist/Contract/RuntimeApi.d.ts +19 -0
- package/dist/Contract/RuntimeApi.d.ts.map +1 -1
- package/dist/Contract/RuntimeApi.js +1 -1
- package/dist/Contract/RuntimeApi.js.map +1 -1
- package/dist/HttpApiResource.d.ts +12 -0
- package/dist/HttpApiResource.d.ts.map +1 -1
- package/dist/HttpApiResource.js +1 -1
- package/dist/HttpApiResource.js.map +1 -1
- package/dist/Manifest.d.ts +1 -1
- package/dist/Manifest.d.ts.map +1 -1
- package/dist/Manifest.js +1 -1
- package/dist/Manifest.js.map +1 -1
- package/dist/PostgreSql.d.ts +24 -0
- package/dist/PostgreSql.d.ts.map +1 -0
- package/dist/PostgreSql.js +64 -0
- package/dist/PostgreSql.js.map +1 -0
- package/dist/PostgreSqlPool.d.ts +70 -0
- package/dist/PostgreSqlPool.d.ts.map +1 -0
- package/dist/PostgreSqlPool.js +138 -0
- package/dist/PostgreSqlPool.js.map +1 -0
- package/dist/PostgreSqlTimeouts.d.ts +6 -0
- package/dist/PostgreSqlTimeouts.d.ts.map +1 -0
- package/dist/PostgreSqlTimeouts.js +17 -0
- package/dist/PostgreSqlTimeouts.js.map +1 -0
- package/dist/PostgreSqlTunnel.d.ts +25 -0
- package/dist/PostgreSqlTunnel.d.ts.map +1 -0
- package/dist/PostgreSqlTunnel.js +114 -0
- package/dist/PostgreSqlTunnel.js.map +1 -0
- package/dist/Resources.d.ts +7 -0
- package/dist/Resources.d.ts.map +1 -0
- package/dist/Resources.js +7 -0
- package/dist/Resources.js.map +1 -0
- package/dist/RuntimeResources.d.ts +13 -1
- package/dist/RuntimeResources.d.ts.map +1 -1
- package/dist/RuntimeResources.js +18 -3
- package/dist/RuntimeResources.js.map +1 -1
- package/package.json +25 -4
package/README.md
CHANGED
|
@@ -324,6 +324,35 @@ approved; another runtime refuses a partner with TLS settings or a proxy. In tes
|
|
|
324
324
|
`@temper/workflow/as2/testing` and pass its `fetch` to `testPlatform`; it keeps the platform ledger rules and runs
|
|
325
325
|
no crypto.
|
|
326
326
|
|
|
327
|
+
## PostgreSQL
|
|
328
|
+
|
|
329
|
+
`@temper/workflow/resources` opens a `pg.Pool` for a PostgreSQL Resource by key. A pool loads `pg`, and a builder's
|
|
330
|
+
tunnel to a Temper-managed database loads `ws`, which the workflow installs; importing the entry point loads neither. TypeScript code also needs `@types/pg`.
|
|
331
|
+
|
|
332
|
+
```ts
|
|
333
|
+
import { createPostgresqlPool, makePostgresqlPool } from '@temper/workflow/resources';
|
|
334
|
+
|
|
335
|
+
// A script or a module-level pool; the caller ends it with `pool.end()`.
|
|
336
|
+
const pool = await createPostgresqlPool('orders-db');
|
|
337
|
+
|
|
338
|
+
// In an Effect service: the pool ends with the scope, and its password masks the workflow's log lines.
|
|
339
|
+
const Ledger = Layer.effect(LedgerService, Effect.map(makePostgresqlPool('orders-db'), makeLedger));
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
The pool resolves the Resource through the runtime API and opens no connection until the first query. It
|
|
343
|
+
holds at most 5 connections, with a 10 s connect timeout, a 30 s idle timeout, and a 10 s statement timeout.
|
|
344
|
+
A statement timeout logs `temper.database.query.timeout`, and an idle connection error logs
|
|
345
|
+
`temper.database.connection.error`, without the query or the server text. `sslmode` maps to TLS as libpq does
|
|
346
|
+
(`disable`, `require`, `verify-ca`, `verify-full`; default `verify-full`). A Resource without a password sends an
|
|
347
|
+
empty one, never `PGPASSWORD` or `.pgpass`. A record with an SSH tunnel or RDS IAM authentication fails with
|
|
348
|
+
`InvalidResourceError`.
|
|
349
|
+
|
|
350
|
+
Deployed workflows and external databases connect over native TCP. In a builder sandbox
|
|
351
|
+
(`TEMPER_DATABASE_TUNNEL=websocket`), a Temper-managed Resource connects through the Resources-authenticated
|
|
352
|
+
WebSocket tunnel. Each physical connection reads the current runtime token, and a refused tunnel fails the
|
|
353
|
+
connection without a TCP fallback. `createPostgresqlPool` registers the password in the process-wide secret
|
|
354
|
+
registry; inside a workflow handler, prefer `makePostgresqlPool`, which registers it in the workflow's own.
|
|
355
|
+
|
|
327
356
|
## Versions
|
|
328
357
|
|
|
329
358
|
CI publishes every version to npm as `@ontemper/sdk`; nobody publishes by hand. Workflow code keeps
|
|
@@ -337,9 +366,11 @@ npm install --save-exact @temper/workflow@npm:@ontemper/sdk@<version>
|
|
|
337
366
|
A published version never changes. The workflow template and the examples pin one exact
|
|
338
367
|
version; `pnpm sdk:pin` moves them all together.
|
|
339
368
|
|
|
340
|
-
The package has
|
|
369
|
+
The package has nine entry points: `@temper/workflow`, `@temper/workflow/testing`,
|
|
341
370
|
`@temper/workflow/contract`, `@temper/workflow/sftp`, `@temper/workflow/sftp/testing`,
|
|
342
|
-
`@temper/workflow/edi`, `@temper/workflow/as2`,
|
|
371
|
+
`@temper/workflow/edi`, `@temper/workflow/as2`, `@temper/workflow/as2/testing`, and `@temper/workflow/resources`.
|
|
372
|
+
Only `/sftp` loads `ssh2`, and only a `/resources` PostgreSQL pool loads `pg` and `ws` (optional peer dependencies).
|
|
373
|
+
`@temper/workflow/contract` holds the runtime Resources HttpApi and the
|
|
343
374
|
manifest, trigger, and invocation schemas that the platform imports. Workflow code rarely needs it.
|
|
344
375
|
|
|
345
376
|
## Develop and release
|
|
@@ -9,6 +9,25 @@ export declare const SelectResourceRuntimeInputSchema: Schema.Struct<{
|
|
|
9
9
|
readonly resourceTypeKey: Schema.String;
|
|
10
10
|
readonly match: Schema.$Record<Schema.String, Schema.String>;
|
|
11
11
|
}>;
|
|
12
|
+
/** A record without its secret fields: a field that points at a Variable sits in `refs`, and only a resolve fills it. */
|
|
13
|
+
export declare const RuntimeInspectedResourceSchema: Schema.Struct<{
|
|
14
|
+
readonly id: Schema.String;
|
|
15
|
+
readonly organizationId: Schema.String;
|
|
16
|
+
readonly resourceTypeId: Schema.String;
|
|
17
|
+
readonly resourceTypeKey: Schema.String;
|
|
18
|
+
readonly resourceTypeName: Schema.String;
|
|
19
|
+
readonly projectId: Schema.NullOr<Schema.String>;
|
|
20
|
+
readonly workflowId: Schema.NullOr<Schema.String>;
|
|
21
|
+
readonly environment: Schema.NullOr<Schema.Literals<readonly ["sandbox", "production", "staging"]>>;
|
|
22
|
+
readonly key: Schema.String;
|
|
23
|
+
readonly label: Schema.NullOr<Schema.String>;
|
|
24
|
+
readonly value: Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>;
|
|
25
|
+
readonly refs: Schema.$Record<Schema.String, Schema.Struct<{
|
|
26
|
+
readonly key: Schema.String;
|
|
27
|
+
}>>;
|
|
28
|
+
readonly description: Schema.NullOr<Schema.String>;
|
|
29
|
+
readonly metadata: Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>;
|
|
30
|
+
}>;
|
|
12
31
|
export declare const SelectResourceRuntimeOutputSchema: Schema.Struct<{
|
|
13
32
|
readonly key: Schema.String;
|
|
14
33
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeApi.d.ts","sourceRoot":"","sources":["../../src/Contract/RuntimeApi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAgB,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAA0B,MAAM,iBAAiB,CAAC;AAUjG,eAAO,MAAM,gCAAgC;;;EAK3C,CAAC;
|
|
1
|
+
{"version":3,"file":"RuntimeApi.d.ts","sourceRoot":"","sources":["../../src/Contract/RuntimeApi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAgB,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAA0B,MAAM,iBAAiB,CAAC;AAUjG,eAAO,MAAM,gCAAgC;;;EAK3C,CAAC;AAmBH,yHAAyH;AACzH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;EAyBzC,CAAC;AAOH,eAAO,MAAM,iCAAiC;;EAE5C,CAAC;;;;AAaH,qBAAa,iCAAkC,SAAQ,sCAGtD;CAAG;;;;AAEJ,qBAAa,8BAA+B,SAAQ,mCAGnD;CAAG;;;;AAEJ,qBAAa,6BAA8B,SAAQ,kCAGlD;CAAG;;;;AAEJ,qBAAa,+BAAgC,SAAQ,oCAGpD;CAAG;;;;AAEJ,qBAAa,6BAA8B,SAAQ,kCAGlD;CAAG;;;;AACJ,qBAAa,gCAAiC,SAAQ,qCAGrD;CAAG;AAmGJ,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CAA0E,CAAC"}
|
|
@@ -31,7 +31,7 @@ const ResolvedResourceOutputSchema = Schema.Struct({
|
|
|
31
31
|
});
|
|
32
32
|
const JsonObjectSchema = Schema.Record(Schema.String, Schema.Json).annotate({ description: 'JSON object.' });
|
|
33
33
|
/** A record without its secret fields: a field that points at a Variable sits in `refs`, and only a resolve fills it. */
|
|
34
|
-
const RuntimeInspectedResourceSchema = Schema.Struct({
|
|
34
|
+
export const RuntimeInspectedResourceSchema = Schema.Struct({
|
|
35
35
|
id: Schema.String.annotate({ description: 'The immutable resource UUID.' }),
|
|
36
36
|
organizationId: Schema.String,
|
|
37
37
|
resourceTypeId: Schema.String.annotate({ description: 'The immutable resource-type UUID.' }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeApi.js","sourceRoot":"","sources":["../../src/Contract/RuntimeApi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjG,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;CACjD,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;CAC1E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5D,eAAe,EAAE,MAAM,CAAC,MAAM;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;QAC1D,WAAW,EAAE,qEAAqE;KACnF,CAAC;CACH,CAAC,CAAC;AAEH,wFAAwF;AACxF,MAAM,mBAAmB,GAAG;IAC1B,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,GAAG,mBAAmB;CACvB,CAAC,CAAC;AAEH,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC,IAAI;IAClB,GAAG,mBAAmB;CACvB,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAC;AAE7G,yHAAyH;AACzH,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"RuntimeApi.js","sourceRoot":"","sources":["../../src/Contract/RuntimeApi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjG,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;CACjD,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;CAC1E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5D,eAAe,EAAE,MAAM,CAAC,MAAM;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;QAC1D,WAAW,EAAE,qEAAqE;KACnF,CAAC;CACH,CAAC,CAAC;AAEH,wFAAwF;AACxF,MAAM,mBAAmB,GAAG;IAC1B,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,GAAG,mBAAmB;CACvB,CAAC,CAAC;AAEH,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC,IAAI;IAClB,GAAG,mBAAmB;CACvB,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAC;AAE7G,yHAAyH;AACzH,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1D,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC;IAC3E,cAAc,EAAE,MAAM,CAAC,MAAM;IAC7B,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;IAC5F,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnE,WAAW,EAAE,gFAAgF;KAC9F,CAAC;IACF,gBAAgB,EAAE,MAAM,CAAC,MAAM;IAC/B,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;IACjF,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CACtB,MAAM,CAAC,SAAS,CAAC,0BAA0B,EAAE;QAC3C,OAAO,EAAE,uEAAuE;KACjF,CAAC,CACH,CAAC,QAAQ,CAAC;QACT,WAAW,EAAE,2FAA2F;KACzG,CAAC;IACF,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACnC,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC;QAC/B,WAAW,EAAE,mEAAmE;KACjF,CAAC;IACF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACzE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,gBAAgB;CAC3B,CAAC,CAAC;AAEH,MAAM,6BAA6B,GAAG,MAAM,CAAC,MAAM,CAAC;IAClD,KAAK,EAAE,8BAA8B;IACrC,GAAG,mBAAmB;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7D,GAAG,EAAE,MAAM,CAAC,MAAM;CACnB,CAAC,CAAC;AAEH,MAAM,mCAAmC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,KAAK,EAAE,iCAAiC;IACxC,GAAG,mBAAmB;CACvB,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AACxF,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAClF,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACjF,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAGhE,MAAM,OAAO,iCAAkC,SAAQ,MAAM,CAAC,WAAW,EAAqC,CAC5G,mCAAmC,EACnC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAC1C;CAAG;AAEJ,MAAM,OAAO,8BAA+B,SAAQ,MAAM,CAAC,WAAW,EAAkC,CACtG,gCAAgC,EAChC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CACvC;CAAG;AAEJ,MAAM,OAAO,6BAA8B,SAAQ,MAAM,CAAC,WAAW,EAAiC,CACpG,+BAA+B,EAC/B,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CACvC;CAAG;AAEJ,MAAM,OAAO,+BAAgC,SAAQ,MAAM,CAAC,WAAW,EAAmC,CACxG,iCAAiC,EACjC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CACzB;CAAG;AAEJ,MAAM,OAAO,6BAA8B,SAAQ,MAAM,CAAC,WAAW,EAAiC,CACpG,+BAA+B,EAC/B,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CACzB;CAAG;AACJ,MAAM,OAAO,gCAAiC,SAAQ,MAAM,CAAC,WAAW,EAAoC,CAC1G,kCAAkC,EAClC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CACzB;CAAG;AAEJ,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,IAAI,CACnD,MAAM,CAAC,QAAQ,CAAC,iCAAiC,EAAE;IACjD,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,iCAAiC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IACtG,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;CACpE,CAAC,EACF,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAC1B,CAAC;AAEF,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAC7C,MAAM,CAAC,QAAQ,CAAC,8BAA8B,EAAE;IAC9C,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,8BAA8B,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAChG,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;CACpE,CAAC,EACF,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAC1B,CAAC;AAEF,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAC3C,MAAM,CAAC,QAAQ,CAAC,6BAA6B,EAAE;IAC7C,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,6BAA6B,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/F,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;CACpE,CAAC,EACF,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAC1B,CAAC;AAEF,MAAM,eAAe,GAAG,eAAe,CAAC,IAAI,CAC1C,MAAM,CAAC,QAAQ,CAAC,+BAA+B,EAAE;IAC/C,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,IAAe,EAAE,EAAE,CAAC,IAAI,+BAA+B,CAAC,IAAI,CAAC,CAAC;IAC9F,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;CACpE,CAAC,EACF,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAC1B,CAAC;AAEF,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CACxC,MAAM,CAAC,QAAQ,CAAC,6BAA6B,EAAE;IAC7C,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,IAAe,EAAE,EAAE,CAAC,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC;IAC5F,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;CACpE,CAAC,EACF,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAC1B,CAAC;AACF,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAC3C,MAAM,CAAC,QAAQ,CAAC,gCAAgC,EAAE;IAChD,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,IAAe,EAAE,EAAE,CAAC,IAAI,gCAAgC,CAAC,IAAI,CAAC,CAAC;IAC/F,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;CACpE,CAAC,EACF,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAC1B,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,iBAAiB;IACjB,cAAc;IACd,aAAa;IACb,eAAe;IACf,aAAa;IACb,gBAAgB;CACjB,CAAC;AAEF,MAAM,4BAA4B,GAAG,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC;KACvE,GAAG,CACF,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,EAAE;IAC5D,OAAO,EAAE,0BAA0B;IACnC,OAAO,EAAE,qBAAqB;IAC9B,OAAO,EAAE,yBAAyB;IAClC,KAAK,EAAE,aAAa;CACrB,CAAC,CACH;KACA,GAAG,CACF,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,EAAE;IAC5D,OAAO,EAAE,0BAA0B;IACnC,OAAO,EAAE,qBAAqB;IAC9B,OAAO,EAAE,6BAA6B;IACtC,KAAK,EAAE,aAAa;CACrB,CAAC,CACH;KACA,GAAG,CACF,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,EAAE;IAC5D,OAAO,EAAE,0BAA0B;IACnC,OAAO,EAAE,qBAAqB;IAC9B,OAAO,EAAE,4BAA4B;IACrC,KAAK,EAAE,aAAa;CACrB,CAAC,CACH;KACA,GAAG,CACF,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,EAAE;IAC1D,OAAO,EAAE,0BAA0B;IACnC,OAAO,EAAE,gCAAgC;IACzC,OAAO,EAAE,mCAAmC;IAC5C,KAAK,EAAE,aAAa;CACrB,CAAC,CACH;KACA,MAAM,CAAC,iBAAiB,CAAC;KACzB,aAAa,CACZ,OAAO,CAAC,WAAW,CAAC;IAClB,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EAAE,qFAAqF;CACnG,CAAC,CACH,CAAC;AAEJ,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC"}
|
|
@@ -27,6 +27,18 @@ export declare const HttpProxy: Schema.Struct<{
|
|
|
27
27
|
}>>;
|
|
28
28
|
}>;
|
|
29
29
|
export type HttpProxy = typeof HttpProxy.Type;
|
|
30
|
+
export declare const AwsAuth: Schema.Union<readonly [Schema.Struct<{
|
|
31
|
+
readonly type: Schema.Literal<"access_key">;
|
|
32
|
+
readonly accessKeyId: Schema.String;
|
|
33
|
+
readonly secretAccessKey: Schema.RedactedFromValue<Schema.String>;
|
|
34
|
+
readonly sessionToken: Schema.optionalKey<Schema.RedactedFromValue<Schema.String>>;
|
|
35
|
+
}>, Schema.Struct<{
|
|
36
|
+
readonly type: Schema.Literal<"assume_role">;
|
|
37
|
+
readonly roleArn: Schema.String;
|
|
38
|
+
readonly externalId: Schema.optionalKey<Schema.String>;
|
|
39
|
+
}>, Schema.Struct<{
|
|
40
|
+
readonly type: Schema.Literal<"ambient">;
|
|
41
|
+
}>]>;
|
|
30
42
|
/** An OAuth 2.0 token request: endpoint, client, and how the client authenticates. */
|
|
31
43
|
export declare const OAuthTokenRequest: Schema.Struct<{
|
|
32
44
|
readonly tokenUrl: Schema.String;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpApiResource.d.ts","sourceRoot":"","sources":["../src/HttpApiResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAwB,MAAM,QAAQ,CAAC;AAsBxE,gHAAgH;AAChH,eAAO,MAAM,WAAW;;;;;;EAmBvB,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAElD,sGAAsG;AACtG,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;EAOpB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"HttpApiResource.d.ts","sourceRoot":"","sources":["../src/HttpApiResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAwB,MAAM,QAAQ,CAAC;AAsBxE,gHAAgH;AAChH,eAAO,MAAM,WAAW;;;;;;EAmBvB,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAElD,sGAAsG;AACtG,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;EAOpB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC;AAG9C,eAAO,MAAM,OAAO;;;;;;;;;;;IAalB,CAAC;AAoBH,sFAAsF;AACtF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;EAU5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC;AA6C9D;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;EAIjC,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAC;AA0BxE,oHAAoH;AACpH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oHAA4C,CAAC;AACrE,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAElD,+FAA+F;AAC/F,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC"}
|
package/dist/HttpApiResource.js
CHANGED
|
@@ -39,7 +39,7 @@ export const HttpProxy = Schema.Struct({
|
|
|
39
39
|
tls: Schema.optionalKey(TlsSettings),
|
|
40
40
|
});
|
|
41
41
|
// Closed: the type decides which identity signs, and a guess could fall back to the runtime's own identity.
|
|
42
|
-
const AwsAuth = Schema.Union([
|
|
42
|
+
export const AwsAuth = Schema.Union([
|
|
43
43
|
Schema.Struct({
|
|
44
44
|
type: Schema.Literal('access_key'),
|
|
45
45
|
accessKeyId: NonEmptyString,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpApiResource.js","sourceRoot":"","sources":["../src/HttpApiResource.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"HttpApiResource.js","sourceRoot":"","sources":["../src/HttpApiResource.ts"],"names":[],"mappings":"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"}
|
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.
|
|
3
|
+
export declare const SDK_VERSION = "0.7.1-postgresql.2";
|
|
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.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Manifest.d.ts","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAQL,KAAK,gBAAgB,EAEtB,MAAM,wBAAwB,CAAC;AAShC,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"Manifest.d.ts","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAQL,KAAK,gBAAgB,EAEtB,MAAM,wBAAwB,CAAC;AAShC,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAChD,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,oHAAoH;AACpH,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAkE/C,eAAO,MAAM,YAAY,GAAI,EAAE,SAAS,MAAM,EAAE,MAAM,SAAS,YAAY,CAAC,UAAU,OAC/E,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,KAC/B,gBA2DF,CAAC"}
|
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.
|
|
8
|
+
export const SDK_VERSION = '0.7.1-postgresql.2';
|
|
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/Manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,OAAO,EAAqB,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAG1B,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAA2B,aAAa,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC,eAAe,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC;AAE/F,MAAM,UAAU,GAAG,CAAC,QAA0B,EAAU,EAAE,CACxD,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAExF,MAAM,CAAC,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL Resource pools, exported from `@temper/workflow/resources`. A pool needs the `pg` package, and a
|
|
3
|
+
* builder's tunnel to a Temper-managed database needs `ws`; both load only when a pool is built.
|
|
4
|
+
*/
|
|
5
|
+
import { Effect, type Scope } from 'effect';
|
|
6
|
+
import type pg from 'pg';
|
|
7
|
+
import type { InvalidResourceError } from './ResourcesErrors.js';
|
|
8
|
+
import { type ReadError } from './RuntimeResources.js';
|
|
9
|
+
export { PostgresqlResource } from './PostgreSqlPool.js';
|
|
10
|
+
/** What opening a pool can fail with; a rejected tunnel fails each connection instead, never the open. */
|
|
11
|
+
export type PostgresqlPoolError = ReadError | InvalidResourceError;
|
|
12
|
+
/**
|
|
13
|
+
* The pool for the PostgreSQL Resource `key`, ended when the scope closes; a client still checked out after 15 s
|
|
14
|
+
* is left open and logged. Native TCP, except in a builder (`TEMPER_DATABASE_TUNNEL=websocket`) for a
|
|
15
|
+
* Temper-managed database, which goes through the Resources tunnel.
|
|
16
|
+
*/
|
|
17
|
+
export declare const makePostgresqlPool: (key: string) => Effect.Effect<pg.Pool, PostgresqlPoolError, Scope.Scope>;
|
|
18
|
+
/**
|
|
19
|
+
* Resolves a PostgreSQL Resource and selects its runtime transport without opening a connection; the caller ends
|
|
20
|
+
* the pool. Rejects with the SDK's Resource errors: `ResourceNotFoundError` only when no record answers the key,
|
|
21
|
+
* and `InvalidResourceError` for a found record that cannot serve, such as one whose password Variable is missing.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createPostgresqlPool(key: string): Promise<pg.Pool>;
|
|
24
|
+
//# sourceMappingURL=PostgreSql.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL Resource pools, exported from `@temper/workflow/resources`. A pool needs the `pg` package, and a
|
|
3
|
+
* builder's tunnel to a Temper-managed database needs `ws`; both load only when a pool is built.
|
|
4
|
+
*/
|
|
5
|
+
import { Cause, Config, ConfigProvider, Duration, Effect, Exit, Layer, Option } from 'effect';
|
|
6
|
+
import { FetchHttpClient, HttpClient } from 'effect/http';
|
|
7
|
+
import { loggerLayer, writeStdoutLine } from './Logger.js';
|
|
8
|
+
import { endPool, makeResourcePool, tunnelEnabled } from './PostgreSqlPool.js';
|
|
9
|
+
import { makeRuntimeResourceClient } from './RuntimeResources.js';
|
|
10
|
+
export { PostgresqlResource } from './PostgreSqlPool.js';
|
|
11
|
+
// A token in its refresh window waits for the provider's next publish. pg's connect timeout is 10 s, so the wait
|
|
12
|
+
// ends with the connection attempt instead of holding the process open.
|
|
13
|
+
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
|
+
const open = (rawKey) => Effect.gen(function* () {
|
|
25
|
+
const key = rawKey.trim();
|
|
26
|
+
// A workflow's own HttpClient when there is one; resolver calls disable its tracing either way.
|
|
27
|
+
const httpClient = yield* Effect.serviceOption(HttpClient.HttpClient);
|
|
28
|
+
const client = yield* makeRuntimeResourceClient.pipe(Option.isSome(httpClient)
|
|
29
|
+
? Effect.provideService(HttpClient.HttpClient, httpClient.value)
|
|
30
|
+
: Effect.provide(FetchHttpClient.layer));
|
|
31
|
+
const tunnel = tunnelEnabled(yield* Config.option(Config.String('TEMPER_DATABASE_TUNNEL')).pipe(Effect.orElseSucceed(() => Option.none())));
|
|
32
|
+
const context = yield* Effect.context();
|
|
33
|
+
return yield* makeResourcePool(key, {
|
|
34
|
+
resolve: client.resolve,
|
|
35
|
+
inspect: client.inspect,
|
|
36
|
+
authorizeTunnel: tunnel
|
|
37
|
+
? (tunnelKey) => Effect.runPromiseWith(context)(Effect.all({ url: tunnelAuthorization(tunnelKey), token: client.tunnelToken }).pipe(Effect.timeoutOrElse({
|
|
38
|
+
duration: TUNNEL_AUTHORIZATION_TIMEOUT,
|
|
39
|
+
orElse: () => Effect.fail(new Error('No runtime token for the database tunnel within 10 s.')),
|
|
40
|
+
})))
|
|
41
|
+
: undefined,
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* The pool for the PostgreSQL Resource `key`, ended when the scope closes; a client still checked out after 15 s
|
|
46
|
+
* is left open and logged. Native TCP, except in a builder (`TEMPER_DATABASE_TUNNEL=websocket`) for a
|
|
47
|
+
* Temper-managed database, which goes through the Resources tunnel.
|
|
48
|
+
*/
|
|
49
|
+
export const makePostgresqlPool = (key) => Effect.acquireRelease(open(key), (pool) => endPool(pool));
|
|
50
|
+
// Outside a workflow the pool logs through the SDK line logger on stdout and reads the live environment, as
|
|
51
|
+
// `workflow()` does; Effect's default provider keeps a copy taken on first use.
|
|
52
|
+
const standalone = loggerLayer(writeStdoutLine).pipe(Layer.orDie, Layer.provideMerge(ConfigProvider.layer(ConfigProvider.fromEnvRecord(process.env, { preserveEmptyStrings: true }))));
|
|
53
|
+
/**
|
|
54
|
+
* Resolves a PostgreSQL Resource and selects its runtime transport without opening a connection; the caller ends
|
|
55
|
+
* the pool. Rejects with the SDK's Resource errors: `ResourceNotFoundError` only when no record answers the key,
|
|
56
|
+
* and `InvalidResourceError` for a found record that cannot serve, such as one whose password Variable is missing.
|
|
57
|
+
*/
|
|
58
|
+
export async function createPostgresqlPool(key) {
|
|
59
|
+
const exit = await Effect.runPromiseExit(open(key).pipe(Effect.provide(standalone)));
|
|
60
|
+
if (Exit.isSuccess(exit))
|
|
61
|
+
return exit.value;
|
|
62
|
+
throw Cause.squash(exit.cause);
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=PostgreSql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgreSql.js","sourceRoot":"","sources":["../src/PostgreSql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { type Duration, Effect, Option, Schema } from 'effect';
|
|
2
|
+
import type pg from 'pg';
|
|
3
|
+
import { InvalidResourceError } from './ResourcesErrors.js';
|
|
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;
|
|
44
|
+
/** Where a pool reads its Resource: the runtime API in a workflow, fixed answers in tests. */
|
|
45
|
+
export interface ResourceSource {
|
|
46
|
+
readonly resolve: (key: string) => Effect.Effect<Schema.Json, ReadError | InvalidResourceError>;
|
|
47
|
+
/** The only read whose 404 means that no record answers the key. */
|
|
48
|
+
readonly inspect: (key: string) => Effect.Effect<Pick<InspectedResource, 'metadata'>, ReadError>;
|
|
49
|
+
/** Set only in builders (`TEMPER_DATABASE_TUNNEL=websocket`); never cache what it returns. */
|
|
50
|
+
readonly authorizeTunnel?: ((key: string) => Promise<{
|
|
51
|
+
readonly url: string;
|
|
52
|
+
readonly token: string;
|
|
53
|
+
}>) | undefined;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Inspects, then resolves the Resource and builds an unconnected pool. `ResourceNotFoundError` means only that no
|
|
57
|
+
* record answers the key. Warnings go through the caller's logger and secret masks, as do the password's masks.
|
|
58
|
+
*/
|
|
59
|
+
export declare const makeResourcePool: (key: string, source: ResourceSource) => Effect.Effect<pg.Pool, ReadError | InvalidResourceError>;
|
|
60
|
+
export declare const tunnelEnabled: (value: Option.Option<string>) => boolean;
|
|
61
|
+
/** Outlasts the pool's 10 s statement timeout, so a query in flight when the scope closes can still finish. */
|
|
62
|
+
export declare const POOL_END_TIMEOUT: Duration.Input;
|
|
63
|
+
/**
|
|
64
|
+
* Ends the pool, waiting at most `timeout`. pg-pool's `end()` waits for every checked-out client, so a leaked
|
|
65
|
+
* `pool.connect()` would otherwise hold its scope open; past the bound the release logs a warning and returns.
|
|
66
|
+
*/
|
|
67
|
+
export declare const endPool: (pool: {
|
|
68
|
+
readonly end: () => Promise<void>;
|
|
69
|
+
}, timeout?: Duration.Input) => Effect.Effect<void>;
|
|
70
|
+
//# sourceMappingURL=PostgreSqlPool.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { Effect, Option, Predicate, Redacted, Schema } from 'effect';
|
|
2
|
+
import { AwsAuth, TlsSettings } from './HttpApiResource.js';
|
|
3
|
+
import { observePostgreSqlTimeouts } from './PostgreSqlTimeouts.js';
|
|
4
|
+
import { registerSecrets } from './Redaction.js';
|
|
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
|
+
});
|
|
27
|
+
const validate = Schema.toStandardSchemaV1(PostgresqlResource)['~standard'].validate;
|
|
28
|
+
// Names only the failing paths: a schema message can quote the value, which may be a secret.
|
|
29
|
+
const decode = (key, value) => Effect.suspend(() => {
|
|
30
|
+
const result = validate(value);
|
|
31
|
+
if (result instanceof Promise)
|
|
32
|
+
return Effect.die(new Error('PostgresqlResource decodes synchronously'));
|
|
33
|
+
if (result.issues === undefined)
|
|
34
|
+
return Effect.succeed(result.value);
|
|
35
|
+
const paths = result.issues.map((issue) => (issue.path ?? []).map((part) => String(Predicate.isObject(part) ? part.key : part)).join('.') || '(root)');
|
|
36
|
+
return Effect.fail(new InvalidResourceError({
|
|
37
|
+
target: `key ${key}`,
|
|
38
|
+
message: `Resource ${key} does not match the expected schema: invalid ${[...new Set(paths)].join(', ')}`,
|
|
39
|
+
}));
|
|
40
|
+
});
|
|
41
|
+
function sslConfig(resource) {
|
|
42
|
+
const { tls } = resource;
|
|
43
|
+
const clientCertificate = tls?.clientCertificate
|
|
44
|
+
? {
|
|
45
|
+
cert: tls.clientCertificate,
|
|
46
|
+
key: tls.clientKey === undefined ? undefined : Redacted.value(tls.clientKey),
|
|
47
|
+
passphrase: tls.clientKeyPassphrase === undefined ? undefined : Redacted.value(tls.clientKeyPassphrase),
|
|
48
|
+
}
|
|
49
|
+
: {};
|
|
50
|
+
switch (resource.sslmode) {
|
|
51
|
+
case 'disable':
|
|
52
|
+
return false;
|
|
53
|
+
case 'require':
|
|
54
|
+
return { rejectUnauthorized: false, ...clientCertificate };
|
|
55
|
+
case 'verify-ca':
|
|
56
|
+
return {
|
|
57
|
+
rejectUnauthorized: true,
|
|
58
|
+
ca: tls?.caCertificate,
|
|
59
|
+
...clientCertificate,
|
|
60
|
+
checkServerIdentity: () => undefined,
|
|
61
|
+
};
|
|
62
|
+
case 'verify-full':
|
|
63
|
+
return { rejectUnauthorized: true, ca: tls?.caCertificate, ...clientCertificate, servername: tls?.serverName };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// RDS IAM needs a token signer and an SSH tunnel needs a bastion client; neither runs inside this pool.
|
|
67
|
+
const resourcePassword = (key, resource) => {
|
|
68
|
+
const refuse = (message) => Effect.fail(new InvalidResourceError({ target: `key ${key}`, message }));
|
|
69
|
+
if (resource.sshTunnel)
|
|
70
|
+
return refuse(`PostgreSQL Resource ${key} needs an SSH tunnel, which this SDK does not open.`);
|
|
71
|
+
if (resource.auth.type === 'rds_iam') {
|
|
72
|
+
return refuse(`PostgreSQL Resource ${key} uses RDS IAM authentication, which this SDK does not support.`);
|
|
73
|
+
}
|
|
74
|
+
return Effect.succeed(resource.auth.type === 'password' ? Redacted.value(resource.auth.password) : '');
|
|
75
|
+
};
|
|
76
|
+
// `pg` and `ws` are optional peers, so they load when a pool is built: importing `./resources` needs neither.
|
|
77
|
+
const loadOptional = (name, load) => Effect.tryPromise({
|
|
78
|
+
try: load,
|
|
79
|
+
catch: () => new Error(`PostgreSQL Resource pools need the ${name} package: add ${name} to the workflow dependencies.`),
|
|
80
|
+
}).pipe(Effect.orDie);
|
|
81
|
+
const loadPg = loadOptional('pg', () => import('pg').then((module) => module.default));
|
|
82
|
+
const loadTunnel = loadOptional('ws', () => import('./PostgreSqlTunnel.js'));
|
|
83
|
+
const ManagedPlacement = Schema.Struct({ managedDatabasePlacementId: Schema.String });
|
|
84
|
+
const isManaged = Schema.is(ManagedPlacement);
|
|
85
|
+
// The runtime API answers a missing Variable reference with the same 404 as a missing record, so after a found
|
|
86
|
+
// `inspect` a resolve 404 names a broken record, never an absent one.
|
|
87
|
+
const brokenReference = (key) => new InvalidResourceError({
|
|
88
|
+
target: `key ${key}`,
|
|
89
|
+
message: `Resource ${key} exists, but a value it references, such as its password Variable, does not resolve in this environment.`,
|
|
90
|
+
});
|
|
91
|
+
/**
|
|
92
|
+
* Inspects, then resolves the Resource and builds an unconnected pool. `ResourceNotFoundError` means only that no
|
|
93
|
+
* record answers the key. Warnings go through the caller's logger and secret masks, as do the password's masks.
|
|
94
|
+
*/
|
|
95
|
+
export const makeResourcePool = (key, source) => Effect.gen(function* () {
|
|
96
|
+
const record = yield* source.inspect(key);
|
|
97
|
+
const resource = yield* source.resolve(key).pipe(Effect.catchTag('ResourceNotFoundError', () => Effect.fail(brokenReference(key))), Effect.flatMap((value) => decode(key, value)));
|
|
98
|
+
const password = yield* resourcePassword(key, resource);
|
|
99
|
+
yield* registerSecrets([password]);
|
|
100
|
+
const authorize = source.authorizeTunnel;
|
|
101
|
+
const managed = isManaged(record.metadata);
|
|
102
|
+
const driver = yield* loadPg;
|
|
103
|
+
const TunnelStream = managed && authorize ? (yield* loadTunnel).PostgreSqlTunnelStream : undefined;
|
|
104
|
+
const context = yield* Effect.context();
|
|
105
|
+
const warn = (event, message, fields = {}) => {
|
|
106
|
+
Effect.runForkWith(context)(Effect.logWarning(message).pipe(Effect.annotateLogs({ event, ...fields })));
|
|
107
|
+
};
|
|
108
|
+
// Each physical connection reads current runtime authorization, including connections opened after token renewal.
|
|
109
|
+
const stream = TunnelStream && authorize ? () => new TunnelStream(() => authorize(key)) : undefined;
|
|
110
|
+
// A callback prevents pg from substituting ambient PGPASSWORD/pgpass for an empty Resource password.
|
|
111
|
+
const pool = observePostgreSqlTimeouts(driver, new driver.Pool({
|
|
112
|
+
stream,
|
|
113
|
+
host: resource.host,
|
|
114
|
+
port: resource.port,
|
|
115
|
+
user: resource.user,
|
|
116
|
+
password: () => password,
|
|
117
|
+
database: resource.dbname,
|
|
118
|
+
ssl: sslConfig(resource),
|
|
119
|
+
max: 5,
|
|
120
|
+
connectionTimeoutMillis: 10_000,
|
|
121
|
+
idleTimeoutMillis: 30_000,
|
|
122
|
+
statement_timeout: 10_000,
|
|
123
|
+
}), () => warn('temper.database.query.timeout', 'PostgreSQL statement timed out.', { code: '57014' }));
|
|
124
|
+
// The error and its attached client stay out of the line: both can carry server text and login details.
|
|
125
|
+
pool.on('error', () => warn('temper.database.connection.error', 'An idle PostgreSQL connection closed.'));
|
|
126
|
+
return pool;
|
|
127
|
+
});
|
|
128
|
+
export const tunnelEnabled = (value) => Option.contains(value, 'websocket');
|
|
129
|
+
/** Outlasts the pool's 10 s statement timeout, so a query in flight when the scope closes can still finish. */
|
|
130
|
+
export const POOL_END_TIMEOUT = '15 seconds';
|
|
131
|
+
/**
|
|
132
|
+
* Ends the pool, waiting at most `timeout`. pg-pool's `end()` waits for every checked-out client, so a leaked
|
|
133
|
+
* `pool.connect()` would otherwise hold its scope open; past the bound the release logs a warning and returns.
|
|
134
|
+
*/
|
|
135
|
+
export const endPool = (pool, timeout = POOL_END_TIMEOUT) => Effect.promise(() => pool.end().catch(() => undefined)).pipe(Effect.timeoutOption(timeout), Effect.flatMap((ended) => Option.isSome(ended)
|
|
136
|
+
? Effect.void
|
|
137
|
+
: Effect.logWarning('A PostgreSQL pool did not end in time: a client was not released.').pipe(Effect.annotateLogs({ event: 'temper.database.pool.end.timeout' }))));
|
|
138
|
+
//# sourceMappingURL=PostgreSqlPool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgreSqlPool.js","sourceRoot":"","sources":["../src/PostgreSqlPool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type pg from 'pg';
|
|
2
|
+
/** The `pg` classes the observer checks against; the caller passes the module it loaded. */
|
|
3
|
+
export type PgClasses = Pick<typeof pg, 'Client' | 'DatabaseError'>;
|
|
4
|
+
/** Calls `report` once per statement timeout on any connection of the pool, without changing query results. */
|
|
5
|
+
export declare const observePostgreSqlTimeouts: (driver: PgClasses, pool: pg.Pool, report: () => void) => pg.Pool;
|
|
6
|
+
//# sourceMappingURL=PostgreSqlTimeouts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgreSqlTimeouts.d.ts","sourceRoot":"","sources":["../src/PostgreSqlTimeouts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,4FAA4F;AAC5F,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,GAAG,eAAe,CAAC,CAAC;AAEpE,+GAA+G;AAC/G,eAAO,MAAM,yBAAyB,WAAY,SAAS,QAAQ,EAAE,CAAC,IAAI,UAAU,MAAM,IAAI,KAAG,EAAE,CAAC,IAenG,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Calls `report` once per statement timeout on any connection of the pool, without changing query results. */
|
|
2
|
+
export const observePostgreSqlTimeouts = (driver, pool, report) => {
|
|
3
|
+
pool.on('connect', (client) => {
|
|
4
|
+
if (!(client instanceof driver.Client) || !client.connection)
|
|
5
|
+
return;
|
|
6
|
+
// Wire errors cover pool, checked-out client, and callback queries without changing their return values.
|
|
7
|
+
client.connection.on('errorMessage', (error) => {
|
|
8
|
+
if (error instanceof driver.DatabaseError &&
|
|
9
|
+
error.code === '57014' &&
|
|
10
|
+
error.message.includes('statement timeout')) {
|
|
11
|
+
report();
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
return pool;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=PostgreSqlTimeouts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgreSqlTimeouts.js","sourceRoot":"","sources":["../src/PostgreSqlTimeouts.ts"],"names":[],"mappings":"AAKA,+GAA+G;AAC/G,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAiB,EAAE,IAAa,EAAE,MAAkB,EAAW,EAAE;IACzG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;QAC5B,IAAI,CAAC,CAAC,MAAM,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO;QACrE,yGAAyG;QACzG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,KAAY,EAAE,EAAE;YACpD,IACE,KAAK,YAAY,MAAM,CAAC,aAAa;gBACrC,KAAK,CAAC,IAAI,KAAK,OAAO;gBACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAC3C,CAAC;gBACD,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Duplex } from 'node:stream';
|
|
2
|
+
/** Reads current runtime authorization; called once per physical connection, so a renewed token is used at once. */
|
|
3
|
+
export type TunnelAuthorization = () => Promise<{
|
|
4
|
+
readonly url: string;
|
|
5
|
+
readonly token: string;
|
|
6
|
+
}>;
|
|
7
|
+
/** A pg socket over the Resources-authenticated WebSocket tunnel; any failure ends the connection, never falls back to TCP. */
|
|
8
|
+
export declare class PostgreSqlTunnelStream extends Duplex {
|
|
9
|
+
private readonly authorize;
|
|
10
|
+
private transport;
|
|
11
|
+
private socket;
|
|
12
|
+
private referenced;
|
|
13
|
+
private closingCleanly;
|
|
14
|
+
constructor(authorize: TunnelAuthorization);
|
|
15
|
+
setNoDelay(): this;
|
|
16
|
+
setKeepAlive(): this;
|
|
17
|
+
ref(): this;
|
|
18
|
+
unref(): this;
|
|
19
|
+
connect(): this;
|
|
20
|
+
_read(): void;
|
|
21
|
+
_write(chunk: Buffer, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
|
|
22
|
+
_final(callback: (error?: Error | null) => void): void;
|
|
23
|
+
_destroy(error: Error | null, callback: (error?: Error | null) => void): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=PostgreSqlTunnel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgreSqlTunnel.d.ts","sourceRoot":"","sources":["../src/PostgreSqlTunnel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,oHAAoH;AACpH,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAIlG,+HAA+H;AAC/H,qBAAa,sBAAuB,SAAQ,MAAM;IAKpC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJtC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,cAAc,CAAS;IAC/B,YAA6B,SAAS,EAAE,mBAAmB,EAE1D;IACD,UAAU,SAET;IACD,YAAY,SAEX;IACD,GAAG,SAIF;IACD,KAAK,SAIJ;IACD,OAAO,SA6CN;IACQ,KAAK,SAEb;IACQ,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,QAYjG;IACQ,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,QAIvD;IACQ,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,QAG9E;CACF"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Duplex } from 'node:stream';
|
|
2
|
+
import { createWebSocketStream, WebSocket } from 'ws';
|
|
3
|
+
const unavailable = () => new Error('Database tunnel disconnected. Retry the connection to Temper.');
|
|
4
|
+
/** A pg socket over the Resources-authenticated WebSocket tunnel; any failure ends the connection, never falls back to TCP. */
|
|
5
|
+
export class PostgreSqlTunnelStream extends Duplex {
|
|
6
|
+
authorize;
|
|
7
|
+
transport;
|
|
8
|
+
socket;
|
|
9
|
+
referenced = true;
|
|
10
|
+
closingCleanly = false;
|
|
11
|
+
constructor(authorize) {
|
|
12
|
+
super({ highWaterMark: 65_536 });
|
|
13
|
+
this.authorize = authorize;
|
|
14
|
+
}
|
|
15
|
+
setNoDelay() {
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
18
|
+
setKeepAlive() {
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
21
|
+
ref() {
|
|
22
|
+
this.referenced = true;
|
|
23
|
+
this.socket?.ref();
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
unref() {
|
|
27
|
+
this.referenced = false;
|
|
28
|
+
this.socket?.unref();
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
connect() {
|
|
32
|
+
void this.authorize()
|
|
33
|
+
.then(({ url, token }) => {
|
|
34
|
+
if (this.destroyed)
|
|
35
|
+
return;
|
|
36
|
+
const endpoint = new URL(url);
|
|
37
|
+
if (endpoint.protocol !== 'wss:' &&
|
|
38
|
+
!(endpoint.protocol === 'ws:' && ['127.0.0.1', 'localhost', '[::1]'].includes(endpoint.hostname)))
|
|
39
|
+
throw unavailable();
|
|
40
|
+
if (endpoint.username || endpoint.password || endpoint.search || endpoint.hash)
|
|
41
|
+
throw unavailable();
|
|
42
|
+
const websocket = new WebSocket(endpoint, {
|
|
43
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
44
|
+
handshakeTimeout: 10_000,
|
|
45
|
+
maxPayload: 65_536,
|
|
46
|
+
perMessageDeflate: false,
|
|
47
|
+
followRedirects: false,
|
|
48
|
+
finishRequest: (request) => {
|
|
49
|
+
request.once('socket', (socket) => {
|
|
50
|
+
this.socket = socket;
|
|
51
|
+
if (!this.referenced)
|
|
52
|
+
socket.unref();
|
|
53
|
+
});
|
|
54
|
+
request.end();
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
const stream = createWebSocketStream(websocket, { highWaterMark: 65_536 });
|
|
58
|
+
this.transport = stream;
|
|
59
|
+
stream.on('error', () => this.destroy(unavailable()));
|
|
60
|
+
stream.on('data', (data) => {
|
|
61
|
+
if (!this.push(data))
|
|
62
|
+
stream.pause();
|
|
63
|
+
});
|
|
64
|
+
stream.on('end', () => {
|
|
65
|
+
if (this.closingCleanly)
|
|
66
|
+
this.push(null);
|
|
67
|
+
else
|
|
68
|
+
this.destroy(unavailable());
|
|
69
|
+
});
|
|
70
|
+
stream.on('close', () => {
|
|
71
|
+
if (this.closingCleanly)
|
|
72
|
+
this.destroy();
|
|
73
|
+
else
|
|
74
|
+
this.destroy(unavailable());
|
|
75
|
+
});
|
|
76
|
+
websocket.once('open', () => {
|
|
77
|
+
if (!this.destroyed)
|
|
78
|
+
this.emit('connect');
|
|
79
|
+
});
|
|
80
|
+
})
|
|
81
|
+
.catch(() => this.destroy(unavailable()));
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
_read() {
|
|
85
|
+
this.transport?.resume();
|
|
86
|
+
}
|
|
87
|
+
_write(chunk, _encoding, callback) {
|
|
88
|
+
const stream = this.transport;
|
|
89
|
+
if (!stream)
|
|
90
|
+
return callback(unavailable());
|
|
91
|
+
let offset = 0;
|
|
92
|
+
const next = () => {
|
|
93
|
+
if (offset >= chunk.length)
|
|
94
|
+
return callback();
|
|
95
|
+
const end = Math.min(offset + 65_536, chunk.length);
|
|
96
|
+
const frame = chunk.subarray(offset, end);
|
|
97
|
+
offset = end;
|
|
98
|
+
stream.write(frame, (error) => (error ? callback(unavailable()) : next()));
|
|
99
|
+
};
|
|
100
|
+
next();
|
|
101
|
+
}
|
|
102
|
+
_final(callback) {
|
|
103
|
+
this.closingCleanly = true;
|
|
104
|
+
if (this.transport)
|
|
105
|
+
this.transport.end(callback);
|
|
106
|
+
else
|
|
107
|
+
callback();
|
|
108
|
+
}
|
|
109
|
+
_destroy(error, callback) {
|
|
110
|
+
this.transport?.destroy();
|
|
111
|
+
callback(error);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=PostgreSqlTunnel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgreSqlTunnel.js","sourceRoot":"","sources":["../src/PostgreSqlTunnel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Readers for a workflow's Resources: `import { makePostgresqlPool } from '@temper/workflow/resources'`. PostgreSQL
|
|
3
|
+
* pools load the optional `pg` and `ws` peers when a pool is built, so importing this module needs neither.
|
|
4
|
+
*/
|
|
5
|
+
export { createPostgresqlPool, makePostgresqlPool, PostgresqlResource, type PostgresqlPoolError, } from './PostgreSql.js';
|
|
6
|
+
export { InvalidResourceError, ResourceNotFoundError, ResourceNotSelectableError, ResourcesUnauthorizedError, ResourcesUnavailableError, } from './ResourcesErrors.js';
|
|
7
|
+
//# sourceMappingURL=Resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Resources.d.ts","sourceRoot":"","sources":["../src/Resources.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Readers for a workflow's Resources: `import { makePostgresqlPool } from '@temper/workflow/resources'`. PostgreSQL
|
|
3
|
+
* pools load the optional `pg` and `ws` peers when a pool is built, so importing this module needs neither.
|
|
4
|
+
*/
|
|
5
|
+
export { createPostgresqlPool, makePostgresqlPool, PostgresqlResource, } from './PostgreSql.js';
|
|
6
|
+
export { InvalidResourceError, ResourceNotFoundError, ResourceNotSelectableError, ResourcesUnauthorizedError, ResourcesUnavailableError, } from './ResourcesErrors.js';
|
|
7
|
+
//# sourceMappingURL=Resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Resources.js","sourceRoot":"","sources":["../src/Resources.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
import { Context, Effect, Layer, Redacted, Schema } from 'effect';
|
|
2
2
|
import { HttpClient } from 'effect/http';
|
|
3
|
-
import { type SelectResourceRuntimeInputSchema } from './Contract/RuntimeApi.js';
|
|
3
|
+
import { type RuntimeInspectedResourceSchema, type SelectResourceRuntimeInputSchema } from './Contract/RuntimeApi.js';
|
|
4
4
|
import { InvalidResourceError, ResourceNotFoundError, ResourceNotSelectableError, ResourcesUnauthorizedError, ResourcesUnavailableError } from './ResourcesErrors.js';
|
|
5
5
|
/** Finds the one record of a type whose `x-selectable` field equals the value a tenant presented. */
|
|
6
6
|
export type ResourceSelector = typeof SelectResourceRuntimeInputSchema.Type;
|
|
7
7
|
export type ReadError = ResourceNotFoundError | ResourcesUnauthorizedError | ResourcesUnavailableError;
|
|
8
|
+
/** The resolver's answer to `inspect`: literal fields and metadata, never a secret. */
|
|
9
|
+
export type InspectedResource = typeof RuntimeInspectedResourceSchema.Type;
|
|
10
|
+
/** Uncached runtime reads for the PostgreSQL subpath: a record, its metadata, and the current runtime token. */
|
|
11
|
+
export declare const makeRuntimeResourceClient: Effect.Effect<{
|
|
12
|
+
/**
|
|
13
|
+
* The token for one database tunnel; re-read on every call, never cached by the caller. The tunnel re-checks it
|
|
14
|
+
* every 2 s, so a token in its 30 s refresh window would end the connection when it expires.
|
|
15
|
+
*/
|
|
16
|
+
tunnelToken: Effect.Effect<string, ResourcesUnauthorizedError, never>;
|
|
17
|
+
resolve: (key: string) => Effect.Effect<Schema.Json, InvalidResourceError | ReadError, never>;
|
|
18
|
+
inspect: (key: string) => Effect.Effect<InspectedResource, ReadError>;
|
|
19
|
+
}, never, HttpClient.HttpClient>;
|
|
8
20
|
/** What declared resources read through: the Temper runtime API in production, fixed values in tests. */
|
|
9
21
|
export interface ResourceReader {
|
|
10
22
|
/** A Variable's live value; `Redacted` because the platform, not the caller, decides what is secret. */
|
|
@@ -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,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,GAAG,qBAAqB,GAAG,0BAA0B,GAAG,yBAAyB,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,GAAG,qBAAqB,GAAG,0BAA0B,GAAG,yBAAyB,CAAC;AA0BvG,uFAAuF;AACvF,MAAM,MAAM,iBAAiB,GAAG,OAAO,8BAA8B,CAAC,IAAI,CAAC;AAoG3E,gHAAgH;AAChH,eAAO,MAAM,yBAAyB;IACpC;;;OAGG;;mBAEY,MAAM;mBASN,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,SAAS,CAAC;gCAQlE,CAAC;AAsDJ,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
|
@@ -26,7 +26,8 @@ const statusOfRuntimeError = {
|
|
|
26
26
|
RuntimeResourcesConflictError: 409,
|
|
27
27
|
RuntimeResourcesUnavailableError: 503,
|
|
28
28
|
};
|
|
29
|
-
|
|
29
|
+
// One authenticated runtime API caller; `RuntimeResources` and the `@temper/workflow/resources` pools share it.
|
|
30
|
+
const makeRuntimeCaller = Effect.gen(function* () {
|
|
30
31
|
const tokens = yield* makeRuntimeTokens;
|
|
31
32
|
// Each attempt's scope owns its request: leaving the scope aborts it, so no response outlives its attempt.
|
|
32
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()))));
|
|
@@ -78,6 +79,22 @@ const ResourcesMake = Effect.gen(function* () {
|
|
|
78
79
|
return yield* attempt(client.resourcesRuntime, yield* tokens.replacing(token));
|
|
79
80
|
}).pipe(Effect.catchIf((error) => error._tag !== 'ResourcesUnauthorizedError' && error._tag !== 'ResourcesUnavailableError', (error) => Effect.fail(toReadError(error))));
|
|
80
81
|
};
|
|
82
|
+
return { tokens, call };
|
|
83
|
+
});
|
|
84
|
+
// Registers the answer's secrets in the caller's context, so a cached read masks them like a fresh one.
|
|
85
|
+
const unwrap = (read) => read.pipe(Effect.tap(({ redactionMasks }) => registerSecrets(redactionMasks ?? [])), Effect.map(({ value }) => value));
|
|
86
|
+
/** Uncached runtime reads for the PostgreSQL subpath: a record, its metadata, and the current runtime token. */
|
|
87
|
+
export const makeRuntimeResourceClient = Effect.map(makeRuntimeCaller, ({ tokens, call }) => ({
|
|
88
|
+
/**
|
|
89
|
+
* The token for one database tunnel; re-read on every call, never cached by the caller. The tunnel re-checks it
|
|
90
|
+
* every 2 s, so a token in its 30 s refresh window would end the connection when it expires.
|
|
91
|
+
*/
|
|
92
|
+
tunnelToken: tokens.current,
|
|
93
|
+
resolve: (key) => unwrap(call('resolveResource', `key ${key}`, (api, authorization) => api.resolveResource({ headers: { authorization }, payload: { key } }), (status, message) => (status === 409 ? new InvalidResourceError({ target: `key ${key}`, message }) : undefined))),
|
|
94
|
+
inspect: (key) => unwrap(call('inspectResource', `key ${key}`, (api, authorization) => api.inspectResource({ headers: { authorization }, payload: { key } }))),
|
|
95
|
+
}));
|
|
96
|
+
const ResourcesMake = Effect.gen(function* () {
|
|
97
|
+
const { call } = yield* makeRuntimeCaller;
|
|
81
98
|
const cache = (lookup) => Cache.makeWith(lookup, {
|
|
82
99
|
capacity: CACHE_CAPACITY,
|
|
83
100
|
// A failure is not kept: the next read asks the resolver again.
|
|
@@ -94,8 +111,6 @@ const ResourcesMake = Effect.gen(function* () {
|
|
|
94
111
|
? new InvalidResourceError({ target, message })
|
|
95
112
|
: undefined);
|
|
96
113
|
});
|
|
97
|
-
// Registers the answer's secrets in the caller's context, so a cached read masks them like a fresh one.
|
|
98
|
-
const unwrap = (read) => read.pipe(Effect.tap(({ redactionMasks }) => registerSecrets(redactionMasks ?? [])), Effect.map(({ value }) => value));
|
|
99
114
|
return RuntimeResources.of({
|
|
100
115
|
variable: (key) => Effect.map(unwrap(Cache.get(variables, key)), Redacted.make),
|
|
101
116
|
// Each caller gets its own copy: the cached value is shared across requests for 30 s.
|
|
@@ -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,
|
|
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.
|
|
3
|
+
"version": "0.7.1-postgresql.2",
|
|
4
4
|
"description": "Effect workflow SDK for Temper.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -42,6 +42,10 @@
|
|
|
42
42
|
"./as2/testing": {
|
|
43
43
|
"types": "./dist/As2Testing.d.ts",
|
|
44
44
|
"default": "./dist/As2Testing.js"
|
|
45
|
+
},
|
|
46
|
+
"./resources": {
|
|
47
|
+
"types": "./dist/Resources.d.ts",
|
|
48
|
+
"default": "./dist/Resources.js"
|
|
45
49
|
}
|
|
46
50
|
},
|
|
47
51
|
"bin": {
|
|
@@ -59,24 +63,41 @@
|
|
|
59
63
|
"ssh2": "1.17.0"
|
|
60
64
|
},
|
|
61
65
|
"peerDependencies": {
|
|
62
|
-
"effect": "4.0.6"
|
|
66
|
+
"effect": "4.0.6",
|
|
67
|
+
"pg": "^8.16.0",
|
|
68
|
+
"ws": "^8.18.0"
|
|
69
|
+
},
|
|
70
|
+
"peerDependenciesMeta": {
|
|
71
|
+
"pg": {
|
|
72
|
+
"optional": true
|
|
73
|
+
},
|
|
74
|
+
"ws": {
|
|
75
|
+
"optional": true
|
|
76
|
+
}
|
|
63
77
|
},
|
|
64
78
|
"devDependencies": {
|
|
79
|
+
"@temper/shared": "1.0.0",
|
|
80
|
+
"@testcontainers/postgresql": "^11.14.0",
|
|
65
81
|
"@types/bun": "1.4.1",
|
|
66
82
|
"@types/node": "26.4.1",
|
|
83
|
+
"@types/pg": "^8.20.0",
|
|
67
84
|
"@types/ssh2": "1.15.5",
|
|
85
|
+
"@types/ws": "^8.18.1",
|
|
68
86
|
"effect": "4.0.6",
|
|
69
|
-
"
|
|
87
|
+
"pg": "^8.22.0",
|
|
88
|
+
"vitest": "^4.0.15",
|
|
89
|
+
"ws": "^8.21.3"
|
|
70
90
|
},
|
|
71
91
|
"publishConfig": {
|
|
72
92
|
"access": "public"
|
|
73
93
|
},
|
|
74
94
|
"license": "MIT",
|
|
75
95
|
"sideEffects": false,
|
|
76
|
-
"gitHead": "
|
|
96
|
+
"gitHead": "e0aa60e7cab055f06ed6ff2b83fb5bee7bd13cb5",
|
|
77
97
|
"scripts": {
|
|
78
98
|
"build": "tsc -p tsconfig.json",
|
|
79
99
|
"test": "vitest run",
|
|
100
|
+
"test:unit": "vitest run --exclude '**/*.integration.test.ts'",
|
|
80
101
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
81
102
|
}
|
|
82
103
|
}
|