@workglow/storage 0.0.85 → 0.0.87
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 +185 -53
- package/dist/browser.js +451 -188
- package/dist/browser.js.map +21 -18
- package/dist/bun.js +1069 -356
- package/dist/bun.js.map +29 -24
- package/dist/common-server.d.ts +17 -15
- package/dist/common-server.d.ts.map +1 -1
- package/dist/common.d.ts +13 -10
- package/dist/common.d.ts.map +1 -1
- package/dist/kv/{FsFolderJsonKvRepository.d.ts → FsFolderJsonKvStorage.d.ts} +8 -8
- package/dist/kv/FsFolderJsonKvStorage.d.ts.map +1 -0
- package/dist/kv/{FsFolderKvRepository.d.ts → FsFolderKvStorage.d.ts} +7 -7
- package/dist/kv/FsFolderKvStorage.d.ts.map +1 -0
- package/dist/kv/{IKvRepository.d.ts → IKvStorage.d.ts} +3 -3
- package/dist/kv/IKvStorage.d.ts.map +1 -0
- package/dist/kv/{InMemoryKvRepository.d.ts → InMemoryKvStorage.d.ts} +8 -8
- package/dist/kv/InMemoryKvStorage.d.ts.map +1 -0
- package/dist/kv/{IndexedDbKvRepository.d.ts → IndexedDbKvStorage.d.ts} +8 -8
- package/dist/kv/IndexedDbKvStorage.d.ts.map +1 -0
- package/dist/kv/{KvRepository.d.ts → KvStorage.d.ts} +7 -7
- package/dist/kv/KvStorage.d.ts.map +1 -0
- package/dist/kv/{KvViaTabularRepository.d.ts → KvViaTabularStorage.d.ts} +7 -7
- package/dist/kv/KvViaTabularStorage.d.ts.map +1 -0
- package/dist/kv/{PostgresKvRepository.d.ts → PostgresKvStorage.d.ts} +8 -8
- package/dist/kv/PostgresKvStorage.d.ts.map +1 -0
- package/dist/kv/{SqliteKvRepository.d.ts → SqliteKvStorage.d.ts} +8 -8
- package/dist/kv/SqliteKvStorage.d.ts.map +1 -0
- package/dist/kv/{SupabaseKvRepository.d.ts → SupabaseKvStorage.d.ts} +9 -9
- package/dist/kv/SupabaseKvStorage.d.ts.map +1 -0
- package/dist/node.js +1069 -356
- package/dist/node.js.map +29 -24
- package/dist/queue-limiter/IRateLimiterStorage.d.ts.map +1 -0
- package/dist/queue-limiter/InMemoryRateLimiterStorage.d.ts.map +1 -0
- package/dist/queue-limiter/IndexedDbRateLimiterStorage.d.ts.map +1 -0
- package/dist/queue-limiter/PostgresRateLimiterStorage.d.ts.map +1 -0
- package/dist/queue-limiter/SqliteRateLimiterStorage.d.ts.map +1 -0
- package/dist/queue-limiter/SupabaseRateLimiterStorage.d.ts.map +1 -0
- package/dist/tabular/{BaseSqlTabularRepository.d.ts → BaseSqlTabularStorage.d.ts} +8 -7
- package/dist/tabular/BaseSqlTabularStorage.d.ts.map +1 -0
- package/dist/tabular/{TabularRepository.d.ts → BaseTabularStorage.d.ts} +52 -10
- package/dist/tabular/BaseTabularStorage.d.ts.map +1 -0
- package/dist/tabular/{CachedTabularRepository.d.ts → CachedTabularStorage.d.ts} +15 -14
- package/dist/tabular/CachedTabularStorage.d.ts.map +1 -0
- package/dist/tabular/{FsFolderTabularRepository.d.ts → FsFolderTabularStorage.d.ts} +22 -12
- package/dist/tabular/FsFolderTabularStorage.d.ts.map +1 -0
- package/dist/tabular/{ITabularRepository.d.ts → ITabularStorage.d.ts} +29 -6
- package/dist/tabular/ITabularStorage.d.ts.map +1 -0
- package/dist/tabular/{InMemoryTabularRepository.d.ts → InMemoryTabularStorage.d.ts} +24 -14
- package/dist/tabular/InMemoryTabularStorage.d.ts.map +1 -0
- package/dist/tabular/{IndexedDbTabularRepository.d.ts → IndexedDbTabularStorage.d.ts} +20 -11
- package/dist/tabular/IndexedDbTabularStorage.d.ts.map +1 -0
- package/dist/tabular/{PostgresTabularRepository.d.ts → PostgresTabularStorage.d.ts} +37 -15
- package/dist/tabular/PostgresTabularStorage.d.ts.map +1 -0
- package/dist/tabular/{SharedInMemoryTabularRepository.d.ts → SharedInMemoryTabularStorage.d.ts} +14 -13
- package/dist/tabular/SharedInMemoryTabularStorage.d.ts.map +1 -0
- package/dist/tabular/{SqliteTabularRepository.d.ts → SqliteTabularStorage.d.ts} +25 -11
- package/dist/tabular/SqliteTabularStorage.d.ts.map +1 -0
- package/dist/tabular/{SupabaseTabularRepository.d.ts → SupabaseTabularStorage.d.ts} +17 -15
- package/dist/tabular/SupabaseTabularStorage.d.ts.map +1 -0
- package/dist/tabular/TabularStorageRegistry.d.ts +29 -0
- package/dist/tabular/TabularStorageRegistry.d.ts.map +1 -0
- package/dist/util/IndexedDbTable.d.ts +1 -1
- package/dist/util/IndexedDbTable.d.ts.map +1 -1
- package/dist/vector/IVectorStorage.d.ts +83 -0
- package/dist/vector/IVectorStorage.d.ts.map +1 -0
- package/dist/vector/InMemoryVectorStorage.d.ts +41 -0
- package/dist/vector/InMemoryVectorStorage.d.ts.map +1 -0
- package/dist/vector/PostgresVectorStorage.d.ts +57 -0
- package/dist/vector/PostgresVectorStorage.d.ts.map +1 -0
- package/dist/vector/SqliteVectorStorage.d.ts +45 -0
- package/dist/vector/SqliteVectorStorage.d.ts.map +1 -0
- package/package.json +7 -7
- package/src/kv/README.md +3 -3
- package/src/tabular/README.md +186 -23
- package/src/vector/README.md +393 -0
- package/dist/kv/FsFolderJsonKvRepository.d.ts.map +0 -1
- package/dist/kv/FsFolderKvRepository.d.ts.map +0 -1
- package/dist/kv/IKvRepository.d.ts.map +0 -1
- package/dist/kv/InMemoryKvRepository.d.ts.map +0 -1
- package/dist/kv/IndexedDbKvRepository.d.ts.map +0 -1
- package/dist/kv/KvRepository.d.ts.map +0 -1
- package/dist/kv/KvViaTabularRepository.d.ts.map +0 -1
- package/dist/kv/PostgresKvRepository.d.ts.map +0 -1
- package/dist/kv/SqliteKvRepository.d.ts.map +0 -1
- package/dist/kv/SupabaseKvRepository.d.ts.map +0 -1
- package/dist/limiter/IRateLimiterStorage.d.ts.map +0 -1
- package/dist/limiter/InMemoryRateLimiterStorage.d.ts.map +0 -1
- package/dist/limiter/IndexedDbRateLimiterStorage.d.ts.map +0 -1
- package/dist/limiter/PostgresRateLimiterStorage.d.ts.map +0 -1
- package/dist/limiter/SqliteRateLimiterStorage.d.ts.map +0 -1
- package/dist/limiter/SupabaseRateLimiterStorage.d.ts.map +0 -1
- package/dist/tabular/BaseSqlTabularRepository.d.ts.map +0 -1
- package/dist/tabular/CachedTabularRepository.d.ts.map +0 -1
- package/dist/tabular/FsFolderTabularRepository.d.ts.map +0 -1
- package/dist/tabular/ITabularRepository.d.ts.map +0 -1
- package/dist/tabular/InMemoryTabularRepository.d.ts.map +0 -1
- package/dist/tabular/IndexedDbTabularRepository.d.ts.map +0 -1
- package/dist/tabular/PostgresTabularRepository.d.ts.map +0 -1
- package/dist/tabular/SharedInMemoryTabularRepository.d.ts.map +0 -1
- package/dist/tabular/SqliteTabularRepository.d.ts.map +0 -1
- package/dist/tabular/SupabaseTabularRepository.d.ts.map +0 -1
- package/dist/tabular/TabularRepository.d.ts.map +0 -1
- /package/dist/{limiter → queue-limiter}/IRateLimiterStorage.d.ts +0 -0
- /package/dist/{limiter → queue-limiter}/InMemoryRateLimiterStorage.d.ts +0 -0
- /package/dist/{limiter → queue-limiter}/IndexedDbRateLimiterStorage.d.ts +0 -0
- /package/dist/{limiter → queue-limiter}/PostgresRateLimiterStorage.d.ts +0 -0
- /package/dist/{limiter → queue-limiter}/SqliteRateLimiterStorage.d.ts +0 -0
- /package/dist/{limiter → queue-limiter}/SupabaseRateLimiterStorage.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IRateLimiterStorage.d.ts","sourceRoot":"","sources":["../../src/queue-limiter/IRateLimiterStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,eAAO,MAAM,oBAAoB,4DAAiE,CAAC;AAEnG;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAC5C,wCAAwC;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/B;;;OAGG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElD;;;;;OAKG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/E;;;;;;OAMG;IACH,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE3F;;;;OAIG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAErE;;;;OAIG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhF;;;OAGG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryRateLimiterStorage.d.ts","sourceRoot":"","sources":["../../src/queue-limiter/InMemoryRateLimiterStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,eAAO,MAAM,8BAA8B,4DAE1C,CAAC;AAUF;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,mBAAmB;IACpE,sCAAsC;IACtC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAE3E,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4C;IAEvE,gFAAgF;IAChF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgC;gBAEvD,OAAO,CAAC,EAAE,yBAAyB;IAI/C;;OAEG;IACH,OAAO,CAAC,OAAO;IAQF,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ9E,0BAA0B,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IASjB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAOpE,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/E,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexedDbRateLimiterStorage.d.ts","sourceRoot":"","sources":["../../src/queue-limiter/IndexedDbRateLimiterStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAGL,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,eAAO,MAAM,+BAA+B,4DAE3C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kCACf,SAAQ,yBAAyB,EAAE,gBAAgB;CAAG;AAqBxD;;;GAGG;AACH,qBAAa,2BAA4B,YAAW,mBAAmB;IACrE,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,oCAAoC;IACpC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IACrD,sCAAsC;IACtC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;gBAE/D,OAAO,GAAE,kCAAuC;IAgB5D;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;YAIZ,cAAc;YAMd,kBAAkB;IAMnB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC9B,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBjD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkC9E,0BAA0B,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAoCjB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAsBpE,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B/E,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA4CrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresRateLimiterStorage.d.ts","sourceRoot":"","sources":["../../src/queue-limiter/PostgresRateLimiterStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,eAAO,MAAM,6BAA6B,4DAEzC,CAAC;AAEF;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,mBAAmB;IAWlE,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI;IAV7B,oCAAoC;IACpC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IACrD,sCAAsC;IACtC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAC3E,4CAA4C;IAC5C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAC9C,8CAA8C;IAC9C,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;gBAG7B,EAAE,EAAE,IAAI,EAC3B,OAAO,CAAC,EAAE,yBAAyB;IAgBrC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAIf,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC9B,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBjD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAe9E,0BAA0B,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAmBjB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAiBpE,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B/E,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAYrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqliteRateLimiterStorage.d.ts","sourceRoot":"","sources":["../../src/queue-limiter/SqliteRateLimiterStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,eAAO,MAAM,2BAA2B,4DAEvC,CAAC;AAEF;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,mBAAmB;IAWhE,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ;IAVxC,oCAAoC;IACpC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IACrD,sCAAsC;IACtC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAC3E,4CAA4C;IAC5C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAC9C,8CAA8C;IAC9C,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;gBAG7B,EAAE,EAAE,MAAM,CAAC,QAAQ,EACtC,OAAO,CAAC,EAAE,yBAAyB;IAgBrC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAQ9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAIf,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B9B,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAejD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc9E,0BAA0B,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAiBjB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAepE,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB/E,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAWrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SupabaseRateLimiterStorage.d.ts","sourceRoot":"","sources":["../../src/queue-limiter/SupabaseRateLimiterStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,eAAO,MAAM,6BAA6B,4DAEzC,CAAC;AAEF;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,mBAAmB;IAWlE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IAV3C,oCAAoC;IACpC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IACrD,sCAAsC;IACtC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAC3E,4CAA4C;IAC5C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAC9C,8CAA8C;IAC9C,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;gBAG7B,MAAM,EAAE,cAAc,EACzC,OAAO,CAAC,EAAE,yBAAyB;IAgBrC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAQhB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAmD9B,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAe9E,0BAA0B,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAiBjB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAmBpE,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB/E,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAcrD"}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { DataPortSchemaObject, FromSchema, JsonSchema } from "@workglow/util";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { DataPortSchemaObject, FromSchema, JsonSchema, TypedArraySchemaOptions } from "@workglow/util";
|
|
7
|
+
import { BaseTabularStorage, ClientProvidedKeysOption } from "./BaseTabularStorage";
|
|
8
|
+
import { AutoGeneratedKeys, InsertEntity, SimplifyPrimaryKey, ValueOptionType } from "./ITabularStorage";
|
|
9
9
|
/**
|
|
10
10
|
* Base class for SQL-based tabular repositories that implements common functionality
|
|
11
11
|
* for both SQLite and PostgreSQL database implementations.
|
|
@@ -13,17 +13,18 @@ import { TabularRepository } from "./TabularRepository";
|
|
|
13
13
|
* @template Schema - The schema definition for the entity using JSON Schema
|
|
14
14
|
* @template PrimaryKeyNames - Array of property names that form the primary key
|
|
15
15
|
*/
|
|
16
|
-
export declare abstract class
|
|
16
|
+
export declare abstract class BaseSqlTabularStorage<Schema extends DataPortSchemaObject, PrimaryKeyNames extends ReadonlyArray<keyof Schema["properties"]>, Entity = FromSchema<Schema, TypedArraySchemaOptions>, PrimaryKey = SimplifyPrimaryKey<Entity, PrimaryKeyNames>, Value = Omit<Entity, PrimaryKeyNames[number] & keyof Entity>, InsertType extends InsertEntity<Entity, AutoGeneratedKeys<Schema>> = InsertEntity<Entity, AutoGeneratedKeys<Schema>>> extends BaseTabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey, Value, InsertType> {
|
|
17
17
|
protected readonly table: string;
|
|
18
18
|
/**
|
|
19
|
-
* Creates a new instance of
|
|
19
|
+
* Creates a new instance of BaseSqlTabularStorage
|
|
20
20
|
* @param table - The name of the database table to use for storage
|
|
21
21
|
* @param schema - Schema defining the structure of the entity
|
|
22
22
|
* @param primaryKeyNames - Array of property names that form the primary key
|
|
23
23
|
* @param indexes - Array of columns or column arrays to make searchable. Each string or single column creates a single-column index,
|
|
24
24
|
* while each array creates a compound index with columns in the specified order.
|
|
25
|
+
* @param clientProvidedKeys - How to handle client-provided values for auto-generated keys
|
|
25
26
|
*/
|
|
26
|
-
constructor(table: string | undefined, schema: Schema, primaryKeyNames: PrimaryKeyNames, indexes?: readonly (keyof Entity | readonly (keyof Entity)[])[]);
|
|
27
|
+
constructor(table: string | undefined, schema: Schema, primaryKeyNames: PrimaryKeyNames, indexes?: readonly (keyof Entity | readonly (keyof Entity)[])[], clientProvidedKeys?: ClientProvidedKeysOption);
|
|
27
28
|
/**
|
|
28
29
|
* Maps JavaScript/TypeScript types to their corresponding SQL type
|
|
29
30
|
* Must be implemented by derived classes for specific SQL dialects
|
|
@@ -91,4 +92,4 @@ export declare abstract class BaseSqlTabularRepository<Schema extends DataPortSc
|
|
|
91
92
|
*/
|
|
92
93
|
protected validateTableAndSchema(): void;
|
|
93
94
|
}
|
|
94
|
-
//# sourceMappingURL=
|
|
95
|
+
//# sourceMappingURL=BaseSqlTabularStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseSqlTabularStorage.d.ts","sourceRoot":"","sources":["../../src/tabular/BaseSqlTabularStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAI3B;;;;;;GAMG;AACH,8BAAsB,qBAAqB,CACzC,MAAM,SAAS,oBAAoB,EACnC,eAAe,SAAS,aAAa,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,EAEjE,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,uBAAuB,CAAC,EACpD,UAAU,GAAG,kBAAkB,CAAC,MAAM,EAAE,eAAe,CAAC,EACxD,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,EAC5D,UAAU,SAAS,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAC/E,MAAM,EACN,iBAAiB,CAAC,MAAM,CAAC,CAC1B,CACD,SAAQ,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;IAWxF,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM;IAVlC;;;;;;;;OAQG;gBAEkB,KAAK,EAAE,MAAM,YAAkB,EAClD,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,OAAO,GAAE,SAAS,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC,EAAO,EACnE,kBAAkB,GAAE,wBAAuC;IAM7D;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM;IAE5D;;;OAGG;IACH,SAAS,CAAC,0BAA0B,CAAC,UAAU,GAAE,MAAW,GAAG,MAAM;IAUrE;;;OAGG;IACH,SAAS,CAAC,qBAAqB,CAAC,UAAU,GAAE,MAAW,GAAG,MAAM;IAkBhE;;;;OAIG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IA0BlD;;;OAGG;IACH,SAAS,CAAC,oBAAoB,CAAC,UAAU,GAAE,MAAW,GAAG,MAAM;IAI/D;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,UAAU,GAAE,MAAW,GAAG,MAAM;IAI1D;;;;;OAKG;IACH,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAkBzD;;;;;;OAMG;IACH,SAAS,CAAC,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe,EAAE;IAyBjE;;;;;OAKG;IACH,SAAS,CAAC,2BAA2B,CAAC,GAAG,EAAE,UAAU,GAAG,eAAe,EAAE;IAiBzE,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,MAAM,CAAC,GAAG,eAAe;IAqCpF,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC;IAgCpF;;;;;;;;;OASG;IACH,SAAS,CAAC,sBAAsB,IAAI,IAAI;CAgCzC"}
|
|
@@ -3,9 +3,17 @@
|
|
|
3
3
|
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { DataPortSchemaObject, EventEmitter, FromSchema } from "@workglow/util";
|
|
7
|
-
import { DeleteSearchCriteria,
|
|
8
|
-
export declare const TABULAR_REPOSITORY: import("@workglow/util").ServiceToken<
|
|
6
|
+
import { DataPortSchemaObject, EventEmitter, FromSchema, TypedArraySchemaOptions } from "@workglow/util";
|
|
7
|
+
import { AnyTabularStorage, AutoGeneratedKeys, DeleteSearchCriteria, InsertEntity, ITabularStorage, SimplifyPrimaryKey, TabularChangePayload, TabularEventListener, TabularEventListeners, TabularEventName, TabularEventParameters, TabularSubscribeOptions, ValueOptionType } from "./ITabularStorage";
|
|
8
|
+
export declare const TABULAR_REPOSITORY: import("@workglow/util").ServiceToken<AnyTabularStorage>;
|
|
9
|
+
/**
|
|
10
|
+
* Options for controlling how client-provided values for auto-generated keys are handled
|
|
11
|
+
*/
|
|
12
|
+
export type ClientProvidedKeysOption = "never" | "if-missing" | "always";
|
|
13
|
+
/**
|
|
14
|
+
* Generation strategy for auto-generated keys
|
|
15
|
+
*/
|
|
16
|
+
export type KeyGenerationStrategy = "autoincrement" | "uuid";
|
|
9
17
|
/**
|
|
10
18
|
* Abstract base class for tabular storage repositories.
|
|
11
19
|
* Provides functionality for storing and retrieving data with typed
|
|
@@ -15,7 +23,7 @@ export declare const TABULAR_REPOSITORY: import("@workglow/util").ServiceToken<I
|
|
|
15
23
|
* @template Schema - The schema definition for the entity using JSON Schema
|
|
16
24
|
* @template PrimaryKeyNames - Array of property names that form the primary key
|
|
17
25
|
*/
|
|
18
|
-
export declare abstract class
|
|
26
|
+
export declare abstract class BaseTabularStorage<Schema extends DataPortSchemaObject, PrimaryKeyNames extends ReadonlyArray<keyof Schema["properties"]>, Entity = FromSchema<Schema, TypedArraySchemaOptions>, PrimaryKey = SimplifyPrimaryKey<Entity, PrimaryKeyNames>, Value = Omit<Entity, PrimaryKeyNames[number] & keyof Entity>, InsertType = InsertEntity<Entity, AutoGeneratedKeys<Schema>>> implements ITabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey, InsertType> {
|
|
19
27
|
protected schema: Schema;
|
|
20
28
|
protected primaryKeyNames: PrimaryKeyNames;
|
|
21
29
|
/** Event emitter for repository events */
|
|
@@ -23,14 +31,21 @@ export declare abstract class TabularRepository<Schema extends DataPortSchemaObj
|
|
|
23
31
|
protected indexes: Array<keyof Entity>[];
|
|
24
32
|
protected primaryKeySchema: DataPortSchemaObject;
|
|
25
33
|
protected valueSchema: DataPortSchemaObject;
|
|
26
|
-
/**
|
|
27
|
-
|
|
34
|
+
/** Name of the auto-generated key column (only first primary key column can be auto-generated) */
|
|
35
|
+
protected autoGeneratedKeyName: keyof Entity | null;
|
|
36
|
+
/** Strategy for generating the auto-generated key */
|
|
37
|
+
protected autoGeneratedKeyStrategy: KeyGenerationStrategy | null;
|
|
38
|
+
/** How to handle client-provided values for auto-generated keys */
|
|
39
|
+
protected clientProvidedKeys: ClientProvidedKeysOption;
|
|
40
|
+
/**
|
|
41
|
+
* Creates a new BaseTabularStorage instance
|
|
28
42
|
* @param schema - Schema defining the structure of the entity
|
|
29
43
|
* @param primaryKeyNames - Array of property names that form the primary key
|
|
30
44
|
* @param indexes - Array of columns or column arrays to make searchable. Each string or single column creates a single-column index,
|
|
31
45
|
* while each array creates a compound index with columns in the specified order.
|
|
46
|
+
* @param clientProvidedKeys - How to handle client-provided values for auto-generated keys
|
|
32
47
|
*/
|
|
33
|
-
constructor(schema: Schema, primaryKeyNames: PrimaryKeyNames, indexes?: readonly (keyof Entity | readonly (keyof Entity)[])[]);
|
|
48
|
+
constructor(schema: Schema, primaryKeyNames: PrimaryKeyNames, indexes?: readonly (keyof Entity | readonly (keyof Entity)[])[], clientProvidedKeys?: ClientProvidedKeysOption);
|
|
34
49
|
protected filterCompoundKeys(primaryKey: Array<keyof Entity>, potentialKeys: Array<keyof Entity>[]): Array<keyof Entity>[];
|
|
35
50
|
/**
|
|
36
51
|
* Adds an event listener for a specific event
|
|
@@ -65,8 +80,8 @@ export declare abstract class TabularRepository<Schema extends DataPortSchemaObj
|
|
|
65
80
|
/**
|
|
66
81
|
* Core abstract methods that must be implemented by concrete repositories
|
|
67
82
|
*/
|
|
68
|
-
abstract put(value:
|
|
69
|
-
abstract putBulk(values:
|
|
83
|
+
abstract put(value: InsertType): Promise<Entity>;
|
|
84
|
+
abstract putBulk(values: InsertType[]): Promise<Entity[]>;
|
|
70
85
|
abstract get(key: PrimaryKey): Promise<Entity | undefined>;
|
|
71
86
|
abstract delete(key: PrimaryKey | Entity): Promise<void>;
|
|
72
87
|
abstract getAll(): Promise<Entity[] | undefined>;
|
|
@@ -129,6 +144,33 @@ export declare abstract class TabularRepository<Schema extends DataPortSchemaObj
|
|
|
129
144
|
* @returns Array of column names representing the best matching index, or undefined if no suitable index is found
|
|
130
145
|
*/
|
|
131
146
|
findBestMatchingIndex(unorderedSearchKey: Array<keyof Entity>): Array<keyof Entity> | undefined;
|
|
147
|
+
/**
|
|
148
|
+
* Checks if this storage has an auto-generated key configured
|
|
149
|
+
* @returns true if an auto-generated key is configured
|
|
150
|
+
*/
|
|
151
|
+
protected hasAutoGeneratedKey(): boolean;
|
|
152
|
+
/**
|
|
153
|
+
* Checks if a given column name is the auto-generated key
|
|
154
|
+
* @param name - Column name to check
|
|
155
|
+
* @returns true if the column is the auto-generated key
|
|
156
|
+
*/
|
|
157
|
+
protected isAutoGeneratedKey(name: string): boolean;
|
|
158
|
+
/**
|
|
159
|
+
* Determines the generation strategy for an auto-generated key based on its type
|
|
160
|
+
* @param columnName - Name of the column
|
|
161
|
+
* @param typeDef - JSON Schema type definition for the column
|
|
162
|
+
* @returns The generation strategy to use
|
|
163
|
+
*/
|
|
164
|
+
protected determineGenerationStrategy(columnName: string, typeDef: any): KeyGenerationStrategy;
|
|
165
|
+
/**
|
|
166
|
+
* Generates a key value for client-side key generation
|
|
167
|
+
* Override in storage classes that generate keys client-side (InMemory, IndexedDB for UUIDs)
|
|
168
|
+
* SQL-based storages typically generate keys server-side
|
|
169
|
+
* @param columnName - Name of the column to generate a key for
|
|
170
|
+
* @param strategy - The generation strategy to use
|
|
171
|
+
* @returns The generated key value
|
|
172
|
+
*/
|
|
173
|
+
protected generateKeyValue(columnName: string, strategy: KeyGenerationStrategy): Promise<string | number> | string | number;
|
|
132
174
|
/**
|
|
133
175
|
* Sets up the database/storage for the repository.
|
|
134
176
|
* Must be called before using any other methods (except for in-memory implementations).
|
|
@@ -142,4 +184,4 @@ export declare abstract class TabularRepository<Schema extends DataPortSchemaObj
|
|
|
142
184
|
[Symbol.asyncDispose](): Promise<void>;
|
|
143
185
|
[Symbol.dispose](): void;
|
|
144
186
|
}
|
|
145
|
-
//# sourceMappingURL=
|
|
187
|
+
//# sourceMappingURL=BaseTabularStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseTabularStorage.d.ts","sourceRoot":"","sources":["../../src/tabular/BaseTabularStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,33 +3,34 @@
|
|
|
3
3
|
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { DataPortSchemaObject, FromSchema } from "@workglow/util";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
export declare const CACHED_TABULAR_REPOSITORY: import("@workglow/util").ServiceToken<
|
|
6
|
+
import { DataPortSchemaObject, FromSchema, TypedArraySchemaOptions } from "@workglow/util";
|
|
7
|
+
import { BaseTabularStorage, ClientProvidedKeysOption } from "./BaseTabularStorage";
|
|
8
|
+
import { AnyTabularStorage, AutoGeneratedKeys, DeleteSearchCriteria, InsertEntity, ITabularStorage, SimplifyPrimaryKey, TabularSubscribeOptions } from "./ITabularStorage";
|
|
9
|
+
export declare const CACHED_TABULAR_REPOSITORY: import("@workglow/util").ServiceToken<AnyTabularStorage>;
|
|
10
10
|
/**
|
|
11
11
|
* A tabular repository wrapper that adds caching layer to a durable repository.
|
|
12
|
-
* Uses
|
|
12
|
+
* Uses InMemoryTabularStorage or SharedInMemoryTabularStorage as a cache
|
|
13
13
|
* for faster access to frequently used data.
|
|
14
14
|
*
|
|
15
15
|
* @template Schema - The schema definition for the entity using JSON Schema
|
|
16
16
|
* @template PrimaryKeyNames - Array of property names that form the primary key
|
|
17
17
|
*/
|
|
18
|
-
export declare class
|
|
19
|
-
readonly cache:
|
|
18
|
+
export declare class CachedTabularStorage<Schema extends DataPortSchemaObject, PrimaryKeyNames extends ReadonlyArray<keyof Schema["properties"]>, Entity = FromSchema<Schema, TypedArraySchemaOptions>, PrimaryKey = SimplifyPrimaryKey<Entity, PrimaryKeyNames>, Value = Omit<Entity, PrimaryKeyNames[number] & keyof Entity>, InsertType extends InsertEntity<Entity, AutoGeneratedKeys<Schema>> = InsertEntity<Entity, AutoGeneratedKeys<Schema>>> extends BaseTabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey, Value, InsertType> {
|
|
19
|
+
readonly cache: ITabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey>;
|
|
20
20
|
private durable;
|
|
21
21
|
private cacheInitialized;
|
|
22
22
|
/**
|
|
23
|
-
* Creates a new
|
|
23
|
+
* Creates a new CachedTabularStorage instance
|
|
24
24
|
* @param durable - The durable repository to use as the source of truth
|
|
25
|
-
* @param cache - Optional cache repository (
|
|
26
|
-
* If not provided, a new
|
|
25
|
+
* @param cache - Optional cache repository (InMemoryTabularStorage or SharedInMemoryTabularStorage).
|
|
26
|
+
* If not provided, a new InMemoryTabularStorage will be created.
|
|
27
27
|
* @param schema - Schema defining the structure of the entity
|
|
28
28
|
* @param primaryKeyNames - Array of property names that form the primary key
|
|
29
29
|
* @param indexes - Array of columns or column arrays to make searchable. Each string or single column creates a single-column index,
|
|
30
30
|
* while each array creates a compound index with columns in the specified order.
|
|
31
|
+
* @param clientProvidedKeys - How to handle client-provided values for auto-generated keys
|
|
31
32
|
*/
|
|
32
|
-
constructor(durable:
|
|
33
|
+
constructor(durable: ITabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey>, cache?: ITabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey>, schema?: Schema, primaryKeyNames?: PrimaryKeyNames, indexes?: readonly (keyof Entity | readonly (keyof Entity)[])[], clientProvidedKeys?: ClientProvidedKeysOption);
|
|
33
34
|
/**
|
|
34
35
|
* Sets up event forwarding from cache and durable repositories
|
|
35
36
|
*/
|
|
@@ -44,14 +45,14 @@ export declare class CachedTabularRepository<Schema extends DataPortSchemaObject
|
|
|
44
45
|
* @returns The stored entity
|
|
45
46
|
* @emits 'put' event with the stored entity when successful
|
|
46
47
|
*/
|
|
47
|
-
put(value:
|
|
48
|
+
put(value: InsertType): Promise<Entity>;
|
|
48
49
|
/**
|
|
49
50
|
* Stores multiple key-value pairs in both cache and durable repository
|
|
50
51
|
* @param values - Array of combined objects to store
|
|
51
52
|
* @returns Array of stored entities
|
|
52
53
|
* @emits 'put' event for each value stored
|
|
53
54
|
*/
|
|
54
|
-
putBulk(values:
|
|
55
|
+
putBulk(values: InsertType[]): Promise<Entity[]>;
|
|
55
56
|
/**
|
|
56
57
|
* Retrieves a value by its key, checking cache first, then durable repository
|
|
57
58
|
* @param key - The primary key object to look up
|
|
@@ -117,4 +118,4 @@ export declare class CachedTabularRepository<Schema extends DataPortSchemaObject
|
|
|
117
118
|
*/
|
|
118
119
|
destroy(): void;
|
|
119
120
|
}
|
|
120
|
-
//# sourceMappingURL=
|
|
121
|
+
//# sourceMappingURL=CachedTabularStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CachedTabularStorage.d.ts","sourceRoot":"","sources":["../../src/tabular/CachedTabularStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { DataPortSchemaObject, FromSchema } from "@workglow/util";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
export declare const FS_FOLDER_TABULAR_REPOSITORY: import("@workglow/util").ServiceToken<
|
|
6
|
+
import { DataPortSchemaObject, FromSchema, TypedArraySchemaOptions } from "@workglow/util";
|
|
7
|
+
import { BaseTabularStorage, ClientProvidedKeysOption, KeyGenerationStrategy } from "./BaseTabularStorage";
|
|
8
|
+
import { AnyTabularStorage, AutoGeneratedKeys, DeleteSearchCriteria, InsertEntity, SimplifyPrimaryKey, TabularChangePayload, TabularSubscribeOptions } from "./ITabularStorage";
|
|
9
|
+
export declare const FS_FOLDER_TABULAR_REPOSITORY: import("@workglow/util").ServiceToken<AnyTabularStorage>;
|
|
10
10
|
/**
|
|
11
11
|
* A tabular repository implementation that uses the filesystem for storage.
|
|
12
12
|
* Each row is stored as a separate JSON file in the specified directory.
|
|
@@ -14,37 +14,47 @@ export declare const FS_FOLDER_TABULAR_REPOSITORY: import("@workglow/util").Serv
|
|
|
14
14
|
* @template Schema - The schema definition for the entity
|
|
15
15
|
* @template PrimaryKeyNames - Array of property names that form the primary key
|
|
16
16
|
*/
|
|
17
|
-
export declare class
|
|
17
|
+
export declare class FsFolderTabularStorage<Schema extends DataPortSchemaObject, PrimaryKeyNames extends ReadonlyArray<keyof Schema["properties"]>, Entity = FromSchema<Schema, TypedArraySchemaOptions>, PrimaryKey = SimplifyPrimaryKey<Entity, PrimaryKeyNames>, Value = Omit<Entity, PrimaryKeyNames[number] & keyof Entity>, InsertType = InsertEntity<Entity, AutoGeneratedKeys<Schema>>> extends BaseTabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey, Value, InsertType> {
|
|
18
18
|
private folderPath;
|
|
19
|
+
/** Counter for auto-incrementing integer keys */
|
|
20
|
+
private autoIncrementCounter;
|
|
19
21
|
/** Shared polling subscription manager */
|
|
20
22
|
private pollingManager;
|
|
21
23
|
/**
|
|
22
|
-
* Creates a new
|
|
24
|
+
* Creates a new FsFolderTabularStorage instance.
|
|
23
25
|
*
|
|
24
26
|
* @param folderPath - The directory path where the JSON files will be stored
|
|
25
27
|
* @param schema - Schema defining the structure of the entity
|
|
26
28
|
* @param primaryKeyNames - Array of property names that form the primary key
|
|
27
29
|
* @param indexes - Note: indexes are not supported in this implementation.
|
|
30
|
+
* @param clientProvidedKeys - How to handle client-provided values for auto-generated keys
|
|
28
31
|
*/
|
|
29
|
-
constructor(folderPath: string, schema: Schema, primaryKeyNames: PrimaryKeyNames, indexes?: readonly (keyof Entity | readonly (keyof Entity)[])[]);
|
|
32
|
+
constructor(folderPath: string, schema: Schema, primaryKeyNames: PrimaryKeyNames, indexes?: readonly (keyof Entity | readonly (keyof Entity)[])[], clientProvidedKeys?: ClientProvidedKeysOption);
|
|
30
33
|
/**
|
|
31
34
|
* Sets up the directory for the repository (creates directory)
|
|
32
35
|
*/
|
|
33
36
|
setupDirectory(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Generates a key value for auto-generated keys
|
|
39
|
+
* @param columnName - Name of the column to generate a key for
|
|
40
|
+
* @param strategy - The generation strategy to use
|
|
41
|
+
* @returns The generated key value
|
|
42
|
+
*/
|
|
43
|
+
protected generateKeyValue(columnName: string, strategy: KeyGenerationStrategy): string | number;
|
|
34
44
|
/**
|
|
35
45
|
* Stores a row in the repository
|
|
36
|
-
* @param entity - The entity to store
|
|
46
|
+
* @param entity - The entity to store (may be missing auto-generated keys)
|
|
37
47
|
* @returns The stored entity
|
|
38
48
|
* @emits 'put' event when successful
|
|
39
49
|
*/
|
|
40
|
-
put(entity:
|
|
50
|
+
put(entity: InsertType): Promise<Entity>;
|
|
41
51
|
/**
|
|
42
52
|
* Stores multiple rows in the repository in a bulk operation
|
|
43
|
-
* @param entities - Array of entities to store
|
|
53
|
+
* @param entities - Array of entities to store (may be missing auto-generated keys)
|
|
44
54
|
* @returns Array of stored entities
|
|
45
55
|
* @emits 'put' event for each entity stored
|
|
46
56
|
*/
|
|
47
|
-
putBulk(entities:
|
|
57
|
+
putBulk(entities: InsertType[]): Promise<Entity[]>;
|
|
48
58
|
/**
|
|
49
59
|
* Retrieves a value by its key
|
|
50
60
|
* @param key - The primary key object to look up
|
|
@@ -110,4 +120,4 @@ export declare class FsFolderTabularRepository<Schema extends DataPortSchemaObje
|
|
|
110
120
|
*/
|
|
111
121
|
destroy(): void;
|
|
112
122
|
}
|
|
113
|
-
//# sourceMappingURL=
|
|
123
|
+
//# sourceMappingURL=FsFolderTabularStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FsFolderTabularStorage.d.ts","sourceRoot":"","sources":["../../src/tabular/FsFolderTabularStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { DataPortSchemaObject, EventParameters, FromSchema } from "@workglow/util";
|
|
6
|
+
import { DataPortSchemaObject, EventParameters, FromSchema, TypedArraySchemaOptions } from "@workglow/util";
|
|
7
7
|
export type ValueOptionType = string | number | bigint | boolean | null | Uint8Array;
|
|
8
8
|
/**
|
|
9
9
|
* Type definitions for tabular repository events
|
|
@@ -37,7 +37,9 @@ export interface TabularSubscribeOptions {
|
|
|
37
37
|
/** Polling interval in milliseconds (used by implementations that rely on polling) */
|
|
38
38
|
readonly pollingIntervalMs?: number;
|
|
39
39
|
}
|
|
40
|
-
export type uuid4 = string
|
|
40
|
+
export type uuid4 = string & {
|
|
41
|
+
readonly __brand: "uuid4";
|
|
42
|
+
};
|
|
41
43
|
export type JSONValue = string | number | boolean | null | JSONValue[] | {
|
|
42
44
|
[key: string]: JSONValue;
|
|
43
45
|
};
|
|
@@ -73,6 +75,26 @@ export type DeleteSearchCriteria<Entity> = {
|
|
|
73
75
|
* Type guard to check if a value is a SearchCondition
|
|
74
76
|
*/
|
|
75
77
|
export declare function isSearchCondition<T>(value: unknown): value is SearchCondition<T>;
|
|
78
|
+
/**
|
|
79
|
+
* Helper type to compute PrimaryKey while deferring Entity resolution.
|
|
80
|
+
* Uses a conditional type to avoid forcing full Entity resolution at class definition time.
|
|
81
|
+
*
|
|
82
|
+
*/
|
|
83
|
+
export type SimplifyPrimaryKey<Entity, KeyName extends ReadonlyArray<keyof any>> = Entity extends any ? Pick<Entity, Extract<KeyName[number], keyof Entity>> : never;
|
|
84
|
+
/**
|
|
85
|
+
* Extracts property names marked as auto-generated from the schema.
|
|
86
|
+
* Properties with `x-auto-generated: true` are considered auto-generated.
|
|
87
|
+
*/
|
|
88
|
+
export type AutoGeneratedKeys<Schema extends DataPortSchemaObject> = {
|
|
89
|
+
[K in keyof Schema["properties"]]: Schema["properties"][K] extends {
|
|
90
|
+
"x-auto-generated": true;
|
|
91
|
+
} ? K : never;
|
|
92
|
+
}[keyof Schema["properties"]];
|
|
93
|
+
/**
|
|
94
|
+
* Entity type for insertion - auto-generated keys are optional.
|
|
95
|
+
* This allows clients to omit auto-generated keys when inserting entities.
|
|
96
|
+
*/
|
|
97
|
+
export type InsertEntity<Entity, AutoGenKeys> = Omit<Entity, AutoGenKeys & keyof Entity> & Partial<Pick<Entity, AutoGenKeys & keyof Entity>>;
|
|
76
98
|
/**
|
|
77
99
|
* Interface defining the contract for tabular storage repositories.
|
|
78
100
|
* Provides a flexible interface for storing and retrieving data with typed
|
|
@@ -81,9 +103,9 @@ export declare function isSearchCondition<T>(value: unknown): value is SearchCon
|
|
|
81
103
|
* @typeParam Schema - The schema definition for the entity using JSON Schema
|
|
82
104
|
* @typeParam PrimaryKeyNames - Array of property names that form the primary key
|
|
83
105
|
*/
|
|
84
|
-
export interface
|
|
85
|
-
put(value:
|
|
86
|
-
putBulk(values:
|
|
106
|
+
export interface ITabularStorage<Schema extends DataPortSchemaObject, PrimaryKeyNames extends ReadonlyArray<keyof Schema["properties"]>, Entity = FromSchema<Schema, TypedArraySchemaOptions>, PrimaryKey = SimplifyPrimaryKey<Entity, PrimaryKeyNames>, InsertType = InsertEntity<Entity, AutoGeneratedKeys<Schema>>> {
|
|
107
|
+
put(value: InsertType): Promise<Entity>;
|
|
108
|
+
putBulk(values: InsertType[]): Promise<Entity[]>;
|
|
87
109
|
get(key: PrimaryKey): Promise<Entity | undefined>;
|
|
88
110
|
delete(key: PrimaryKey | Entity): Promise<void>;
|
|
89
111
|
getAll(): Promise<Entity[] | undefined>;
|
|
@@ -128,4 +150,5 @@ export interface ITabularRepository<Schema extends DataPortSchemaObject, Primary
|
|
|
128
150
|
[Symbol.dispose](): void;
|
|
129
151
|
[Symbol.asyncDispose](): Promise<void>;
|
|
130
152
|
}
|
|
131
|
-
|
|
153
|
+
export type AnyTabularStorage = ITabularStorage<any, any, any, any, any>;
|
|
154
|
+
//# sourceMappingURL=ITabularStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITabularStorage.d.ts","sourceRoot":"","sources":["../../src/tabular/ITabularStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { DataPortSchemaObject, FromSchema } from "@workglow/util";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
export declare const MEMORY_TABULAR_REPOSITORY: import("@workglow/util").ServiceToken<
|
|
6
|
+
import { DataPortSchemaObject, FromSchema, TypedArraySchemaOptions } from "@workglow/util";
|
|
7
|
+
import { BaseTabularStorage, ClientProvidedKeysOption, KeyGenerationStrategy } from "./BaseTabularStorage";
|
|
8
|
+
import { AnyTabularStorage, AutoGeneratedKeys, DeleteSearchCriteria, InsertEntity, SimplifyPrimaryKey, TabularChangePayload, TabularSubscribeOptions } from "./ITabularStorage";
|
|
9
|
+
export declare const MEMORY_TABULAR_REPOSITORY: import("@workglow/util").ServiceToken<AnyTabularStorage>;
|
|
10
10
|
/**
|
|
11
11
|
* A generic in-memory key-value repository implementation.
|
|
12
12
|
* Provides a simple, non-persistent storage solution suitable for testing and caching scenarios.
|
|
@@ -14,35 +14,45 @@ export declare const MEMORY_TABULAR_REPOSITORY: import("@workglow/util").Service
|
|
|
14
14
|
* @template Schema - The schema definition for the entity using JSON Schema
|
|
15
15
|
* @template PrimaryKeyNames - Array of property names that form the primary key
|
|
16
16
|
*/
|
|
17
|
-
export declare class
|
|
17
|
+
export declare class InMemoryTabularStorage<Schema extends DataPortSchemaObject, PrimaryKeyNames extends ReadonlyArray<keyof Schema["properties"]>, Entity = FromSchema<Schema, TypedArraySchemaOptions>, PrimaryKey = SimplifyPrimaryKey<Entity, PrimaryKeyNames>, Value = Omit<Entity, PrimaryKeyNames[number] & keyof Entity>, InsertType extends InsertEntity<Entity, AutoGeneratedKeys<Schema>> = InsertEntity<Entity, AutoGeneratedKeys<Schema>>> extends BaseTabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey, Value, InsertType> {
|
|
18
18
|
/** Internal storage using a Map with fingerprint strings as keys */
|
|
19
19
|
values: Map<string, Entity>;
|
|
20
|
+
/** Counter for auto-incrementing integer keys */
|
|
21
|
+
private autoIncrementCounter;
|
|
20
22
|
/**
|
|
21
|
-
* Creates a new
|
|
23
|
+
* Creates a new InMemoryTabularStorage instance
|
|
22
24
|
* @param schema - Schema defining the structure of the entity
|
|
23
25
|
* @param primaryKeyNames - Array of property names that form the primary key
|
|
24
26
|
* @param indexes - Array of columns or column arrays to make searchable. Each string or single column creates a single-column index,
|
|
25
27
|
* while each array creates a compound index with columns in the specified order.
|
|
28
|
+
* @param clientProvidedKeys - How to handle client-provided values for auto-generated keys
|
|
26
29
|
*/
|
|
27
|
-
constructor(schema: Schema, primaryKeyNames: PrimaryKeyNames, indexes?: readonly (keyof Entity | readonly (keyof Entity)[])[]);
|
|
30
|
+
constructor(schema: Schema, primaryKeyNames: PrimaryKeyNames, indexes?: readonly (keyof Entity | readonly (keyof Entity)[])[], clientProvidedKeys?: ClientProvidedKeysOption);
|
|
28
31
|
/**
|
|
29
32
|
* Sets up the database for the repository (no-op for in-memory)
|
|
30
33
|
*/
|
|
31
34
|
setupDatabase(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Generates a key value for auto-generated keys
|
|
37
|
+
* @param columnName - Name of the column to generate a key for
|
|
38
|
+
* @param strategy - The generation strategy to use
|
|
39
|
+
* @returns The generated key value
|
|
40
|
+
*/
|
|
41
|
+
protected generateKeyValue(columnName: string, strategy: KeyGenerationStrategy): string | number;
|
|
32
42
|
/**
|
|
33
43
|
* Stores a key-value pair in the repository
|
|
34
|
-
* @param value - The combined object to store
|
|
35
|
-
* @returns The stored entity
|
|
44
|
+
* @param value - The combined object to store (may be missing auto-generated keys)
|
|
45
|
+
* @returns The stored entity with all keys filled in
|
|
36
46
|
* @emits 'put' event with the stored entity when successful
|
|
37
47
|
*/
|
|
38
|
-
put(value:
|
|
48
|
+
put(value: InsertType): Promise<Entity>;
|
|
39
49
|
/**
|
|
40
50
|
* Stores multiple key-value pairs in the repository in a bulk operation
|
|
41
|
-
* @param values - Array of combined objects to store
|
|
42
|
-
* @returns Array of stored entities
|
|
51
|
+
* @param values - Array of combined objects to store (may be missing auto-generated keys)
|
|
52
|
+
* @returns Array of stored entities with all keys filled in
|
|
43
53
|
* @emits 'put' event for each value stored
|
|
44
54
|
*/
|
|
45
|
-
putBulk(values:
|
|
55
|
+
putBulk(values: InsertType[]): Promise<Entity[]>;
|
|
46
56
|
/**
|
|
47
57
|
* Retrieves a value by its key
|
|
48
58
|
* @param key - The primary key object to look up
|
|
@@ -99,4 +109,4 @@ export declare class InMemoryTabularRepository<Schema extends DataPortSchemaObje
|
|
|
99
109
|
*/
|
|
100
110
|
destroy(): void;
|
|
101
111
|
}
|
|
102
|
-
//# sourceMappingURL=
|
|
112
|
+
//# sourceMappingURL=InMemoryTabularStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryTabularStorage.d.ts","sourceRoot":"","sources":["../../src/tabular/InMemoryTabularStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,18 +3,18 @@
|
|
|
3
3
|
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { DataPortSchemaObject, FromSchema } from "@workglow/util";
|
|
6
|
+
import { DataPortSchemaObject, FromSchema, TypedArraySchemaOptions } from "@workglow/util";
|
|
7
7
|
import { MigrationOptions } from "../util/IndexedDbTable";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
export declare const IDB_TABULAR_REPOSITORY: import("@workglow/util").ServiceToken<
|
|
8
|
+
import { BaseTabularStorage, ClientProvidedKeysOption, KeyGenerationStrategy } from "./BaseTabularStorage";
|
|
9
|
+
import { AnyTabularStorage, AutoGeneratedKeys, DeleteSearchCriteria, InsertEntity, SimplifyPrimaryKey, TabularChangePayload, TabularSubscribeOptions } from "./ITabularStorage";
|
|
10
|
+
export declare const IDB_TABULAR_REPOSITORY: import("@workglow/util").ServiceToken<AnyTabularStorage>;
|
|
11
11
|
/**
|
|
12
12
|
* A tabular repository implementation using IndexedDB for browser-based storage.
|
|
13
13
|
*
|
|
14
14
|
* @template Schema - The schema definition for the entity
|
|
15
15
|
* @template PrimaryKeyNames - Array of property names that form the primary key
|
|
16
16
|
*/
|
|
17
|
-
export declare class
|
|
17
|
+
export declare class IndexedDbTabularStorage<Schema extends DataPortSchemaObject, PrimaryKeyNames extends ReadonlyArray<keyof Schema["properties"]>, Entity = FromSchema<Schema, TypedArraySchemaOptions>, PrimaryKey = SimplifyPrimaryKey<Entity, PrimaryKeyNames>, Value = Omit<Entity, PrimaryKeyNames[number] & keyof Entity>, InsertType extends InsertEntity<Entity, AutoGeneratedKeys<Schema>> = InsertEntity<Entity, AutoGeneratedKeys<Schema>>> extends BaseTabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey, Value, InsertType> {
|
|
18
18
|
table: string;
|
|
19
19
|
/** Promise that resolves to the IndexedDB database instance */
|
|
20
20
|
private db;
|
|
@@ -34,11 +34,12 @@ export declare class IndexedDbTabularRepository<Schema extends DataPortSchemaObj
|
|
|
34
34
|
* @param indexes - Array of columns or column arrays to make searchable. Each string or single column creates a single-column index,
|
|
35
35
|
* while each array creates a compound index with columns in the specified order.
|
|
36
36
|
* @param migrationOptions - Options for handling database schema migrations
|
|
37
|
+
* @param clientProvidedKeys - How to handle client-provided values for auto-generated keys
|
|
37
38
|
*/
|
|
38
39
|
constructor(table: string | undefined, schema: Schema, primaryKeyNames: PrimaryKeyNames, indexes?: readonly (keyof Entity | readonly (keyof Entity)[])[], migrationOptions?: MigrationOptions & {
|
|
39
40
|
readonly useBroadcastChannel?: boolean;
|
|
40
41
|
readonly backupPollingIntervalMs?: number;
|
|
41
|
-
});
|
|
42
|
+
}, clientProvidedKeys?: ClientProvidedKeysOption);
|
|
42
43
|
/**
|
|
43
44
|
* Internal method to get the database, setting it up if needed.
|
|
44
45
|
* This ensures lazy initialization of the database.
|
|
@@ -53,20 +54,28 @@ export declare class IndexedDbTabularRepository<Schema extends DataPortSchemaObj
|
|
|
53
54
|
* Internal method to perform the actual database setup
|
|
54
55
|
*/
|
|
55
56
|
private performSetup;
|
|
57
|
+
/**
|
|
58
|
+
* Generates a key value for UUID keys
|
|
59
|
+
* Integer autoincrement keys are handled by IndexedDB's autoIncrement
|
|
60
|
+
* @param columnName - Name of the column to generate a key for
|
|
61
|
+
* @param strategy - The generation strategy to use
|
|
62
|
+
* @returns The generated key value
|
|
63
|
+
*/
|
|
64
|
+
protected generateKeyValue(columnName: string, strategy: KeyGenerationStrategy): string | number;
|
|
56
65
|
/**
|
|
57
66
|
* Stores a row in the repository.
|
|
58
|
-
* @param record - The entity to store.
|
|
67
|
+
* @param record - The entity to store (may be missing auto-generated keys).
|
|
59
68
|
* @returns The stored entity
|
|
60
69
|
* @emits put - Emitted when the value is successfully stored
|
|
61
70
|
*/
|
|
62
|
-
put(record:
|
|
71
|
+
put(record: InsertType): Promise<Entity>;
|
|
63
72
|
/**
|
|
64
73
|
* Stores multiple rows in the repository in a bulk operation.
|
|
65
|
-
* @param records - Array of entities to store.
|
|
74
|
+
* @param records - Array of entities to store (may be missing auto-generated keys).
|
|
66
75
|
* @returns Array of stored entities
|
|
67
76
|
* @emits put - Emitted for each record successfully stored
|
|
68
77
|
*/
|
|
69
|
-
putBulk(records:
|
|
78
|
+
putBulk(records: InsertType[]): Promise<Entity[]>;
|
|
70
79
|
protected getPrimaryKeyAsOrderedArray(key: PrimaryKey): (string | number | boolean | Uint8Array<ArrayBufferLike> | null)[];
|
|
71
80
|
private getIndexedKey;
|
|
72
81
|
/**
|
|
@@ -136,4 +145,4 @@ export declare class IndexedDbTabularRepository<Schema extends DataPortSchemaObj
|
|
|
136
145
|
*/
|
|
137
146
|
destroy(): void;
|
|
138
147
|
}
|
|
139
|
-
//# sourceMappingURL=
|
|
148
|
+
//# sourceMappingURL=IndexedDbTabularStorage.d.ts.map
|