@sprucelabs/spruce-cli 17.1.13 → 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 +8 -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 +23 -23
@@ -0,0 +1,476 @@
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
+ import differenceWith from 'lodash/differenceWith.js';
22
+ import isEqual from 'lodash/isEqual.js';
23
+ import { MongoClient, MongoError } from 'mongodb';
24
+ import SpruceError from '../errors/SpruceError.js';
25
+ import generateId from '../utilities/generateId.js';
26
+ import mongoUtil from '../utilities/mongo.utility.js';
27
+ export const MONGO_TEST_URI = 'mongodb://localhost:27017';
28
+ export default class MongoDatabase {
29
+ constructor(url, options) {
30
+ this.disableAutoGeneratedIdsOnTheseCollections = [];
31
+ this._isConnected = false;
32
+ const _a = options !== null && options !== void 0 ? options : {}, { dbName } = _a, rest = __rest(_a, ["dbName"]);
33
+ if (dbName === 'undefined') {
34
+ throw new SpruceError({
35
+ code: 'INVALID_DATABASE_NAME',
36
+ suppliedName: dbName,
37
+ });
38
+ }
39
+ try {
40
+ this.mongo = new MongoClient(url, Object.assign(Object.assign({}, (rest || {})), { serverSelectionTimeoutMS: 5000 }));
41
+ }
42
+ catch (err) {
43
+ if (err.message.includes('Invalid scheme')) {
44
+ throw new SpruceError({ code: 'INVALID_DB_CONNECTION_STRING' });
45
+ }
46
+ throw err;
47
+ }
48
+ this.dbName = dbName !== null && dbName !== void 0 ? dbName : 'mercury';
49
+ }
50
+ count(collection, query) {
51
+ const col = this.assertDbWhileAttempingTo('count records', collection).collection(collection);
52
+ return col.countDocuments(query ? this.toMongoIdAndNull(collection, query) : {});
53
+ }
54
+ generateId() {
55
+ return generateId();
56
+ }
57
+ delete(collection, query) {
58
+ var _a;
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ const results = yield this.assertDbWhileAttempingTo('delete many records', collection)
61
+ .collection(collection)
62
+ .deleteMany(this.toMongoIdAndNull(collection, query));
63
+ return (_a = results.deletedCount) !== null && _a !== void 0 ? _a : 0;
64
+ });
65
+ }
66
+ deleteOne(collection, query) {
67
+ var _a;
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ const results = yield this.assertDbWhileAttempingTo('delete one record', collection)
70
+ .collection(collection)
71
+ .deleteOne(this.toMongoIdAndNull(collection, query));
72
+ return (_a = results.deletedCount) !== null && _a !== void 0 ? _a : 0;
73
+ });
74
+ }
75
+ assertDbWhileAttempingTo(attempt, collectionName) {
76
+ if (!this.isConnected() || !this.db) {
77
+ throw new SpruceError({
78
+ code: 'DATABASE_NOT_CONNECTED',
79
+ operationAttempted: attempt,
80
+ collectionName,
81
+ });
82
+ }
83
+ return this.db;
84
+ }
85
+ findOne(collection, query, options) {
86
+ return __awaiter(this, void 0, void 0, function* () {
87
+ let q;
88
+ try {
89
+ q = this.toMongoIdAndNull(collection, query || {});
90
+ }
91
+ catch (err) {
92
+ return null;
93
+ }
94
+ const match = yield this.assertDbWhileAttempingTo('found one record.', collection)
95
+ .collection(collection)
96
+ //@ts-ignore
97
+ .findOne(q, mongoUtil.queryOptionsToMongoFindOptions(options));
98
+ //@ts-ignore
99
+ return match ? this.normalizeRecord(match) : null;
100
+ });
101
+ }
102
+ find(collection, query, options) {
103
+ return __awaiter(this, void 0, void 0, function* () {
104
+ let q;
105
+ try {
106
+ q = this.toMongoIdAndNull(collection, query || {});
107
+ }
108
+ catch (err) {
109
+ return [];
110
+ }
111
+ if ((options === null || options === void 0 ? void 0 : options.limit) === 0) {
112
+ return [];
113
+ }
114
+ const matches = yield this.assertDbWhileAttempingTo('find many records.', collection)
115
+ .collection(collection)
116
+ //@ts-ignore
117
+ .find(q, mongoUtil.queryOptionsToMongoFindOptions(options))
118
+ .toArray();
119
+ return matches.map((match) => this.normalizeRecord(match));
120
+ });
121
+ }
122
+ toMongoIdAndNull(collection, query) {
123
+ const isAutoGeneratingIds = this.disableAutoGeneratedIdsOnTheseCollections.indexOf(collection) === -1;
124
+ const q = mongoUtil.mapQuery(query, {
125
+ shouldTransformToObjectId: isAutoGeneratingIds,
126
+ });
127
+ Object.keys(q).forEach((key) => {
128
+ if (q[key] === undefined) {
129
+ q[key] = null;
130
+ }
131
+ });
132
+ return q;
133
+ }
134
+ createOne(collection, values) {
135
+ return __awaiter(this, void 0, void 0, function* () {
136
+ const record = this.toMongoIdAndNull(collection, values);
137
+ try {
138
+ const created = yield this.assertDbWhileAttempingTo('create a new record.', collection)
139
+ .collection(collection)
140
+ .insertOne(record);
141
+ return this.findOne(collection, {
142
+ id: created.insertedId.toHexString(),
143
+ });
144
+ }
145
+ catch (err) {
146
+ if (err instanceof MongoError) {
147
+ if (err.code === 11000) {
148
+ throw new SpruceError(Object.assign(Object.assign({ code: 'DUPLICATE_RECORD', collectionName: collection }, this.generateDuplicateFieldsForError(
149
+ //@ts-ignore
150
+ err.keyValue)), { action: 'create', originalError: err }));
151
+ }
152
+ }
153
+ throw err;
154
+ }
155
+ });
156
+ }
157
+ create(collection, values) {
158
+ return __awaiter(this, void 0, void 0, function* () {
159
+ const records = values.map((v) => this.toMongoIdAndNull(collection, v));
160
+ try {
161
+ const created = yield this.assertDbWhileAttempingTo('create many records.', collection)
162
+ .collection(collection)
163
+ .insertMany(records);
164
+ const ids = Object.values(created.insertedIds).map((i) => i.toHexString());
165
+ return this.find(collection, {
166
+ id: { $in: ids },
167
+ });
168
+ }
169
+ catch (err) {
170
+ if (err instanceof MongoError) {
171
+ if (err.code === 11000) {
172
+ throw new SpruceError(Object.assign(Object.assign({ code: 'DUPLICATE_RECORD', collectionName: collection }, this.generateDuplicateFieldsForError(
173
+ //@ts-ignore
174
+ err.keyValue)), { action: 'create', originalError: err }));
175
+ }
176
+ }
177
+ throw err;
178
+ }
179
+ });
180
+ }
181
+ normalizeRecord(record) {
182
+ const { _id } = record, rest = __rest(record, ["_id"]);
183
+ if (!_id) {
184
+ return rest;
185
+ }
186
+ return Object.assign({ id: _id.toString() }, rest);
187
+ }
188
+ close() {
189
+ return __awaiter(this, void 0, void 0, function* () {
190
+ if (this.isConnected()) {
191
+ this._isConnected = false;
192
+ yield this.mongo.close(true);
193
+ }
194
+ });
195
+ }
196
+ connect() {
197
+ return __awaiter(this, void 0, void 0, function* () {
198
+ if (!this.isConnected()) {
199
+ try {
200
+ this._isConnected = true;
201
+ yield this.mongo.connect();
202
+ }
203
+ catch (err) {
204
+ if (err.name === 'MongoParseError') {
205
+ throw new SpruceError({ code: 'INVALID_DB_CONNECTION_STRING' });
206
+ }
207
+ else if (err.message.includes('ECONNREFUSED')) {
208
+ throw new SpruceError({ code: 'UNABLE_TO_CONNECT_TO_DB' });
209
+ }
210
+ else {
211
+ throw new SpruceError({
212
+ code: 'UNKNOWN_DATABASE_ERROR',
213
+ originalError: err,
214
+ databaseErrorMessage: err.message,
215
+ });
216
+ }
217
+ }
218
+ }
219
+ this.db = this.mongo.db(this.dbName);
220
+ });
221
+ }
222
+ isConnected() {
223
+ return this._isConnected;
224
+ }
225
+ dropCollection(name) {
226
+ return __awaiter(this, void 0, void 0, function* () {
227
+ const collections = yield this.assertDbWhileAttempingTo('drop an entire collection.', '')
228
+ .listCollections()
229
+ .toArray();
230
+ const doesExist = !!collections.find((collection) => collection.name === name);
231
+ if (doesExist) {
232
+ const collection = this.assertDbWhileAttempingTo('drop the collection.', '').collection(name);
233
+ yield collection.drop();
234
+ }
235
+ });
236
+ }
237
+ dropDatabase() {
238
+ return __awaiter(this, void 0, void 0, function* () {
239
+ yield this.assertDbWhileAttempingTo('drop the entire database.').dropDatabase();
240
+ });
241
+ }
242
+ listIndexes(collection) {
243
+ return __awaiter(this, void 0, void 0, function* () {
244
+ try {
245
+ return yield this.assertDbWhileAttempingTo('get indexes.', collection)
246
+ .collection(collection)
247
+ .listIndexes()
248
+ .toArray();
249
+ }
250
+ catch (err) {
251
+ return [];
252
+ }
253
+ });
254
+ }
255
+ dropIndex(collection, fields) {
256
+ return __awaiter(this, void 0, void 0, function* () {
257
+ const indexes = yield this.listIndexes(collection);
258
+ let found = false;
259
+ for (const index of indexes) {
260
+ if (isEqual(Object.keys(index.key), fields)) {
261
+ yield this.assertDbWhileAttempingTo('drop a index.', collection)
262
+ .collection(collection)
263
+ .dropIndex(index.name);
264
+ found = true;
265
+ }
266
+ }
267
+ if (!found) {
268
+ throw new SpruceError({ code: 'INDEX_NOT_FOUND', missingIndex: fields });
269
+ }
270
+ });
271
+ }
272
+ getUniqueIndexes(collection) {
273
+ return __awaiter(this, void 0, void 0, function* () {
274
+ try {
275
+ const indexes = yield this.listIndexes(collection);
276
+ const uniqueIndexes = [];
277
+ for (const index of indexes) {
278
+ if (index.unique) {
279
+ uniqueIndexes.push(Object.keys(index.key));
280
+ }
281
+ }
282
+ return uniqueIndexes;
283
+ }
284
+ catch (err) {
285
+ return [];
286
+ }
287
+ });
288
+ }
289
+ getIndexes(collection, shouldIncludeUnique = false) {
290
+ return __awaiter(this, void 0, void 0, function* () {
291
+ try {
292
+ const indexes = yield this.listIndexes(collection);
293
+ if (shouldIncludeUnique) {
294
+ return indexes;
295
+ }
296
+ const nonUniqueIndexes = [];
297
+ for (const index of indexes) {
298
+ if (!index.unique) {
299
+ nonUniqueIndexes.push(Object.keys(index.key));
300
+ }
301
+ }
302
+ return nonUniqueIndexes;
303
+ }
304
+ catch (err) {
305
+ return [];
306
+ }
307
+ });
308
+ }
309
+ createIndex(collection, fields) {
310
+ return __awaiter(this, void 0, void 0, function* () {
311
+ const currentIndexes = yield this.getIndexes(collection);
312
+ yield this.assertIndexDoesNotExist(currentIndexes, fields);
313
+ const index = {};
314
+ fields.forEach((name) => {
315
+ index[name] = 1;
316
+ });
317
+ try {
318
+ yield this.assertDbWhileAttempingTo('create an index.', collection)
319
+ .collection(collection)
320
+ .createIndex(index);
321
+ }
322
+ catch (err) {
323
+ if ((err === null || err === void 0 ? void 0 : err.code) === 11000) {
324
+ throw new SpruceError({
325
+ code: 'DUPLICATE_KEY',
326
+ friendlyMessage: `Could not create index! Index on '${collection}' has duplicate key for "${fields.join(',')}"`,
327
+ });
328
+ }
329
+ else {
330
+ throw err;
331
+ }
332
+ }
333
+ });
334
+ }
335
+ assertIndexDoesNotExist(currentIndexes, fields) {
336
+ if (this.doesIndexExist(currentIndexes, fields)) {
337
+ throw new SpruceError({ code: 'INDEX_EXISTS', index: fields });
338
+ }
339
+ }
340
+ doesIndexExist(currentIndexes, fields) {
341
+ for (const index of currentIndexes !== null && currentIndexes !== void 0 ? currentIndexes : []) {
342
+ if (isEqual(index, fields)) {
343
+ return true;
344
+ }
345
+ }
346
+ return false;
347
+ }
348
+ syncIndexes(collectionName, indexes) {
349
+ return __awaiter(this, void 0, void 0, function* () {
350
+ const currentIndexes = yield this.getIndexes(collectionName);
351
+ const extraIndexes = differenceWith(currentIndexes, indexes, isEqual).filter((i) => !(i.length === 1 && i[0] === '_id'));
352
+ for (const index of indexes) {
353
+ if (!this.doesIndexExist(currentIndexes, index)) {
354
+ yield this.createIndex(collectionName, index);
355
+ }
356
+ }
357
+ for (const extra of extraIndexes) {
358
+ yield this.dropIndex(collectionName, extra);
359
+ }
360
+ });
361
+ }
362
+ createUniqueIndex(collection, fields) {
363
+ return __awaiter(this, void 0, void 0, function* () {
364
+ const currentIndexes = yield this.getUniqueIndexes(collection);
365
+ yield this.assertIndexDoesNotExist(currentIndexes, fields);
366
+ const index = {};
367
+ fields.forEach((name) => {
368
+ index[name] = 1;
369
+ });
370
+ try {
371
+ yield this.assertDbWhileAttempingTo('create a unique index.', collection)
372
+ .collection(collection)
373
+ .createIndex(index, { unique: true });
374
+ }
375
+ catch (err) {
376
+ if ((err === null || err === void 0 ? void 0 : err.code) === 11000) {
377
+ throw new SpruceError({
378
+ code: 'DUPLICATE_KEY',
379
+ friendlyMessage: `Could not create index! Unique index on '${collection}' has duplicate key for "${fields.join(',')}"`,
380
+ });
381
+ }
382
+ else {
383
+ throw err;
384
+ }
385
+ }
386
+ });
387
+ }
388
+ syncUniqueIndexes(collectionName, indexes) {
389
+ return __awaiter(this, void 0, void 0, function* () {
390
+ const currentIndexes = yield this.getUniqueIndexes(collectionName);
391
+ const extraIndexes = differenceWith(currentIndexes, indexes, isEqual);
392
+ for (const index of indexes) {
393
+ if (!this.doesIndexExist(currentIndexes, index)) {
394
+ yield this.createUniqueIndex(collectionName, index);
395
+ }
396
+ }
397
+ for (const extra of extraIndexes) {
398
+ yield this.dropIndex(collectionName, extra);
399
+ }
400
+ });
401
+ }
402
+ update(collection, query, updates) {
403
+ return __awaiter(this, void 0, void 0, function* () {
404
+ const q = this.toMongoIdAndNull(collection, query);
405
+ const values = mongoUtil.prepareUpdates(updates);
406
+ const { modifiedCount } = yield this.assertDbWhileAttempingTo('update many records.', collection)
407
+ .collection(collection)
408
+ .updateMany(q, values);
409
+ return modifiedCount;
410
+ });
411
+ }
412
+ updateOne(collection, query, updates) {
413
+ return __awaiter(this, void 0, void 0, function* () {
414
+ const q = this.toMongoIdAndNull(collection, query);
415
+ const values = mongoUtil.prepareUpdates(updates);
416
+ try {
417
+ const results = yield this.assertDbWhileAttempingTo('update one record.', collection)
418
+ .collection(collection)
419
+ .findOneAndUpdate(q, values, { returnDocument: 'after' });
420
+ if (!results.value) {
421
+ throw new SpruceError({
422
+ code: 'RECORD_NOT_FOUND',
423
+ storeName: 'MongoDatabase',
424
+ query: q,
425
+ });
426
+ }
427
+ return this.normalizeRecord(results.value);
428
+ }
429
+ catch (err) {
430
+ if (err instanceof MongoError) {
431
+ if (err.code === 11000) {
432
+ throw new SpruceError(Object.assign(Object.assign({ code: 'DUPLICATE_RECORD', collectionName: collection }, this.generateDuplicateFieldsForError(
433
+ //@ts-ignore
434
+ err.keyValue)), { action: 'updateOne', originalError: err }));
435
+ }
436
+ }
437
+ throw err;
438
+ }
439
+ });
440
+ }
441
+ upsertOne(collection, query, updates) {
442
+ return __awaiter(this, void 0, void 0, function* () {
443
+ const q = this.toMongoIdAndNull(collection, query);
444
+ const values = this.toMongoIdAndNull(collection, updates);
445
+ try {
446
+ const results = yield this.assertDbWhileAttempingTo('upsert one record.', collection)
447
+ .collection(collection)
448
+ .findOneAndUpdate(q, { $set: values }, { upsert: true, returnDocument: 'after' });
449
+ //@ts-ignore
450
+ return this.normalizeRecord(results.value);
451
+ }
452
+ catch (err) {
453
+ if (err instanceof MongoError) {
454
+ if (err.code === 11000) {
455
+ throw new SpruceError(Object.assign(Object.assign({ code: 'DUPLICATE_RECORD', collectionName: collection }, this.generateDuplicateFieldsForError(
456
+ //@ts-ignore
457
+ err.keyValue)), { action: 'upsertOne', originalError: err }));
458
+ }
459
+ }
460
+ throw err;
461
+ }
462
+ });
463
+ }
464
+ generateDuplicateFieldsForError(mongoIndexKeyValue) {
465
+ const duplicateFields = [];
466
+ const duplicateValues = [];
467
+ Object.keys(mongoIndexKeyValue !== null && mongoIndexKeyValue !== void 0 ? mongoIndexKeyValue : {}).forEach((name) => {
468
+ duplicateFields.push(name);
469
+ duplicateValues.push(mongoIndexKeyValue[name]);
470
+ });
471
+ return {
472
+ duplicateFields,
473
+ duplicateValues,
474
+ };
475
+ }
476
+ }
@@ -0,0 +1,41 @@
1
+ import AbstractMutexer from '../mutexers/AbstractMutexer';
2
+ import { Database } from '../types/database.types';
3
+ import { QueryOptions } from '../types/query.types';
4
+ export default class NeDbDatabase extends AbstractMutexer implements Database {
5
+ private collections;
6
+ private _isConnected;
7
+ generateId(): string;
8
+ connect(): Promise<void>;
9
+ close(): Promise<void>;
10
+ private toMongoId;
11
+ private prepQuery;
12
+ private valuesToDocument;
13
+ setShouldAutoGenerateIds(collection: string, shouldAutoGenerateIds: boolean): Promise<void>;
14
+ private randomDelay;
15
+ isConnected(): boolean;
16
+ private normalizeRecord;
17
+ private handlePlaceholders;
18
+ count(collection: string, query?: Record<string, any>): Promise<number>;
19
+ createOne(collection: string, values: Record<string, any>): Promise<Record<string, any>>;
20
+ create(collection: string, values: Record<string, any>[]): Promise<Record<string, any>[]>;
21
+ private loadCollection;
22
+ dropCollection(name: string): Promise<void>;
23
+ dropDatabase(): Promise<void>;
24
+ findOne(collection: string, query?: Record<string, any>, options?: QueryOptions): Promise<Record<string, any> | null>;
25
+ find(collection: string, query?: Record<string, any>, options?: QueryOptions): Promise<Record<string, any>[]>;
26
+ update(collection: string, query: Record<string, any>, updates: Record<string, any>, neDbOptions?: Record<string, any>): Promise<number>;
27
+ updateOne(collection: string, query: Record<string, any>, updates: Record<string, any>, neDbOptions?: Record<string, any>, action?: string): Promise<Record<string, any>>;
28
+ upsertOne(collection: string, query: Record<string, any>, updates: Record<string, any>): Promise<Record<string, any>>;
29
+ delete(collection: string, query: Record<string, any>): Promise<number>;
30
+ deleteOne(collection: string, query: Record<string, any>): Promise<number>;
31
+ private assertPassesUniqueIndexes;
32
+ getUniqueIndexes(collection: string): Promise<string[][]>;
33
+ getIndexes(collection: string, shouldIncludeUnique?: boolean): Promise<string[][]>;
34
+ dropIndex(collection: string, fields: string[]): Promise<void>;
35
+ private assertIndexDoesNotExist;
36
+ private doesIndexExist;
37
+ createUniqueIndex(collection: string, fields: string[]): Promise<void>;
38
+ createIndex(collection: string, fields: string[]): Promise<void>;
39
+ syncUniqueIndexes(collectionName: string, indexes: string[][]): Promise<void>;
40
+ syncIndexes(collectionName: string, indexes: string[][]): Promise<void>;
41
+ }