@dbos-inc/dbos-sdk 0.8.30-preview → 0.8.32-preview

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. package/dist/src/cloud-cli/applications/configure.d.ts +2 -0
  2. package/dist/src/cloud-cli/applications/configure.d.ts.map +1 -0
  3. package/dist/src/cloud-cli/applications/configure.js +64 -0
  4. package/dist/src/cloud-cli/applications/configure.js.map +1 -0
  5. package/dist/src/cloud-cli/applications/deploy-app-code.js +7 -1
  6. package/dist/src/cloud-cli/applications/deploy-app-code.js.map +1 -1
  7. package/dist/src/cloud-cli/cli.js +0 -0
  8. package/dist/src/cloud-cli/userdb.d.ts.map +1 -1
  9. package/dist/src/cloud-cli/userdb.js +3 -2
  10. package/dist/src/cloud-cli/userdb.js.map +1 -1
  11. package/dist/src/dbos-runtime/TypeParser.d.ts +33 -0
  12. package/dist/src/dbos-runtime/TypeParser.d.ts.map +1 -0
  13. package/dist/src/dbos-runtime/TypeParser.js +104 -0
  14. package/dist/src/dbos-runtime/TypeParser.js.map +1 -0
  15. package/dist/src/dbos-runtime/openApi.d.ts +35 -0
  16. package/dist/src/dbos-runtime/openApi.d.ts.map +1 -0
  17. package/dist/src/dbos-runtime/openApi.js +595 -0
  18. package/dist/src/dbos-runtime/openApi.js.map +1 -0
  19. package/dist/src/dbos-runtime/tsDiagUtil.d.ts +16 -0
  20. package/dist/src/dbos-runtime/tsDiagUtil.d.ts.map +1 -0
  21. package/dist/src/dbos-runtime/tsDiagUtil.js +72 -0
  22. package/dist/src/dbos-runtime/tsDiagUtil.js.map +1 -0
  23. package/dist/src/provenance/provenance_daemon.d.ts +34 -0
  24. package/dist/src/provenance/provenance_daemon.d.ts.map +1 -0
  25. package/dist/src/provenance/provenance_daemon.js +86 -0
  26. package/dist/src/provenance/provenance_daemon.js.map +1 -0
  27. package/dist/src/telemetry/signals.d.ts +20 -0
  28. package/dist/src/telemetry/signals.d.ts.map +1 -0
  29. package/dist/src/telemetry/signals.js +11 -0
  30. package/dist/src/telemetry/signals.js.map +1 -0
  31. package/examples/hello/.eslintignore +4 -0
  32. package/examples/hello/.eslintrc +19 -0
  33. package/examples/hello/knexfile.ts +1 -1
  34. package/examples/hello/package.json +5 -2
  35. package/examples/hello/src/operations.ts +2 -2
  36. package/examples/hello/tsconfig.json +2 -2
  37. package/package.json +2 -2
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.DiagnosticsCollector = exports.logDiagnostics = exports.diagResult = exports.createDiagnostic = void 0;
27
+ const ts = __importStar(require("typescript"));
28
+ const printer = ts.createPrinter();
29
+ function createDiagnostic(messageText, options) {
30
+ const node = options?.node;
31
+ const category = options?.category ?? ts.DiagnosticCategory.Error;
32
+ const code = options?.code ?? 0;
33
+ return {
34
+ category,
35
+ code,
36
+ file: node?.getSourceFile(),
37
+ length: node?.getWidth(),
38
+ messageText,
39
+ start: node?.getStart(),
40
+ source: node ? printer.printNode(ts.EmitHint.Unspecified, node, node.getSourceFile()) : undefined,
41
+ };
42
+ }
43
+ exports.createDiagnostic = createDiagnostic;
44
+ function diagResult(value, diags) {
45
+ return diags.some(e => e.category === ts.DiagnosticCategory.Error) ? undefined : value;
46
+ }
47
+ exports.diagResult = diagResult;
48
+ function logDiagnostics(diags) {
49
+ if (diags.length > 0) {
50
+ const formatHost = {
51
+ getCurrentDirectory: () => ts.sys.getCurrentDirectory(),
52
+ getNewLine: () => ts.sys.newLine,
53
+ getCanonicalFileName: (fileName) => ts.sys.useCaseSensitiveFileNames
54
+ ? fileName : fileName.toLowerCase()
55
+ };
56
+ const text = ts.formatDiagnosticsWithColorAndContext(diags, formatHost);
57
+ console.log(text);
58
+ }
59
+ }
60
+ exports.logDiagnostics = logDiagnostics;
61
+ class DiagnosticsCollector {
62
+ #diags = new Array();
63
+ get diags() { return this.#diags; }
64
+ raise(message, node) {
65
+ this.#diags.push(createDiagnostic(message, { node }));
66
+ }
67
+ warn(message, node) {
68
+ this.#diags.push(createDiagnostic(message, { node, category: ts.DiagnosticCategory.Warning }));
69
+ }
70
+ }
71
+ exports.DiagnosticsCollector = DiagnosticsCollector;
72
+ //# sourceMappingURL=tsDiagUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsDiagUtil.js","sourceRoot":"","sources":["../../../src/dbos-runtime/tsDiagUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AAEjC,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;AAQnC,SAAgB,gBAAgB,CAAC,WAAmB,EAAE,OAA2B;IAC/E,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;IAC3B,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC;IAClE,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC;IAEhC,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE;QAC3B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,WAAW;QACX,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;QACvB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;KAClG,CAAC;AACJ,CAAC;AAdD,4CAcC;AAED,SAAgB,UAAU,CAAI,KAAQ,EAAE,KAA+B;IACrE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AACzF,CAAC;AAFD,gCAEC;AAED,SAAgB,cAAc,CAAC,KAA+B;IAC5D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,MAAM,UAAU,GAA6B;YAC3C,mBAAmB,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,mBAAmB,EAAE;YACvD,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;YAChC,oBAAoB,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB;gBAC1E,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;SACtC,CAAA;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,oCAAoC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACnB;AACH,CAAC;AAZD,wCAYC;AAED,MAAa,oBAAoB;IACtB,MAAM,GAAG,IAAI,KAAK,EAAiB,CAAC;IAC7C,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,MAAkC,CAAC,CAAC,CAAC;IAE/D,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACjG,CAAC;CACF;AAXD,oDAWC"}
@@ -0,0 +1,34 @@
1
+ /// <reference types="node" />
2
+ import { Client } from "pg";
3
+ import { TelemetryCollector } from "../telemetry/collector";
4
+ import { DBOSConfig } from "../dbos-executor";
5
+ /**
6
+ * A class implementing a daemon which collects and exports provenance information,
7
+ * specifically a record of all INSERTs, UPDATEs, and DELETEs in the target database.
8
+ * Only one daemon is needed per database. The daemon need not run in the same process as workflow runtime.
9
+ * The daemon has three requirements and will fail to launch if any is not met:
10
+ *
11
+ * 1. The database must be configured with wal_level=logical.
12
+ * 2. An open replication slot must be available.
13
+ * 3. The wal2json Postgres plugin must be installed. It is installed by default on most cloud databases, including RDS.
14
+ *
15
+ * Because the daemon depends on Postgres logical replication, it can only export information on updates and deletes in tables
16
+ * whose rows are uniquely identifiable, either because the table has a primary key or a replica identity.
17
+ */
18
+ export declare class ProvenanceDaemon {
19
+ readonly slotName: string;
20
+ readonly client: Client;
21
+ readonly daemonID: NodeJS.Timeout;
22
+ readonly recordProvenanceIntervalMs = 1000;
23
+ readonly telemetryCollector: TelemetryCollector;
24
+ initialized: boolean;
25
+ /**
26
+ * @param dbosConfig An DBOS config defining exporters and database connection information.
27
+ * @param slotName The name of a logical replication slot. This slot is persistent and must be deleted if the daemon is no longer to be used.
28
+ */
29
+ constructor(dbosConfig: DBOSConfig, slotName: string);
30
+ start(): Promise<void>;
31
+ recordProvenance(): Promise<void>;
32
+ stop(): Promise<void>;
33
+ }
34
+ //# sourceMappingURL=provenance_daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provenance_daemon.d.ts","sourceRoot":"","sources":["../../../src/provenance/provenance_daemon.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAiB,MAAM,IAAI,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAqB9C;;;;;;;;;;;;GAYG;AACH,qBAAa,gBAAgB;IAWS,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAV7D,QAAQ,CAAC,MAAM,SAAC;IAChB,QAAQ,CAAC,QAAQ,iBAAC;IAClB,QAAQ,CAAC,0BAA0B,QAAQ;IAC3C,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,WAAW,UAAS;IAEpB;;;OAGG;gBACS,UAAU,EAAE,UAAU,EAAW,QAAQ,EAAE,MAAM;IASvD,KAAK;IAkBL,gBAAgB;IAqBhB,IAAI;CAKX"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProvenanceDaemon = void 0;
4
+ const pg_1 = require("pg");
5
+ const exporters_1 = require("../telemetry/exporters");
6
+ const collector_1 = require("../telemetry/collector");
7
+ /**
8
+ * A class implementing a daemon which collects and exports provenance information,
9
+ * specifically a record of all INSERTs, UPDATEs, and DELETEs in the target database.
10
+ * Only one daemon is needed per database. The daemon need not run in the same process as workflow runtime.
11
+ * The daemon has three requirements and will fail to launch if any is not met:
12
+ *
13
+ * 1. The database must be configured with wal_level=logical.
14
+ * 2. An open replication slot must be available.
15
+ * 3. The wal2json Postgres plugin must be installed. It is installed by default on most cloud databases, including RDS.
16
+ *
17
+ * Because the daemon depends on Postgres logical replication, it can only export information on updates and deletes in tables
18
+ * whose rows are uniquely identifiable, either because the table has a primary key or a replica identity.
19
+ */
20
+ class ProvenanceDaemon {
21
+ slotName;
22
+ client;
23
+ daemonID;
24
+ recordProvenanceIntervalMs = 1000;
25
+ telemetryCollector;
26
+ initialized = false;
27
+ /**
28
+ * @param dbosConfig An DBOS config defining exporters and database connection information.
29
+ * @param slotName The name of a logical replication slot. This slot is persistent and must be deleted if the daemon is no longer to be used.
30
+ */
31
+ constructor(dbosConfig, slotName) {
32
+ this.slotName = slotName;
33
+ this.client = new pg_1.Client(dbosConfig.poolConfig);
34
+ this.daemonID = setInterval(() => {
35
+ void this.recordProvenance();
36
+ }, this.recordProvenanceIntervalMs);
37
+ const telemetryExporters = [new exporters_1.PostgresExporter(dbosConfig.poolConfig, dbosConfig?.observability_database)];
38
+ this.telemetryCollector = new collector_1.TelemetryCollector(telemetryExporters);
39
+ }
40
+ async start() {
41
+ await this.client.connect();
42
+ // Create a logical replication slot with the given name.
43
+ try { // TODO: Make this robust to daemon crashes, so records are not consumed until they've been exported.
44
+ await this.client.query("SELECT pg_create_logical_replication_slot($1, 'wal2json');", [this.slotName]);
45
+ }
46
+ catch (error) {
47
+ const err = error;
48
+ if (err.code === "42710") {
49
+ // The slot has already been created.
50
+ }
51
+ else {
52
+ console.error(err);
53
+ throw err;
54
+ }
55
+ }
56
+ await this.telemetryCollector.init();
57
+ this.initialized = true;
58
+ }
59
+ async recordProvenance() {
60
+ if (this.initialized) {
61
+ const { rows } = await this.client.query("SELECT CAST(xid AS TEXT), data FROM pg_logical_slot_get_changes($1, NULL, NULL, 'filter-tables', 'dbos.*')", [this.slotName]);
62
+ for (const row of rows) {
63
+ const data = JSON.parse(row.data).change;
64
+ for (const change of data) {
65
+ const signal = {
66
+ provTransactionID: row.xid,
67
+ kind: change.kind,
68
+ schema: change.schema,
69
+ table: change.table,
70
+ columnnames: change.columnnames,
71
+ columntypes: change.columntypes,
72
+ columnvalues: change.columnvalues
73
+ };
74
+ this.telemetryCollector.push(signal);
75
+ }
76
+ }
77
+ }
78
+ }
79
+ async stop() {
80
+ clearInterval(this.daemonID);
81
+ await this.client.end();
82
+ await this.telemetryCollector.destroy();
83
+ }
84
+ }
85
+ exports.ProvenanceDaemon = ProvenanceDaemon;
86
+ //# sourceMappingURL=provenance_daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provenance_daemon.js","sourceRoot":"","sources":["../../../src/provenance/provenance_daemon.ts"],"names":[],"mappings":";;;AAAA,2BAA2C;AAC3C,sDAA0D;AAC1D,sDAA4D;AAsB5D;;;;;;;;;;;;GAYG;AACH,MAAa,gBAAgB;IAWkB;IAVpC,MAAM,CAAC;IACP,QAAQ,CAAC;IACT,0BAA0B,GAAG,IAAI,CAAC;IAClC,kBAAkB,CAAqB;IAChD,WAAW,GAAG,KAAK,CAAC;IAEpB;;;OAGG;IACH,YAAY,UAAsB,EAAW,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;QAC3D,IAAI,CAAC,MAAM,GAAG,IAAI,WAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/B,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC/B,CAAC,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACpC,MAAM,kBAAkB,GAAG,CAAC,IAAI,4BAAgB,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAC7G,IAAI,CAAC,kBAAkB,GAAG,IAAI,8BAAkB,CAAC,kBAAkB,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5B,yDAAyD;QACzD,IAAI,EAAE,qGAAqG;YACzG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;SACxG;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,GAAG,GAAkB,KAAsB,CAAC;YAClD,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;gBACxB,qCAAqC;aACtC;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,MAAM,GAAG,CAAC;aACX;SACF;QACD,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAc,4GAA4G,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrL,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,IAAI,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAkB,CAAC,MAAM,CAAC;gBAC3D,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE;oBACzB,MAAM,MAAM,GAAqB;wBAC/B,iBAAiB,EAAE,GAAG,CAAC,GAAG;wBAC1B,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;qBAClC,CAAA;oBACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACtC;aACF;SACF;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;IAC1C,CAAC;CACF;AAhED,4CAgEC"}
@@ -0,0 +1,20 @@
1
+ import { ReadableSpan } from "@opentelemetry/sdk-trace-base";
2
+ import { ValuesOf } from "../utils";
3
+ export declare const LogSeverity: {
4
+ readonly Debug: "DEBUG";
5
+ readonly Info: "INFO";
6
+ readonly Warn: "WARN";
7
+ readonly Error: "ERROR";
8
+ readonly Log: "LOG";
9
+ };
10
+ export type LogSeverity = ValuesOf<typeof LogSeverity>;
11
+ export interface TelemetrySignal {
12
+ workflowUUID: string;
13
+ operationName: string;
14
+ runAs: string;
15
+ timestamp: number;
16
+ transactionID?: string;
17
+ traceID?: string;
18
+ traceSpan?: ReadableSpan;
19
+ }
20
+ //# sourceMappingURL=signals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../../src/telemetry/signals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,eAAO,MAAM,WAAW;;;;;;CAMd,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LogSeverity = void 0;
4
+ exports.LogSeverity = {
5
+ Debug: "DEBUG",
6
+ Info: "INFO",
7
+ Warn: "WARN",
8
+ Error: "ERROR",
9
+ Log: "LOG",
10
+ };
11
+ //# sourceMappingURL=signals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../../src/telemetry/signals.ts"],"names":[],"mappings":";;;AAGa,QAAA,WAAW,GAAG;IACzB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ dist
2
+ *.test.ts
3
+ jest.config.js
4
+
@@ -0,0 +1,19 @@
1
+ {
2
+ "root": true,
3
+ "extends": [
4
+ "plugin:@dbos-inc/dbosRecommendedConfig"
5
+ ],
6
+ "plugins": [
7
+ "@dbos-inc"
8
+ ],
9
+ "env": {
10
+ "node": true,
11
+ "es6": true
12
+ },
13
+ "rules": {
14
+ },
15
+ "parser": "@typescript-eslint/parser",
16
+ "parserOptions": {
17
+ "project": "./tsconfig.json"
18
+ }
19
+ }
@@ -1,7 +1,7 @@
1
1
  // knexfile.ts
2
2
 
3
3
  import { Knex } from 'knex';
4
- import { parseConfigFile } from '@dbos-inc/dbos-sdk/dist/src/dbos-runtime/config'
4
+ import { parseConfigFile } from '@dbos-inc/dbos-sdk/dist/src/dbos-runtime/config';
5
5
  import { DBOSConfig } from '@dbos-inc/dbos-sdk/dist/src/dbos-executor';
6
6
 
7
7
  const [dbosConfig, ]: [DBOSConfig, unknown] = parseConfigFile();
@@ -3,12 +3,15 @@
3
3
  "version": "0.0.1",
4
4
  "scripts": {
5
5
  "build": "tsc",
6
- "test": "npx knex migrate:rollback && npx knex migrate:up && jest"
6
+ "test": "npx knex migrate:rollback && npx knex migrate:up && jest",
7
+ "lint": "eslint src",
8
+ "lint-fix": "eslint --fix src"
7
9
  },
8
10
  "devDependencies": {
11
+ "@dbos-inc/eslint-plugin": "^0.0.4",
9
12
  "@types/jest": "^29.5.5",
10
13
  "@types/supertest": "^2.0.14",
11
- "@typescript-eslint/eslint-plugin": "^6.0.0",
14
+ "eslint": "^8.56.0",
12
15
  "jest": "^29.7.0",
13
16
  "supertest": "^6.3.3",
14
17
  "ts-jest": "^29.1.1",
@@ -1,4 +1,4 @@
1
- import { TransactionContext, Transaction, GetApi, ArgSource, ArgSources } from '@dbos-inc/dbos-sdk'
1
+ import { TransactionContext, Transaction, GetApi, ArgSource, ArgSources } from '@dbos-inc/dbos-sdk';
2
2
  import { Knex } from 'knex';
3
3
 
4
4
  // The schema of the database table used in this example.
@@ -13,7 +13,7 @@ export class Hello {
13
13
  @Transaction() // Run this function as a database transaction
14
14
  static async helloTransaction(ctxt: TransactionContext<Knex>, @ArgSource(ArgSources.URL) user: string) {
15
15
  // Retrieve and increment the number of times this user has been greeted.
16
- const query = "INSERT INTO dbos_hello (name, greet_count) VALUES (?, 1) ON CONFLICT (name) DO UPDATE SET greet_count = dbos_hello.greet_count + 1 RETURNING greet_count;"
16
+ const query = "INSERT INTO dbos_hello (name, greet_count) VALUES (?, 1) ON CONFLICT (name) DO UPDATE SET greet_count = dbos_hello.greet_count + 1 RETURNING greet_count;";
17
17
  const { rows } = await ctxt.client.raw(query, [user]) as { rows: dbos_hello[] };
18
18
  const greet_count = rows[0].greet_count;
19
19
  return `Hello, ${user}! You have been greeted ${greet_count} times.\n`;
@@ -16,9 +16,9 @@
16
16
  "skipLibCheck": true /* Skip type checking all .d.ts files. */
17
17
  },
18
18
  "include": [ /* Specifies an array of filenames or patterns to include in the program. */
19
- "src",
19
+ "src"
20
20
  ],
21
21
  "exclude": [
22
22
  "**/*.test.ts"
23
23
  ]
24
- }
24
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dbos-inc/dbos-sdk",
3
- "version": "0.8.30-preview",
3
+ "version": "0.8.32-preview",
4
4
  "description": "A Typescript framework built on the database",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -26,7 +26,7 @@
26
26
  "devDependencies": {
27
27
  "@prisma/client": "^5.3.1",
28
28
  "@types/jest": "^29.5.3",
29
- "@types/koa__cors": "^4.0.0",
29
+ "@types/koa__cors": "^5.0.0",
30
30
  "@types/koa__router": "^12.0.0",
31
31
  "@types/koa-logger": "^3.1.2",
32
32
  "@types/node": "^20.6.3",