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