@dxos/echo-query 0.8.4-main.c85a9c8dae → 0.8.4-main.d05539e30a

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.
@@ -78,14 +78,14 @@ var FilterClass = class FilterClass {
78
78
  if (typeof schema !== "string") throw new TypeError("expected typename as the first paramter");
79
79
  return new FilterClass({
80
80
  type: "object",
81
- typename: makeTypeDxn(schema),
81
+ typename: makeTypeDXN(schema),
82
82
  ...propsFilterToAst(props ?? {})
83
83
  });
84
84
  }
85
85
  static typename(typename) {
86
86
  return new FilterClass({
87
87
  type: "object",
88
- typename: makeTypeDxn(typename),
88
+ typename: makeTypeDXN(typename),
89
89
  props: {}
90
90
  });
91
91
  }
@@ -102,6 +102,15 @@ var FilterClass = class FilterClass {
102
102
  tag
103
103
  });
104
104
  }
105
+ static key(key, options) {
106
+ return new FilterClass({
107
+ type: "object",
108
+ typename: null,
109
+ props: {},
110
+ metaKey: key,
111
+ metaVersion: options?.version
112
+ });
113
+ }
105
114
  static props(props) {
106
115
  return new FilterClass({
107
116
  type: "object",
@@ -188,6 +197,40 @@ var FilterClass = class FilterClass {
188
197
  to
189
198
  });
190
199
  }
200
+ static updated(range) {
201
+ return FilterClass._timeRangeFilter("updatedAt", range);
202
+ }
203
+ static created(range) {
204
+ return FilterClass._timeRangeFilter("createdAt", range);
205
+ }
206
+ static childOf(parents, options) {
207
+ return new FilterClass({
208
+ type: "child-of",
209
+ parents: (Array.isArray(parents) ? parents : [parents]).map((item) => {
210
+ if (isDxnLike(item)) return item.toString();
211
+ throw new TypeError("childOf requires DXN values in query-lite");
212
+ }),
213
+ transitive: options?.transitive ?? true
214
+ });
215
+ }
216
+ static _timeRangeFilter(field, range) {
217
+ const toMs = (d) => typeof d === "number" ? d : d.getTime();
218
+ const filters = [];
219
+ if (range.after != null) filters.push(new FilterClass({
220
+ type: "timestamp",
221
+ field,
222
+ operator: "gte",
223
+ value: toMs(range.after)
224
+ }));
225
+ if (range.before != null) filters.push(new FilterClass({
226
+ type: "timestamp",
227
+ field,
228
+ operator: "lte",
229
+ value: toMs(range.before)
230
+ }));
231
+ if (filters.length === 0) return FilterClass.everything();
232
+ return filters.length === 1 ? filters[0] : FilterClass.and(...filters);
233
+ }
191
234
  static not(filter) {
192
235
  return new FilterClass({
193
236
  type: "not",
@@ -206,6 +249,10 @@ var FilterClass = class FilterClass {
206
249
  filters: filters.map((f) => f.ast)
207
250
  });
208
251
  }
252
+ /** Returns a human-readable string representation of a Filter AST. */
253
+ static pretty(filter) {
254
+ return prettyFilter(filter.ast);
255
+ }
209
256
  constructor(ast) {
210
257
  this.ast = ast;
211
258
  }
@@ -247,6 +294,18 @@ var QueryClass = class QueryClass {
247
294
  filter: filter.ast
248
295
  });
249
296
  }
297
+ select(filter) {
298
+ if (FilterClass.is(filter)) return new QueryClass({
299
+ type: "filter",
300
+ selection: this.ast,
301
+ filter: filter.ast
302
+ });
303
+ else return new QueryClass({
304
+ type: "filter",
305
+ selection: this.ast,
306
+ filter: FilterClass.props(filter).ast
307
+ });
308
+ }
250
309
  static type(schema, predicates) {
251
310
  return new QueryClass({
252
311
  type: "select",
@@ -273,22 +332,33 @@ var QueryClass = class QueryClass {
273
332
  filter: FilterClass.everything().ast
274
333
  }).from(source, options);
275
334
  }
335
+ from(arg, options) {
336
+ if (arg === "all-accessible-spaces") return new QueryClass({
337
+ type: "from",
338
+ query: this.ast,
339
+ from: {
340
+ _tag: "scope",
341
+ scope: { ...options?.includeFeeds ? { allFeedsFromSpaces: true } : {} }
342
+ }
343
+ });
344
+ if (_isScopeLike(arg)) return new QueryClass({
345
+ type: "from",
346
+ query: this.ast,
347
+ from: {
348
+ _tag: "scope",
349
+ scope: arg
350
+ }
351
+ });
352
+ throw new TypeError("Database and Feed objects are not supported in query-lite sandbox");
353
+ }
354
+ /** Returns a human-readable string representation of a Query AST. */
355
+ static pretty(query) {
356
+ return prettyQuery(query.ast);
357
+ }
276
358
  constructor(ast) {
277
359
  this.ast = ast;
278
360
  }
279
361
  "~Query" = QueryClass.variance;
280
- select(filter) {
281
- if (FilterClass.is(filter)) return new QueryClass({
282
- type: "filter",
283
- selection: this.ast,
284
- filter: filter.ast
285
- });
286
- else return new QueryClass({
287
- type: "filter",
288
- selection: this.ast,
289
- filter: FilterClass.props(filter).ast
290
- });
291
- }
292
362
  reference(key) {
293
363
  return new QueryClass({
294
364
  type: "reference-traversal",
@@ -363,30 +433,26 @@ var QueryClass = class QueryClass {
363
433
  limit
364
434
  });
365
435
  }
366
- from(arg, options) {
367
- if (arg === "all-accessible-spaces") return new QueryClass({
368
- type: "from",
436
+ options(options) {
437
+ return new QueryClass({
438
+ type: "options",
369
439
  query: this.ast,
370
- from: {
371
- _tag: "scope",
372
- scope: { ...options?.includeFeeds ? { allQueuesFromSpaces: true } : {} }
373
- }
440
+ options
374
441
  });
375
- if (_isScopeLike(arg)) return new QueryClass({
376
- type: "from",
377
- query: this.ast,
378
- from: {
379
- _tag: "scope",
380
- scope: arg
442
+ }
443
+ debugLabel(label) {
444
+ if (this.ast.type === "options") return new QueryClass({
445
+ type: "options",
446
+ query: this.ast.query,
447
+ options: {
448
+ ...this.ast.options,
449
+ debugLabel: label
381
450
  }
382
451
  });
383
- throw new TypeError("Database and Feed objects are not supported in query-lite sandbox");
384
- }
385
- options(options) {
386
452
  return new QueryClass({
387
453
  type: "options",
388
454
  query: this.ast,
389
- options
455
+ options: { debugLabel: label }
390
456
  });
391
457
  }
392
458
  };
@@ -395,20 +461,96 @@ const RefTypeId = Symbol("@dxos/echo-query/Ref");
395
461
  const isRef = (obj) => {
396
462
  return obj && typeof obj === "object" && RefTypeId in obj;
397
463
  };
398
- const makeTypeDxn = (typename) => {
464
+ const makeTypeDXN = (typename) => {
399
465
  assertArgument(typeof typename === "string", "typename");
400
466
  assertArgument(!typename.startsWith("dxn:"), "typename");
401
467
  return `dxn:type:${typename}`;
402
468
  };
469
+ const isDxnLike = (value) => {
470
+ return typeof value === "object" && value !== null && "toString" in value && typeof value.toString === "function" && value.toString().startsWith("dxn:");
471
+ };
403
472
  const SCOPE_KEYS = new Set([
404
473
  "spaceIds",
405
- "queues",
406
- "allQueuesFromSpaces"
474
+ "feeds",
475
+ "allFeedsFromSpaces"
407
476
  ]);
408
477
  const _isScopeLike = (value) => {
409
478
  if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
410
479
  return Object.keys(value).every((key) => SCOPE_KEYS.has(key));
411
480
  };
481
+ const prettyFilter = (filter) => {
482
+ switch (filter.type) {
483
+ case "object": {
484
+ const parts = [];
485
+ if (filter.typename !== null) parts.push(JSON.stringify(filter.typename));
486
+ const propEntries = Object.entries(filter.props);
487
+ if (propEntries.length > 0) {
488
+ const propsStr = propEntries.map(([k, v]) => `${k}: ${prettyFilter(v)}`).join(", ");
489
+ parts.push(`{ ${propsStr} }`);
490
+ }
491
+ if (filter.id !== void 0) parts.push(`id: [${filter.id.join(", ")}]`);
492
+ return parts.length > 0 ? `Filter.type(${parts.join(", ")})` : "Filter.everything()";
493
+ }
494
+ case "compare": return `Filter.${filter.operator}(${JSON.stringify(filter.value)})`;
495
+ case "in": return `Filter.in(${filter.values.map((v) => JSON.stringify(v)).join(", ")})`;
496
+ case "contains": return `Filter.contains(${JSON.stringify(filter.value)})`;
497
+ case "range": return `Filter.between(${JSON.stringify(filter.from)}, ${JSON.stringify(filter.to)})`;
498
+ case "text-search": return `Filter.text(${JSON.stringify(filter.text)})`;
499
+ case "tag": return `Filter.tag(${JSON.stringify(filter.tag)})`;
500
+ case "child-of": return `Filter.childOf([${filter.parents.map((parent) => JSON.stringify(parent)).join(", ")}], { transitive: ${filter.transitive} })`;
501
+ case "timestamp": return `Filter.${filter.field}.${filter.operator}(${filter.value})`;
502
+ case "not": return `Filter.not(${prettyFilter(filter.filter)})`;
503
+ case "and": return `Filter.and(${filter.filters.map(prettyFilter).join(", ")})`;
504
+ case "or": return `Filter.or(${filter.filters.map(prettyFilter).join(", ")})`;
505
+ }
506
+ };
507
+ const prettyQuery = (query) => {
508
+ switch (query.type) {
509
+ case "select": return `Query.select(${prettyFilter(query.filter)})`;
510
+ case "filter": return `${prettyQuery(query.selection)}.select(${prettyFilter(query.filter)})`;
511
+ case "reference-traversal": return `${prettyQuery(query.anchor)}.reference(${JSON.stringify(query.property)})`;
512
+ case "incoming-references": {
513
+ const args = [];
514
+ if (query.typename !== null) args.push(JSON.stringify(query.typename));
515
+ if (query.property !== null) args.push(JSON.stringify(query.property));
516
+ return `${prettyQuery(query.anchor)}.referencedBy(${args.join(", ")})`;
517
+ }
518
+ case "relation": {
519
+ const method = query.direction === "outgoing" ? "sourceOf" : query.direction === "incoming" ? "targetOf" : "relationOf";
520
+ const filterStr = query.filter !== void 0 ? prettyFilter(query.filter) : "";
521
+ return `${prettyQuery(query.anchor)}.${method}(${filterStr})`;
522
+ }
523
+ case "relation-traversal": return `${prettyQuery(query.anchor)}.${query.direction}()`;
524
+ case "hierarchy-traversal": return query.direction === "to-parent" ? `${prettyQuery(query.anchor)}.parent()` : `${prettyQuery(query.anchor)}.children()`;
525
+ case "union": return `Query.all(${query.queries.map(prettyQuery).join(", ")})`;
526
+ case "set-difference": return `Query.without(${prettyQuery(query.source)}, ${prettyQuery(query.exclude)})`;
527
+ case "order": {
528
+ const orders = query.order.map((o) => {
529
+ if (o.kind === "natural") return "Order.natural";
530
+ if (o.kind === "rank") return `Order.rank(${JSON.stringify(o.direction)})`;
531
+ return `Order.property(${JSON.stringify(o.property)}, ${JSON.stringify(o.direction)})`;
532
+ });
533
+ return `${prettyQuery(query.query)}.orderBy(${orders.join(", ")})`;
534
+ }
535
+ case "options": {
536
+ const parts = [];
537
+ if (query.options.deleted !== void 0) parts.push(`deleted: ${JSON.stringify(query.options.deleted)}`);
538
+ if (query.options.debugLabel !== void 0) parts.push(`debugLabel: ${JSON.stringify(query.options.debugLabel)}`);
539
+ return `${prettyQuery(query.query)}.options({ ${parts.join(", ")} })`;
540
+ }
541
+ case "from":
542
+ if (query.from._tag === "scope") {
543
+ const scope = query.from.scope;
544
+ const parts = [];
545
+ if (scope.spaceIds !== void 0) parts.push(`spaceIds: [${scope.spaceIds.join(", ")}]`);
546
+ if (scope.feeds !== void 0) parts.push(`feeds: [${scope.feeds.join(", ")}]`);
547
+ if (scope.allFeedsFromSpaces !== void 0) parts.push(`allFeedsFromSpaces: ${scope.allFeedsFromSpaces}`);
548
+ return `${prettyQuery(query.query)}.from({ ${parts.join(", ")} })`;
549
+ }
550
+ return `${prettyQuery(query.query)}.from(${prettyQuery(query.from.query)})`;
551
+ case "limit": return `${prettyQuery(query.query)}.limit(${query.limit})`;
552
+ }
553
+ };
412
554
 
413
555
  //#endregion
414
556
  export { Filter1 as Filter, Filter1, Order2 as Order, Query1 as Query, Query1 };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ast: QueryAST.Order","Order2: typeof Order$","ast: QueryAST.Filter","Filter1: typeof Filter$","idFilter: readonly ObjectId[] | undefined","ast: QueryAST.Query","Query1: typeof Query$","RefTypeId: unique symbol"],"sources":["../../../../../common/invariant/dist/lib/browser/index.mjs","../../src/query-lite/query-lite.ts"],"sourcesContent":["// src/invariant.ts\nvar invariant = (condition, message, meta) => {\n if (condition) {\n return;\n }\n if (message?.startsWith(\"BUG\")) {\n debugger;\n }\n let errorMessage = \"invariant violation\";\n if (message) {\n errorMessage += `: ${message}`;\n }\n if (meta?.A) {\n errorMessage += ` [${meta.A[0]}]`;\n }\n if (meta?.F) {\n errorMessage += ` at ${getRelativeFilename(meta.F)}:${meta.L}`;\n }\n const error = new InvariantViolation(errorMessage);\n Error.captureStackTrace(error, invariant);\n throw error;\n};\nvar InvariantViolation = class extends Error {\n constructor(message) {\n super(message);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n};\nvar getRelativeFilename = (filename) => {\n const match = filename.match(/.+\\/(packages\\/.+\\/.+)/);\n if (match) {\n const [, filePath] = match;\n return filePath;\n }\n return filename;\n};\nvar failedInvariant = (message1, message2, meta) => {\n let errorMessage = \"invariant violation\";\n const message = [\n message1,\n message2\n ].filter((str) => typeof str === \"string\").join(\" \");\n if (message) {\n errorMessage += `: ${message}`;\n }\n if (meta?.A) {\n errorMessage += ` [${meta.A[0]}]`;\n }\n if (meta?.F) {\n errorMessage += ` at ${getRelativeFilename(meta.F)}:${meta.L}`;\n }\n throw new InvariantViolation(errorMessage);\n};\n\n// src/assert.ts\nvar assertArgument = (condition, argumentName, message) => {\n if (!condition) {\n const error = new TypeError(`Invalid argument \\`${argumentName}\\`` + (message ? `: ${message}` : \"\"));\n Error.captureStackTrace(error, assertArgument);\n throw error;\n }\n};\nvar assertState = (condition, message) => {\n if (!condition) {\n const error = new InvalidStateError(message);\n Error.captureStackTrace(error, assertState);\n throw error;\n }\n};\nvar InvalidStateError = class extends Error {\n};\nexport {\n InvalidStateError,\n InvariantViolation,\n assertArgument,\n assertState,\n failedInvariant,\n invariant\n};\n//# sourceMappingURL=index.mjs.map\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Schema from 'effect/Schema';\n\nimport type { Filter as Filter$, Order as Order$, Query as Query$, Ref } from '@dxos/echo';\nimport type { ForeignKey, QueryAST } from '@dxos/echo-protocol';\nimport { assertArgument } from '@dxos/invariant';\nimport type { DXN, ObjectId } from '@dxos/keys';\n\n//\n// Light-weight implementation of query execution.\n//\n\n// TODO(wittjosiah): The `export * as ...` syntax causes tsdown to genereate multiple files which breaks the sandbox.\n\nclass OrderClass implements Order$.Any {\n private static 'variance': Order$.Any['~Order'] = {} as Order$.Any['~Order'];\n\n static is(value: unknown): value is Order$.Any {\n return typeof value === 'object' && value !== null && '~Order' in value;\n }\n\n constructor(public readonly ast: QueryAST.Order) {}\n\n '~Order' = OrderClass.variance;\n}\n\nnamespace Order1 {\n export const natural: Order$.Any = new OrderClass({ kind: 'natural' });\n export const property = <T>(property: keyof T & string, direction: QueryAST.OrderDirection): Order$.Order<T> =>\n new OrderClass({\n kind: 'property',\n property,\n direction,\n });\n export const rank = <T>(direction: QueryAST.OrderDirection = 'desc'): Order$.Order<T> =>\n new OrderClass({\n kind: 'rank',\n direction,\n });\n}\n\nconst Order2: typeof Order$ = Order1;\nexport { Order2 as Order };\n\nclass FilterClass implements Filter$.Any {\n private static 'variance': Filter$.Any['~Filter'] = {} as Filter$.Any['~Filter'];\n\n static is(value: unknown): value is Filter$.Any {\n return typeof value === 'object' && value !== null && '~Filter' in value;\n }\n\n static fromAst(ast: QueryAST.Filter): Filter$.Any {\n return new FilterClass(ast);\n }\n\n static everything(): FilterClass {\n return new FilterClass({\n type: 'object',\n typename: null,\n props: {},\n });\n }\n\n static nothing(): FilterClass {\n return new FilterClass({\n type: 'not',\n filter: {\n type: 'object',\n typename: null,\n props: {},\n },\n });\n }\n\n static relation() {\n return new FilterClass({\n type: 'object',\n typename: null,\n props: {},\n });\n }\n\n static id(...ids: ObjectId[]): Filter$.Any {\n // assertArgument(\n // ids.every((id) => ObjectId.isValid(id)),\n // 'ids',\n // 'ids must be valid',\n // );\n\n if (ids.length === 0) {\n return FilterClass.nothing();\n }\n\n return new FilterClass({\n type: 'object',\n typename: null,\n id: ids,\n props: {},\n });\n }\n\n static type<S extends Schema.Schema.All>(\n schema: S | string,\n props?: Filter$.Props<Schema.Schema.Type<S>>,\n ): Filter$.Filter<Schema.Schema.Type<S>> {\n if (typeof schema !== 'string') {\n throw new TypeError('expected typename as the first paramter');\n }\n return new FilterClass({\n type: 'object',\n typename: makeTypeDxn(schema),\n ...propsFilterToAst(props ?? {}),\n });\n }\n\n static typename(typename: string): Filter$.Any {\n return new FilterClass({\n type: 'object',\n typename: makeTypeDxn(typename),\n props: {},\n });\n }\n\n static typeDXN(dxn: DXN): Filter$.Any {\n return new FilterClass({\n type: 'object',\n typename: dxn.toString(),\n props: {},\n });\n }\n\n static tag(tag: string): Filter$.Any {\n return new FilterClass({\n type: 'tag',\n tag,\n });\n }\n\n static props<T>(props: Filter$.Props<T>): Filter$.Filter<T> {\n return new FilterClass({\n type: 'object',\n typename: null,\n ...propsFilterToAst(props),\n });\n }\n\n static text(text: string, options?: Filter$.TextSearchOptions): Filter$.Any {\n return new FilterClass({\n type: 'text-search',\n text,\n searchKind: options?.type,\n });\n }\n\n static foreignKeys<S extends Schema.Schema.All>(\n schema: S | string,\n keys: ForeignKey[],\n ): Filter$.Filter<Schema.Schema.Type<S>> {\n assertArgument(typeof schema === 'string', 'schema');\n assertArgument(!schema.startsWith('dxn:'), 'schema');\n return new FilterClass({\n type: 'object',\n typename: `dxn:type:${schema}`,\n props: {},\n foreignKeys: keys,\n });\n }\n\n static eq<T>(value: T): Filter$.Filter<T | undefined> {\n if (!isRef(value) && typeof value === 'object' && value !== null) {\n throw new TypeError('Cannot use object as a value for eq filter');\n }\n\n return new FilterClass({\n type: 'compare',\n operator: 'eq',\n value: isRef(value) ? value.noInline().encode() : value,\n });\n }\n\n static neq<T>(value: T): Filter$.Filter<T | undefined> {\n return new FilterClass({\n type: 'compare',\n operator: 'neq',\n value,\n });\n }\n\n static gt<T>(value: T): Filter$.Filter<T | undefined> {\n return new FilterClass({\n type: 'compare',\n operator: 'gt',\n value,\n });\n }\n\n static gte<T>(value: T): Filter$.Filter<T | undefined> {\n return new FilterClass({\n type: 'compare',\n operator: 'gte',\n value,\n });\n }\n\n static lt<T>(value: T): Filter$.Filter<T | undefined> {\n return new FilterClass({\n type: 'compare',\n operator: 'lt',\n value,\n });\n }\n\n static lte<T>(value: T): Filter$.Filter<T | undefined> {\n return new FilterClass({\n type: 'compare',\n operator: 'lte',\n value,\n });\n }\n\n static in<T>(...values: T[]): Filter$.Filter<T | undefined> {\n return new FilterClass({\n type: 'in',\n values,\n });\n }\n\n static contains<T>(value: T): Filter$.Filter<readonly T[] | undefined> {\n return new FilterClass({\n type: 'contains',\n value,\n });\n }\n\n static between<T>(from: T, to: T): Filter$.Filter<unknown> {\n return new FilterClass({\n type: 'range',\n from,\n to,\n });\n }\n\n static not<F extends Filter$.Any>(filter: F): Filter$.Filter<Filter$.Type<F>> {\n return new FilterClass({\n type: 'not',\n filter: filter.ast,\n });\n }\n\n static and<Filters extends readonly Filter$.Any[]>(\n ...filters: Filters\n ): Filter$.Filter<Filter$.Type<Filters[number]>> {\n return new FilterClass({\n type: 'and',\n filters: filters.map((f) => f.ast),\n });\n }\n\n static or<Filters extends readonly Filter$.Any[]>(\n ...filters: Filters\n ): Filter$.Filter<Filter$.Type<Filters[number]>> {\n return new FilterClass({\n type: 'or',\n filters: filters.map((f) => f.ast),\n });\n }\n\n private constructor(public readonly ast: QueryAST.Filter) {}\n\n '~Filter' = FilterClass.variance;\n}\n\nexport const Filter1: typeof Filter$ = FilterClass;\nexport { Filter1 as Filter };\n\n/**\n * All property paths inside T that are references.\n */\n// TODO(dmaretskyi): Filter only properties that are references (or optional references, or unions that include references).\ntype RefPropKey<T> = keyof T & string;\n\nconst propsFilterToAst = (predicates: Filter$.Props<any>): Pick<QueryAST.FilterObject, 'id' | 'props'> => {\n let idFilter: readonly ObjectId[] | undefined;\n if ('id' in predicates) {\n assertArgument(\n typeof predicates.id === 'string' || Array.isArray(predicates.id),\n 'predicates.id',\n 'invalid id filter',\n );\n idFilter = typeof predicates.id === 'string' ? [predicates.id] : predicates.id;\n }\n\n return {\n id: idFilter,\n props: Object.fromEntries(\n Object.entries(predicates)\n .filter(([prop, _value]) => prop !== 'id')\n .map(([prop, predicate]) => [prop, processPredicate(predicate)]),\n ) as Record<string, QueryAST.Filter>,\n };\n};\n\nconst processPredicate = (predicate: any): QueryAST.Filter => {\n if (FilterClass.is(predicate)) {\n return predicate.ast;\n }\n\n if (Array.isArray(predicate)) {\n throw new Error('Array predicates are not yet supported.');\n }\n\n if (!isRef(predicate) && typeof predicate === 'object' && predicate !== null) {\n const nestedProps = Object.fromEntries(\n Object.entries(predicate).map(([key, value]) => [key, processPredicate(value)]),\n );\n\n return {\n type: 'object',\n typename: null,\n props: nestedProps,\n };\n }\n\n return FilterClass.eq(predicate).ast;\n};\n\nclass QueryClass implements Query$.Any {\n private static 'variance': Query$.Any['~Query'] = {} as Query$.Any['~Query'];\n\n static is(value: unknown): value is Query$.Any {\n return typeof value === 'object' && value !== null && '~Query' in value;\n }\n\n static fromAst(ast: QueryAST.Query): Query$.Any {\n return new QueryClass(ast);\n }\n\n static select<F extends Filter$.Any>(filter: F): Query$.Query<Filter$.Type<F>> {\n return new QueryClass({\n type: 'select',\n filter: filter.ast,\n });\n }\n\n static type(schema: Schema.Schema.All | string, predicates?: Filter$.Props<unknown>): Query$.Any {\n return new QueryClass({\n type: 'select',\n filter: FilterClass.type(schema, predicates).ast,\n });\n }\n\n static all(...queries: Query$.Any[]): Query$.Any {\n if (queries.length === 0) {\n throw new TypeError(\n 'Query.all combines results of multiple queries, to query all objects use Query.select(Filter.everything())',\n );\n }\n return new QueryClass({\n type: 'union',\n queries: queries.map((q) => q.ast),\n });\n }\n\n static without<T>(source: Query$.Query<T>, exclude: Query$.Query<T>): Query$.Query<T> {\n return new QueryClass({\n type: 'set-difference',\n source: source.ast,\n exclude: exclude.ast,\n });\n }\n\n static from(source: any, options?: { includeFeeds?: boolean }): Query$.Any {\n const baseQuery: QueryAST.Query = {\n type: 'select',\n filter: FilterClass.everything().ast,\n };\n const wrapper = new QueryClass(baseQuery);\n return wrapper.from(source, options);\n }\n\n constructor(public readonly ast: QueryAST.Query) {}\n\n '~Query' = QueryClass.variance;\n\n select(filter: Filter$.Any | Filter$.Props<any>): Query$.Any {\n if (FilterClass.is(filter)) {\n return new QueryClass({\n type: 'filter',\n selection: this.ast,\n filter: filter.ast,\n });\n } else {\n return new QueryClass({\n type: 'filter',\n selection: this.ast,\n filter: FilterClass.props(filter).ast,\n });\n }\n }\n\n reference(key: string): Query$.Any {\n return new QueryClass({\n type: 'reference-traversal',\n anchor: this.ast,\n property: key,\n });\n }\n\n referencedBy(target?: Schema.Schema.All | string, key?: string): Query$.Any {\n const typename =\n target !== undefined\n ? (assertArgument(typeof target === 'string', 'target'),\n assertArgument(!target.startsWith('dxn:'), 'target'),\n target)\n : null;\n return new QueryClass({\n type: 'incoming-references',\n anchor: this.ast,\n property: key ?? null,\n typename,\n });\n }\n\n sourceOf(relation?: Schema.Schema.All | string, predicates?: Filter$.Props<unknown> | undefined): Query$.Any {\n return new QueryClass({\n type: 'relation',\n anchor: this.ast,\n direction: 'outgoing',\n filter: relation !== undefined ? FilterClass.type(relation, predicates).ast : undefined,\n });\n }\n\n targetOf(relation?: Schema.Schema.All | string, predicates?: Filter$.Props<unknown> | undefined): Query$.Any {\n return new QueryClass({\n type: 'relation',\n anchor: this.ast,\n direction: 'incoming',\n filter: relation !== undefined ? FilterClass.type(relation, predicates).ast : undefined,\n });\n }\n\n source(): Query$.Any {\n return new QueryClass({\n type: 'relation-traversal',\n anchor: this.ast,\n direction: 'source',\n });\n }\n\n target(): Query$.Any {\n return new QueryClass({\n type: 'relation-traversal',\n anchor: this.ast,\n direction: 'target',\n });\n }\n\n parent(): Query$.Any {\n return new QueryClass({\n type: 'hierarchy-traversal',\n anchor: this.ast,\n direction: 'to-parent',\n });\n }\n\n children(): Query$.Any {\n return new QueryClass({\n type: 'hierarchy-traversal',\n anchor: this.ast,\n direction: 'to-children',\n });\n }\n\n orderBy(...order: Order$.Any[]): Query$.Any {\n return new QueryClass({\n type: 'order',\n query: this.ast,\n order: order.map((o) => o.ast),\n });\n }\n\n limit(limit: number): Query$.Any {\n return new QueryClass({\n type: 'limit',\n query: this.ast,\n limit,\n });\n }\n\n from(arg: any, options?: { includeFeeds?: boolean }): Query$.Any {\n if (arg === 'all-accessible-spaces') {\n return new QueryClass({\n type: 'from',\n query: this.ast,\n from: {\n _tag: 'scope',\n scope: {\n ...(options?.includeFeeds ? { allQueuesFromSpaces: true } : {}),\n },\n },\n });\n }\n\n if (_isScopeLike(arg)) {\n return new QueryClass({\n type: 'from',\n query: this.ast,\n from: { _tag: 'scope', scope: arg },\n });\n }\n\n throw new TypeError('Database and Feed objects are not supported in query-lite sandbox');\n }\n\n options(options: QueryAST.QueryOptions): Query$.Any {\n return new QueryClass({\n type: 'options',\n query: this.ast,\n options,\n });\n }\n}\n\nexport const Query1: typeof Query$ = QueryClass;\nexport { Query1 as Query };\n\nconst RefTypeId: unique symbol = Symbol('@dxos/echo-query/Ref');\nconst isRef = (obj: any): obj is Ref.Ref<any> => {\n return obj && typeof obj === 'object' && RefTypeId in obj;\n};\n\nconst makeTypeDxn = (typename: string) => {\n assertArgument(typeof typename === 'string', 'typename');\n assertArgument(!typename.startsWith('dxn:'), 'typename');\n return `dxn:type:${typename}`;\n};\n\nconst SCOPE_KEYS = new Set(['spaceIds', 'queues', 'allQueuesFromSpaces']);\n\nconst _isScopeLike = (value: unknown): value is QueryAST.Scope => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n return false;\n }\n return Object.keys(value).every((key) => SCOPE_KEYS.has(key));\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["ast: QueryAST.Order","Order2: typeof Order$","filters: Filter$.Any[]","ast: QueryAST.Filter","Filter1: typeof Filter$","idFilter: readonly ObjectId[] | undefined","ast: QueryAST.Query","Query1: typeof Query$","RefTypeId: unique symbol","parts: string[]","args: string[]"],"sources":["../../../../../common/invariant/dist/lib/browser/index.mjs","../../src/query-lite/query-lite.ts"],"sourcesContent":["// src/invariant.ts\nvar invariant = (condition, message, meta) => {\n if (condition) {\n return;\n }\n if (message?.startsWith(\"BUG\")) {\n debugger;\n }\n let errorMessage = \"invariant violation\";\n if (message) {\n errorMessage += `: ${message}`;\n }\n if (meta?.A) {\n errorMessage += ` [${meta.A[0]}]`;\n }\n if (meta?.F) {\n errorMessage += ` at ${getRelativeFilename(meta.F)}:${meta.L}`;\n }\n const error = new InvariantViolation(errorMessage);\n Error.captureStackTrace(error, invariant);\n throw error;\n};\nvar InvariantViolation = class extends Error {\n constructor(message) {\n super(message);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n};\nvar getRelativeFilename = (filename) => {\n const match = filename.match(/.+\\/(packages\\/.+\\/.+)/);\n if (match) {\n const [, filePath] = match;\n return filePath;\n }\n return filename;\n};\nvar failedInvariant = (message1, message2, meta) => {\n let errorMessage = \"invariant violation\";\n const message = [\n message1,\n message2\n ].filter((str) => typeof str === \"string\").join(\" \");\n if (message) {\n errorMessage += `: ${message}`;\n }\n if (meta?.A) {\n errorMessage += ` [${meta.A[0]}]`;\n }\n if (meta?.F) {\n errorMessage += ` at ${getRelativeFilename(meta.F)}:${meta.L}`;\n }\n throw new InvariantViolation(errorMessage);\n};\n\n// src/assert.ts\nvar assertArgument = (condition, argumentName, message) => {\n if (!condition) {\n const error = new TypeError(`Invalid argument \\`${argumentName}\\`` + (message ? `: ${message}` : \"\"));\n Error.captureStackTrace(error, assertArgument);\n throw error;\n }\n};\nvar assertState = (condition, message) => {\n if (!condition) {\n const error = new InvalidStateError(message);\n Error.captureStackTrace(error, assertState);\n throw error;\n }\n};\nvar InvalidStateError = class extends Error {\n};\nexport {\n InvalidStateError,\n InvariantViolation,\n assertArgument,\n assertState,\n failedInvariant,\n invariant\n};\n//# sourceMappingURL=index.mjs.map\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Schema from 'effect/Schema';\n\nimport type { Filter as Filter$, Order as Order$, Query as Query$, Ref } from '@dxos/echo';\nimport type { ForeignKey, QueryAST } from '@dxos/echo-protocol';\nimport { assertArgument } from '@dxos/invariant';\nimport type { DXN, ObjectId } from '@dxos/keys';\n\n//\n// Light-weight implementation of query execution.\n//\n\n// TODO(wittjosiah): The `export * as ...` syntax causes tsdown to genereate multiple files which breaks the sandbox.\n\nclass OrderClass implements Order$.Any {\n private static 'variance': Order$.Any['~Order'] = {} as Order$.Any['~Order'];\n\n static is(value: unknown): value is Order$.Any {\n return typeof value === 'object' && value !== null && '~Order' in value;\n }\n\n constructor(public readonly ast: QueryAST.Order) {}\n\n '~Order' = OrderClass.variance;\n}\n\nnamespace Order1 {\n export const natural: Order$.Any = new OrderClass({ kind: 'natural' });\n export const property = <T>(property: keyof T & string, direction: QueryAST.OrderDirection): Order$.Order<T> =>\n new OrderClass({\n kind: 'property',\n property,\n direction,\n });\n export const rank = <T>(direction: QueryAST.OrderDirection = 'desc'): Order$.Order<T> =>\n new OrderClass({\n kind: 'rank',\n direction,\n });\n}\n\nconst Order2: typeof Order$ = Order1;\nexport { Order2 as Order };\n\nclass FilterClass implements Filter$.Any {\n private static 'variance': Filter$.Any['~Filter'] = {} as Filter$.Any['~Filter'];\n\n static is(value: unknown): value is Filter$.Any {\n return typeof value === 'object' && value !== null && '~Filter' in value;\n }\n\n static fromAst(ast: QueryAST.Filter): Filter$.Any {\n return new FilterClass(ast);\n }\n\n static everything(): FilterClass {\n return new FilterClass({\n type: 'object',\n typename: null,\n props: {},\n });\n }\n\n static nothing(): FilterClass {\n return new FilterClass({\n type: 'not',\n filter: {\n type: 'object',\n typename: null,\n props: {},\n },\n });\n }\n\n static relation() {\n return new FilterClass({\n type: 'object',\n typename: null,\n props: {},\n });\n }\n\n static id(...ids: ObjectId[]): Filter$.Any {\n // assertArgument(\n // ids.every((id) => ObjectId.isValid(id)),\n // 'ids',\n // 'ids must be valid',\n // );\n\n if (ids.length === 0) {\n return FilterClass.nothing();\n }\n\n return new FilterClass({\n type: 'object',\n typename: null,\n id: ids,\n props: {},\n });\n }\n\n static type<S extends Schema.Schema.All>(\n schema: S | string,\n props?: Filter$.Props<Schema.Schema.Type<S>>,\n ): Filter$.Filter<Schema.Schema.Type<S>> {\n if (typeof schema !== 'string') {\n throw new TypeError('expected typename as the first paramter');\n }\n return new FilterClass({\n type: 'object',\n typename: makeTypeDXN(schema),\n ...propsFilterToAst(props ?? {}),\n });\n }\n\n static typename(typename: string): Filter$.Any {\n return new FilterClass({\n type: 'object',\n typename: makeTypeDXN(typename),\n props: {},\n });\n }\n\n static typeDXN(dxn: DXN): Filter$.Any {\n return new FilterClass({\n type: 'object',\n typename: dxn.toString(),\n props: {},\n });\n }\n\n static tag(tag: string): Filter$.Any {\n return new FilterClass({\n type: 'tag',\n tag,\n });\n }\n\n static key(key: string, options?: Filter$.KeyFilterOptions): Filter$.Any {\n return new FilterClass({\n type: 'object',\n typename: null,\n props: {},\n metaKey: key,\n metaVersion: options?.version,\n });\n }\n\n static props<T>(props: Filter$.Props<T>): Filter$.Filter<T> {\n return new FilterClass({\n type: 'object',\n typename: null,\n ...propsFilterToAst(props),\n });\n }\n\n static text(text: string, options?: Filter$.TextSearchOptions): Filter$.Any {\n return new FilterClass({\n type: 'text-search',\n text,\n searchKind: options?.type,\n });\n }\n\n static foreignKeys<S extends Schema.Schema.All>(\n schema: S | string,\n keys: ForeignKey[],\n ): Filter$.Filter<Schema.Schema.Type<S>> {\n assertArgument(typeof schema === 'string', 'schema');\n assertArgument(!schema.startsWith('dxn:'), 'schema');\n return new FilterClass({\n type: 'object',\n typename: `dxn:type:${schema}`,\n props: {},\n foreignKeys: keys,\n });\n }\n\n static eq<T>(value: T): Filter$.Filter<T | undefined> {\n if (!isRef(value) && typeof value === 'object' && value !== null) {\n throw new TypeError('Cannot use object as a value for eq filter');\n }\n\n return new FilterClass({\n type: 'compare',\n operator: 'eq',\n value: isRef(value) ? value.noInline().encode() : value,\n });\n }\n\n static neq<T>(value: T): Filter$.Filter<T | undefined> {\n return new FilterClass({\n type: 'compare',\n operator: 'neq',\n value,\n });\n }\n\n static gt<T>(value: T): Filter$.Filter<T | undefined> {\n return new FilterClass({\n type: 'compare',\n operator: 'gt',\n value,\n });\n }\n\n static gte<T>(value: T): Filter$.Filter<T | undefined> {\n return new FilterClass({\n type: 'compare',\n operator: 'gte',\n value,\n });\n }\n\n static lt<T>(value: T): Filter$.Filter<T | undefined> {\n return new FilterClass({\n type: 'compare',\n operator: 'lt',\n value,\n });\n }\n\n static lte<T>(value: T): Filter$.Filter<T | undefined> {\n return new FilterClass({\n type: 'compare',\n operator: 'lte',\n value,\n });\n }\n\n static in<T>(...values: T[]): Filter$.Filter<T> {\n return new FilterClass({\n type: 'in',\n values,\n });\n }\n\n static contains<T>(value: T): Filter$.Filter<readonly T[] | undefined> {\n return new FilterClass({\n type: 'contains',\n value,\n });\n }\n\n static between<T>(from: T, to: T): Filter$.Filter<T> {\n return new FilterClass({\n type: 'range',\n from,\n to,\n });\n }\n\n static updated(range: { after?: Date | number; before?: Date | number }): Filter$.Any {\n return FilterClass._timeRangeFilter('updatedAt', range);\n }\n\n static created(range: { after?: Date | number; before?: Date | number }): Filter$.Any {\n return FilterClass._timeRangeFilter('createdAt', range);\n }\n\n static childOf(parents: unknown | DXN | (unknown | DXN)[], options?: { transitive?: boolean }): Filter$.Any {\n const items = Array.isArray(parents) ? parents : [parents];\n const dxns = items.map((item) => {\n if (isDxnLike(item)) {\n return item.toString();\n }\n throw new TypeError('childOf requires DXN values in query-lite');\n });\n return new FilterClass({\n type: 'child-of',\n parents: dxns,\n transitive: options?.transitive ?? true,\n });\n }\n\n private static _timeRangeFilter(\n field: 'updatedAt' | 'createdAt',\n range: { after?: Date | number; before?: Date | number },\n ): Filter$.Any {\n const toMs = (d: Date | number) => (typeof d === 'number' ? d : d.getTime());\n const filters: Filter$.Any[] = [];\n if (range.after != null) {\n filters.push(new FilterClass({ type: 'timestamp', field, operator: 'gte', value: toMs(range.after) }));\n }\n if (range.before != null) {\n filters.push(new FilterClass({ type: 'timestamp', field, operator: 'lte', value: toMs(range.before) }));\n }\n if (filters.length === 0) {\n return FilterClass.everything();\n }\n return filters.length === 1 ? filters[0] : FilterClass.and(...filters);\n }\n\n static not<F extends Filter$.Any>(filter: F): Filter$.Filter<Filter$.Type<F>> {\n return new FilterClass({\n type: 'not',\n filter: filter.ast,\n });\n }\n\n static and<Filters extends readonly Filter$.Any[]>(\n ...filters: Filters\n ): Filter$.Filter<Filter$.Type<Filters[number]>> {\n return new FilterClass({\n type: 'and',\n filters: filters.map((f) => f.ast),\n });\n }\n\n static or<Filters extends readonly Filter$.Any[]>(\n ...filters: Filters\n ): Filter$.Filter<Filter$.Type<Filters[number]>> {\n return new FilterClass({\n type: 'or',\n filters: filters.map((f) => f.ast),\n });\n }\n\n /** Returns a human-readable string representation of a Filter AST. */\n static pretty(filter: Filter$.Any): string {\n return prettyFilter(filter.ast);\n }\n\n private constructor(public readonly ast: QueryAST.Filter) {}\n\n '~Filter' = FilterClass.variance;\n}\n\nexport const Filter1: typeof Filter$ = FilterClass;\nexport { Filter1 as Filter };\n\n/**\n * All property paths inside T that are references.\n */\n// TODO(dmaretskyi): Filter only properties that are references (or optional references, or unions that include references).\ntype RefPropKey<T> = keyof T & string;\n\nconst propsFilterToAst = (predicates: Filter$.Props<any>): Pick<QueryAST.FilterObject, 'id' | 'props'> => {\n let idFilter: readonly ObjectId[] | undefined;\n if ('id' in predicates) {\n assertArgument(\n typeof predicates.id === 'string' || Array.isArray(predicates.id),\n 'predicates.id',\n 'invalid id filter',\n );\n idFilter = typeof predicates.id === 'string' ? [predicates.id] : predicates.id;\n }\n\n return {\n id: idFilter,\n props: Object.fromEntries(\n Object.entries(predicates)\n .filter(([prop, _value]) => prop !== 'id')\n .map(([prop, predicate]) => [prop, processPredicate(predicate)]),\n ) as Record<string, QueryAST.Filter>,\n };\n};\n\nconst processPredicate = (predicate: any): QueryAST.Filter => {\n if (FilterClass.is(predicate)) {\n return predicate.ast;\n }\n\n if (Array.isArray(predicate)) {\n throw new Error('Array predicates are not yet supported.');\n }\n\n if (!isRef(predicate) && typeof predicate === 'object' && predicate !== null) {\n const nestedProps = Object.fromEntries(\n Object.entries(predicate).map(([key, value]) => [key, processPredicate(value)]),\n );\n\n return {\n type: 'object',\n typename: null,\n props: nestedProps,\n };\n }\n\n return FilterClass.eq(predicate).ast;\n};\n\nclass QueryClass implements Query$.Any {\n private static 'variance': Query$.Any['~Query'] = {} as Query$.Any['~Query'];\n\n static is(value: unknown): value is Query$.Any {\n return typeof value === 'object' && value !== null && '~Query' in value;\n }\n\n static fromAst(ast: QueryAST.Query): Query$.Any {\n return new QueryClass(ast);\n }\n\n static select<F extends Filter$.Any>(filter: F): Query$.Query<Filter$.Type<F>> {\n return new QueryClass({\n type: 'select',\n filter: filter.ast,\n });\n }\n\n select(filter: Filter$.Any | Filter$.Props<any>): Query$.Any {\n if (FilterClass.is(filter)) {\n return new QueryClass({\n type: 'filter',\n selection: this.ast,\n filter: filter.ast,\n });\n } else {\n return new QueryClass({\n type: 'filter',\n selection: this.ast,\n filter: FilterClass.props(filter).ast,\n });\n }\n }\n\n static type(schema: Schema.Schema.All | string, predicates?: Filter$.Props<unknown>): Query$.Any {\n return new QueryClass({\n type: 'select',\n filter: FilterClass.type(schema, predicates).ast,\n });\n }\n\n static all(...queries: Query$.Any[]): Query$.Any {\n if (queries.length === 0) {\n throw new TypeError(\n 'Query.all combines results of multiple queries, to query all objects use Query.select(Filter.everything())',\n );\n }\n return new QueryClass({\n type: 'union',\n queries: queries.map((q) => q.ast),\n });\n }\n\n static without<T>(source: Query$.Query<T>, exclude: Query$.Query<T>): Query$.Query<T> {\n return new QueryClass({\n type: 'set-difference',\n source: source.ast,\n exclude: exclude.ast,\n });\n }\n\n static from(source: any, options?: { includeFeeds?: boolean }): Query$.Any {\n const baseQuery: QueryAST.Query = {\n type: 'select',\n filter: FilterClass.everything().ast,\n };\n const wrapper = new QueryClass(baseQuery);\n return wrapper.from(source, options);\n }\n\n from(arg: any, options?: { includeFeeds?: boolean }): Query$.Any {\n if (arg === 'all-accessible-spaces') {\n return new QueryClass({\n type: 'from',\n query: this.ast,\n from: {\n _tag: 'scope',\n scope: {\n ...(options?.includeFeeds ? { allFeedsFromSpaces: true } : {}),\n },\n },\n });\n }\n\n if (_isScopeLike(arg)) {\n return new QueryClass({\n type: 'from',\n query: this.ast,\n from: { _tag: 'scope', scope: arg },\n });\n }\n\n throw new TypeError('Database and Feed objects are not supported in query-lite sandbox');\n }\n\n /** Returns a human-readable string representation of a Query AST. */\n static pretty(query: Query$.Any): string {\n return prettyQuery(query.ast);\n }\n\n constructor(public readonly ast: QueryAST.Query) {}\n\n '~Query' = QueryClass.variance;\n\n reference(key: string): Query$.Any {\n return new QueryClass({\n type: 'reference-traversal',\n anchor: this.ast,\n property: key,\n });\n }\n\n referencedBy(target?: Schema.Schema.All | string, key?: string): Query$.Any {\n const typename =\n target !== undefined\n ? (assertArgument(typeof target === 'string', 'target'),\n assertArgument(!target.startsWith('dxn:'), 'target'),\n target)\n : null;\n return new QueryClass({\n type: 'incoming-references',\n anchor: this.ast,\n property: key ?? null,\n typename,\n });\n }\n\n sourceOf(relation?: Schema.Schema.All | string, predicates?: Filter$.Props<unknown> | undefined): Query$.Any {\n return new QueryClass({\n type: 'relation',\n anchor: this.ast,\n direction: 'outgoing',\n filter: relation !== undefined ? FilterClass.type(relation, predicates).ast : undefined,\n });\n }\n\n targetOf(relation?: Schema.Schema.All | string, predicates?: Filter$.Props<unknown> | undefined): Query$.Any {\n return new QueryClass({\n type: 'relation',\n anchor: this.ast,\n direction: 'incoming',\n filter: relation !== undefined ? FilterClass.type(relation, predicates).ast : undefined,\n });\n }\n\n source(): Query$.Any {\n return new QueryClass({\n type: 'relation-traversal',\n anchor: this.ast,\n direction: 'source',\n });\n }\n\n target(): Query$.Any {\n return new QueryClass({\n type: 'relation-traversal',\n anchor: this.ast,\n direction: 'target',\n });\n }\n\n parent(): Query$.Any {\n return new QueryClass({\n type: 'hierarchy-traversal',\n anchor: this.ast,\n direction: 'to-parent',\n });\n }\n\n children(): Query$.Any {\n return new QueryClass({\n type: 'hierarchy-traversal',\n anchor: this.ast,\n direction: 'to-children',\n });\n }\n\n orderBy(...order: Order$.Any[]): Query$.Any {\n return new QueryClass({\n type: 'order',\n query: this.ast,\n order: order.map((o) => o.ast),\n });\n }\n\n limit(limit: number): Query$.Any {\n return new QueryClass({\n type: 'limit',\n query: this.ast,\n limit,\n });\n }\n\n options(options: QueryAST.QueryOptions): Query$.Any {\n return new QueryClass({\n type: 'options',\n query: this.ast,\n options,\n });\n }\n\n debugLabel(label: string): Query$.Any {\n if (this.ast.type === 'options') {\n return new QueryClass({\n type: 'options',\n query: this.ast.query,\n options: { ...this.ast.options, debugLabel: label },\n });\n }\n return new QueryClass({\n type: 'options',\n query: this.ast,\n options: { debugLabel: label },\n });\n }\n}\n\nexport const Query1: typeof Query$ = QueryClass;\nexport { Query1 as Query };\n\nconst RefTypeId: unique symbol = Symbol('@dxos/echo-query/Ref');\nconst isRef = (obj: any): obj is Ref.Ref<any> => {\n return obj && typeof obj === 'object' && RefTypeId in obj;\n};\n\nconst makeTypeDXN = (typename: string) => {\n assertArgument(typeof typename === 'string', 'typename');\n assertArgument(!typename.startsWith('dxn:'), 'typename');\n return `dxn:type:${typename}`;\n};\n\nconst isDxnLike = (value: unknown): value is DXN => {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'toString' in value &&\n typeof value.toString === 'function' &&\n value.toString().startsWith('dxn:')\n );\n};\n\nconst SCOPE_KEYS = new Set(['spaceIds', 'feeds', 'allFeedsFromSpaces']);\n\nconst _isScopeLike = (value: unknown): value is QueryAST.Scope => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n return false;\n }\n return Object.keys(value).every((key) => SCOPE_KEYS.has(key));\n};\n\nconst prettyFilter = (filter: QueryAST.Filter): string => {\n switch (filter.type) {\n case 'object': {\n const parts: string[] = [];\n if (filter.typename !== null) {\n parts.push(JSON.stringify(filter.typename));\n }\n const propEntries = Object.entries(filter.props);\n if (propEntries.length > 0) {\n const propsStr = propEntries.map(([k, v]) => `${k}: ${prettyFilter(v)}`).join(', ');\n parts.push(`{ ${propsStr} }`);\n }\n if (filter.id !== undefined) {\n parts.push(`id: [${filter.id.join(', ')}]`);\n }\n return parts.length > 0 ? `Filter.type(${parts.join(', ')})` : 'Filter.everything()';\n }\n case 'compare':\n return `Filter.${filter.operator}(${JSON.stringify(filter.value)})`;\n case 'in':\n return `Filter.in(${filter.values.map((v) => JSON.stringify(v)).join(', ')})`;\n case 'contains':\n return `Filter.contains(${JSON.stringify(filter.value)})`;\n case 'range':\n return `Filter.between(${JSON.stringify(filter.from)}, ${JSON.stringify(filter.to)})`;\n case 'text-search':\n return `Filter.text(${JSON.stringify(filter.text)})`;\n case 'tag':\n return `Filter.tag(${JSON.stringify(filter.tag)})`;\n case 'child-of':\n return `Filter.childOf([${filter.parents.map((parent) => JSON.stringify(parent)).join(', ')}], { transitive: ${filter.transitive} })`;\n case 'timestamp':\n return `Filter.${filter.field}.${filter.operator}(${filter.value})`;\n case 'not':\n return `Filter.not(${prettyFilter(filter.filter)})`;\n case 'and':\n return `Filter.and(${filter.filters.map(prettyFilter).join(', ')})`;\n case 'or':\n return `Filter.or(${filter.filters.map(prettyFilter).join(', ')})`;\n }\n};\n\nconst prettyQuery = (query: QueryAST.Query): string => {\n switch (query.type) {\n case 'select':\n return `Query.select(${prettyFilter(query.filter)})`;\n case 'filter':\n return `${prettyQuery(query.selection)}.select(${prettyFilter(query.filter)})`;\n case 'reference-traversal':\n return `${prettyQuery(query.anchor)}.reference(${JSON.stringify(query.property)})`;\n case 'incoming-references': {\n const args: string[] = [];\n if (query.typename !== null) {\n args.push(JSON.stringify(query.typename));\n }\n if (query.property !== null) {\n args.push(JSON.stringify(query.property));\n }\n return `${prettyQuery(query.anchor)}.referencedBy(${args.join(', ')})`;\n }\n case 'relation': {\n const method =\n query.direction === 'outgoing' ? 'sourceOf' : query.direction === 'incoming' ? 'targetOf' : 'relationOf';\n const filterStr = query.filter !== undefined ? prettyFilter(query.filter) : '';\n return `${prettyQuery(query.anchor)}.${method}(${filterStr})`;\n }\n case 'relation-traversal':\n return `${prettyQuery(query.anchor)}.${query.direction}()`;\n case 'hierarchy-traversal':\n return query.direction === 'to-parent'\n ? `${prettyQuery(query.anchor)}.parent()`\n : `${prettyQuery(query.anchor)}.children()`;\n case 'union':\n return `Query.all(${query.queries.map(prettyQuery).join(', ')})`;\n case 'set-difference':\n return `Query.without(${prettyQuery(query.source)}, ${prettyQuery(query.exclude)})`;\n case 'order': {\n const orders = query.order.map((o) => {\n if (o.kind === 'natural') {\n return 'Order.natural';\n }\n if (o.kind === 'rank') {\n return `Order.rank(${JSON.stringify(o.direction)})`;\n }\n return `Order.property(${JSON.stringify(o.property)}, ${JSON.stringify(o.direction)})`;\n });\n return `${prettyQuery(query.query)}.orderBy(${orders.join(', ')})`;\n }\n case 'options': {\n const parts: string[] = [];\n if (query.options.deleted !== undefined) {\n parts.push(`deleted: ${JSON.stringify(query.options.deleted)}`);\n }\n if (query.options.debugLabel !== undefined) {\n parts.push(`debugLabel: ${JSON.stringify(query.options.debugLabel)}`);\n }\n return `${prettyQuery(query.query)}.options({ ${parts.join(', ')} })`;\n }\n case 'from': {\n if (query.from._tag === 'scope') {\n const scope = query.from.scope;\n const parts: string[] = [];\n if (scope.spaceIds !== undefined) {\n parts.push(`spaceIds: [${scope.spaceIds.join(', ')}]`);\n }\n if (scope.feeds !== undefined) {\n parts.push(`feeds: [${scope.feeds.join(', ')}]`);\n }\n if (scope.allFeedsFromSpaces !== undefined) {\n parts.push(`allFeedsFromSpaces: ${scope.allFeedsFromSpaces}`);\n }\n return `${prettyQuery(query.query)}.from({ ${parts.join(', ')} })`;\n }\n return `${prettyQuery(query.query)}.from(${prettyQuery(query.from.query)})`;\n }\n case 'limit':\n return `${prettyQuery(query.query)}.limit(${query.limit})`;\n }\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/parser/gen/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AAEvC,yBAAiB,QAAQ,CAAC;IACjB,MAAM,MAAM,EAAE,QAAiB,CAAC;IAChC,MAAM,IAAI,cAAQ,CAAC;IACnB,MAAM,MAAM,UAAgC,CAAC;CACrD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/parser/gen/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AAEvC,yBAAiB,QAAQ,CAAC,CAAC;IAClB,MAAM,MAAM,EAAE,QAAiB,CAAC;IAChC,MAAM,IAAI,cAAQ,CAAC;IACnB,MAAM,MAAM,UAAgC,CAAC;CACrD"}
@@ -79,4 +79,11 @@ export declare class QueryBuilder {
79
79
  */
80
80
  private _getNodeText;
81
81
  }
82
+ /**
83
+ * Normalize raw user input into a form the lezer grammar can parse.
84
+ * - Bare text fragments (e.g. `foo`) are wrapped in quotes so they parse as TextFilter.
85
+ * - Property values that aren't already quoted/numeric/boolean (e.g. `from:rich@dxos.org`) are quoted.
86
+ * - Tags, type filters, operators, parens, braces, quoted strings, and assignments pass through unchanged.
87
+ */
88
+ export declare const normalizeInput: (input: string) => string;
82
89
  //# sourceMappingURL=query-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../../../src/parser/query-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,KAAK,IAAI,EAAmB,MAAM,eAAe,CAAC;AAExE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAM9C,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE;;;;;GAKG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAFnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuD;gBAElD,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,YAAA;IAE5C;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAShC;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IASjC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW;IAyClD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmExB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAuF9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAsCpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAwDnB;;OAEG;IACH,OAAO,CAAC,YAAY;CAGrB"}
1
+ {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../../../src/parser/query-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,KAAK,IAAI,EAAmB,MAAM,eAAe,CAAC;AAExE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAM9C,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE;;;;;GAKG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAFnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuD;IAE/E,YAA6B,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,YAAA,EAAI;IAEhD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAO/B;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAQhC;IAED;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAuCjD;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmExB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAwF9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAsCpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAwDnB;;OAEG;IACH,OAAO,CAAC,YAAY;CAGrB;AA2BD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,UAAW,MAAM,KAAG,MA+M9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"query-lite.d.ts","sourceRoot":"","sources":["../../../../src/query-lite/query-lite.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,IAAI,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,KAAK,IAAI,MAAM,EAAO,MAAM,YAAY,CAAC;AAsC3F,QAAA,MAAM,MAAM,EAAE,OAAO,MAAe,CAAC;AACrC,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC;AAsO3B,eAAO,MAAM,OAAO,EAAE,OAAO,OAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAC;AA0P7B,eAAO,MAAM,MAAM,EAAE,OAAO,MAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"query-lite.d.ts","sourceRoot":"","sources":["../../../../src/query-lite/query-lite.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,IAAI,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,KAAK,IAAI,MAAM,EAAO,MAAM,YAAY,CAAC;AAsC3F,QAAA,MAAM,MAAM,EAAE,OAAO,MAAe,CAAC;AACrC,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC;AA8R3B,eAAO,MAAM,OAAO,EAAE,OAAO,OAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAC;AA8Q7B,eAAO,MAAM,MAAM,EAAE,OAAO,MAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC"}
@@ -14,7 +14,7 @@ export declare class QuerySandbox extends Resource {
14
14
  protected _close(): Promise<void>;
15
15
  /**
16
16
  * Evaluates the query code.
17
- * @param queryCode Example: `Query.select(Filter.typename('dxos.org/type/Person'))`
17
+ * @param queryCode Example: `Query.select(Filter.typename('org.dxos.type.person'))`
18
18
  */
19
19
  eval(queryCode: string): QueryAST.Query;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query-sandbox.d.ts","sourceRoot":"","sources":["../../../../src/sandbox/query-sandbox.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAS,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAuB,KAAK,iBAAiB,EAAiB,MAAM,sBAAsB,CAAC;AAMlG;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,QAAQ;;IAExC,OAAO,CAAC,MAAM,CAAC,OAAO,CAA2C;IACjE,MAAM,CAAC,UAAU;cAUQ,KAAK;cAcL,MAAM;IAI/B;;;OAGG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK;CAkBxC"}
1
+ {"version":3,"file":"query-sandbox.d.ts","sourceRoot":"","sources":["../../../../src/sandbox/query-sandbox.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAS,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAuB,KAAK,iBAAiB,EAAiB,MAAM,sBAAsB,CAAC;AAMlG;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,QAAQ;;IAExC,OAAO,CAAC,MAAM,CAAC,OAAO,CAA2C;IACjE,MAAM,CAAC,UAAU,+BAMhB;IAID,UAAyB,KAAK,kBAY7B;IAED,UAAyB,MAAM,kBAE9B;IAED;;;OAGG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAiBtC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"quickjs.d.ts","sourceRoot":"","sources":["../../../../src/sandbox/quickjs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEnG;;;;GAIG;AAEH,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,SAAS,cAAc,EAAE,QAAQ,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,KAAG,CAoBlG,CAAC"}
1
+ {"version":3,"file":"quickjs.d.ts","sourceRoot":"","sources":["../../../../src/sandbox/quickjs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEnG;;;;GAIG;AAEH,eAAO,MAAM,YAAY,GAAI,CAAC,WAAW,cAAc,UAAU,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,KAAG,CAoBlG,CAAC"}