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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. package/dist/src/cloud-cli/cli.js +2 -2
  2. package/dist/src/cloud-cli/cli.js.map +1 -1
  3. package/dist/src/cloud-cli/userdb.d.ts +1 -1
  4. package/dist/src/cloud-cli/userdb.d.ts.map +1 -1
  5. package/dist/src/cloud-cli/userdb.js +59 -2
  6. package/dist/src/cloud-cli/userdb.js.map +1 -1
  7. package/dist/src/system_database.d.ts +3 -0
  8. package/dist/src/system_database.d.ts.map +1 -1
  9. package/dist/src/telemetry/logs.js +5 -1
  10. package/dist/src/telemetry/logs.js.map +1 -1
  11. package/dist/src/telemetry/traces.d.ts +2 -0
  12. package/dist/src/telemetry/traces.d.ts.map +1 -1
  13. package/dist/src/telemetry/traces.js +8 -0
  14. package/dist/src/telemetry/traces.js.map +1 -1
  15. package/package.json +1 -1
  16. package/dist/src/cloud-cli/applications/configure.d.ts +0 -2
  17. package/dist/src/cloud-cli/applications/configure.d.ts.map +0 -1
  18. package/dist/src/cloud-cli/applications/configure.js +0 -64
  19. package/dist/src/cloud-cli/applications/configure.js.map +0 -1
  20. package/dist/src/dbos-runtime/TypeParser.d.ts +0 -33
  21. package/dist/src/dbos-runtime/TypeParser.d.ts.map +0 -1
  22. package/dist/src/dbos-runtime/TypeParser.js +0 -104
  23. package/dist/src/dbos-runtime/TypeParser.js.map +0 -1
  24. package/dist/src/dbos-runtime/openApi.d.ts +0 -35
  25. package/dist/src/dbos-runtime/openApi.d.ts.map +0 -1
  26. package/dist/src/dbos-runtime/openApi.js +0 -595
  27. package/dist/src/dbos-runtime/openApi.js.map +0 -1
  28. package/dist/src/dbos-runtime/tsDiagUtil.d.ts +0 -16
  29. package/dist/src/dbos-runtime/tsDiagUtil.d.ts.map +0 -1
  30. package/dist/src/dbos-runtime/tsDiagUtil.js +0 -72
  31. package/dist/src/dbos-runtime/tsDiagUtil.js.map +0 -1
  32. package/dist/src/provenance/provenance_daemon.d.ts +0 -34
  33. package/dist/src/provenance/provenance_daemon.d.ts.map +0 -1
  34. package/dist/src/provenance/provenance_daemon.js +0 -86
  35. package/dist/src/provenance/provenance_daemon.js.map +0 -1
  36. package/dist/src/telemetry/signals.d.ts +0 -20
  37. package/dist/src/telemetry/signals.d.ts.map +0 -1
  38. package/dist/src/telemetry/signals.js +0 -11
  39. package/dist/src/telemetry/signals.js.map +0 -1
@@ -1,72 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,34 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,86 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,20 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,11 +0,0 @@
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
@@ -1 +0,0 @@
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"}