@laserdata/laser-sdk 0.5.3 → 0.6.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.
- package/README.md +105 -79
- package/dist/agent/agdx.d.ts +8 -3
- package/dist/agent/agdx.d.ts.map +1 -1
- package/dist/agent/agdx.js +39 -22
- package/dist/agent/agdx.js.map +1 -1
- package/dist/agent/builder.d.ts +25 -15
- package/dist/agent/builder.d.ts.map +1 -1
- package/dist/agent/builder.js +103 -59
- package/dist/agent/builder.js.map +1 -1
- package/dist/agent/context.d.ts +3 -6
- package/dist/agent/context.d.ts.map +1 -1
- package/dist/agent/context.js +17 -9
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/contract.d.ts +2 -2
- package/dist/agent/contract.d.ts.map +1 -1
- package/dist/agent/contract.js +10 -6
- package/dist/agent/contract.js.map +1 -1
- package/dist/agent/memory-handler.d.ts +25 -0
- package/dist/agent/memory-handler.d.ts.map +1 -0
- package/dist/agent/memory-handler.js +43 -0
- package/dist/agent/memory-handler.js.map +1 -0
- package/dist/agent/registry.d.ts +3 -10
- package/dist/agent/registry.d.ts.map +1 -1
- package/dist/agent/registry.js +22 -19
- package/dist/agent/registry.js.map +1 -1
- package/dist/agent/reliable-consumer.d.ts +19 -9
- package/dist/agent/reliable-consumer.d.ts.map +1 -1
- package/dist/agent/reliable-consumer.js +193 -54
- package/dist/agent/reliable-consumer.js.map +1 -1
- package/dist/agent/replies.d.ts +6 -0
- package/dist/agent/replies.d.ts.map +1 -1
- package/dist/agent/replies.js +55 -4
- package/dist/agent/replies.js.map +1 -1
- package/dist/agent/router.d.ts +1 -1
- package/dist/agent/router.d.ts.map +1 -1
- package/dist/agent/router.js +5 -19
- package/dist/agent/router.js.map +1 -1
- package/dist/agent/scope.d.ts +7 -3
- package/dist/agent/scope.d.ts.map +1 -1
- package/dist/agent/scope.js +11 -1
- package/dist/agent/scope.js.map +1 -1
- package/dist/agent/timer.d.ts +6 -0
- package/dist/agent/timer.d.ts.map +1 -0
- package/dist/agent/timer.js +21 -0
- package/dist/agent/timer.js.map +1 -0
- package/dist/agent/workflow.d.ts +16 -19
- package/dist/agent/workflow.d.ts.map +1 -1
- package/dist/agent/workflow.js +17 -6
- package/dist/agent/workflow.js.map +1 -1
- package/dist/blob.d.ts +2 -3
- package/dist/blob.d.ts.map +1 -1
- package/dist/blob.js.map +1 -1
- package/dist/bridges/a2a.d.ts +34 -23
- package/dist/bridges/a2a.d.ts.map +1 -1
- package/dist/bridges/a2a.js +29 -19
- package/dist/bridges/a2a.js.map +1 -1
- package/dist/bridges/hops.d.ts +1 -1
- package/dist/bridges/hops.d.ts.map +1 -1
- package/dist/bridges/hops.js +1 -1
- package/dist/bridges/hops.js.map +1 -1
- package/dist/bridges/mcp.d.ts +27 -7
- package/dist/bridges/mcp.d.ts.map +1 -1
- package/dist/bridges/mcp.js +24 -9
- package/dist/bridges/mcp.js.map +1 -1
- package/dist/client/bytes.d.ts +5 -0
- package/dist/client/bytes.d.ts.map +1 -1
- package/dist/client/bytes.js +15 -0
- package/dist/client/bytes.js.map +1 -1
- package/dist/client/capabilities.d.ts +25 -13
- package/dist/client/capabilities.d.ts.map +1 -1
- package/dist/client/capabilities.js +145 -123
- package/dist/client/capabilities.js.map +1 -1
- package/dist/client/error-classify.d.ts +57 -0
- package/dist/client/error-classify.d.ts.map +1 -0
- package/dist/client/error-classify.js +347 -0
- package/dist/client/error-classify.js.map +1 -0
- package/dist/client/errors.d.ts +113 -40
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +191 -53
- package/dist/client/errors.js.map +1 -1
- package/dist/client/internals.d.ts +1 -0
- package/dist/client/internals.d.ts.map +1 -1
- package/dist/client/internals.js +1 -0
- package/dist/client/internals.js.map +1 -1
- package/dist/client/laser.d.ts +62 -46
- package/dist/client/laser.d.ts.map +1 -1
- package/dist/client/laser.js +206 -120
- package/dist/client/laser.js.map +1 -1
- package/dist/client/managed.d.ts +3 -0
- package/dist/client/managed.d.ts.map +1 -1
- package/dist/client/managed.js +70 -3
- package/dist/client/managed.js.map +1 -1
- package/dist/context-scope.d.ts +25 -9
- package/dist/context-scope.d.ts.map +1 -1
- package/dist/context-scope.js +36 -9
- package/dist/context-scope.js.map +1 -1
- package/dist/context.d.ts +33 -16
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +174 -95
- package/dist/context.js.map +1 -1
- package/dist/conversation-state.d.ts +1 -1
- package/dist/conversation-state.d.ts.map +1 -1
- package/dist/conversation-state.js +35 -16
- package/dist/conversation-state.js.map +1 -1
- package/dist/govern.d.ts +24 -5
- package/dist/govern.d.ts.map +1 -1
- package/dist/govern.js +116 -28
- package/dist/govern.js.map +1 -1
- package/dist/iggy/apache-iggy.d.ts +59 -56
- package/dist/iggy/apache-iggy.d.ts.map +1 -1
- package/dist/iggy/apache-iggy.js +300 -137
- package/dist/iggy/apache-iggy.js.map +1 -1
- package/dist/index.d.ts +97 -65
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -30
- package/dist/index.js.map +1 -1
- package/dist/intent.d.ts +16 -2
- package/dist/intent.d.ts.map +1 -1
- package/dist/intent.js +50 -18
- package/dist/intent.js.map +1 -1
- package/dist/managed/coordination.d.ts +82 -0
- package/dist/managed/coordination.d.ts.map +1 -0
- package/dist/managed/coordination.js +367 -0
- package/dist/managed/coordination.js.map +1 -0
- package/dist/managed/destinations.d.ts +4 -3
- package/dist/managed/destinations.d.ts.map +1 -1
- package/dist/managed/destinations.js +29 -13
- package/dist/managed/destinations.js.map +1 -1
- package/dist/managed/filters.d.ts +5 -5
- package/dist/managed/filters.d.ts.map +1 -1
- package/dist/managed/filters.js +39 -22
- package/dist/managed/filters.js.map +1 -1
- package/dist/managed/forks.d.ts +8 -11
- package/dist/managed/forks.d.ts.map +1 -1
- package/dist/managed/forks.js +33 -13
- package/dist/managed/forks.js.map +1 -1
- package/dist/managed/graph.d.ts +1 -4
- package/dist/managed/graph.d.ts.map +1 -1
- package/dist/managed/graph.js +5 -3
- package/dist/managed/graph.js.map +1 -1
- package/dist/managed/kv.d.ts +26 -14
- package/dist/managed/kv.d.ts.map +1 -1
- package/dist/managed/kv.js +88 -61
- package/dist/managed/kv.js.map +1 -1
- package/dist/managed/projections.d.ts +5 -8
- package/dist/managed/projections.d.ts.map +1 -1
- package/dist/managed/projections.js +22 -2
- package/dist/managed/projections.js.map +1 -1
- package/dist/managed/query.d.ts +20 -6
- package/dist/managed/query.d.ts.map +1 -1
- package/dist/managed/query.js +97 -24
- package/dist/managed/query.js.map +1 -1
- package/dist/managed/runs.d.ts +2 -4
- package/dist/managed/runs.d.ts.map +1 -1
- package/dist/managed/runs.js +9 -1
- package/dist/managed/runs.js.map +1 -1
- package/dist/managed/watch.d.ts +2 -4
- package/dist/managed/watch.d.ts.map +1 -1
- package/dist/managed/watch.js +9 -1
- package/dist/managed/watch.js.map +1 -1
- package/dist/memory/handle.d.ts +75 -22
- package/dist/memory/handle.d.ts.map +1 -1
- package/dist/memory/handle.js +232 -58
- package/dist/memory/handle.js.map +1 -1
- package/dist/memory/log-memory.d.ts +24 -12
- package/dist/memory/log-memory.d.ts.map +1 -1
- package/dist/memory/log-memory.js +214 -100
- package/dist/memory/log-memory.js.map +1 -1
- package/dist/memory/topic.d.ts +2 -2
- package/dist/memory/topic.d.ts.map +1 -1
- package/dist/memory/topic.js +7 -5
- package/dist/memory/topic.js.map +1 -1
- package/dist/memory/types.d.ts +41 -5
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +44 -18
- package/dist/memory/types.js.map +1 -1
- package/dist/memory/vector-memory.d.ts +8 -6
- package/dist/memory/vector-memory.d.ts.map +1 -1
- package/dist/memory/vector-memory.js +65 -34
- package/dist/memory/vector-memory.js.map +1 -1
- package/dist/memory.d.ts +6 -5
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +4 -4
- package/dist/memory.js.map +1 -1
- package/dist/provenance/agent-topic.d.ts +3 -1
- package/dist/provenance/agent-topic.d.ts.map +1 -1
- package/dist/provenance/agent-topic.js +3 -1
- package/dist/provenance/agent-topic.js.map +1 -1
- package/dist/provenance/provenance.d.ts +3 -3
- package/dist/provenance/provenance.d.ts.map +1 -1
- package/dist/provenance/provenance.js +30 -18
- package/dist/provenance/provenance.js.map +1 -1
- package/dist/runtime/clock.d.ts +3 -0
- package/dist/runtime/clock.d.ts.map +1 -1
- package/dist/runtime/clock.js +16 -3
- package/dist/runtime/clock.js.map +1 -1
- package/dist/schema-codecs.d.ts +7 -3
- package/dist/schema-codecs.d.ts.map +1 -1
- package/dist/schema-codecs.js +80 -12
- package/dist/schema-codecs.js.map +1 -1
- package/dist/session.d.ts +27 -18
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +95 -37
- package/dist/session.js.map +1 -1
- package/dist/signing.d.ts +11 -5
- package/dist/signing.d.ts.map +1 -1
- package/dist/signing.js +64 -21
- package/dist/signing.js.map +1 -1
- package/dist/snapshot.d.ts +10 -2
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/snapshot.js +62 -28
- package/dist/snapshot.js.map +1 -1
- package/dist/state-store.d.ts +1 -1
- package/dist/state-store.d.ts.map +1 -1
- package/dist/state-store.js.map +1 -1
- package/dist/stream/batching.d.ts +81 -0
- package/dist/stream/batching.d.ts.map +1 -0
- package/dist/stream/batching.js +210 -0
- package/dist/stream/batching.js.map +1 -0
- package/dist/stream/bson.d.ts +3 -0
- package/dist/stream/bson.d.ts.map +1 -0
- package/dist/stream/bson.js +245 -0
- package/dist/stream/bson.js.map +1 -0
- package/dist/stream/codecs.d.ts +58 -6
- package/dist/stream/codecs.d.ts.map +1 -1
- package/dist/stream/codecs.js +143 -59
- package/dist/stream/codecs.js.map +1 -1
- package/dist/stream/consumer-group.d.ts +13 -10
- package/dist/stream/consumer-group.d.ts.map +1 -1
- package/dist/stream/consumer-group.js +91 -31
- package/dist/stream/consumer-group.js.map +1 -1
- package/dist/stream/consumer-start.d.ts +17 -0
- package/dist/stream/consumer-start.d.ts.map +1 -0
- package/dist/stream/consumer-start.js +2 -0
- package/dist/stream/consumer-start.js.map +1 -0
- package/dist/stream/consumer.d.ts +166 -24
- package/dist/stream/consumer.d.ts.map +1 -1
- package/dist/stream/consumer.js +451 -68
- package/dist/stream/consumer.js.map +1 -1
- package/dist/stream/cursor.d.ts +5 -12
- package/dist/stream/cursor.d.ts.map +1 -1
- package/dist/stream/cursor.js +34 -8
- package/dist/stream/cursor.js.map +1 -1
- package/dist/stream/header-value.d.ts +61 -15
- package/dist/stream/header-value.d.ts.map +1 -1
- package/dist/stream/header-value.js.map +1 -1
- package/dist/stream/message.d.ts +17 -0
- package/dist/stream/message.d.ts.map +1 -0
- package/dist/stream/message.js +9 -0
- package/dist/stream/message.js.map +1 -0
- package/dist/stream/producer.d.ts +127 -11
- package/dist/stream/producer.d.ts.map +1 -1
- package/dist/stream/producer.js +401 -36
- package/dist/stream/producer.js.map +1 -1
- package/dist/stream/publish.d.ts +6 -15
- package/dist/stream/publish.d.ts.map +1 -1
- package/dist/stream/publish.js +18 -28
- package/dist/stream/publish.js.map +1 -1
- package/dist/stream/record.d.ts +4 -6
- package/dist/stream/record.d.ts.map +1 -1
- package/dist/stream/record.js +4 -3
- package/dist/stream/record.js.map +1 -1
- package/dist/stream/routing.d.ts +12 -0
- package/dist/stream/routing.d.ts.map +1 -1
- package/dist/stream/routing.js +6 -1
- package/dist/stream/routing.js.map +1 -1
- package/dist/stream/stream.d.ts +1 -4
- package/dist/stream/stream.d.ts.map +1 -1
- package/dist/stream/stream.js +5 -1
- package/dist/stream/stream.js.map +1 -1
- package/dist/stream/topic.d.ts +22 -23
- package/dist/stream/topic.d.ts.map +1 -1
- package/dist/stream/topic.js +90 -30
- package/dist/stream/topic.js.map +1 -1
- package/dist/stream/typed-topic.d.ts +9 -13
- package/dist/stream/typed-topic.d.ts.map +1 -1
- package/dist/stream/typed-topic.js +25 -10
- package/dist/stream/typed-topic.js.map +1 -1
- package/dist/swarm.d.ts +0 -1
- package/dist/swarm.d.ts.map +1 -1
- package/dist/swarm.js +1 -0
- package/dist/swarm.js.map +1 -1
- package/dist/testing.d.ts +3 -3
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +3 -3
- package/dist/testing.js.map +1 -1
- package/dist/types/ids.d.ts +17 -2
- package/dist/types/ids.d.ts.map +1 -1
- package/dist/types/ids.js +34 -14
- package/dist/types/ids.js.map +1 -1
- package/dist/wire/agent.d.ts +22 -0
- package/dist/wire/agent.d.ts.map +1 -1
- package/dist/wire/agent.js +80 -25
- package/dist/wire/agent.js.map +1 -1
- package/dist/wire/authz.d.ts +35 -1
- package/dist/wire/authz.d.ts.map +1 -1
- package/dist/wire/authz.js +45 -15
- package/dist/wire/authz.js.map +1 -1
- package/dist/wire/cbor.d.ts.map +1 -1
- package/dist/wire/cbor.js +13 -2
- package/dist/wire/cbor.js.map +1 -1
- package/dist/wire/checkpoint.d.ts +17 -12
- package/dist/wire/checkpoint.d.ts.map +1 -1
- package/dist/wire/checkpoint.js +28 -3
- package/dist/wire/checkpoint.js.map +1 -1
- package/dist/wire/control.d.ts +82 -0
- package/dist/wire/control.d.ts.map +1 -1
- package/dist/wire/control.js +219 -0
- package/dist/wire/control.js.map +1 -1
- package/dist/wire/filter-eval.d.ts +41 -7
- package/dist/wire/filter-eval.d.ts.map +1 -1
- package/dist/wire/filter-eval.js +26 -28
- package/dist/wire/filter-eval.js.map +1 -1
- package/dist/wire/filter.d.ts +51 -17
- package/dist/wire/filter.d.ts.map +1 -1
- package/dist/wire/filter.js +99 -10
- package/dist/wire/filter.js.map +1 -1
- package/dist/wire/fork.d.ts +14 -1
- package/dist/wire/fork.d.ts.map +1 -1
- package/dist/wire/fork.js +19 -8
- package/dist/wire/fork.js.map +1 -1
- package/dist/wire/graph.d.ts +3 -0
- package/dist/wire/graph.d.ts.map +1 -1
- package/dist/wire/graph.js +18 -4
- package/dist/wire/graph.js.map +1 -1
- package/dist/wire/hello.d.ts +4 -1
- package/dist/wire/hello.d.ts.map +1 -1
- package/dist/wire/hello.js +13 -3
- package/dist/wire/hello.js.map +1 -1
- package/dist/wire/index.d.ts +4 -1
- package/dist/wire/index.d.ts.map +1 -1
- package/dist/wire/index.js +4 -1
- package/dist/wire/index.js.map +1 -1
- package/dist/wire/kv.d.ts +37 -2
- package/dist/wire/kv.d.ts.map +1 -1
- package/dist/wire/kv.js +36 -18
- package/dist/wire/kv.js.map +1 -1
- package/dist/wire/query.d.ts +6 -0
- package/dist/wire/query.d.ts.map +1 -1
- package/dist/wire/query.js +38 -12
- package/dist/wire/query.js.map +1 -1
- package/dist/wire/schema.d.ts +29 -6
- package/dist/wire/schema.d.ts.map +1 -1
- package/dist/wire/schema.js +61 -26
- package/dist/wire/schema.js.map +1 -1
- package/dist/wire/snapshot.js +1 -1
- package/dist/wire/snapshot.js.map +1 -1
- package/dist/wire/value.d.ts +10 -2
- package/dist/wire/value.d.ts.map +1 -1
- package/dist/wire/value.js +29 -3
- package/dist/wire/value.js.map +1 -1
- package/package.json +2 -3
- package/dist/stream/polling-strategy.d.ts +0 -14
- package/dist/stream/polling-strategy.d.ts.map +0 -1
- package/dist/stream/polling-strategy.js +0 -2
- package/dist/stream/polling-strategy.js.map +0 -1
package/dist/wire/filter.js
CHANGED
|
@@ -96,6 +96,16 @@ export class FieldPath {
|
|
|
96
96
|
}
|
|
97
97
|
return new FieldPath(segments);
|
|
98
98
|
}
|
|
99
|
+
static tryParse(text) {
|
|
100
|
+
try {
|
|
101
|
+
return FieldPath.parse(text);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
if (error instanceof InvalidError)
|
|
105
|
+
return undefined;
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
99
109
|
toString() {
|
|
100
110
|
return this.segments
|
|
101
111
|
.map((segment, position) => {
|
|
@@ -183,6 +193,9 @@ class PathParser {
|
|
|
183
193
|
return new InvalidError(`field path \`${this.text}\` is invalid at byte ${String(byte)}: ${reason}`);
|
|
184
194
|
}
|
|
185
195
|
}
|
|
196
|
+
export function recordPolicyIsReject(policy) {
|
|
197
|
+
return policy === "reject";
|
|
198
|
+
}
|
|
186
199
|
/** Builders for the `FilterExpr` type. */
|
|
187
200
|
export const FilterExpr = {
|
|
188
201
|
all(children) {
|
|
@@ -209,6 +222,16 @@ export const FilterExpr = {
|
|
|
209
222
|
absent(path) {
|
|
210
223
|
return { kind: "absent", path: FieldPath.parse(path) };
|
|
211
224
|
},
|
|
225
|
+
/** Presence of a payload path, `undefined` for an invalid path. */
|
|
226
|
+
tryPresent(path) {
|
|
227
|
+
const parsed = FieldPath.tryParse(path);
|
|
228
|
+
return parsed === undefined ? undefined : { kind: "present", path: parsed };
|
|
229
|
+
},
|
|
230
|
+
/** Absence of a payload path, `undefined` for an invalid path. */
|
|
231
|
+
tryAbsent(path) {
|
|
232
|
+
const parsed = FieldPath.tryParse(path);
|
|
233
|
+
return parsed === undefined ? undefined : { kind: "absent", path: parsed };
|
|
234
|
+
},
|
|
212
235
|
header(key, op, value) {
|
|
213
236
|
return { kind: "header", predicate: { key, op, value: typedLiteral(value) } };
|
|
214
237
|
},
|
|
@@ -260,6 +283,13 @@ export const ConsumerFilter = {
|
|
|
260
283
|
/** The same filter under another policy for a field of an unexpected type. */
|
|
261
284
|
withMismatchPolicy(filter, mismatchPolicy) {
|
|
262
285
|
return { ...filter, mismatchPolicy };
|
|
286
|
+
},
|
|
287
|
+
/**
|
|
288
|
+
* SHA-256 over a domain tag and the canonical JSON encoding of the filter.
|
|
289
|
+
* Two filters get the same digest exactly when their encodings are equal.
|
|
290
|
+
*/
|
|
291
|
+
digest(filter) {
|
|
292
|
+
return consumerFilterDigest(filter);
|
|
263
293
|
}
|
|
264
294
|
};
|
|
265
295
|
function newFilter(expr, codec, faultPolicy) {
|
|
@@ -291,6 +321,12 @@ function typedLiteral(value) {
|
|
|
291
321
|
}
|
|
292
322
|
return value;
|
|
293
323
|
}
|
|
324
|
+
/** Makes a text match case-insensitive. Any other node is returned as is. */
|
|
325
|
+
export function filterExprCaseInsensitive(expr) {
|
|
326
|
+
if (expr.kind !== "text" && expr.kind !== "header_text")
|
|
327
|
+
return expr;
|
|
328
|
+
return { kind: expr.kind, predicate: { ...expr.predicate, caseInsensitive: true } };
|
|
329
|
+
}
|
|
294
330
|
export function filterExprReadsPayload(expr) {
|
|
295
331
|
switch (expr.kind) {
|
|
296
332
|
case "all":
|
|
@@ -433,11 +469,11 @@ function validateNode(expr, depth, nodes) {
|
|
|
433
469
|
return;
|
|
434
470
|
case "text":
|
|
435
471
|
FieldPath.parse(expr.predicate.field);
|
|
436
|
-
|
|
472
|
+
textPredicateValidate(expr.predicate);
|
|
437
473
|
return;
|
|
438
474
|
case "header_text":
|
|
439
475
|
validateHeaderKey(expr.predicate.field);
|
|
440
|
-
|
|
476
|
+
textPredicateValidate(expr.predicate);
|
|
441
477
|
}
|
|
442
478
|
}
|
|
443
479
|
function validateHeaderKey(key) {
|
|
@@ -449,7 +485,7 @@ function validateHeaderKey(key) {
|
|
|
449
485
|
// The server compiles regexes with the Rust engine and is the authority on
|
|
450
486
|
// their syntax. These checks refuse what no SDK accepts, so a filter fails here
|
|
451
487
|
// before it travels.
|
|
452
|
-
function
|
|
488
|
+
export function textPredicateValidate(predicate) {
|
|
453
489
|
if (UTF8.encode(predicate.pattern).byteLength > MAX_FILTER_STRING_BYTES) {
|
|
454
490
|
throw new InvalidError(`a text pattern exceeds ${String(MAX_FILTER_STRING_BYTES)}B`);
|
|
455
491
|
}
|
|
@@ -617,10 +653,10 @@ function coercedLiteralParses(coerce, value) {
|
|
|
617
653
|
return value.kind === "string" && ExactDecimal.parse(value.value) !== undefined;
|
|
618
654
|
}
|
|
619
655
|
if (value.kind === "string") {
|
|
620
|
-
return
|
|
656
|
+
return timestampFormatMicrosFromText(coerce.format, value.value) !== undefined;
|
|
621
657
|
}
|
|
622
658
|
if (value.kind === "int" || value.kind === "long") {
|
|
623
|
-
return
|
|
659
|
+
return timestampFormatMicrosFromInteger(coerce.format, BigInt(value.value)) !== undefined;
|
|
624
660
|
}
|
|
625
661
|
return false;
|
|
626
662
|
}
|
|
@@ -682,7 +718,7 @@ export class ExactDecimal {
|
|
|
682
718
|
return ExactDecimal.normalized(negative, (negative ? -value : value).toString(), "");
|
|
683
719
|
}
|
|
684
720
|
/** The exact value of a finite double, `undefined` for infinities and NaN. */
|
|
685
|
-
static
|
|
721
|
+
static fromF64(value) {
|
|
686
722
|
if (!Number.isFinite(value))
|
|
687
723
|
return undefined;
|
|
688
724
|
if (value === 0)
|
|
@@ -745,15 +781,15 @@ function inI64(value) {
|
|
|
745
781
|
return value >= I64_MIN && value <= I64_MAX ? value : undefined;
|
|
746
782
|
}
|
|
747
783
|
/** Microseconds since the epoch for a text value, `undefined` when it does not parse exactly. */
|
|
748
|
-
export function
|
|
784
|
+
export function timestampFormatMicrosFromText(format, text) {
|
|
749
785
|
if (format === "rfc3339")
|
|
750
786
|
return rfc3339Micros(text);
|
|
751
787
|
if (!/^[+-]?\d+$/.test(text))
|
|
752
788
|
return undefined;
|
|
753
|
-
return
|
|
789
|
+
return timestampFormatMicrosFromInteger(format, BigInt(text));
|
|
754
790
|
}
|
|
755
791
|
/** Microseconds since the epoch for an integer value, `undefined` on overflow or for RFC 3339. */
|
|
756
|
-
export function
|
|
792
|
+
export function timestampFormatMicrosFromInteger(format, value) {
|
|
757
793
|
if (inI64(value) === undefined)
|
|
758
794
|
return undefined;
|
|
759
795
|
switch (format) {
|
|
@@ -864,8 +900,40 @@ function daysFromCivil(yearInput, month, day) {
|
|
|
864
900
|
const dayOfEra = yearOfEra * 365n + yearOfEra / 4n - yearOfEra / 100n + dayOfYear;
|
|
865
901
|
return era * 146097n + dayOfEra - 719468n;
|
|
866
902
|
}
|
|
903
|
+
export function filterConsumerIsGroup(consumer) {
|
|
904
|
+
return consumer.kind !== "consumer";
|
|
905
|
+
}
|
|
906
|
+
export function executionModeIsFiltered(mode) {
|
|
907
|
+
return mode === "filtered";
|
|
908
|
+
}
|
|
909
|
+
export function readModeIsPrimary(mode) {
|
|
910
|
+
return mode === "primary";
|
|
911
|
+
}
|
|
912
|
+
/**
|
|
913
|
+
* Whether the record is in another format than the filter reads, which follows
|
|
914
|
+
* the filter's foreign policy instead of its fault policy.
|
|
915
|
+
*/
|
|
916
|
+
export function faultReasonIsForeign(reason) {
|
|
917
|
+
return (reason === "foreign_codec" ||
|
|
918
|
+
reason === "missing_schema" ||
|
|
919
|
+
reason === "schema_not_allowed" ||
|
|
920
|
+
reason === "schema_mismatch");
|
|
921
|
+
}
|
|
922
|
+
/** The policy an independent consumer or a bound group ran: one filter. */
|
|
923
|
+
export function appliedPolicyFiltered(groupId, digest) {
|
|
924
|
+
return {
|
|
925
|
+
...(groupId === undefined ? {} : { groupId }),
|
|
926
|
+
digest,
|
|
927
|
+
mode: "filtered",
|
|
928
|
+
policyGeneration: 0n
|
|
929
|
+
};
|
|
930
|
+
}
|
|
931
|
+
/** The policy of a group without a binding: every record. */
|
|
932
|
+
export function appliedPolicyUnfiltered(groupId, policyGeneration) {
|
|
933
|
+
return { groupId, mode: "unfiltered", policyGeneration };
|
|
934
|
+
}
|
|
867
935
|
/** The start of the next request: continue after `page`, or repeat `original`. */
|
|
868
|
-
export function
|
|
936
|
+
export function filteredPageNextStart(page, original) {
|
|
869
937
|
if (page.nextScanOffset === undefined)
|
|
870
938
|
return original;
|
|
871
939
|
return {
|
|
@@ -881,6 +949,27 @@ export function nextFilteredStart(page, original) {
|
|
|
881
949
|
}
|
|
882
950
|
};
|
|
883
951
|
}
|
|
952
|
+
export function filterErrorInvalid(error) {
|
|
953
|
+
return {
|
|
954
|
+
code: { kind: "known", name: "InvalidArgument" },
|
|
955
|
+
reason: "invalid_request",
|
|
956
|
+
message: error.message
|
|
957
|
+
};
|
|
958
|
+
}
|
|
959
|
+
/**
|
|
960
|
+
* Refuses a request of another filter op version as `version_skew` before its
|
|
961
|
+
* shape is validated, so a client of another build can tell a version gap from
|
|
962
|
+
* a malformed request. `undefined` for the supported version.
|
|
963
|
+
*/
|
|
964
|
+
export function filterErrorCheckVersion(v) {
|
|
965
|
+
if (v === FILTER_OP_VERSION)
|
|
966
|
+
return undefined;
|
|
967
|
+
return {
|
|
968
|
+
code: { kind: "known", name: "VersionSkew" },
|
|
969
|
+
reason: "version_skew",
|
|
970
|
+
message: `filter request version ${String(v)} is not supported, expected ${String(FILTER_OP_VERSION)}`
|
|
971
|
+
};
|
|
972
|
+
}
|
|
884
973
|
function validateVersion(v) {
|
|
885
974
|
if (v !== FILTER_OP_VERSION) {
|
|
886
975
|
throw new InvalidError(`filter request version ${String(v)} is not supported, expected ${String(FILTER_OP_VERSION)}`);
|