convex-ents 0.4.2 → 0.4.3

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.
@@ -1,7 +1,7 @@
1
1
  import { GenericEntsDataModel, GenericEdgeConfig, Expand, EdgeConfig, DeletionConfig } from './schema.js';
2
2
  import * as convex_values from 'convex/values';
3
3
  import { GenericId } from 'convex/values';
4
- import { TableNamesInDataModel, GenericDocument, DocumentByName, FilterBuilder, NamedTableInfo, ExpressionOrValue, PaginationOptions, IndexNames, FieldTypeFromFieldPath, SearchIndexNames, SearchFilterBuilder, NamedSearchIndex, SearchFilter, PaginationResult, IndexRangeBuilder, NamedIndex, IndexRange, WithoutSystemFields, WithOptionalSystemFields, GenericDataModel, GenericDatabaseReader, GenericDatabaseWriter, Scheduler } from 'convex/server';
4
+ import { TableNamesInDataModel, GenericDocument, DocumentByName, FilterBuilder, NamedTableInfo, ExpressionOrValue, PaginationOptions, IndexNames, FieldTypeFromFieldPath, SearchIndexNames, SearchFilterBuilder, NamedSearchIndex, SearchFilter, PaginationResult, SystemDataModel, IndexRangeBuilder, NamedIndex, IndexRange, WithoutSystemFields, WithOptionalSystemFields, GenericDataModel, GenericDatabaseReader, GenericDatabaseWriter, Scheduler } from 'convex/server';
5
5
  import { ScheduledDeleteFuncRef } from './deletion.js';
6
6
 
7
7
  declare class WriterImplBase<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> {
@@ -66,7 +66,7 @@ interface PromiseTable<EntsDataModel extends GenericEntsDataModel, Table extends
66
66
  get<Indexes extends EntsDataModel[Table]["indexes"], Index extends keyof Indexes>(indexName: Index, value0: FieldTypeFromFieldPath<DocumentByName<EntsDataModel, Table>, Indexes[Index][0]>): PromiseEntOrNull<EntsDataModel, Table>;
67
67
  get(id: GenericId<Table>): PromiseEntOrNull<EntsDataModel, Table>;
68
68
  /**
69
- * Fetch a document from the DB using given index, throw if it doesn't exist.
69
+ * Fetch a unique document from the DB using given index, throw if it doesn't exist.
70
70
  */
71
71
  getX<Indexes extends EntsDataModel[Table]["indexes"], Index extends keyof Indexes>(indexName: Index, value0: FieldTypeFromFieldPath<DocumentByName<EntsDataModel, Table>, Indexes[Index][0]>): PromiseEnt<EntsDataModel, Table>;
72
72
  /**
@@ -165,13 +165,22 @@ declare function entWrapper<EntsDataModel extends GenericEntsDataModel, Table ex
165
165
  declare function entsTableFactory<Ctx extends EntQueryCtx<any>, EntsDataModel extends GenericEntsDataModel>(ctx: Ctx, entDefinitions: EntsDataModel, options?: {
166
166
  scheduledDelete: ScheduledDeleteFuncRef;
167
167
  }): Ctx extends EntMutationCtx<any> ? EntsTableWriter<EntsDataModel> : EntsTable<EntsDataModel>;
168
- type EntsTable<EntsDataModel extends GenericEntsDataModel> = {
168
+ type EntsTableReader<EntsDataModel extends GenericEntsDataModel> = {
169
169
  <Table extends TableNamesInDataModel<EntsDataModel>, IndexName extends IndexNames<NamedTableInfo<EntsDataModel, Table>>>(table: Table, indexName: IndexName, indexRange?: (q: IndexRangeBuilder<DocumentByName<EntsDataModel, Table>, NamedIndex<NamedTableInfo<EntsDataModel, Table>, IndexName>>) => IndexRange): PromiseQuery<EntsDataModel, Table>;
170
170
  <Table extends TableNamesInDataModel<EntsDataModel>>(table: Table): PromiseTable<EntsDataModel, Table>;
171
171
  };
172
+ type EntsTable<EntsDataModel extends GenericEntsDataModel> = EntsTableReader<EntsDataModel> & {
173
+ system: EntsTableReader<EntsSystemDataModel>;
174
+ };
175
+ type EntsSystemDataModel = {
176
+ [key in keyof SystemDataModel]: SystemDataModel[key] & {
177
+ edges: Record<string, never>;
178
+ };
179
+ };
172
180
  type EntsTableWriter<EntsDataModel extends GenericEntsDataModel> = {
173
181
  <Table extends TableNamesInDataModel<EntsDataModel>, IndexName extends IndexNames<NamedTableInfo<EntsDataModel, Table>>>(table: Table, indexName: IndexName, indexRange?: (q: IndexRangeBuilder<DocumentByName<EntsDataModel, Table>, NamedIndex<NamedTableInfo<EntsDataModel, Table>, IndexName>>) => IndexRange): PromiseTableWriter<Table, EntsDataModel>;
174
182
  <Table extends TableNamesInDataModel<EntsDataModel>>(table: Table): PromiseTableWriter<Table, EntsDataModel>;
183
+ system: EntsTableReader<EntsSystemDataModel>;
175
184
  };
176
185
  declare class EntInstance<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> {
177
186
  edge<Edge extends keyof EntsDataModel[Table]["edges"]>(edge: Edge): PromiseEdge<EntsDataModel, Table, Edge>;
@@ -207,7 +216,7 @@ interface PromiseTableWriter<Table extends TableNamesInDataModel<EntsDataModel>,
207
216
  get<Indexes extends EntsDataModel[Table]["indexes"], Index extends keyof Indexes>(indexName: Index, value0: FieldTypeFromFieldPath<DocumentByName<EntsDataModel, Table>, Indexes[Index][0]>): PromiseEntWriterOrNull<EntsDataModel, Table>;
208
217
  get(id: GenericId<Table>): PromiseEntWriterOrNull<EntsDataModel, Table>;
209
218
  /**
210
- * Fetch a document from the DB using given index, throw if it doesn't exist.
219
+ * Fetch a unique document from the DB using given index, throw if it doesn't exist.
211
220
  */
212
221
  getX<Indexes extends EntsDataModel[Table]["indexes"], Index extends keyof Indexes>(indexName: Index, value0: FieldTypeFromFieldPath<DocumentByName<EntsDataModel, Table>, Indexes[Index][0]>): PromiseEntWriter<EntsDataModel, Table>;
213
222
  /**
@@ -365,4 +374,4 @@ declare function getWriteRule(entDefinitions: GenericEntsDataModel, table: strin
365
374
  declare function getEdgeDefinitions<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>>(entDefinitions: EntsDataModel, table: Table): Record<keyof EntsDataModel[Table]["edges"], EdgeConfig>;
366
375
  declare function getDeletionConfig<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>>(entDefinitions: EntsDataModel, table: Table): DeletionConfig | undefined;
367
376
 
368
- export { type PromiseQueryWriter as A, type PromiseEntsWriter as B, type PromisePaginationResultWriter as C, type PromiseTableWriter as D, type EdgeChanges as E, type PromiseEntWriterOrNull as F, type GenericEnt as G, type PromiseEntWriter as H, type GenericEntWriter as I, type PromiseEntId as J, type EntQueryCtx as K, type EntMutationCtx as L, type DocRetriever as M, addEntRules as N, getReadRule as O, type PromiseOrderedQueryOrNull as P, getWriteRule as Q, getEdgeDefinitions as R, getDeletionConfig as S, WriterImplBase as W, type WithEdgeInserts as a, type WithEdges as b, type WithEdgePatches as c, type PromiseQueryOrNull as d, type PromiseTableBase as e, type PromiseTable as f, type PromiseOrderedQueryBase as g, type PromiseOrderedQuery as h, type PromiseQuery as i, type PromisePaginationResultOrNull as j, type PromisePaginationResult as k, type PromiseEntsOrNull as l, type PromiseEnts as m, type PromiseEntsOrNulls as n, type PromiseEdgeEntsOrNull as o, type PromiseEdgeEnts as p, type PromiseEntOrNull as q, type PromiseEnt as r, type PromiseArrayOrNull as s, type PromiseArray as t, entWrapper as u, entsTableFactory as v, type Ent as w, type PromiseEdge as x, type PromiseEdgeOrThrow as y, type PromiseOrderedQueryWriter as z };
377
+ export { type PromiseEdgeOrThrow as A, type PromiseOrderedQueryWriter as B, type PromiseQueryWriter as C, type PromiseEntsWriter as D, type EdgeChanges as E, type PromisePaginationResultWriter as F, type GenericEnt as G, type PromiseTableWriter as H, type PromiseEntWriterOrNull as I, type PromiseEntWriter as J, type GenericEntWriter as K, type PromiseEntId as L, type EntQueryCtx as M, type EntMutationCtx as N, type DocRetriever as O, type PromiseOrderedQueryOrNull as P, addEntRules as Q, getReadRule as R, getWriteRule as S, getEdgeDefinitions as T, getDeletionConfig as U, WriterImplBase as W, type WithEdgeInserts as a, type WithEdges as b, type WithEdgePatches as c, type PromiseQueryOrNull as d, type PromiseTableBase as e, type PromiseTable as f, type PromiseOrderedQueryBase as g, type PromiseOrderedQuery as h, type PromiseQuery as i, type PromisePaginationResultOrNull as j, type PromisePaginationResult as k, type PromiseEntsOrNull as l, type PromiseEnts as m, type PromiseEntsOrNulls as n, type PromiseEdgeEntsOrNull as o, type PromiseEdgeEnts as p, type PromiseEntOrNull as q, type PromiseEnt as r, type PromiseArrayOrNull as s, type PromiseArray as t, entWrapper as u, entsTableFactory as v, type EntsTable as w, type EntsTableWriter as x, type Ent as y, type PromiseEdge as z };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { EntDefinition, defineEnt, defineEntSchema, getEntDefinitions } from './schema.js';
2
- export { G as GenericEnt, I as GenericEntWriter, p as PromiseEdgeEnts, o as PromiseEdgeEntsOrNull, r as PromiseEnt, J as PromiseEntId, q as PromiseEntOrNull, H as PromiseEntWriter, F as PromiseEntWriterOrNull, m as PromiseEnts, l as PromiseEntsOrNull, n as PromiseEntsOrNulls, B as PromiseEntsWriter, h as PromiseOrderedQuery, g as PromiseOrderedQueryBase, P as PromiseOrderedQueryOrNull, z as PromiseOrderedQueryWriter, i as PromiseQuery, d as PromiseQueryOrNull, A as PromiseQueryWriter, f as PromiseTable, e as PromiseTableBase, D as PromiseTableWriter, N as addEntRules, v as entsTableFactory } from './index-6qe2c6eO.js';
2
+ export { G as GenericEnt, K as GenericEntWriter, p as PromiseEdgeEnts, o as PromiseEdgeEntsOrNull, r as PromiseEnt, L as PromiseEntId, q as PromiseEntOrNull, J as PromiseEntWriter, I as PromiseEntWriterOrNull, m as PromiseEnts, l as PromiseEntsOrNull, n as PromiseEntsOrNulls, D as PromiseEntsWriter, h as PromiseOrderedQuery, g as PromiseOrderedQueryBase, P as PromiseOrderedQueryOrNull, B as PromiseOrderedQueryWriter, i as PromiseQuery, d as PromiseQueryOrNull, C as PromiseQueryWriter, f as PromiseTable, e as PromiseTableBase, H as PromiseTableWriter, Q as addEntRules, v as entsTableFactory } from './index-WGlX_PmZ.js';
3
3
  export { scheduledDeleteFactory } from './deletion.js';
4
4
  import 'convex/server';
5
5
  import 'convex/values';
package/dist/index.js CHANGED
@@ -856,7 +856,12 @@ var PromisePaginationResultOrNullImpl = class extends Promise {
856
856
  };
857
857
  var PromiseTableImpl = class extends PromiseQueryOrNullImpl {
858
858
  constructor(ctx, entDefinitions, table) {
859
- super(ctx, entDefinitions, table, async () => ctx.db.query(table));
859
+ super(
860
+ ctx,
861
+ entDefinitions,
862
+ table,
863
+ async () => isSystemTable(table) ? ctx.db.system.query(table) : ctx.db.query(table)
864
+ );
860
865
  }
861
866
  get(...args) {
862
867
  return this.getImpl(args);
@@ -883,7 +888,7 @@ var PromiseTableImpl = class extends PromiseQueryOrNullImpl {
883
888
  return {
884
889
  id,
885
890
  doc: async () => {
886
- const doc = await this.ctx.db.get(id);
891
+ const doc = await (isSystemTable(this.table) ? this.ctx.db.system.get(id) : this.ctx.db.get(id));
887
892
  if (throwIfNull && doc === null) {
888
893
  throw new Error(
889
894
  `Document not found with id \`${id}\` in table "${this.table}"`
@@ -921,7 +926,7 @@ var PromiseTableImpl = class extends PromiseQueryOrNullImpl {
921
926
  });
922
927
  return await Promise.all(
923
928
  ids.map(async (id) => {
924
- const doc = await this.ctx.db.get(id);
929
+ const doc = await (isSystemTable(this.table) ? this.ctx.db.system.get(id) : this.ctx.db.get(id));
925
930
  if (doc === null) {
926
931
  throw new Error(
927
932
  `Document not found with id \`${id}\` in table "${this.table}"`
@@ -1310,7 +1315,7 @@ function entWrapper(fields, ctx, entDefinitions, table) {
1310
1315
  writable: false,
1311
1316
  configurable: false
1312
1317
  });
1313
- Object.entries(entDefinitions[table].defaults).map(
1318
+ Object.entries(entDefinitions[table]?.defaults ?? []).map(
1314
1319
  ([field, value]) => {
1315
1320
  if (doc[field] === void 0) {
1316
1321
  doc[field] = value;
@@ -1321,26 +1326,28 @@ function entWrapper(fields, ctx, entDefinitions, table) {
1321
1326
  }
1322
1327
  function entsTableFactory(ctx, entDefinitions, options) {
1323
1328
  const enrichedCtx = options !== void 0 ? { ...ctx, ...options } : ctx;
1324
- return (table, indexName, indexRange) => {
1325
- if (typeof table !== "string") {
1326
- throw new Error(`Expected table name, got \`${table}\``);
1329
+ const table = (table2, indexName, indexRange) => {
1330
+ if (typeof table2 !== "string") {
1331
+ throw new Error(`Expected table name, got \`${table2}\``);
1327
1332
  }
1328
1333
  if (indexName !== void 0) {
1329
1334
  return new PromiseTableImpl(
1330
1335
  enrichedCtx,
1331
1336
  entDefinitions,
1332
- table
1337
+ table2
1333
1338
  ).withIndex(indexName, indexRange);
1334
1339
  }
1335
1340
  if (ctx.db.insert !== void 0) {
1336
1341
  return new PromiseTableWriterImpl(
1337
1342
  enrichedCtx,
1338
1343
  entDefinitions,
1339
- table
1344
+ table2
1340
1345
  );
1341
1346
  }
1342
- return new PromiseTableImpl(enrichedCtx, entDefinitions, table);
1347
+ return new PromiseTableImpl(enrichedCtx, entDefinitions, table2);
1343
1348
  };
1349
+ table.system = table;
1350
+ return table;
1344
1351
  }
1345
1352
  var PromiseTableWriterImpl = class extends PromiseTableImpl {
1346
1353
  constructor(ctx, entDefinitions, table) {
@@ -1444,7 +1451,7 @@ var PromiseEntWriterImpl = class extends PromiseEntOrNullImpl {
1444
1451
  ).collect() : []
1445
1452
  )
1446
1453
  )
1447
- )).map((edgeDoc) => edgeDoc._id);
1454
+ )).flat().map((edgeDoc) => edgeDoc._id);
1448
1455
  edges[key] = {
1449
1456
  add,
1450
1457
  removeEdges
@@ -1600,6 +1607,9 @@ function getEdgeDefinitions(entDefinitions, table) {
1600
1607
  function getDeletionConfig(entDefinitions, table) {
1601
1608
  return entDefinitions[table].deletionConfig;
1602
1609
  }
1610
+ function isSystemTable(table) {
1611
+ return table.startsWith("_");
1612
+ }
1603
1613
 
1604
1614
  // src/deletion.ts
1605
1615
  var import_server3 = require("convex/server");