@sprucelabs/spruce-cli 17.1.11 → 17.1.14

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 (229) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/node_modules/@sprucelabs/data-stores/README.md +24 -0
  3. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/databaseNotConnected.schema.d.ts +3 -0
  4. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/databaseNotConnected.schema.js +23 -0
  5. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/duplicateKey.schema.d.ts +3 -0
  6. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/duplicateKey.schema.js +11 -0
  7. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/duplicateRecord.schema.d.ts +3 -0
  8. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/duplicateRecord.schema.js +40 -0
  9. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/failedToLoadStore.schema.d.ts +3 -0
  10. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/failedToLoadStore.schema.js +18 -0
  11. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/failedToLoadStores.schema.d.ts +3 -0
  12. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/failedToLoadStores.schema.js +19 -0
  13. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/indexExists.schema.d.ts +3 -0
  14. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/indexExists.schema.js +20 -0
  15. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/indexNotFound.schema.d.ts +3 -0
  16. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/indexNotFound.schema.js +20 -0
  17. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/invalidDatabaseName.schema.d.ts +3 -0
  18. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/invalidDatabaseName.schema.js +18 -0
  19. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/invalidDbConnectionString.schema.d.ts +3 -0
  20. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/invalidDbConnectionString.schema.js +11 -0
  21. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/invalidStore.schema copy.d.ts +3 -0
  22. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/invalidStore.schema copy.js +25 -0
  23. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/invalidStore.schema.d.ts +3 -0
  24. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/invalidStore.schema.js +11 -0
  25. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/invalidStoreName.schema.d.ts +3 -0
  26. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/invalidStoreName.schema.js +25 -0
  27. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/mongoIdMappingError.schema.d.ts +3 -0
  28. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/mongoIdMappingError.schema.js +11 -0
  29. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/record-not-found-query.schema.d.ts +3 -0
  30. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/record-not-found-query.schema.js +15 -0
  31. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/recordNotFound.schema.d.ts +3 -0
  32. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/recordNotFound.schema.js +30 -0
  33. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/scrambleNotConfigured.schema.d.ts +3 -0
  34. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/scrambleNotConfigured.schema.js +11 -0
  35. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/unableToConnectToDb.schema.d.ts +3 -0
  36. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/unableToConnectToDb.schema.js +11 -0
  37. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/unknownDatabaseError.schema.d.ts +3 -0
  38. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/unknownDatabaseError.schema.js +18 -0
  39. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/unknownError.schema.d.ts +3 -0
  40. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/unknownError.schema.js +11 -0
  41. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/unknownStoreError.schema.d.ts +3 -0
  42. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/dataStores/unknownStoreError.schema.js +27 -0
  43. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/errors.types.d.ts +383 -0
  44. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/errors.types.js +4 -0
  45. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/options.types.d.ts +58 -0
  46. package/node_modules/@sprucelabs/data-stores/build/.spruce/errors/options.types.js +2 -0
  47. package/node_modules/@sprucelabs/data-stores/build/.spruce/schemas/fields/fieldClassMap.d.ts +2 -0
  48. package/node_modules/@sprucelabs/data-stores/build/.spruce/schemas/fields/fieldClassMap.js +4 -0
  49. package/node_modules/@sprucelabs/data-stores/build/.spruce/schemas/fields/fields.types.d.ts +1 -0
  50. package/node_modules/@sprucelabs/data-stores/build/.spruce/schemas/fields/fields.types.js +2 -0
  51. package/node_modules/@sprucelabs/data-stores/build/.spruce/settings.json +22 -0
  52. package/node_modules/@sprucelabs/data-stores/build/constants.d.ts +1 -0
  53. package/node_modules/@sprucelabs/data-stores/build/constants.js +4 -0
  54. package/node_modules/@sprucelabs/data-stores/build/cursors/CursorPager.d.ts +29 -0
  55. package/node_modules/@sprucelabs/data-stores/build/cursors/CursorPager.js +129 -0
  56. package/node_modules/@sprucelabs/data-stores/build/cursors/CursorPagerFaker.d.ts +6 -0
  57. package/node_modules/@sprucelabs/data-stores/build/cursors/CursorPagerFaker.js +25 -0
  58. package/node_modules/@sprucelabs/data-stores/build/databases/MongoDatabase.d.ts +44 -0
  59. package/node_modules/@sprucelabs/data-stores/build/databases/MongoDatabase.js +432 -0
  60. package/node_modules/@sprucelabs/data-stores/build/databases/NeDbDatabase.d.ts +41 -0
  61. package/node_modules/@sprucelabs/data-stores/build/databases/NeDbDatabase.js +447 -0
  62. package/node_modules/@sprucelabs/data-stores/build/databases/mongo.types.d.ts +3163 -0
  63. package/node_modules/@sprucelabs/data-stores/build/databases/mongo.types.js +50 -0
  64. package/node_modules/@sprucelabs/data-stores/build/errors/SpruceError.d.ts +5 -0
  65. package/node_modules/@sprucelabs/data-stores/build/errors/SpruceError.js +103 -0
  66. package/node_modules/@sprucelabs/data-stores/build/errors/databaseNotConnected.builder.d.ts +15 -0
  67. package/node_modules/@sprucelabs/data-stores/build/errors/databaseNotConnected.builder.js +17 -0
  68. package/node_modules/@sprucelabs/data-stores/build/errors/duplicateKey.builder.d.ts +6 -0
  69. package/node_modules/@sprucelabs/data-stores/build/errors/duplicateKey.builder.js +8 -0
  70. package/node_modules/@sprucelabs/data-stores/build/errors/duplicateRecord.builder.d.ts +28 -0
  71. package/node_modules/@sprucelabs/data-stores/build/errors/duplicateRecord.builder.js +30 -0
  72. package/node_modules/@sprucelabs/data-stores/build/errors/failedToLoadStore.builder.d.ts +12 -0
  73. package/node_modules/@sprucelabs/data-stores/build/errors/failedToLoadStore.builder.js +14 -0
  74. package/node_modules/@sprucelabs/data-stores/build/errors/failedToLoadStores.builder.d.ts +16 -0
  75. package/node_modules/@sprucelabs/data-stores/build/errors/failedToLoadStores.builder.js +21 -0
  76. package/node_modules/@sprucelabs/data-stores/build/errors/indexExists.builder.d.ts +14 -0
  77. package/node_modules/@sprucelabs/data-stores/build/errors/indexExists.builder.js +16 -0
  78. package/node_modules/@sprucelabs/data-stores/build/errors/indexNotFound.builder.d.ts +14 -0
  79. package/node_modules/@sprucelabs/data-stores/build/errors/indexNotFound.builder.js +16 -0
  80. package/node_modules/@sprucelabs/data-stores/build/errors/invalidDatabaseName.builder.d.ts +12 -0
  81. package/node_modules/@sprucelabs/data-stores/build/errors/invalidDatabaseName.builder.js +14 -0
  82. package/node_modules/@sprucelabs/data-stores/build/errors/invalidDbConnectionString.builder.d.ts +7 -0
  83. package/node_modules/@sprucelabs/data-stores/build/errors/invalidDbConnectionString.builder.js +9 -0
  84. package/node_modules/@sprucelabs/data-stores/build/errors/invalidStore.builder.d.ts +6 -0
  85. package/node_modules/@sprucelabs/data-stores/build/errors/invalidStore.builder.js +8 -0
  86. package/node_modules/@sprucelabs/data-stores/build/errors/invalidStoreName.builder.d.ts +16 -0
  87. package/node_modules/@sprucelabs/data-stores/build/errors/invalidStoreName.builder.js +18 -0
  88. package/node_modules/@sprucelabs/data-stores/build/errors/mongoIdMappingError.builder.d.ts +7 -0
  89. package/node_modules/@sprucelabs/data-stores/build/errors/mongoIdMappingError.builder.js +12 -0
  90. package/node_modules/@sprucelabs/data-stores/build/errors/recordNotFound.builder.d.ts +31 -0
  91. package/node_modules/@sprucelabs/data-stores/build/errors/recordNotFound.builder.js +33 -0
  92. package/node_modules/@sprucelabs/data-stores/build/errors/scrambleNotConfigured.builder.d.ts +7 -0
  93. package/node_modules/@sprucelabs/data-stores/build/errors/scrambleNotConfigured.builder.js +12 -0
  94. package/node_modules/@sprucelabs/data-stores/build/errors/unableToConnectToDb.builder.d.ts +7 -0
  95. package/node_modules/@sprucelabs/data-stores/build/errors/unableToConnectToDb.builder.js +9 -0
  96. package/node_modules/@sprucelabs/data-stores/build/errors/unknownDatabaseError.builder.d.ts +12 -0
  97. package/node_modules/@sprucelabs/data-stores/build/errors/unknownDatabaseError.builder.js +14 -0
  98. package/node_modules/@sprucelabs/data-stores/build/errors/unknownError.builder.d.ts +6 -0
  99. package/node_modules/@sprucelabs/data-stores/build/errors/unknownError.builder.js +8 -0
  100. package/node_modules/@sprucelabs/data-stores/build/errors/unknownStoreError.builder.d.ts +19 -0
  101. package/node_modules/@sprucelabs/data-stores/build/errors/unknownStoreError.builder.js +21 -0
  102. package/node_modules/@sprucelabs/data-stores/build/esm/.spruce/errors/errors.types.d.ts +383 -0
  103. package/node_modules/@sprucelabs/data-stores/build/esm/.spruce/errors/errors.types.js +3 -0
  104. package/node_modules/@sprucelabs/data-stores/build/esm/.spruce/errors/options.types.d.ts +58 -0
  105. package/node_modules/@sprucelabs/data-stores/build/esm/.spruce/errors/options.types.js +1 -0
  106. package/node_modules/@sprucelabs/data-stores/build/esm/constants.d.ts +1 -0
  107. package/node_modules/@sprucelabs/data-stores/build/esm/constants.js +1 -0
  108. package/node_modules/@sprucelabs/data-stores/build/esm/cursors/CursorPager.d.ts +29 -0
  109. package/node_modules/@sprucelabs/data-stores/build/esm/cursors/CursorPager.js +134 -0
  110. package/node_modules/@sprucelabs/data-stores/build/esm/cursors/CursorPagerFaker.d.ts +6 -0
  111. package/node_modules/@sprucelabs/data-stores/build/esm/cursors/CursorPagerFaker.js +30 -0
  112. package/node_modules/@sprucelabs/data-stores/build/esm/databases/MongoDatabase.d.ts +44 -0
  113. package/node_modules/@sprucelabs/data-stores/build/esm/databases/MongoDatabase.js +476 -0
  114. package/node_modules/@sprucelabs/data-stores/build/esm/databases/NeDbDatabase.d.ts +41 -0
  115. package/node_modules/@sprucelabs/data-stores/build/esm/databases/NeDbDatabase.js +496 -0
  116. package/node_modules/@sprucelabs/data-stores/build/esm/databases/mongo.types.d.ts +3163 -0
  117. package/node_modules/@sprucelabs/data-stores/build/esm/databases/mongo.types.js +36 -0
  118. package/node_modules/@sprucelabs/data-stores/build/esm/errors/SpruceError.d.ts +5 -0
  119. package/node_modules/@sprucelabs/data-stores/build/esm/errors/SpruceError.js +97 -0
  120. package/node_modules/@sprucelabs/data-stores/build/esm/errors/databaseNotConnected.builder.d.ts +15 -0
  121. package/node_modules/@sprucelabs/data-stores/build/esm/errors/databaseNotConnected.builder.js +15 -0
  122. package/node_modules/@sprucelabs/data-stores/build/esm/errors/duplicateKey.builder.d.ts +6 -0
  123. package/node_modules/@sprucelabs/data-stores/build/esm/errors/duplicateKey.builder.js +6 -0
  124. package/node_modules/@sprucelabs/data-stores/build/esm/errors/duplicateRecord.builder.d.ts +28 -0
  125. package/node_modules/@sprucelabs/data-stores/build/esm/errors/duplicateRecord.builder.js +28 -0
  126. package/node_modules/@sprucelabs/data-stores/build/esm/errors/failedToLoadStore.builder.d.ts +12 -0
  127. package/node_modules/@sprucelabs/data-stores/build/esm/errors/failedToLoadStore.builder.js +12 -0
  128. package/node_modules/@sprucelabs/data-stores/build/esm/errors/failedToLoadStores.builder.d.ts +16 -0
  129. package/node_modules/@sprucelabs/data-stores/build/esm/errors/failedToLoadStores.builder.js +19 -0
  130. package/node_modules/@sprucelabs/data-stores/build/esm/errors/indexExists.builder.d.ts +14 -0
  131. package/node_modules/@sprucelabs/data-stores/build/esm/errors/indexExists.builder.js +14 -0
  132. package/node_modules/@sprucelabs/data-stores/build/esm/errors/indexNotFound.builder.d.ts +14 -0
  133. package/node_modules/@sprucelabs/data-stores/build/esm/errors/indexNotFound.builder.js +14 -0
  134. package/node_modules/@sprucelabs/data-stores/build/esm/errors/invalidDatabaseName.builder.d.ts +12 -0
  135. package/node_modules/@sprucelabs/data-stores/build/esm/errors/invalidDatabaseName.builder.js +12 -0
  136. package/node_modules/@sprucelabs/data-stores/build/esm/errors/invalidDbConnectionString.builder.d.ts +7 -0
  137. package/node_modules/@sprucelabs/data-stores/build/esm/errors/invalidDbConnectionString.builder.js +7 -0
  138. package/node_modules/@sprucelabs/data-stores/build/esm/errors/invalidStore.builder.d.ts +6 -0
  139. package/node_modules/@sprucelabs/data-stores/build/esm/errors/invalidStore.builder.js +6 -0
  140. package/node_modules/@sprucelabs/data-stores/build/esm/errors/invalidStoreName.builder.d.ts +16 -0
  141. package/node_modules/@sprucelabs/data-stores/build/esm/errors/invalidStoreName.builder.js +16 -0
  142. package/node_modules/@sprucelabs/data-stores/build/esm/errors/mongoIdMappingError.builder.d.ts +7 -0
  143. package/node_modules/@sprucelabs/data-stores/build/esm/errors/mongoIdMappingError.builder.js +10 -0
  144. package/node_modules/@sprucelabs/data-stores/build/esm/errors/recordNotFound.builder.d.ts +31 -0
  145. package/node_modules/@sprucelabs/data-stores/build/esm/errors/recordNotFound.builder.js +31 -0
  146. package/node_modules/@sprucelabs/data-stores/build/esm/errors/scrambleNotConfigured.builder.d.ts +7 -0
  147. package/node_modules/@sprucelabs/data-stores/build/esm/errors/scrambleNotConfigured.builder.js +10 -0
  148. package/node_modules/@sprucelabs/data-stores/build/esm/errors/unableToConnectToDb.builder.d.ts +7 -0
  149. package/node_modules/@sprucelabs/data-stores/build/esm/errors/unableToConnectToDb.builder.js +7 -0
  150. package/node_modules/@sprucelabs/data-stores/build/esm/errors/unknownDatabaseError.builder.d.ts +12 -0
  151. package/node_modules/@sprucelabs/data-stores/build/esm/errors/unknownDatabaseError.builder.js +12 -0
  152. package/node_modules/@sprucelabs/data-stores/build/esm/errors/unknownError.builder.d.ts +6 -0
  153. package/node_modules/@sprucelabs/data-stores/build/esm/errors/unknownError.builder.js +6 -0
  154. package/node_modules/@sprucelabs/data-stores/build/esm/errors/unknownStoreError.builder.d.ts +19 -0
  155. package/node_modules/@sprucelabs/data-stores/build/esm/errors/unknownStoreError.builder.js +19 -0
  156. package/node_modules/@sprucelabs/data-stores/build/esm/factories/DatabaseFactory.d.ts +10 -0
  157. package/node_modules/@sprucelabs/data-stores/build/esm/factories/DatabaseFactory.js +32 -0
  158. package/node_modules/@sprucelabs/data-stores/build/esm/factories/StoreFactory.d.ts +25 -0
  159. package/node_modules/@sprucelabs/data-stores/build/esm/factories/StoreFactory.js +72 -0
  160. package/node_modules/@sprucelabs/data-stores/build/esm/fixtures/DatabaseFixture.d.ts +22 -0
  161. package/node_modules/@sprucelabs/data-stores/build/esm/fixtures/DatabaseFixture.js +99 -0
  162. package/node_modules/@sprucelabs/data-stores/build/esm/fixtures/StoreFixture.d.ts +5 -0
  163. package/node_modules/@sprucelabs/data-stores/build/esm/fixtures/StoreFixture.js +25 -0
  164. package/node_modules/@sprucelabs/data-stores/build/esm/index.d.ts +21 -0
  165. package/node_modules/@sprucelabs/data-stores/build/esm/index.js +21 -0
  166. package/node_modules/@sprucelabs/data-stores/build/esm/loaders/StoreLoader.d.ts +25 -0
  167. package/node_modules/@sprucelabs/data-stores/build/esm/loaders/StoreLoader.js +120 -0
  168. package/node_modules/@sprucelabs/data-stores/build/esm/mutexers/AbstractMutexer.d.ts +6 -0
  169. package/node_modules/@sprucelabs/data-stores/build/esm/mutexers/AbstractMutexer.js +56 -0
  170. package/node_modules/@sprucelabs/data-stores/build/esm/stores/AbstractStore.d.ts +48 -0
  171. package/node_modules/@sprucelabs/data-stores/build/esm/stores/AbstractStore.js +293 -0
  172. package/node_modules/@sprucelabs/data-stores/build/esm/tests/AbstractDatabaseTest.d.ts +12 -0
  173. package/node_modules/@sprucelabs/data-stores/build/esm/tests/AbstractDatabaseTest.js +54 -0
  174. package/node_modules/@sprucelabs/data-stores/build/esm/types/database.types.d.ts +29 -0
  175. package/node_modules/@sprucelabs/data-stores/build/esm/types/database.types.js +1 -0
  176. package/node_modules/@sprucelabs/data-stores/build/esm/types/query.types.d.ts +29 -0
  177. package/node_modules/@sprucelabs/data-stores/build/esm/types/query.types.js +2 -0
  178. package/node_modules/@sprucelabs/data-stores/build/esm/types/stores.types.d.ts +24 -0
  179. package/node_modules/@sprucelabs/data-stores/build/esm/types/stores.types.js +10 -0
  180. package/node_modules/@sprucelabs/data-stores/build/esm/utilities/error.utility.d.ts +5 -0
  181. package/node_modules/@sprucelabs/data-stores/build/esm/utilities/error.utility.js +23 -0
  182. package/node_modules/@sprucelabs/data-stores/build/esm/utilities/generateId.d.ts +1 -0
  183. package/node_modules/@sprucelabs/data-stores/build/esm/utilities/generateId.js +4 -0
  184. package/node_modules/@sprucelabs/data-stores/build/esm/utilities/generateIdDeprecated.d.ts +6 -0
  185. package/node_modules/@sprucelabs/data-stores/build/esm/utilities/generateIdDeprecated.js +6 -0
  186. package/node_modules/@sprucelabs/data-stores/build/esm/utilities/mongo.utility.d.ts +12 -0
  187. package/node_modules/@sprucelabs/data-stores/build/esm/utilities/mongo.utility.js +104 -0
  188. package/node_modules/@sprucelabs/data-stores/build/factories/DatabaseFactory.d.ts +10 -0
  189. package/node_modules/@sprucelabs/data-stores/build/factories/DatabaseFactory.js +38 -0
  190. package/node_modules/@sprucelabs/data-stores/build/factories/StoreFactory.d.ts +25 -0
  191. package/node_modules/@sprucelabs/data-stores/build/factories/StoreFactory.js +65 -0
  192. package/node_modules/@sprucelabs/data-stores/build/fixtures/DatabaseFixture.d.ts +22 -0
  193. package/node_modules/@sprucelabs/data-stores/build/fixtures/DatabaseFixture.js +86 -0
  194. package/node_modules/@sprucelabs/data-stores/build/fixtures/StoreFixture.d.ts +5 -0
  195. package/node_modules/@sprucelabs/data-stores/build/fixtures/StoreFixture.js +20 -0
  196. package/node_modules/@sprucelabs/data-stores/build/index.d.ts +21 -0
  197. package/node_modules/@sprucelabs/data-stores/build/index.js +53 -0
  198. package/node_modules/@sprucelabs/data-stores/build/loaders/StoreLoader.d.ts +25 -0
  199. package/node_modules/@sprucelabs/data-stores/build/loaders/StoreLoader.js +107 -0
  200. package/node_modules/@sprucelabs/data-stores/build/mutexers/AbstractMutexer.d.ts +6 -0
  201. package/node_modules/@sprucelabs/data-stores/build/mutexers/AbstractMutexer.js +46 -0
  202. package/node_modules/@sprucelabs/data-stores/build/stores/AbstractStore.d.ts +48 -0
  203. package/node_modules/@sprucelabs/data-stores/build/stores/AbstractStore.js +285 -0
  204. package/node_modules/@sprucelabs/data-stores/build/tests/AbstractDatabaseTest.d.ts +12 -0
  205. package/node_modules/@sprucelabs/data-stores/build/tests/AbstractDatabaseTest.js +37 -0
  206. package/node_modules/@sprucelabs/data-stores/build/types/database.types.d.ts +29 -0
  207. package/node_modules/@sprucelabs/data-stores/build/types/database.types.js +2 -0
  208. package/node_modules/@sprucelabs/data-stores/build/types/query.types.d.ts +29 -0
  209. package/node_modules/@sprucelabs/data-stores/build/types/query.types.js +3 -0
  210. package/node_modules/@sprucelabs/data-stores/build/types/stores.types.d.ts +24 -0
  211. package/node_modules/@sprucelabs/data-stores/build/types/stores.types.js +13 -0
  212. package/node_modules/@sprucelabs/data-stores/build/utilities/error.utility.d.ts +5 -0
  213. package/node_modules/@sprucelabs/data-stores/build/utilities/error.utility.js +28 -0
  214. package/node_modules/@sprucelabs/data-stores/build/utilities/generateId.d.ts +1 -0
  215. package/node_modules/@sprucelabs/data-stores/build/utilities/generateId.js +7 -0
  216. package/node_modules/@sprucelabs/data-stores/build/utilities/generateIdDeprecated.d.ts +6 -0
  217. package/node_modules/@sprucelabs/data-stores/build/utilities/generateIdDeprecated.js +11 -0
  218. package/node_modules/@sprucelabs/data-stores/build/utilities/mongo.utility.d.ts +12 -0
  219. package/node_modules/@sprucelabs/data-stores/build/utilities/mongo.utility.js +109 -0
  220. package/node_modules/@sprucelabs/data-stores/node_modules/globby/gitignore.js +120 -0
  221. package/node_modules/@sprucelabs/data-stores/node_modules/globby/index.d.ts +186 -0
  222. package/node_modules/@sprucelabs/data-stores/node_modules/globby/index.js +181 -0
  223. package/node_modules/@sprucelabs/data-stores/node_modules/globby/license +9 -0
  224. package/node_modules/@sprucelabs/data-stores/node_modules/globby/package.json +82 -0
  225. package/node_modules/@sprucelabs/data-stores/node_modules/globby/readme.md +170 -0
  226. package/node_modules/@sprucelabs/data-stores/node_modules/globby/stream-utils.js +46 -0
  227. package/node_modules/@sprucelabs/data-stores/package.json +144 -0
  228. package/node_modules/@sprucelabs/data-stores/tsconfig.json +39 -0
  229. package/package.json +27 -27
@@ -0,0 +1,496 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __rest = (this && this.__rest) || function (s, e) {
11
+ var t = {};
12
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
13
+ t[p] = s[p];
14
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
15
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
16
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
17
+ t[p[i]] = s[p[i]];
18
+ }
19
+ return t;
20
+ };
21
+ var _a;
22
+ import dotenv from 'dotenv';
23
+ import differenceWith from 'lodash/differenceWith.js';
24
+ import get from 'lodash/get.js';
25
+ import isEqual from 'lodash/isEqual.js';
26
+ import isObject from 'lodash/isObject.js';
27
+ import uniqBy from 'lodash/uniqBy.js';
28
+ import Datastore from 'nedb';
29
+ import SpruceError from '../errors/SpruceError.js';
30
+ import AbstractMutexer from '../mutexers/AbstractMutexer.js';
31
+ import generateId from '../utilities/generateId.js';
32
+ import mongoUtil from '../utilities/mongo.utility.js';
33
+ dotenv.config();
34
+ const NULL_PLACEHOLDER = '_____NULL_____';
35
+ const UNDEFINED_PLACEHOLDER = '_____UNDEFINED_____';
36
+ const SHOULD_SIMULATE_SLOW_QUERIES = process.env.SHOULD_SIMULATE_SLOW_QUERIES === 'true';
37
+ const SLOW_QUERY_MAX_RANDOM_DELAY_MS = parseInt(`${(_a = process.env.SLOW_QUERY_MAX_RANDOM_DELAY_MS) !== null && _a !== void 0 ? _a : 100}`, 10);
38
+ export default class NeDbDatabase extends AbstractMutexer {
39
+ constructor() {
40
+ super(...arguments);
41
+ this.collections = {};
42
+ this._isConnected = false;
43
+ }
44
+ generateId() {
45
+ return generateId();
46
+ }
47
+ connect() {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ this._isConnected = true;
50
+ yield this.randomDelay();
51
+ return Promise.resolve();
52
+ });
53
+ }
54
+ close() {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ yield this.randomDelay();
57
+ this._isConnected = false;
58
+ return Promise.resolve();
59
+ });
60
+ }
61
+ toMongoId(query) {
62
+ return mongoUtil.mapQuery(query, { shouldTransformToObjectId: false });
63
+ }
64
+ prepQuery(query) {
65
+ return this.valuesToDocument(this.toMongoId(query));
66
+ }
67
+ valuesToDocument(values) {
68
+ const withId = this.toMongoId(values);
69
+ const nullsToPlaceholder = this.handlePlaceholders(withId, NULL_PLACEHOLDER, (val) => val === null || typeof val === 'undefined' || val === NULL_PLACEHOLDER);
70
+ const undefinedToPlaceholder = this.handlePlaceholders(nullsToPlaceholder, UNDEFINED_PLACEHOLDER, (val) => val === undefined || val === UNDEFINED_PLACEHOLDER);
71
+ return undefinedToPlaceholder;
72
+ }
73
+ setShouldAutoGenerateIds(collection, shouldAutoGenerateIds) {
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ const col = this.loadCollection(collection);
76
+ //@ts-ignore
77
+ col.indexes._id.unique = shouldAutoGenerateIds;
78
+ yield this.randomDelay();
79
+ });
80
+ }
81
+ randomDelay() {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ if (SHOULD_SIMULATE_SLOW_QUERIES) {
84
+ const delay = Math.round(Math.random() * SLOW_QUERY_MAX_RANDOM_DELAY_MS);
85
+ yield new Promise((resolve) => setTimeout(resolve, delay));
86
+ }
87
+ });
88
+ }
89
+ isConnected() {
90
+ return this._isConnected;
91
+ }
92
+ normalizeRecord(record) {
93
+ const { _id } = record, rest = __rest(record, ["_id"]);
94
+ let values = this.handlePlaceholders(rest, null, (val) => val === null || val === NULL_PLACEHOLDER);
95
+ if (!_id) {
96
+ return values;
97
+ }
98
+ return Object.assign({ id: _id }, values);
99
+ }
100
+ handlePlaceholders(values, dropIn, checker) {
101
+ let withPlaceholders = Array.isArray(values) ? [] : {};
102
+ if (values instanceof RegExp) {
103
+ return values;
104
+ }
105
+ if (Array.isArray(values)) {
106
+ withPlaceholders = values.map((v) => this.handlePlaceholders(v, dropIn, checker));
107
+ }
108
+ else if (isObject(values)) {
109
+ Object.keys(values).forEach((key) => {
110
+ withPlaceholders[key] = this.handlePlaceholders(
111
+ //@ts-ignore
112
+ values[key], dropIn, checker);
113
+ });
114
+ }
115
+ else if (checker(values)) {
116
+ withPlaceholders = dropIn;
117
+ }
118
+ else {
119
+ withPlaceholders = values;
120
+ }
121
+ return withPlaceholders;
122
+ }
123
+ count(collection, query) {
124
+ return __awaiter(this, void 0, void 0, function* () {
125
+ const col = this.loadCollection(collection);
126
+ yield this.randomDelay();
127
+ return new Promise((resolve, reject) => {
128
+ col.count(this.prepQuery(query !== null && query !== void 0 ? query : {}), (err, count) => {
129
+ if (err) {
130
+ reject(err);
131
+ }
132
+ else {
133
+ resolve(count);
134
+ }
135
+ });
136
+ });
137
+ });
138
+ }
139
+ createOne(collection, values) {
140
+ return __awaiter(this, void 0, void 0, function* () {
141
+ yield this.randomDelay();
142
+ const all = yield this.create(collection, [values]);
143
+ return all[0];
144
+ });
145
+ }
146
+ create(collection, values) {
147
+ return __awaiter(this, void 0, void 0, function* () {
148
+ const mutexName = 'createMutex';
149
+ yield this.lock(mutexName);
150
+ yield this.randomDelay();
151
+ const col = this.loadCollection(collection);
152
+ const mapped = values
153
+ .map((v) => this.valuesToDocument(v))
154
+ .map((v) => (Object.assign({ _id: this.generateId() }, v)));
155
+ try {
156
+ yield Promise.all(mapped.map((m) => this.assertPassesUniqueIndexes(collection, undefined, m, 'create')));
157
+ }
158
+ catch (err) {
159
+ this.unlock(mutexName);
160
+ throw err;
161
+ }
162
+ return new Promise((resolve, reject) => {
163
+ col.insert(mapped, (err, docs) => {
164
+ this.unlock(mutexName);
165
+ if (err) {
166
+ reject(err);
167
+ }
168
+ else {
169
+ resolve(docs.map((doc) => this.normalizeRecord(doc)));
170
+ }
171
+ });
172
+ });
173
+ });
174
+ }
175
+ loadCollection(collection) {
176
+ if (!this.collections[collection]) {
177
+ this.collections[collection] = new Datastore();
178
+ }
179
+ const c = this.collections[collection];
180
+ return c;
181
+ }
182
+ dropCollection(name) {
183
+ return __awaiter(this, void 0, void 0, function* () {
184
+ yield this.randomDelay();
185
+ delete this.collections[name];
186
+ return Promise.resolve();
187
+ });
188
+ }
189
+ dropDatabase() {
190
+ return __awaiter(this, void 0, void 0, function* () {
191
+ yield this.randomDelay();
192
+ this.collections = {};
193
+ return Promise.resolve();
194
+ });
195
+ }
196
+ findOne(collection, query, options) {
197
+ return __awaiter(this, void 0, void 0, function* () {
198
+ const results = yield this.find(collection, this.prepQuery(query !== null && query !== void 0 ? query : {}), Object.assign({ limit: 1 }, (options || {})));
199
+ return results[0];
200
+ });
201
+ }
202
+ find(collection, query, options) {
203
+ return __awaiter(this, void 0, void 0, function* () {
204
+ yield this.randomDelay();
205
+ if ((options === null || options === void 0 ? void 0 : options.limit) === 0) {
206
+ return [];
207
+ }
208
+ return new Promise((resolve, reject) => {
209
+ const col = this.loadCollection(collection);
210
+ const mapped = mongoUtil.queryOptionsToMongoFindOptions(options);
211
+ const q = this.prepQuery(query !== null && query !== void 0 ? query : {});
212
+ const cursor = col.find(q, mapped.projection);
213
+ if (mapped.sort) {
214
+ cursor.sort(mapped.sort);
215
+ }
216
+ if (typeof mapped.limit === 'number') {
217
+ cursor.limit(mapped.limit);
218
+ }
219
+ if (mapped.skip) {
220
+ cursor.skip(mapped.skip);
221
+ }
222
+ cursor.exec((err, results) => {
223
+ if (err) {
224
+ reject(err);
225
+ }
226
+ else {
227
+ resolve(results.map((r) => this.normalizeRecord(r)));
228
+ }
229
+ });
230
+ });
231
+ });
232
+ }
233
+ update(collection, query, updates, neDbOptions) {
234
+ return __awaiter(this, void 0, void 0, function* () {
235
+ const results = this.updateOne(collection, query, updates, Object.assign(Object.assign({}, neDbOptions), { multi: true, returnUpdatedDocs: false }), 'update');
236
+ return results;
237
+ });
238
+ }
239
+ updateOne(collection, query, updates, neDbOptions, action = 'updateOne') {
240
+ return __awaiter(this, void 0, void 0, function* () {
241
+ const preppedQuery = this.prepQuery(query);
242
+ const mutexKey = 'updateMutex';
243
+ yield this.lock(mutexKey);
244
+ yield this.randomDelay();
245
+ try {
246
+ yield this.assertPassesUniqueIndexes(collection, query, updates, action);
247
+ }
248
+ catch (err) {
249
+ this.unlock(mutexKey);
250
+ throw err;
251
+ }
252
+ return new Promise((resolve, reject) => {
253
+ const col = this.loadCollection(collection);
254
+ const values = this.valuesToDocument(mongoUtil.prepareUpdates(updates));
255
+ col.update(preppedQuery, values, Object.assign({ returnUpdatedDocs: true }, (neDbOptions || {})), (err, numUpdated, docs) => __awaiter(this, void 0, void 0, function* () {
256
+ this.unlock(mutexKey);
257
+ if (err) {
258
+ reject(err);
259
+ }
260
+ else if (!(neDbOptions === null || neDbOptions === void 0 ? void 0 : neDbOptions.multi) && numUpdated === 0) {
261
+ reject(new SpruceError({
262
+ code: 'RECORD_NOT_FOUND',
263
+ storeName: 'NeDatabase',
264
+ query: preppedQuery,
265
+ }));
266
+ }
267
+ else {
268
+ resolve(docs ? this.normalizeRecord(docs) : numUpdated);
269
+ }
270
+ }));
271
+ });
272
+ });
273
+ }
274
+ upsertOne(collection, query, updates) {
275
+ return this.updateOne(collection, query, updates, { upsert: true }, 'upsertOne');
276
+ }
277
+ delete(collection, query) {
278
+ return __awaiter(this, void 0, void 0, function* () {
279
+ yield this.randomDelay();
280
+ return new Promise((resolve, reject) => {
281
+ const col = this.loadCollection(collection);
282
+ col.remove(this.prepQuery(query), { multi: true }, (err, numDeleted) => {
283
+ if (err) {
284
+ reject(err);
285
+ }
286
+ else {
287
+ resolve(numDeleted);
288
+ }
289
+ });
290
+ });
291
+ });
292
+ }
293
+ deleteOne(collection, query) {
294
+ return __awaiter(this, void 0, void 0, function* () {
295
+ yield this.randomDelay();
296
+ return new Promise((resolve, reject) => {
297
+ const col = this.loadCollection(collection);
298
+ col.remove(this.prepQuery(query), (err, numDeleted) => {
299
+ if (err) {
300
+ reject(err);
301
+ }
302
+ else {
303
+ resolve(numDeleted);
304
+ }
305
+ });
306
+ });
307
+ });
308
+ }
309
+ assertPassesUniqueIndexes(collection, query, values, action) {
310
+ return __awaiter(this, void 0, void 0, function* () {
311
+ const col = this.loadCollection(collection);
312
+ yield this.randomDelay();
313
+ if (col._uniqueIndexes) {
314
+ for (const fields of col._uniqueIndexes) {
315
+ const existing = query ? yield this.findOne(collection, query) : null;
316
+ const q = {};
317
+ const duplicateFields = [];
318
+ const duplicateValues = [];
319
+ fields.forEach((f) => {
320
+ q[f] = get(values, f);
321
+ duplicateFields.push(f);
322
+ duplicateValues.push(q[f]);
323
+ });
324
+ const destination = yield this.findOne(collection, q);
325
+ if (destination && (existing === null || existing === void 0 ? void 0 : existing.id) !== destination.id) {
326
+ throw new SpruceError({
327
+ code: 'DUPLICATE_RECORD',
328
+ collectionName: collection,
329
+ duplicateFields,
330
+ duplicateValues,
331
+ action,
332
+ });
333
+ }
334
+ }
335
+ }
336
+ });
337
+ }
338
+ getUniqueIndexes(collection) {
339
+ var _a;
340
+ return __awaiter(this, void 0, void 0, function* () {
341
+ const col = this.loadCollection(collection);
342
+ yield this.randomDelay();
343
+ return (_a = col._uniqueIndexes) !== null && _a !== void 0 ? _a : [];
344
+ });
345
+ }
346
+ getIndexes(collection, shouldIncludeUnique = false) {
347
+ var _a, _b, _c;
348
+ return __awaiter(this, void 0, void 0, function* () {
349
+ const col = this.loadCollection(collection);
350
+ yield this.randomDelay();
351
+ if (shouldIncludeUnique) {
352
+ const uniqIndexes = (_a = col._uniqueIndexes) !== null && _a !== void 0 ? _a : [];
353
+ return uniqIndexes.concat((_b = col._indexes) !== null && _b !== void 0 ? _b : []);
354
+ }
355
+ return (_c = col._indexes) !== null && _c !== void 0 ? _c : [];
356
+ });
357
+ }
358
+ dropIndex(collection, fields) {
359
+ var _a, _b;
360
+ return __awaiter(this, void 0, void 0, function* () {
361
+ const col = this.loadCollection(collection);
362
+ yield this.randomDelay();
363
+ let found = false;
364
+ let newIndexes = [];
365
+ for (const uniq of (_a = col._uniqueIndexes) !== null && _a !== void 0 ? _a : []) {
366
+ if (!isEqual(uniq, fields)) {
367
+ newIndexes.push(uniq);
368
+ }
369
+ else {
370
+ found = true;
371
+ }
372
+ }
373
+ if (found) {
374
+ col._uniqueIndexes = newIndexes;
375
+ return;
376
+ }
377
+ else {
378
+ newIndexes = [];
379
+ for (const index of (_b = col._indexes) !== null && _b !== void 0 ? _b : []) {
380
+ if (!isEqual(index, fields)) {
381
+ newIndexes.push(index);
382
+ }
383
+ else {
384
+ found = true;
385
+ }
386
+ }
387
+ if (found) {
388
+ col._indexes = newIndexes;
389
+ return;
390
+ }
391
+ }
392
+ throw new SpruceError({ code: 'INDEX_NOT_FOUND', missingIndex: fields });
393
+ });
394
+ }
395
+ assertIndexDoesNotExist(currentIndexes, fields) {
396
+ if (this.doesIndexExist(currentIndexes, fields)) {
397
+ throw new SpruceError({ code: 'INDEX_EXISTS', index: fields });
398
+ }
399
+ }
400
+ doesIndexExist(currentIndexes, fields) {
401
+ for (const index of currentIndexes !== null && currentIndexes !== void 0 ? currentIndexes : []) {
402
+ if (isEqual(index, fields)) {
403
+ return true;
404
+ }
405
+ }
406
+ return false;
407
+ }
408
+ createUniqueIndex(collection, fields) {
409
+ return __awaiter(this, void 0, void 0, function* () {
410
+ const col = this.loadCollection(collection);
411
+ if (!col._uniqueIndexes) {
412
+ col._uniqueIndexes = [];
413
+ }
414
+ yield this.randomDelay();
415
+ this.assertIndexDoesNotExist(col._uniqueIndexes, fields);
416
+ if (col._uniqueIndexes) {
417
+ const tempUniqueIndexes = [...col._uniqueIndexes];
418
+ tempUniqueIndexes.push(fields);
419
+ const documents = (yield this.find(collection, {})) || [];
420
+ for (const uniqueFields of tempUniqueIndexes) {
421
+ let parsedExisting = [];
422
+ for (const doc of documents) {
423
+ const tempDoc = {};
424
+ uniqueFields.forEach((f) => {
425
+ tempDoc[f] = doc[f];
426
+ });
427
+ parsedExisting.push(tempDoc);
428
+ }
429
+ const uniqued = uniqBy(parsedExisting, JSON.stringify);
430
+ if (parsedExisting.length != uniqued.length) {
431
+ throw new SpruceError({
432
+ code: 'DUPLICATE_KEY',
433
+ friendlyMessage: `Could not create index! Unique index on '${collection}' has duplicate key for "${fields.join(',')}"`,
434
+ });
435
+ }
436
+ }
437
+ }
438
+ col._uniqueIndexes.push(fields);
439
+ });
440
+ }
441
+ createIndex(collection, fields) {
442
+ return __awaiter(this, void 0, void 0, function* () {
443
+ const col = this.loadCollection(collection);
444
+ if (!col._indexes) {
445
+ col._indexes = [];
446
+ }
447
+ yield this.randomDelay();
448
+ this.assertIndexDoesNotExist(col._indexes, fields);
449
+ col._indexes.push(fields);
450
+ });
451
+ }
452
+ syncUniqueIndexes(collectionName, indexes) {
453
+ var _a;
454
+ return __awaiter(this, void 0, void 0, function* () {
455
+ const currentIndexes = yield this.getUniqueIndexes(collectionName);
456
+ const extraIndexes = differenceWith(currentIndexes, indexes, isEqual);
457
+ for (const index of indexes) {
458
+ if (!this.doesIndexExist(currentIndexes, index)) {
459
+ try {
460
+ yield this.createUniqueIndex(collectionName, index);
461
+ }
462
+ catch (err) {
463
+ if (((_a = err.options) === null || _a === void 0 ? void 0 : _a.code) !== 'INDEX_EXISTS') {
464
+ throw err;
465
+ }
466
+ }
467
+ }
468
+ }
469
+ for (const extra of extraIndexes) {
470
+ yield this.dropIndex(collectionName, extra);
471
+ }
472
+ });
473
+ }
474
+ syncIndexes(collectionName, indexes) {
475
+ var _a;
476
+ return __awaiter(this, void 0, void 0, function* () {
477
+ const currentIndexes = yield this.getIndexes(collectionName);
478
+ const extraIndexes = differenceWith(currentIndexes, indexes, isEqual);
479
+ for (const index of indexes) {
480
+ if (!this.doesIndexExist(currentIndexes, index)) {
481
+ try {
482
+ yield this.createIndex(collectionName, index);
483
+ }
484
+ catch (err) {
485
+ if (((_a = err.options) === null || _a === void 0 ? void 0 : _a.code) !== 'INDEX_EXISTS') {
486
+ throw err;
487
+ }
488
+ }
489
+ }
490
+ }
491
+ for (const extra of extraIndexes) {
492
+ yield this.dropIndex(collectionName, extra);
493
+ }
494
+ });
495
+ }
496
+ }