@deepexi/datasense-cli 3.0.1 → 3.1.0

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.
@@ -36,8 +36,6 @@ var import_node_vm = __toESM(require("node:vm"), 1);
36
36
 
37
37
  // src/runtime/protocol.ts
38
38
  var HOST_METHODS = Object.freeze([
39
- "definition",
40
- "declaration",
41
39
  "http",
42
40
  "db.query",
43
41
  "db.next",
@@ -50,14 +48,23 @@ var HOST_METHODS = Object.freeze([
50
48
  ]);
51
49
  var GUEST_FAILURE_CODES = Object.freeze([
52
50
  "CONNECTOR_LOAD_FAILED",
51
+ "CONNECTOR_LOOKUP_REQUIRED",
53
52
  "CONFIG_INVALID",
54
53
  "SCHEMA_ERROR",
55
54
  "FATAL_ERROR",
56
55
  "AUTH_ERROR",
57
56
  "TRANSIENT_ERROR",
58
57
  "PUSH_UNKNOWN",
58
+ "SUGGEST_INVALID",
59
59
  "CANCELED"
60
60
  ]);
61
+ var GUEST_OPERATION_FAILURE_CODES = Object.freeze([
62
+ "REJECTED",
63
+ "INDETERMINATE",
64
+ ...GUEST_FAILURE_CODES,
65
+ "INPUT_INVALID",
66
+ "OUTPUT_INVALID"
67
+ ]);
61
68
  var HTTP_METHODS = new Set(["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD"]);
62
69
  var BODY_ENCODINGS = new Set(["utf8", "base64"]);
63
70
  var DIGEST_ENCODINGS = new Set(["hex", "base64"]);
@@ -65,9 +72,11 @@ var HMAC_ALGORITHMS = new Set(["sha1", "sha256", "sha512"]);
65
72
  var HASH_ALGORITHMS = new Set(["md5", "sha1", "sha256", "sha512"]);
66
73
  var LOG_LEVELS = new Set(["info", "warn", "error"]);
67
74
  var SYNC_MODES = new Set(["full", "incremental"]);
68
- var SNAPSHOTS = new Set(["complete", "partial"]);
75
+ var COLUMN_TYPES = new Set(["string", "integer", "decimal", "boolean", "date", "instant", "json"]);
69
76
  var HOST_METHOD_SET = new Set(HOST_METHODS);
70
77
  var FAILURE_CODE_SET = new Set(GUEST_FAILURE_CODES);
78
+ var OPERATION_PHASES = new Set(["run", "lookup", "simulate"]);
79
+ var OPERATION_FAILURE_CODE_SET = new Set(GUEST_OPERATION_FAILURE_CODES);
71
80
  function isRecord(value) {
72
81
  return typeof value === "object" && value !== null && !Array.isArray(value);
73
82
  }
@@ -88,6 +97,18 @@ function parsePushRequest(value) {
88
97
  return null;
89
98
  return { requestId, push, receivedAt, headers: { ...headers }, body };
90
99
  }
100
+ function parseRateLimit(value) {
101
+ if (value === undefined)
102
+ return;
103
+ if (!isRecord(value))
104
+ return null;
105
+ const { perSecond, concurrency } = value;
106
+ if (typeof perSecond !== "number" || !Number.isFinite(perSecond) || perSecond <= 0)
107
+ return null;
108
+ if (typeof concurrency !== "number" || !Number.isSafeInteger(concurrency) || concurrency < 1)
109
+ return null;
110
+ return { perSecond, concurrency };
111
+ }
91
112
  function parseJob(value) {
92
113
  if (!isRecord(value) || !isRecord(value.config) || !isStringArray(value.secretFields))
93
114
  return null;
@@ -105,27 +126,29 @@ function parseJob(value) {
105
126
  }
106
127
  return { kind: "push", config, secretFields, requests };
107
128
  }
108
- if (value.kind === "discover")
109
- return { kind: "discover", config, secretFields };
129
+ const rateLimit = parseRateLimit(value.rateLimit);
130
+ if (rateLimit === null)
131
+ return null;
132
+ const limit = rateLimit ? { rateLimit } : {};
110
133
  if (value.kind === "check")
111
- return { kind: "check", config, secretFields };
134
+ return { kind: "check", config, secretFields, ...limit };
112
135
  if (value.kind === "pull") {
113
- const { stream, mode, streamConfig, tables, discoverFirst } = value;
136
+ const { stream, mode, streamConfig, tables } = value;
114
137
  if (typeof stream !== "string" || typeof mode !== "string" || !SYNC_MODES.has(mode) || !isRecord(streamConfig) || !isStringArray(tables))
115
138
  return null;
116
- if (discoverFirst !== undefined && typeof discoverFirst !== "boolean")
139
+ return { kind: "pull", config, secretFields, stream, mode, state: value.state, streamConfig, tables: [...tables], ...limit };
140
+ }
141
+ if (value.kind === "suggest") {
142
+ const { stream, table } = value;
143
+ if (typeof stream !== "string" || typeof table !== "string")
144
+ return null;
145
+ return { kind: "suggest", config, secretFields, stream, table, ...limit };
146
+ }
147
+ if (value.kind === "operation") {
148
+ const { phase, operation, params, idempotencyKey } = value;
149
+ if (typeof phase !== "string" || !OPERATION_PHASES.has(phase) || typeof operation !== "string" || !isRecord(params) || typeof idempotencyKey !== "string")
117
150
  return null;
118
- return {
119
- kind: "pull",
120
- config,
121
- secretFields,
122
- stream,
123
- mode,
124
- state: value.state,
125
- streamConfig,
126
- tables: [...tables],
127
- ...discoverFirst === true ? { discoverFirst: true } : {}
128
- };
151
+ return { kind: "operation", phase, config, secretFields, operation, params, idempotencyKey, ...limit };
129
152
  }
130
153
  return null;
131
154
  }
@@ -174,6 +197,7 @@ function parseParentMessage(value) {
174
197
  return null;
175
198
  }
176
199
  }
200
+ var OPERATION_HOST_METHODS = new Set(["http", "crypto", "cache.get", "cache.set", "secret.reveal"]);
177
201
 
178
202
  // src/runtime/session.ts
179
203
  var GUEST_FILENAME = "ontos-guest.js";