edinburgh 0.4.5 → 0.5.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.
Files changed (53) hide show
  1. package/README.md +268 -374
  2. package/build/src/datapack.js +1 -1
  3. package/build/src/datapack.js.map +1 -1
  4. package/build/src/edinburgh.d.ts +5 -5
  5. package/build/src/edinburgh.js +8 -7
  6. package/build/src/edinburgh.js.map +1 -1
  7. package/build/src/indexes.d.ts +46 -116
  8. package/build/src/indexes.js +148 -180
  9. package/build/src/indexes.js.map +1 -1
  10. package/build/src/migrate.js +11 -31
  11. package/build/src/migrate.js.map +1 -1
  12. package/build/src/models.d.ts +74 -49
  13. package/build/src/models.js +112 -165
  14. package/build/src/models.js.map +1 -1
  15. package/build/src/types.d.ts +30 -21
  16. package/build/src/types.js +16 -30
  17. package/build/src/types.js.map +1 -1
  18. package/package.json +1 -3
  19. package/skill/BaseIndex_batchProcess.md +1 -1
  20. package/skill/BaseIndex_find.md +2 -2
  21. package/skill/BaseIndex_find_2.md +7 -0
  22. package/skill/BaseIndex_find_3.md +7 -0
  23. package/skill/BaseIndex_find_4.md +7 -0
  24. package/skill/Model.md +5 -7
  25. package/skill/Model_batchProcess.md +8 -0
  26. package/skill/Model_delete.md +1 -1
  27. package/skill/Model_migrate.md +2 -4
  28. package/skill/Model_preCommit.md +2 -4
  29. package/skill/Model_preventPersist.md +1 -1
  30. package/skill/Model_replaceInto.md +2 -2
  31. package/skill/NonPrimaryIndex.md +10 -0
  32. package/skill/SKILL.md +146 -144
  33. package/skill/SecondaryIndex.md +2 -2
  34. package/skill/UniqueIndex.md +2 -2
  35. package/skill/defineModel.md +22 -0
  36. package/skill/field.md +2 -2
  37. package/skill/link.md +11 -9
  38. package/skill/transact.md +2 -2
  39. package/src/datapack.ts +1 -1
  40. package/src/edinburgh.ts +8 -9
  41. package/src/indexes.ts +157 -276
  42. package/src/migrate.ts +9 -30
  43. package/src/models.ts +188 -174
  44. package/src/types.ts +31 -26
  45. package/skill/Model_findAll.md +0 -12
  46. package/skill/PrimaryIndex.md +0 -8
  47. package/skill/PrimaryIndex_get.md +0 -17
  48. package/skill/PrimaryIndex_getLazy.md +0 -13
  49. package/skill/UniqueIndex_get.md +0 -17
  50. package/skill/index.md +0 -32
  51. package/skill/primary.md +0 -26
  52. package/skill/registerModel.md +0 -26
  53. package/skill/unique.md +0 -32
package/src/edinburgh.ts CHANGED
@@ -9,8 +9,9 @@ export function scheduleInit() { initNeeded = true; }
9
9
  // Re-export public API from models
10
10
  export {
11
11
  Model,
12
- registerModel,
12
+ defineModel,
13
13
  field,
14
+ currentTxn,
14
15
  } from "./models.js";
15
16
 
16
17
  import type { Transaction, Change, Model } from "./models.js";
@@ -37,13 +38,10 @@ export {
37
38
 
38
39
  // Re-export public API from indexes
39
40
  export {
40
- index,
41
- primary,
42
- unique,
43
41
  dump,
44
42
  } from "./indexes.js";
45
43
 
46
- export { BaseIndex, UniqueIndex, PrimaryIndex, SecondaryIndex } from './indexes.js';
44
+ export { BaseIndex, NonPrimaryIndex, UniqueIndex, SecondaryIndex } from './indexes.js';
47
45
 
48
46
  export { type Change } from './models.js';
49
47
  export type { Transaction } from './models.js';
@@ -99,7 +97,7 @@ const STALE_INSTANCE_DESCRIPTOR = {
99
97
  * @example
100
98
  * ```typescript
101
99
  * const paid = await E.transact(() => {
102
- * const user = User.pk.get("john_doe");
100
+ * const user = User.get("john_doe");
103
101
  * if (user.credits > 0) {
104
102
  * user.credits--;
105
103
  * return true;
@@ -110,7 +108,7 @@ const STALE_INSTANCE_DESCRIPTOR = {
110
108
  * ```typescript
111
109
  * // Transaction with automatic retry on conflicts
112
110
  * await E.transact(() => {
113
- * const counter = Counter.pk.get("global") || new Counter({id: "global", value: 0});
111
+ * const counter = Counter.get("global") || new Counter({id: "global", value: 0});
114
112
  * counter.value++;
115
113
  * });
116
114
  * ```
@@ -126,7 +124,7 @@ export async function transact<T>(fn: () => T): Promise<T> {
126
124
  olmdbReady = true;
127
125
  initNeeded = false;
128
126
  for (const model of Object.values(modelRegistry)) {
129
- await model._delayedInit();
127
+ await model._loadCreateIndexes();
130
128
  }
131
129
  })();
132
130
  await pendingInit;
@@ -247,6 +245,7 @@ export async function deleteEverything(): Promise<void> {
247
245
  // Re-init indexes since metadata was deleted
248
246
  for (const model of Object.values(modelRegistry)) {
249
247
  if (!model.fields) continue;
250
- await model._delayedInit(true);
248
+ model._resetIndexes();
249
+ await model._loadCreateIndexes();
251
250
  }
252
251
  }