tinybase 9.4.0-beta.0 → 9.4.0-beta.2

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 (225) hide show
  1. package/@types/persisters/index.d.ts +4 -0
  2. package/@types/persisters/persister-durable-object-sql-storage/index.d.ts +9 -2
  3. package/@types/persisters/persister-durable-object-sql-storage/with-schemas/index.d.ts +9 -2
  4. package/@types/persisters/with-schemas/index.d.ts +4 -0
  5. package/@types/queries/index.d.ts +145 -7
  6. package/@types/queries/with-schemas/index.d.ts +157 -7
  7. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +7 -3
  8. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +7 -3
  9. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +9 -3
  10. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +9 -3
  11. package/@types/synchronizers/synchronizer-ws-server-simple/index.d.ts +6 -3
  12. package/@types/synchronizers/synchronizer-ws-server-simple/with-schemas/index.d.ts +6 -3
  13. package/index.js +315 -22
  14. package/min/index.js +1 -1
  15. package/min/index.js.gz +0 -0
  16. package/min/omni/index.js +1 -1
  17. package/min/omni/index.js.gz +0 -0
  18. package/min/omni/with-schemas/index.js +1 -1
  19. package/min/omni/with-schemas/index.js.gz +0 -0
  20. package/min/persisters/index.js +1 -1
  21. package/min/persisters/index.js.gz +0 -0
  22. package/min/persisters/persister-automerge/index.js +1 -1
  23. package/min/persisters/persister-automerge/index.js.gz +0 -0
  24. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  25. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  26. package/min/persisters/persister-browser/index.js +1 -1
  27. package/min/persisters/persister-browser/index.js.gz +0 -0
  28. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  29. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  30. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  31. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  32. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  33. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  34. package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
  35. package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
  36. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
  37. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
  38. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  39. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  40. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  41. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  42. package/min/persisters/persister-electric-sql/index.js +1 -1
  43. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  44. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  45. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  46. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  47. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  48. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  49. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  50. package/min/persisters/persister-file/index.js +1 -1
  51. package/min/persisters/persister-file/index.js.gz +0 -0
  52. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  53. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  54. package/min/persisters/persister-indexed-db/index.js +1 -1
  55. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  56. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  57. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  58. package/min/persisters/persister-libsql/index.js +1 -1
  59. package/min/persisters/persister-libsql/index.js.gz +0 -0
  60. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  61. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  62. package/min/persisters/persister-partykit-client/index.js +1 -1
  63. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  64. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  65. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  66. package/min/persisters/persister-pglite/index.js +1 -1
  67. package/min/persisters/persister-pglite/index.js.gz +0 -0
  68. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  69. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  70. package/min/persisters/persister-postgres/index.js +1 -1
  71. package/min/persisters/persister-postgres/index.js.gz +0 -0
  72. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  73. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  74. package/min/persisters/persister-powersync/index.js +1 -1
  75. package/min/persisters/persister-powersync/index.js.gz +0 -0
  76. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  77. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  78. package/min/persisters/persister-react-native-mmkv/index.js +1 -1
  79. package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
  80. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -1
  81. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
  82. package/min/persisters/persister-react-native-sqlite/index.js +1 -1
  83. package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
  84. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
  85. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
  86. package/min/persisters/persister-remote/index.js +1 -1
  87. package/min/persisters/persister-remote/index.js.gz +0 -0
  88. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  89. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  90. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  91. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  92. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  93. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  94. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  95. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  96. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  97. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  98. package/min/persisters/persister-sqlite3/index.js +1 -1
  99. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  100. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  101. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  102. package/min/persisters/persister-yjs/index.js +1 -1
  103. package/min/persisters/persister-yjs/index.js.gz +0 -0
  104. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  105. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  106. package/min/persisters/with-schemas/index.js +1 -1
  107. package/min/persisters/with-schemas/index.js.gz +0 -0
  108. package/min/queries/index.js +1 -1
  109. package/min/queries/index.js.gz +0 -0
  110. package/min/queries/with-schemas/index.js +1 -1
  111. package/min/queries/with-schemas/index.js.gz +0 -0
  112. package/min/synchronizers/index.js +1 -1
  113. package/min/synchronizers/index.js.gz +0 -0
  114. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  115. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  116. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  117. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  118. package/min/synchronizers/synchronizer-local/index.js +1 -1
  119. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  120. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  121. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  122. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  123. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  124. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  125. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  126. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  127. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  128. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  129. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  130. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  131. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  132. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  133. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  134. package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  135. package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
  136. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  137. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
  138. package/min/synchronizers/with-schemas/index.js +1 -1
  139. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  140. package/min/ui-react-inspector/index.js +1 -1
  141. package/min/ui-react-inspector/index.js.gz +0 -0
  142. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  143. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  144. package/min/ui-solid-inspector/index.js +1 -1
  145. package/min/ui-solid-inspector/index.js.gz +0 -0
  146. package/min/ui-solid-inspector/with-schemas/index.js +1 -1
  147. package/min/ui-solid-inspector/with-schemas/index.js.gz +0 -0
  148. package/min/ui-svelte-inspector/index.js +1 -1
  149. package/min/ui-svelte-inspector/index.js.gz +0 -0
  150. package/min/ui-svelte-inspector/with-schemas/index.js +1 -1
  151. package/min/ui-svelte-inspector/with-schemas/index.js.gz +0 -0
  152. package/min/with-schemas/index.js +1 -1
  153. package/min/with-schemas/index.js.gz +0 -0
  154. package/omni/index.js +730 -127
  155. package/omni/with-schemas/index.js +730 -127
  156. package/package.json +8 -4
  157. package/persisters/index.js +49 -10
  158. package/persisters/persister-automerge/index.js +29 -5
  159. package/persisters/persister-automerge/with-schemas/index.js +29 -5
  160. package/persisters/persister-browser/index.js +29 -5
  161. package/persisters/persister-browser/with-schemas/index.js +29 -5
  162. package/persisters/persister-cr-sqlite-wasm/index.js +29 -5
  163. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +29 -5
  164. package/persisters/persister-durable-object-sql-storage/index.js +44 -8
  165. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +44 -8
  166. package/persisters/persister-durable-object-storage/index.js +31 -5
  167. package/persisters/persister-durable-object-storage/with-schemas/index.js +31 -5
  168. package/persisters/persister-electric-sql/index.js +29 -5
  169. package/persisters/persister-electric-sql/with-schemas/index.js +29 -5
  170. package/persisters/persister-expo-sqlite/index.js +29 -5
  171. package/persisters/persister-expo-sqlite/with-schemas/index.js +29 -5
  172. package/persisters/persister-file/index.js +31 -5
  173. package/persisters/persister-file/with-schemas/index.js +31 -5
  174. package/persisters/persister-indexed-db/index.js +29 -5
  175. package/persisters/persister-indexed-db/with-schemas/index.js +29 -5
  176. package/persisters/persister-libsql/index.js +29 -5
  177. package/persisters/persister-libsql/with-schemas/index.js +29 -5
  178. package/persisters/persister-partykit-client/index.js +31 -5
  179. package/persisters/persister-partykit-client/with-schemas/index.js +31 -5
  180. package/persisters/persister-pglite/index.js +49 -10
  181. package/persisters/persister-pglite/with-schemas/index.js +49 -10
  182. package/persisters/persister-postgres/index.js +49 -10
  183. package/persisters/persister-postgres/with-schemas/index.js +49 -10
  184. package/persisters/persister-powersync/index.js +29 -5
  185. package/persisters/persister-powersync/with-schemas/index.js +29 -5
  186. package/persisters/persister-react-native-mmkv/index.js +31 -5
  187. package/persisters/persister-react-native-mmkv/with-schemas/index.js +31 -5
  188. package/persisters/persister-react-native-sqlite/index.js +29 -5
  189. package/persisters/persister-react-native-sqlite/with-schemas/index.js +29 -5
  190. package/persisters/persister-remote/index.js +31 -5
  191. package/persisters/persister-remote/with-schemas/index.js +31 -5
  192. package/persisters/persister-sqlite-bun/index.js +29 -5
  193. package/persisters/persister-sqlite-bun/with-schemas/index.js +29 -5
  194. package/persisters/persister-sqlite-wasm/index.js +29 -5
  195. package/persisters/persister-sqlite-wasm/with-schemas/index.js +29 -5
  196. package/persisters/persister-sqlite3/index.js +29 -5
  197. package/persisters/persister-sqlite3/with-schemas/index.js +29 -5
  198. package/persisters/persister-yjs/index.js +29 -5
  199. package/persisters/persister-yjs/with-schemas/index.js +29 -5
  200. package/persisters/with-schemas/index.js +49 -10
  201. package/queries/index.js +334 -22
  202. package/queries/with-schemas/index.js +334 -22
  203. package/readme.md +14 -14
  204. package/releases.md +84 -67
  205. package/synchronizers/index.js +31 -5
  206. package/synchronizers/synchronizer-broadcast-channel/index.js +39 -13
  207. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +39 -13
  208. package/synchronizers/synchronizer-local/index.js +31 -5
  209. package/synchronizers/synchronizer-local/with-schemas/index.js +31 -5
  210. package/synchronizers/synchronizer-ws-client/index.js +220 -61
  211. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +220 -61
  212. package/synchronizers/synchronizer-ws-server/index.js +253 -73
  213. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +253 -73
  214. package/synchronizers/synchronizer-ws-server-durable-object/index.js +88 -40
  215. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +88 -40
  216. package/synchronizers/synchronizer-ws-server-simple/index.js +184 -60
  217. package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +184 -60
  218. package/synchronizers/with-schemas/index.js +31 -5
  219. package/ui-react-inspector/index.js +29 -5
  220. package/ui-react-inspector/with-schemas/index.js +29 -5
  221. package/ui-solid-inspector/index.js +29 -5
  222. package/ui-solid-inspector/with-schemas/index.js +29 -5
  223. package/ui-svelte-inspector/index.js +29 -5
  224. package/ui-svelte-inspector/with-schemas/index.js +29 -5
  225. package/with-schemas/index.js +315 -22
@@ -826,11 +826,35 @@ const createCustomPersister = (
826
826
  initialContent,
827
827
  startSaveFirst = false,
828
828
  ) => {
829
- const [call1, call2] = startSaveFirst
830
- ? [startAutoSave, startAutoLoad]
831
- : [startAutoLoad, startAutoSave];
832
- await call1(initialContent);
833
- await call2(initialContent);
829
+ const [call1, call2, stop1, stop2] = startSaveFirst
830
+ ? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
831
+ : [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
832
+ const start1 = call1(initialContent);
833
+ const generation1 = startSaveFirst
834
+ ? autoSaveGeneration
835
+ : autoLoadGeneration;
836
+ await start1;
837
+ const start2 = call2(initialContent);
838
+ const generation2 = startSaveFirst
839
+ ? autoLoadGeneration
840
+ : autoSaveGeneration;
841
+ try {
842
+ await start2;
843
+ } catch (error) {
844
+ if (
845
+ generation2 ==
846
+ (startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
847
+ ) {
848
+ await tryCatchIgnore(stop2);
849
+ }
850
+ if (
851
+ generation1 ==
852
+ (startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
853
+ ) {
854
+ await tryCatchIgnore(stop1);
855
+ }
856
+ throw error;
857
+ }
834
858
  return persister;
835
859
  };
836
860
  const stopAutoPersisting = async (stopSaveFirst = false) => {
@@ -831,11 +831,35 @@ const createCustomPersister = (
831
831
  initialContent,
832
832
  startSaveFirst = false,
833
833
  ) => {
834
- const [call1, call2] = startSaveFirst
835
- ? [startAutoSave, startAutoLoad]
836
- : [startAutoLoad, startAutoSave];
837
- await call1(initialContent);
838
- await call2(initialContent);
834
+ const [call1, call2, stop1, stop2] = startSaveFirst
835
+ ? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
836
+ : [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
837
+ const start1 = call1(initialContent);
838
+ const generation1 = startSaveFirst
839
+ ? autoSaveGeneration
840
+ : autoLoadGeneration;
841
+ await start1;
842
+ const start2 = call2(initialContent);
843
+ const generation2 = startSaveFirst
844
+ ? autoLoadGeneration
845
+ : autoSaveGeneration;
846
+ try {
847
+ await start2;
848
+ } catch (error) {
849
+ if (
850
+ generation2 ==
851
+ (startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
852
+ ) {
853
+ await tryCatchIgnore(stop2);
854
+ }
855
+ if (
856
+ generation1 ==
857
+ (startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
858
+ ) {
859
+ await tryCatchIgnore(stop1);
860
+ }
861
+ throw error;
862
+ }
839
863
  return persister;
840
864
  };
841
865
  const stopAutoPersisting = async (stopSaveFirst = false) => {
@@ -831,11 +831,35 @@ const createCustomPersister = (
831
831
  initialContent,
832
832
  startSaveFirst = false,
833
833
  ) => {
834
- const [call1, call2] = startSaveFirst
835
- ? [startAutoSave, startAutoLoad]
836
- : [startAutoLoad, startAutoSave];
837
- await call1(initialContent);
838
- await call2(initialContent);
834
+ const [call1, call2, stop1, stop2] = startSaveFirst
835
+ ? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
836
+ : [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
837
+ const start1 = call1(initialContent);
838
+ const generation1 = startSaveFirst
839
+ ? autoSaveGeneration
840
+ : autoLoadGeneration;
841
+ await start1;
842
+ const start2 = call2(initialContent);
843
+ const generation2 = startSaveFirst
844
+ ? autoLoadGeneration
845
+ : autoSaveGeneration;
846
+ try {
847
+ await start2;
848
+ } catch (error) {
849
+ if (
850
+ generation2 ==
851
+ (startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
852
+ ) {
853
+ await tryCatchIgnore(stop2);
854
+ }
855
+ if (
856
+ generation1 ==
857
+ (startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
858
+ ) {
859
+ await tryCatchIgnore(stop1);
860
+ }
861
+ throw error;
862
+ }
839
863
  return persister;
840
864
  };
841
865
  const stopAutoPersisting = async (stopSaveFirst = false) => {
@@ -615,11 +615,35 @@ const createCustomPersister = (
615
615
  initialContent,
616
616
  startSaveFirst = false,
617
617
  ) => {
618
- const [call1, call2] = startSaveFirst
619
- ? [startAutoSave, startAutoLoad]
620
- : [startAutoLoad, startAutoSave];
621
- await call1(initialContent);
622
- await call2(initialContent);
618
+ const [call1, call2, stop1, stop2] = startSaveFirst
619
+ ? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
620
+ : [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
621
+ const start1 = call1(initialContent);
622
+ const generation1 = startSaveFirst
623
+ ? autoSaveGeneration
624
+ : autoLoadGeneration;
625
+ await start1;
626
+ const start2 = call2(initialContent);
627
+ const generation2 = startSaveFirst
628
+ ? autoLoadGeneration
629
+ : autoSaveGeneration;
630
+ try {
631
+ await start2;
632
+ } catch (error) {
633
+ if (
634
+ generation2 ==
635
+ (startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
636
+ ) {
637
+ await tryCatchIgnore(stop2);
638
+ }
639
+ if (
640
+ generation1 ==
641
+ (startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
642
+ ) {
643
+ await tryCatchIgnore(stop1);
644
+ }
645
+ throw error;
646
+ }
623
647
  return persister;
624
648
  };
625
649
  const stopAutoPersisting = async (stopSaveFirst = false) => {
@@ -615,11 +615,35 @@ const createCustomPersister = (
615
615
  initialContent,
616
616
  startSaveFirst = false,
617
617
  ) => {
618
- const [call1, call2] = startSaveFirst
619
- ? [startAutoSave, startAutoLoad]
620
- : [startAutoLoad, startAutoSave];
621
- await call1(initialContent);
622
- await call2(initialContent);
618
+ const [call1, call2, stop1, stop2] = startSaveFirst
619
+ ? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
620
+ : [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
621
+ const start1 = call1(initialContent);
622
+ const generation1 = startSaveFirst
623
+ ? autoSaveGeneration
624
+ : autoLoadGeneration;
625
+ await start1;
626
+ const start2 = call2(initialContent);
627
+ const generation2 = startSaveFirst
628
+ ? autoLoadGeneration
629
+ : autoSaveGeneration;
630
+ try {
631
+ await start2;
632
+ } catch (error) {
633
+ if (
634
+ generation2 ==
635
+ (startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
636
+ ) {
637
+ await tryCatchIgnore(stop2);
638
+ }
639
+ if (
640
+ generation1 ==
641
+ (startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
642
+ ) {
643
+ await tryCatchIgnore(stop1);
644
+ }
645
+ throw error;
646
+ }
623
647
  return persister;
624
648
  };
625
649
  const stopAutoPersisting = async (stopSaveFirst = false) => {
@@ -653,11 +653,35 @@ const createCustomPersister = (
653
653
  initialContent,
654
654
  startSaveFirst = false,
655
655
  ) => {
656
- const [call1, call2] = startSaveFirst
657
- ? [startAutoSave, startAutoLoad]
658
- : [startAutoLoad, startAutoSave];
659
- await call1(initialContent);
660
- await call2(initialContent);
656
+ const [call1, call2, stop1, stop2] = startSaveFirst
657
+ ? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
658
+ : [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
659
+ const start1 = call1(initialContent);
660
+ const generation1 = startSaveFirst
661
+ ? autoSaveGeneration
662
+ : autoLoadGeneration;
663
+ await start1;
664
+ const start2 = call2(initialContent);
665
+ const generation2 = startSaveFirst
666
+ ? autoLoadGeneration
667
+ : autoSaveGeneration;
668
+ try {
669
+ await start2;
670
+ } catch (error) {
671
+ if (
672
+ generation2 ==
673
+ (startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
674
+ ) {
675
+ await tryCatchIgnore(stop2);
676
+ }
677
+ if (
678
+ generation1 ==
679
+ (startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
680
+ ) {
681
+ await tryCatchIgnore(stop1);
682
+ }
683
+ throw error;
684
+ }
661
685
  return persister;
662
686
  };
663
687
  const stopAutoPersisting = async (stopSaveFirst = false) => {
@@ -1566,6 +1590,8 @@ const createTabularPersister = (
1566
1590
  const TABLE_CREATED = 'c';
1567
1591
  const DATA_CHANGED = 'd';
1568
1592
  const EVENT_REGEX = /^([cd]:)(.+)/;
1593
+ const SIMPLE_TABLE_NAME = /^[A-Za-z0-9_]+$/;
1594
+ const POSTGRES_IDENTIFIER_SIZE = 63;
1569
1595
  const listenerResourcesByThing = mapNew();
1570
1596
  const createCustomPostgreSqlPersister = (
1571
1597
  store,
@@ -1638,17 +1664,30 @@ const createCustomPostgreSqlPersister = (
1638
1664
  );
1639
1665
  const addDataChangedTriggers = (tableName, dataChangedFunction) =>
1640
1666
  promiseAll(
1641
- arrayMap([INSERT, DELETE, UPDATE], (action, newOrOldOrBoth) =>
1642
- createTrigger(
1667
+ arrayMap([INSERT, DELETE, UPDATE], (action, newOrOldOrBoth) => {
1668
+ const legacyTriggerId = arrayJoin(
1669
+ [TINYBASE, DATA_CHANGED, configHash, tableName, action],
1670
+ '_',
1671
+ );
1672
+ return createTrigger(
1643
1673
  OR_REPLACE,
1644
- escapeIds(TINYBASE, DATA_CHANGED, configHash, tableName, action),
1674
+ test(SIMPLE_TABLE_NAME, tableName) &&
1675
+ size(legacyTriggerId) <= POSTGRES_IDENTIFIER_SIZE
1676
+ ? escapeId(legacyTriggerId)
1677
+ : escapeIds(
1678
+ TINYBASE,
1679
+ DATA_CHANGED,
1680
+ configHash,
1681
+ action,
1682
+ EMPTY_STRING + getHash(tableName),
1683
+ ),
1645
1684
  `AFTER ${action} ON${escapeId(tableName)}FOR EACH ROW WHEN(${when(
1646
1685
  tableName,
1647
1686
  newOrOldOrBoth,
1648
1687
  )})`,
1649
1688
  dataChangedFunction,
1650
- ),
1651
- ),
1689
+ );
1690
+ }),
1652
1691
  );
1653
1692
  const dropFunctions = async (functionNames) => {
1654
1693
  if (!isEmpty(functionNames)) {