@bitblit/ratchet-aws 4.0.420-alpha → 4.0.425-alpha

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 (303) hide show
  1. package/lib/batch/aws-batch-background-processor.d.ts +8 -0
  2. package/lib/batch/aws-batch-background-processor.js +46 -0
  3. package/lib/batch/aws-batch-background-processor.js.map +1 -0
  4. package/lib/batch/aws-batch-ratchet.d.ts +13 -0
  5. package/lib/batch/aws-batch-ratchet.js +56 -0
  6. package/lib/batch/aws-batch-ratchet.js.map +1 -0
  7. package/lib/batch/index.d.ts +2 -0
  8. package/lib/batch/index.js +3 -0
  9. package/lib/batch/index.js.map +1 -0
  10. package/lib/build/index.d.ts +1 -0
  11. package/lib/build/index.js +2 -0
  12. package/lib/build/index.js.map +1 -0
  13. package/lib/build/ratchet-aws-info.d.ts +5 -0
  14. package/lib/build/ratchet-aws-info.js +15 -0
  15. package/lib/build/ratchet-aws-info.js.map +1 -0
  16. package/lib/cache/index.d.ts +5 -0
  17. package/lib/cache/index.js +6 -0
  18. package/lib/cache/index.js.map +1 -0
  19. package/lib/cache/memory-storage-provider.d.ts +10 -0
  20. package/lib/cache/memory-storage-provider.js +28 -0
  21. package/lib/cache/memory-storage-provider.js.map +1 -0
  22. package/lib/cache/simple-cache-object-wrapper.d.ts +7 -0
  23. package/lib/cache/simple-cache-object-wrapper.js +2 -0
  24. package/lib/cache/simple-cache-object-wrapper.js.map +1 -0
  25. package/lib/cache/simple-cache-read-options.d.ts +5 -0
  26. package/lib/cache/simple-cache-read-options.js +2 -0
  27. package/lib/cache/simple-cache-read-options.js.map +1 -0
  28. package/lib/cache/simple-cache-storage-provider.d.ts +8 -0
  29. package/lib/cache/simple-cache-storage-provider.js +2 -0
  30. package/lib/cache/simple-cache-storage-provider.js.map +1 -0
  31. package/lib/cache/simple-cache.d.ts +14 -0
  32. package/lib/cache/simple-cache.js +65 -0
  33. package/lib/cache/simple-cache.js.map +1 -0
  34. package/lib/cloudwatch/cloud-watch-log-group-ratchet.d.ts +10 -0
  35. package/lib/cloudwatch/cloud-watch-log-group-ratchet.js +75 -0
  36. package/lib/cloudwatch/cloud-watch-log-group-ratchet.js.map +1 -0
  37. package/lib/cloudwatch/cloud-watch-logs-ratchet.d.ts +15 -0
  38. package/lib/cloudwatch/cloud-watch-logs-ratchet.js +174 -0
  39. package/lib/cloudwatch/cloud-watch-logs-ratchet.js.map +1 -0
  40. package/lib/cloudwatch/cloud-watch-metrics-ratchet.d.ts +10 -0
  41. package/lib/cloudwatch/cloud-watch-metrics-ratchet.js +57 -0
  42. package/lib/cloudwatch/cloud-watch-metrics-ratchet.js.map +1 -0
  43. package/lib/cloudwatch/index.d.ts +3 -0
  44. package/lib/cloudwatch/index.js +4 -0
  45. package/lib/cloudwatch/index.js.map +1 -0
  46. package/lib/daemon/daemon-like.d.ts +16 -0
  47. package/lib/daemon/daemon-like.js +2 -0
  48. package/lib/daemon/daemon-like.js.map +1 -0
  49. package/lib/daemon/daemon-process-create-options.d.ts +7 -0
  50. package/lib/daemon/daemon-process-create-options.js +2 -0
  51. package/lib/daemon/daemon-process-create-options.js.map +1 -0
  52. package/lib/daemon/daemon-process-state-public-token.d.ts +4 -0
  53. package/lib/daemon/daemon-process-state-public-token.js +2 -0
  54. package/lib/daemon/daemon-process-state-public-token.js.map +1 -0
  55. package/lib/daemon/daemon-process-state.d.ts +13 -0
  56. package/lib/daemon/daemon-process-state.js +2 -0
  57. package/lib/daemon/daemon-process-state.js.map +1 -0
  58. package/lib/daemon/daemon-stream-data-options.d.ts +5 -0
  59. package/lib/daemon/daemon-stream-data-options.js +2 -0
  60. package/lib/daemon/daemon-stream-data-options.js.map +1 -0
  61. package/lib/daemon/daemon-util.d.ts +17 -0
  62. package/lib/daemon/daemon-util.js +154 -0
  63. package/lib/daemon/daemon-util.js.map +1 -0
  64. package/lib/daemon/daemon.d.ts +32 -0
  65. package/lib/daemon/daemon.js +129 -0
  66. package/lib/daemon/daemon.js.map +1 -0
  67. package/lib/daemon/index.d.ts +7 -0
  68. package/lib/daemon/index.js +8 -0
  69. package/lib/daemon/index.js.map +1 -0
  70. package/lib/dao/example-prototype-dao-item.d.ts +8 -0
  71. package/lib/dao/example-prototype-dao-item.js +2 -0
  72. package/lib/dao/example-prototype-dao-item.js.map +1 -0
  73. package/lib/dao/index.d.ts +8 -0
  74. package/lib/dao/index.js +9 -0
  75. package/lib/dao/index.js.map +1 -0
  76. package/lib/dao/memory-prototype-dao-provider.d.ts +7 -0
  77. package/lib/dao/memory-prototype-dao-provider.js +11 -0
  78. package/lib/dao/memory-prototype-dao-provider.js.map +1 -0
  79. package/lib/dao/prototype-dao-config.d.ts +8 -0
  80. package/lib/dao/prototype-dao-config.js +2 -0
  81. package/lib/dao/prototype-dao-config.js.map +1 -0
  82. package/lib/dao/prototype-dao-db.d.ts +4 -0
  83. package/lib/dao/prototype-dao-db.js +2 -0
  84. package/lib/dao/prototype-dao-db.js.map +1 -0
  85. package/lib/dao/prototype-dao-provider.d.ts +5 -0
  86. package/lib/dao/prototype-dao-provider.js +2 -0
  87. package/lib/dao/prototype-dao-provider.js.map +1 -0
  88. package/lib/dao/prototype-dao.d.ts +15 -0
  89. package/lib/dao/prototype-dao.js +89 -0
  90. package/lib/dao/prototype-dao.js.map +1 -0
  91. package/lib/dao/s3-simple-dao.d.ts +15 -0
  92. package/lib/dao/s3-simple-dao.js +77 -0
  93. package/lib/dao/s3-simple-dao.js.map +1 -0
  94. package/lib/dao/simple-dao-item.d.ts +5 -0
  95. package/lib/dao/simple-dao-item.js +2 -0
  96. package/lib/dao/simple-dao-item.js.map +1 -0
  97. package/lib/dynamodb/dynamo-ratchet-like.d.ts +25 -0
  98. package/lib/dynamodb/dynamo-ratchet-like.js +2 -0
  99. package/lib/dynamodb/dynamo-ratchet-like.js.map +1 -0
  100. package/lib/dynamodb/dynamo-ratchet.d.ts +34 -0
  101. package/lib/dynamodb/dynamo-ratchet.js +671 -0
  102. package/lib/dynamodb/dynamo-ratchet.js.map +1 -0
  103. package/lib/dynamodb/dynamo-table-ratchet.d.ts +13 -0
  104. package/lib/dynamodb/dynamo-table-ratchet.js +140 -0
  105. package/lib/dynamodb/dynamo-table-ratchet.js.map +1 -0
  106. package/lib/dynamodb/hash-spreader.d.ts +15 -0
  107. package/lib/dynamodb/hash-spreader.js +66 -0
  108. package/lib/dynamodb/hash-spreader.js.map +1 -0
  109. package/lib/dynamodb/impl/dynamo-db-storage-provider.d.ts +25 -0
  110. package/lib/dynamodb/impl/dynamo-db-storage-provider.js +110 -0
  111. package/lib/dynamodb/impl/dynamo-db-storage-provider.js.map +1 -0
  112. package/lib/dynamodb/impl/dynamo-db-sync-lock.d.ts +10 -0
  113. package/lib/dynamodb/impl/dynamo-db-sync-lock.js +71 -0
  114. package/lib/dynamodb/impl/dynamo-db-sync-lock.js.map +1 -0
  115. package/lib/dynamodb/impl/dynamo-expiring-code-provider.d.ts +12 -0
  116. package/lib/dynamodb/impl/dynamo-expiring-code-provider.js +25 -0
  117. package/lib/dynamodb/impl/dynamo-expiring-code-provider.js.map +1 -0
  118. package/lib/dynamodb/impl/dynamo-runtime-parameter-provider.d.ts +11 -0
  119. package/lib/dynamodb/impl/dynamo-runtime-parameter-provider.js +37 -0
  120. package/lib/dynamodb/impl/dynamo-runtime-parameter-provider.js.map +1 -0
  121. package/lib/dynamodb/index.d.ts +8 -0
  122. package/lib/dynamodb/index.js +9 -0
  123. package/lib/dynamodb/index.js.map +1 -0
  124. package/lib/ec2/ec2-ratchet.d.ts +16 -0
  125. package/lib/ec2/ec2-ratchet.js +114 -0
  126. package/lib/ec2/ec2-ratchet.js.map +1 -0
  127. package/lib/ec2/index.d.ts +1 -0
  128. package/lib/ec2/index.js +2 -0
  129. package/lib/ec2/index.js.map +1 -0
  130. package/lib/ecr/ecr-unused-image-cleaner-options.d.ts +7 -0
  131. package/lib/ecr/ecr-unused-image-cleaner-options.js +2 -0
  132. package/lib/ecr/ecr-unused-image-cleaner-options.js.map +1 -0
  133. package/lib/ecr/ecr-unused-image-cleaner-output.d.ts +7 -0
  134. package/lib/ecr/ecr-unused-image-cleaner-output.js +2 -0
  135. package/lib/ecr/ecr-unused-image-cleaner-output.js.map +1 -0
  136. package/lib/ecr/ecr-unused-image-cleaner-repository-output.d.ts +8 -0
  137. package/lib/ecr/ecr-unused-image-cleaner-repository-output.js +2 -0
  138. package/lib/ecr/ecr-unused-image-cleaner-repository-output.js.map +1 -0
  139. package/lib/ecr/ecr-unused-image-cleaner.d.ts +18 -0
  140. package/lib/ecr/ecr-unused-image-cleaner.js +136 -0
  141. package/lib/ecr/ecr-unused-image-cleaner.js.map +1 -0
  142. package/lib/ecr/index.d.ts +9 -0
  143. package/lib/ecr/index.js +10 -0
  144. package/lib/ecr/index.js.map +1 -0
  145. package/lib/ecr/retained-image-descriptor.d.ts +6 -0
  146. package/lib/ecr/retained-image-descriptor.js +2 -0
  147. package/lib/ecr/retained-image-descriptor.js.map +1 -0
  148. package/lib/ecr/retained-image-reason.d.ts +4 -0
  149. package/lib/ecr/retained-image-reason.js +6 -0
  150. package/lib/ecr/retained-image-reason.js.map +1 -0
  151. package/lib/ecr/used-image-finder.d.ts +3 -0
  152. package/lib/ecr/used-image-finder.js +2 -0
  153. package/lib/ecr/used-image-finder.js.map +1 -0
  154. package/lib/ecr/used-image-finders/aws-batch-used-image-finder.d.ts +8 -0
  155. package/lib/ecr/used-image-finders/aws-batch-used-image-finder.js +32 -0
  156. package/lib/ecr/used-image-finders/aws-batch-used-image-finder.js.map +1 -0
  157. package/lib/ecr/used-image-finders/lambda-used-image-finder.d.ts +8 -0
  158. package/lib/ecr/used-image-finders/lambda-used-image-finder.js +40 -0
  159. package/lib/ecr/used-image-finders/lambda-used-image-finder.js.map +1 -0
  160. package/lib/environment/cascade-environment-service-provider.d.ts +6 -0
  161. package/lib/environment/cascade-environment-service-provider.js +25 -0
  162. package/lib/environment/cascade-environment-service-provider.js.map +1 -0
  163. package/lib/environment/env-var-environment-service-provider.d.ts +6 -0
  164. package/lib/environment/env-var-environment-service-provider.js +31 -0
  165. package/lib/environment/env-var-environment-service-provider.js.map +1 -0
  166. package/lib/environment/environment-service-config.d.ts +4 -0
  167. package/lib/environment/environment-service-config.js +2 -0
  168. package/lib/environment/environment-service-config.js.map +1 -0
  169. package/lib/environment/environment-service-provider.d.ts +3 -0
  170. package/lib/environment/environment-service-provider.js +2 -0
  171. package/lib/environment/environment-service-provider.js.map +1 -0
  172. package/lib/environment/environment-service.d.ts +11 -0
  173. package/lib/environment/environment-service.js +51 -0
  174. package/lib/environment/environment-service.js.map +1 -0
  175. package/lib/environment/fixed-environment-service-provider.d.ts +7 -0
  176. package/lib/environment/fixed-environment-service-provider.js +22 -0
  177. package/lib/environment/fixed-environment-service-provider.js.map +1 -0
  178. package/lib/environment/index.d.ts +7 -0
  179. package/lib/environment/index.js +8 -0
  180. package/lib/environment/index.js.map +1 -0
  181. package/lib/environment/ssm-environment-service-provider.d.ts +8 -0
  182. package/lib/environment/ssm-environment-service-provider.js +59 -0
  183. package/lib/environment/ssm-environment-service-provider.js.map +1 -0
  184. package/lib/expiring-code/expiring-code-params.d.ts +7 -0
  185. package/lib/expiring-code/expiring-code-params.js +2 -0
  186. package/lib/expiring-code/expiring-code-params.js.map +1 -0
  187. package/lib/expiring-code/expiring-code-provider.d.ts +5 -0
  188. package/lib/expiring-code/expiring-code-provider.js +2 -0
  189. package/lib/expiring-code/expiring-code-provider.js.map +1 -0
  190. package/lib/expiring-code/expiring-code-ratchet.d.ts +10 -0
  191. package/lib/expiring-code/expiring-code-ratchet.js +35 -0
  192. package/lib/expiring-code/expiring-code-ratchet.js.map +1 -0
  193. package/lib/expiring-code/expiring-code.d.ts +6 -0
  194. package/lib/expiring-code/expiring-code.js +2 -0
  195. package/lib/expiring-code/expiring-code.js.map +1 -0
  196. package/lib/expiring-code/index.d.ts +4 -0
  197. package/lib/expiring-code/index.js +5 -0
  198. package/lib/expiring-code/index.js.map +1 -0
  199. package/lib/iam/aws-credentials-ratchet.d.ts +4 -0
  200. package/lib/iam/aws-credentials-ratchet.js +19 -0
  201. package/lib/iam/aws-credentials-ratchet.js.map +1 -0
  202. package/lib/iam/index.d.ts +1 -0
  203. package/lib/iam/index.js +2 -0
  204. package/lib/iam/index.js.map +1 -0
  205. package/lib/lambda/index.d.ts +2 -0
  206. package/lib/lambda/index.js +3 -0
  207. package/lib/lambda/index.js.map +1 -0
  208. package/lib/lambda/lambda-event-detector.d.ts +15 -0
  209. package/lib/lambda/lambda-event-detector.js +42 -0
  210. package/lib/lambda/lambda-event-detector.js.map +1 -0
  211. package/lib/lambda/lambda-event-type-guards.d.ts +11 -0
  212. package/lib/lambda/lambda-event-type-guards.js +28 -0
  213. package/lib/lambda/lambda-event-type-guards.js.map +1 -0
  214. package/lib/model/cloud-watch-metrics-minute-level-dynamo-count-request.d.ts +12 -0
  215. package/lib/model/cloud-watch-metrics-minute-level-dynamo-count-request.js +2 -0
  216. package/lib/model/cloud-watch-metrics-minute-level-dynamo-count-request.js.map +1 -0
  217. package/lib/model/dynamo-count-result.d.ts +5 -0
  218. package/lib/model/dynamo-count-result.js +2 -0
  219. package/lib/model/dynamo-count-result.js.map +1 -0
  220. package/lib/model/index.d.ts +2 -0
  221. package/lib/model/index.js +3 -0
  222. package/lib/model/index.js.map +1 -0
  223. package/lib/route53/index.d.ts +1 -0
  224. package/lib/route53/index.js +2 -0
  225. package/lib/route53/index.js.map +1 -0
  226. package/lib/route53/route-53-ratchet.d.ts +8 -0
  227. package/lib/route53/route-53-ratchet.js +59 -0
  228. package/lib/route53/route-53-ratchet.js.map +1 -0
  229. package/lib/runtime-parameter/cached-stored-runtime-parameter.d.ts +4 -0
  230. package/lib/runtime-parameter/cached-stored-runtime-parameter.js +2 -0
  231. package/lib/runtime-parameter/cached-stored-runtime-parameter.js.map +1 -0
  232. package/lib/runtime-parameter/global-variable-override-runtime-parameter-provider.d.ts +17 -0
  233. package/lib/runtime-parameter/global-variable-override-runtime-parameter-provider.js +52 -0
  234. package/lib/runtime-parameter/global-variable-override-runtime-parameter-provider.js.map +1 -0
  235. package/lib/runtime-parameter/index.d.ts +6 -0
  236. package/lib/runtime-parameter/index.js +7 -0
  237. package/lib/runtime-parameter/index.js.map +1 -0
  238. package/lib/runtime-parameter/memory-runtime-parameter-provider.d.ts +10 -0
  239. package/lib/runtime-parameter/memory-runtime-parameter-provider.js +35 -0
  240. package/lib/runtime-parameter/memory-runtime-parameter-provider.js.map +1 -0
  241. package/lib/runtime-parameter/runtime-parameter-provider.d.ts +6 -0
  242. package/lib/runtime-parameter/runtime-parameter-provider.js +2 -0
  243. package/lib/runtime-parameter/runtime-parameter-provider.js.map +1 -0
  244. package/lib/runtime-parameter/runtime-parameter-ratchet.d.ts +15 -0
  245. package/lib/runtime-parameter/runtime-parameter-ratchet.js +72 -0
  246. package/lib/runtime-parameter/runtime-parameter-ratchet.js.map +1 -0
  247. package/lib/runtime-parameter/stored-runtime-parameter.d.ts +6 -0
  248. package/lib/runtime-parameter/stored-runtime-parameter.js +2 -0
  249. package/lib/runtime-parameter/stored-runtime-parameter.js.map +1 -0
  250. package/lib/s3/expanded-file-children.d.ts +5 -0
  251. package/lib/s3/expanded-file-children.js +2 -0
  252. package/lib/s3/expanded-file-children.js.map +1 -0
  253. package/lib/s3/impl/s3-environment-service-provider.d.ts +15 -0
  254. package/lib/s3/impl/s3-environment-service-provider.js +28 -0
  255. package/lib/s3/impl/s3-environment-service-provider.js.map +1 -0
  256. package/lib/s3/impl/s3-expiring-code-provider.d.ts +17 -0
  257. package/lib/s3/impl/s3-expiring-code-provider.js +49 -0
  258. package/lib/s3/impl/s3-expiring-code-provider.js.map +1 -0
  259. package/lib/s3/impl/s3-prototype-dao-provider.d.ts +10 -0
  260. package/lib/s3/impl/s3-prototype-dao-provider.js +27 -0
  261. package/lib/s3/impl/s3-prototype-dao-provider.js.map +1 -0
  262. package/lib/s3/impl/s3-storage-provider.d.ts +14 -0
  263. package/lib/s3/impl/s3-storage-provider.js +44 -0
  264. package/lib/s3/impl/s3-storage-provider.js.map +1 -0
  265. package/lib/s3/index.d.ts +9 -0
  266. package/lib/s3/index.js +10 -0
  267. package/lib/s3/index.js.map +1 -0
  268. package/lib/s3/s3-cache-ratchet-like.d.ts +25 -0
  269. package/lib/s3/s3-cache-ratchet-like.js +2 -0
  270. package/lib/s3/s3-cache-ratchet-like.js.map +1 -0
  271. package/lib/s3/s3-cache-ratchet.d.ts +35 -0
  272. package/lib/s3/s3-cache-ratchet.js +360 -0
  273. package/lib/s3/s3-cache-ratchet.js.map +1 -0
  274. package/lib/s3/s3-location-sync-ratchet.d.ts +21 -0
  275. package/lib/s3/s3-location-sync-ratchet.js +140 -0
  276. package/lib/s3/s3-location-sync-ratchet.js.map +1 -0
  277. package/lib/s3/s3-ratchet.d.ts +5 -0
  278. package/lib/s3/s3-ratchet.js +23 -0
  279. package/lib/s3/s3-ratchet.js.map +1 -0
  280. package/lib/ses/index.d.ts +1 -0
  281. package/lib/ses/index.js +2 -0
  282. package/lib/ses/index.js.map +1 -0
  283. package/lib/ses/ses-mail-sending-provider.d.ts +15 -0
  284. package/lib/ses/ses-mail-sending-provider.js +68 -0
  285. package/lib/ses/ses-mail-sending-provider.js.map +1 -0
  286. package/lib/sns/index.d.ts +1 -0
  287. package/lib/sns/index.js +2 -0
  288. package/lib/sns/index.js.map +1 -0
  289. package/lib/sns/sns-ratchet.d.ts +9 -0
  290. package/lib/sns/sns-ratchet.js +49 -0
  291. package/lib/sns/sns-ratchet.js.map +1 -0
  292. package/lib/sync-lock/index.d.ts +2 -0
  293. package/lib/sync-lock/index.js +3 -0
  294. package/lib/sync-lock/index.js.map +1 -0
  295. package/lib/sync-lock/memory-sync-lock.d.ts +8 -0
  296. package/lib/sync-lock/memory-sync-lock.js +36 -0
  297. package/lib/sync-lock/memory-sync-lock.js.map +1 -0
  298. package/lib/sync-lock/sync-lock-provider.d.ts +5 -0
  299. package/lib/sync-lock/sync-lock-provider.js +2 -0
  300. package/lib/sync-lock/sync-lock-provider.js.map +1 -0
  301. package/package.json +55 -56
  302. package/lib/index.mjs +0 -2
  303. package/lib/types.d.ts +0 -818
@@ -0,0 +1,129 @@
1
+ import { S3CacheRatchet } from '../s3/s3-cache-ratchet.js';
2
+ import { DaemonUtil } from './daemon-util.js';
3
+ import { RequireRatchet } from '@bitblit/ratchet-common/lang/require-ratchet';
4
+ import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
5
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
6
+ export class Daemon {
7
+ s3;
8
+ bucket;
9
+ prefix;
10
+ _defaultGroup;
11
+ jwtRatchet;
12
+ static DEFAULT_DEFAULT_GROUP = 'DEFAULT';
13
+ cache;
14
+ constructor(s3, bucket, prefix = '', _defaultGroup = Daemon.DEFAULT_DEFAULT_GROUP, jwtRatchet) {
15
+ this.s3 = s3;
16
+ this.bucket = bucket;
17
+ this.prefix = prefix;
18
+ this._defaultGroup = _defaultGroup;
19
+ this.jwtRatchet = jwtRatchet;
20
+ this.cache = new S3CacheRatchet(this.s3, this.bucket);
21
+ }
22
+ get defaultGroup() {
23
+ return this._defaultGroup;
24
+ }
25
+ async keyToPublicToken(key, expirationSeconds) {
26
+ RequireRatchet.notNullOrUndefined(this.jwtRatchet, 'You must set jwtRatchet if you wish to use public tokens');
27
+ RequireRatchet.notNullOrUndefined(key, 'key');
28
+ RequireRatchet.true(expirationSeconds > 0, 'Expiration seconds must be larger than 0');
29
+ const token = { daemonKey: key };
30
+ const publicToken = await this.jwtRatchet.createTokenString(token, expirationSeconds);
31
+ return publicToken;
32
+ }
33
+ keyToPath(key) {
34
+ return Buffer.from(key, 'base64').toString();
35
+ }
36
+ pathToKey(path) {
37
+ return Buffer.from(path).toString('base64');
38
+ }
39
+ generatePath(group = this._defaultGroup) {
40
+ return this.generatePrefix(group) + StringRatchet.createType4Guid();
41
+ }
42
+ generatePrefix(group = this._defaultGroup) {
43
+ return this.prefix + group + '/';
44
+ }
45
+ async start(options) {
46
+ options.group = options.group || this._defaultGroup;
47
+ const path = this.generatePath(options.group);
48
+ const key = this.pathToKey(path);
49
+ return DaemonUtil.start(this.cache, key, path, options);
50
+ }
51
+ async writeState(newState, contents) {
52
+ const key = this.keyToPath(newState.id);
53
+ return DaemonUtil.writeState(this.cache, key, newState, contents);
54
+ }
55
+ async clean(group = this._defaultGroup, olderThanSeconds = 60 * 60 * 24 * 7) {
56
+ try {
57
+ Logger.info('Daemon removing items older than %d seconds from group %s', olderThanSeconds, group);
58
+ const original = await this.list(group);
59
+ const now = new Date().getTime();
60
+ const removed = [];
61
+ for (let i = 0; i < original.length; i++) {
62
+ const test = original[i];
63
+ const ageSeconds = (now - test.startedEpochMS) / 1000;
64
+ if (ageSeconds > olderThanSeconds) {
65
+ const remove = await this.cache.removeCacheFile(this.keyToPath(test.id));
66
+ removed.push(test);
67
+ }
68
+ }
69
+ Logger.debug('Removed %d of %d items', removed.length, original.length);
70
+ return removed;
71
+ }
72
+ catch (err) {
73
+ Logger.error('Error while trying to clean a daemon: %j %s', group, err);
74
+ throw err;
75
+ }
76
+ }
77
+ async listKeys(group = this._defaultGroup) {
78
+ try {
79
+ const prefix = this.generatePrefix(group);
80
+ Logger.info('Fetching children of %s', prefix);
81
+ const rval = await this.cache.directChildrenOfPrefix(prefix);
82
+ Logger.debug('Found : %j', rval);
83
+ return rval;
84
+ }
85
+ catch (err) {
86
+ Logger.error('Error while trying to list daemon keys: %j %s', group, err);
87
+ throw err;
88
+ }
89
+ }
90
+ async list(group = this._defaultGroup) {
91
+ try {
92
+ const prefix = this.generatePrefix(group);
93
+ Logger.info('Fetching children of %s', prefix);
94
+ const keys = await this.listKeys(group);
95
+ const proms = keys.map((k) => this.stat(this.pathToKey(this.generatePrefix(group) + k)));
96
+ const rval = await Promise.all(proms);
97
+ return rval;
98
+ }
99
+ catch (err) {
100
+ Logger.error('Error while trying to list daemon states: %j %s', group, err);
101
+ throw err;
102
+ }
103
+ }
104
+ async updateMessage(id, newMessage) {
105
+ const itemPath = this.keyToPath(id);
106
+ return DaemonUtil.updateMessage(this.cache, itemPath, newMessage);
107
+ }
108
+ async stat(key) {
109
+ const itemPath = this.keyToPath(key);
110
+ return DaemonUtil.stat(this.cache, itemPath);
111
+ }
112
+ async statFromPublicToken(publicToken) {
113
+ RequireRatchet.notNullOrUndefined(this.jwtRatchet, 'You must set jwtRatchet if you wish to use public tokens');
114
+ RequireRatchet.notNullOrUndefined(publicToken, 'publicToken');
115
+ const parsed = await this.jwtRatchet.decodeToken(publicToken);
116
+ const key = parsed?.daemonKey;
117
+ return key ? this.stat(key) : null;
118
+ }
119
+ async abort(id) {
120
+ return DaemonUtil.abort(this.cache, this.keyToPath(id));
121
+ }
122
+ async error(id, error) {
123
+ return DaemonUtil.error(this.cache, this.keyToPath(id), error);
124
+ }
125
+ async finalize(id, contents) {
126
+ return DaemonUtil.finalize(this.cache, this.keyToPath(id), contents);
127
+ }
128
+ }
129
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/daemon/daemon.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAE/D,MAAM,OAAO,MAAM;IAMP;IACA;IACA;IACA;IACA;IATH,MAAM,CAAC,qBAAqB,GAAW,SAAS,CAAC;IAEhD,KAAK,CAAqB;IAElC,YACU,EAAY,EACZ,MAAc,EACd,SAAiB,EAAE,EACnB,gBAAwB,MAAM,CAAC,qBAAqB,EACpD,UAA2B;QAJ3B,OAAE,GAAF,EAAE,CAAU;QACZ,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAa;QACnB,kBAAa,GAAb,aAAa,CAAuC;QACpD,eAAU,GAAV,UAAU,CAAiB;QAEnC,IAAI,CAAC,KAAK,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,iBAAyB;QAClE,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,0DAA0D,CAAC,CAAC;QAC/G,cAAc,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9C,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE,0CAA0C,CAAC,CAAC;QAEvF,MAAM,KAAK,GAAkC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;QAChE,MAAM,WAAW,GAAW,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC9F,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,SAAS,CAAC,GAAW;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/C,CAAC;IAEO,SAAS,CAAC,IAAY;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEO,YAAY,CAAC,QAAgB,IAAI,CAAC,aAAa;QACrD,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC;IACtE,CAAC;IAEO,cAAc,CAAC,QAAgB,IAAI,CAAC,aAAa;QACvD,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,OAAmC;QACpD,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC;QACpD,MAAM,IAAI,GAAW,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,GAAG,GAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,QAA4B,EAAE,QAAgB;QACrE,MAAM,GAAG,GAAW,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAChD,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,QAAgB,IAAI,CAAC,aAAa,EAAE,mBAA2B,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAChG,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,2DAA2D,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;YAClG,MAAM,QAAQ,GAAyB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,OAAO,GAAyB,EAAE,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,IAAI,GAAuB,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC7C,MAAM,UAAU,GAAW,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;gBAC9D,IAAI,UAAU,GAAG,gBAAgB,EAAE,CAAC;oBAClC,MAAM,MAAM,GAAQ,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC9E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxE,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YACxE,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,QAAgB,IAAI,CAAC,aAAa;QACtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAW,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAa,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC1E,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,QAAgB,IAAI,CAAC,aAAa;QAClD,IAAI,CAAC;YACH,MAAM,MAAM,GAAW,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAa,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,KAAK,GAAkC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACxH,MAAM,IAAI,GAAyB,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAE5D,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC5E,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,UAAkB;QACvD,MAAM,QAAQ,GAAW,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,GAAW;QAC3B,MAAM,QAAQ,GAAW,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,WAAmB;QAClD,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,0DAA0D,CAAC,CAAC;QAC/G,cAAc,CAAC,kBAAkB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAkC,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAgC,WAAW,CAAC,CAAC;QAC5H,MAAM,GAAG,GAAW,MAAM,EAAE,SAAS,CAAC;QACtC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,EAAU;QAC3B,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IACM,KAAK,CAAC,KAAK,CAAC,EAAU,EAAE,KAAa;QAC1C,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,EAAU,EAAE,QAAgB;QAChD,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './daemon-like.js';
2
+ export * from './daemon-process-create-options.js';
3
+ export * from './daemon-process-state-public-token.js';
4
+ export * from './daemon-process-state.js';
5
+ export * from './daemon-stream-data-options.js';
6
+ export * from './daemon-util.js';
7
+ export * from './daemon.js';
@@ -0,0 +1,8 @@
1
+ export * from './daemon-like.js';
2
+ export * from './daemon-process-create-options.js';
3
+ export * from './daemon-process-state-public-token.js';
4
+ export * from './daemon-process-state.js';
5
+ export * from './daemon-stream-data-options.js';
6
+ export * from './daemon-util.js';
7
+ export * from './daemon.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAIA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface ExamplePrototypeDaoItem {
2
+ fieldA: number;
3
+ fieldB: string;
4
+ type: string;
5
+ createdEpochMS?: number;
6
+ updatedEpochMS?: number;
7
+ guid?: string;
8
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=example-prototype-dao-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example-prototype-dao-item.js","sourceRoot":"","sources":["../../src/dao/example-prototype-dao-item.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ export * from './example-prototype-dao-item.js';
2
+ export * from './memory-prototype-dao-provider.js';
3
+ export * from './prototype-dao-config.js';
4
+ export * from './prototype-dao-db.js';
5
+ export * from './prototype-dao-provider.js';
6
+ export * from './prototype-dao.js';
7
+ export * from './s3-simple-dao.js';
8
+ export * from './simple-dao-item.js';
@@ -0,0 +1,9 @@
1
+ export * from './example-prototype-dao-item.js';
2
+ export * from './memory-prototype-dao-provider.js';
3
+ export * from './prototype-dao-config.js';
4
+ export * from './prototype-dao-db.js';
5
+ export * from './prototype-dao-provider.js';
6
+ export * from './prototype-dao.js';
7
+ export * from './s3-simple-dao.js';
8
+ export * from './simple-dao-item.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dao/index.ts"],"names":[],"mappings":"AAIA,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { PrototypeDaoProvider } from './prototype-dao-provider.js';
2
+ import { PrototypeDaoDb } from './prototype-dao-db.js';
3
+ export declare class MemoryPrototypeDaoProvider implements PrototypeDaoProvider<any> {
4
+ private _db;
5
+ loadDatabase(): Promise<PrototypeDaoDb<any>>;
6
+ storeDatabase(db: PrototypeDaoDb<any>): Promise<boolean>;
7
+ }
@@ -0,0 +1,11 @@
1
+ export class MemoryPrototypeDaoProvider {
2
+ _db = null;
3
+ async loadDatabase() {
4
+ return this._db;
5
+ }
6
+ async storeDatabase(db) {
7
+ this._db = db;
8
+ return true;
9
+ }
10
+ }
11
+ //# sourceMappingURL=memory-prototype-dao-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-prototype-dao-provider.js","sourceRoot":"","sources":["../../src/dao/memory-prototype-dao-provider.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,0BAA0B;IAC7B,GAAG,GAAwB,IAAI,CAAC;IAEjC,KAAK,CAAC,YAAY;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,EAAuB;QAChD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ export interface PrototypeDaoConfig {
2
+ guidCreateFunction: () => string;
3
+ guidFieldName: string;
4
+ createdEpochMSFieldName?: string;
5
+ updatedEpochMSFieldName?: string;
6
+ createdUtcTimestampFieldName?: string;
7
+ updatedUtcTimestampFieldName?: string;
8
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=prototype-dao-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prototype-dao-config.js","sourceRoot":"","sources":["../../src/dao/prototype-dao-config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export interface PrototypeDaoDb<T> {
2
+ items: T[];
3
+ lastModifiedEpochMS: number;
4
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=prototype-dao-db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prototype-dao-db.js","sourceRoot":"","sources":["../../src/dao/prototype-dao-db.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { PrototypeDaoDb } from './prototype-dao-db.js';
2
+ export interface PrototypeDaoProvider<T> {
3
+ storeDatabase(db: PrototypeDaoDb<T>): Promise<boolean>;
4
+ loadDatabase(): Promise<PrototypeDaoDb<T>>;
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=prototype-dao-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prototype-dao-provider.js","sourceRoot":"","sources":["../../src/dao/prototype-dao-provider.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import { PrototypeDaoProvider } from './prototype-dao-provider.js';
2
+ import { PrototypeDaoConfig } from './prototype-dao-config.js';
3
+ export declare class PrototypeDao<T> {
4
+ private provider;
5
+ private cfg;
6
+ static defaultDaoConfig(): PrototypeDaoConfig;
7
+ constructor(provider: PrototypeDaoProvider<T>, cfg?: PrototypeDaoConfig);
8
+ fetchAll(): Promise<T[]>;
9
+ resetDatabase(): Promise<void>;
10
+ removeItems(guids: string[]): Promise<T[]>;
11
+ store(value: T): Promise<T>;
12
+ fetchById(guid: string): Promise<T>;
13
+ searchByField<R>(fieldDotPath: string, fieldValue: R): Promise<T[]>;
14
+ searchByFieldMap(input: Record<string, any>): Promise<T[]>;
15
+ }
@@ -0,0 +1,89 @@
1
+ import { DateTime } from 'luxon';
2
+ import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
3
+ import { RequireRatchet } from '@bitblit/ratchet-common/lang/require-ratchet';
4
+ import { MapRatchet } from '@bitblit/ratchet-common/lang/map-ratchet';
5
+ export class PrototypeDao {
6
+ provider;
7
+ cfg;
8
+ static defaultDaoConfig() {
9
+ return {
10
+ guidCreateFunction: StringRatchet.createType4Guid,
11
+ guidFieldName: 'guid',
12
+ createdEpochMSFieldName: 'createdEpochMS',
13
+ updatedEpochMSFieldName: 'updatedEpochMS',
14
+ createdUtcTimestampFieldName: null,
15
+ updatedUtcTimestampFieldName: null,
16
+ };
17
+ }
18
+ constructor(provider, cfg = PrototypeDao.defaultDaoConfig()) {
19
+ this.provider = provider;
20
+ this.cfg = cfg;
21
+ RequireRatchet.notNullOrUndefined(provider, 'provider');
22
+ RequireRatchet.notNullOrUndefined(cfg, 'cfg');
23
+ RequireRatchet.notNullOrUndefined(cfg.guidCreateFunction, 'cfg.guidCreateFunction');
24
+ RequireRatchet.notNullOrUndefined(cfg.guidFieldName, 'cfg.guidFieldName');
25
+ }
26
+ async fetchAll() {
27
+ const db = await this.provider.loadDatabase();
28
+ return db.items || [];
29
+ }
30
+ async resetDatabase() {
31
+ await this.provider.storeDatabase({ items: [], lastModifiedEpochMS: Date.now() });
32
+ }
33
+ async removeItems(guids) {
34
+ let old = await this.fetchAll();
35
+ if (guids) {
36
+ old = old.filter((t) => !guids.includes(t[this.cfg.guidFieldName]));
37
+ await this.provider.storeDatabase({ items: old, lastModifiedEpochMS: Date.now() });
38
+ }
39
+ return old;
40
+ }
41
+ async store(value) {
42
+ let old = await this.fetchAll();
43
+ if (value) {
44
+ value[this.cfg.guidFieldName] = value[this.cfg.guidFieldName] || this.cfg.guidCreateFunction();
45
+ if (this.cfg.createdEpochMSFieldName) {
46
+ value[this.cfg.createdEpochMSFieldName] = value[this.cfg.createdEpochMSFieldName] || Date.now();
47
+ }
48
+ if (this.cfg.createdUtcTimestampFieldName) {
49
+ value[this.cfg.createdUtcTimestampFieldName] = value[this.cfg.createdUtcTimestampFieldName] || DateTime.utc().toISO();
50
+ }
51
+ if (this.cfg.updatedEpochMSFieldName) {
52
+ value[this.cfg.updatedEpochMSFieldName] = Date.now();
53
+ }
54
+ if (this.cfg.updatedUtcTimestampFieldName) {
55
+ value[this.cfg.updatedUtcTimestampFieldName] = DateTime.utc().toISO();
56
+ }
57
+ old = old.filter((t) => t[this.cfg.guidFieldName] !== value[this.cfg.guidFieldName]);
58
+ old.push(value);
59
+ await this.provider.storeDatabase({ items: old, lastModifiedEpochMS: Date.now() });
60
+ }
61
+ return value;
62
+ }
63
+ async fetchById(guid) {
64
+ const old = await this.fetchAll();
65
+ return old.find((t) => t[this.cfg.guidFieldName] === guid);
66
+ }
67
+ async searchByField(fieldDotPath, fieldValue) {
68
+ RequireRatchet.notNullOrUndefined(fieldDotPath, 'fieldDotPath');
69
+ RequireRatchet.notNullOrUndefined(fieldValue, 'fieldValue');
70
+ const map = {};
71
+ map[fieldDotPath] = fieldValue;
72
+ return this.searchByFieldMap(map);
73
+ }
74
+ async searchByFieldMap(input) {
75
+ RequireRatchet.notNullOrUndefined(input, 'input');
76
+ let old = await this.fetchAll();
77
+ old = old.filter((t) => {
78
+ let matchAll = true;
79
+ Object.keys(input).forEach((k) => {
80
+ const val = MapRatchet.findValueDotPath(t, k);
81
+ const fieldValue = input[k];
82
+ matchAll = matchAll && val === fieldValue;
83
+ });
84
+ return matchAll;
85
+ });
86
+ return old;
87
+ }
88
+ }
89
+ //# sourceMappingURL=prototype-dao.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prototype-dao.js","sourceRoot":"","sources":["../../src/dao/prototype-dao.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { SimpleDaoItem } from './simple-dao-item.js';
2
+ import { S3CacheRatchetLike } from '../s3/s3-cache-ratchet-like.js';
3
+ export declare class S3SimpleDao<T extends SimpleDaoItem> {
4
+ private cache;
5
+ private prefix?;
6
+ constructor(cache: S3CacheRatchetLike, prefix?: string);
7
+ buildPathPrefix(path: string): string;
8
+ buildFullPath(id: string, path?: string): string;
9
+ exists(id: string, path?: string): Promise<boolean>;
10
+ fetch(id: string, path?: string): Promise<T>;
11
+ store(item: T, path?: string): Promise<T>;
12
+ listItems(path?: string): Promise<string[]>;
13
+ fetchItemsInPath(path?: string): Promise<T[]>;
14
+ delete(id: string, path?: string): Promise<boolean>;
15
+ }
@@ -0,0 +1,77 @@
1
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
2
+ import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
3
+ export class S3SimpleDao {
4
+ cache;
5
+ prefix;
6
+ constructor(cache, prefix) {
7
+ this.cache = cache;
8
+ this.prefix = prefix;
9
+ if (!cache) {
10
+ throw new Error('cache object may not be null');
11
+ }
12
+ if (!cache.getDefaultBucket()) {
13
+ throw new Error('Supplied cache must have default bucket set');
14
+ }
15
+ }
16
+ buildPathPrefix(path) {
17
+ let rval = '';
18
+ if (this.prefix) {
19
+ rval += this.prefix;
20
+ }
21
+ if (path) {
22
+ rval += path;
23
+ }
24
+ return rval;
25
+ }
26
+ buildFullPath(id, path) {
27
+ let rval = this.buildPathPrefix(path);
28
+ if (rval.length > 0) {
29
+ rval += '/';
30
+ }
31
+ rval += id + '.json';
32
+ return rval;
33
+ }
34
+ async exists(id, path) {
35
+ const fullPath = this.buildFullPath(id, path);
36
+ Logger.debug('Check file existence : %s', fullPath);
37
+ return this.cache.fileExists(fullPath);
38
+ }
39
+ async fetch(id, path) {
40
+ const fullPath = this.buildFullPath(id, path);
41
+ Logger.debug('Fetching : %s', fullPath);
42
+ const rval = (await this.cache.fetchCacheFileAsObject(fullPath));
43
+ rval.id = id;
44
+ rval.path = path;
45
+ return rval;
46
+ }
47
+ async store(item, path) {
48
+ item.id = item.id || StringRatchet.createType4Guid();
49
+ item.lastModifiedEpochMS = new Date().getTime();
50
+ const fullPath = this.buildFullPath(item.id, path);
51
+ Logger.debug('Storing : %s', fullPath);
52
+ const stored = await this.cache.writeObjectToCacheFile(fullPath, item);
53
+ const read = await this.fetch(item.id, path);
54
+ return read;
55
+ }
56
+ async listItems(path) {
57
+ const fullPath = this.buildPathPrefix(path);
58
+ Logger.debug('Listing : %s', fullPath);
59
+ const rval = await this.cache.directChildrenOfPrefix(fullPath);
60
+ return rval;
61
+ }
62
+ async fetchItemsInPath(path) {
63
+ const fullPath = this.buildPathPrefix(path);
64
+ Logger.debug('Full fetch of : %s', fullPath);
65
+ const items = await this.listItems(path);
66
+ const promises = items.map((s) => this.fetch(s, path));
67
+ const rval = await Promise.all(promises);
68
+ return rval;
69
+ }
70
+ async delete(id, path) {
71
+ const fullPath = this.buildFullPath(id, path);
72
+ Logger.debug('Deleting : %s', fullPath);
73
+ const del = await this.cache.removeCacheFile(fullPath);
74
+ return del != null;
75
+ }
76
+ }
77
+ //# sourceMappingURL=s3-simple-dao.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3-simple-dao.js","sourceRoot":"","sources":["../../src/dao/s3-simple-dao.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface SimpleDaoItem {
2
+ id: string;
3
+ path: string;
4
+ lastModifiedEpochMS: number;
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=simple-dao-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-dao-item.js","sourceRoot":"","sources":["../../src/dao/simple-dao-item.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { DynamoCountResult } from '../model/dynamo-count-result.js';
2
+ import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';
3
+ import { DeleteCommandOutput, PutCommandOutput, QueryCommandInput, ScanCommandInput } from '@aws-sdk/lib-dynamodb';
4
+ export interface DynamoRatchetLike {
5
+ getDDB(): DynamoDBDocumentClient;
6
+ tableIsEmpty(tableName: string): Promise<boolean>;
7
+ throughputSafeScanOrQuery<T, R>(proc: (T: any) => Promise<R>, input: T, maxTries?: number, inCurrentTry?: number): Promise<R>;
8
+ fullyExecuteQueryCount(qry: QueryCommandInput, delayMS?: number): Promise<DynamoCountResult>;
9
+ fullyExecuteQuery<T>(qry: QueryCommandInput, delayMS?: number, softLimit?: number): Promise<T[]>;
10
+ fullyExecuteProcessOverQuery<T>(qry: QueryCommandInput, proc: (val: T) => Promise<void>, delayMS?: number, softLimit?: number): Promise<number>;
11
+ fullyExecuteScanCount(scan: ScanCommandInput, delayMS?: number): Promise<DynamoCountResult>;
12
+ fullyExecuteScan<T>(scan: ScanCommandInput, delayMS?: number, softLimit?: number): Promise<T[]>;
13
+ fullyExecuteProcessOverScan<T>(scan: ScanCommandInput, proc: (val: T) => Promise<void>, delayMS?: number, softLimit?: number): Promise<number>;
14
+ writeAllInBatches<T>(tableName: string, elements: T[], batchSize: number): Promise<number>;
15
+ fetchFullObjectsMatchingKeysOnlyIndexQuery<T>(qry: QueryCommandInput, keyNames: string[], batchSize?: number): Promise<T[]>;
16
+ fetchAllInBatches<T>(tableName: string, inKeys: any[], batchSize: number): Promise<T[]>;
17
+ deleteAllInBatches(tableName: string, keys: any[], batchSize: number): Promise<number>;
18
+ simplePut(tableName: string, value: any, autoRetryCount?: number): Promise<PutCommandOutput>;
19
+ simplePutOnlyIfFieldIsNullOrUndefined(tableName: string, value: any, fieldName: string): Promise<boolean>;
20
+ simplePutWithCollisionAvoidance<T>(tableName: string, value: T, keyNames: string[], adjustFunction: (val: T) => T, maxAdjusts?: number, autoRetryCount?: number): Promise<T>;
21
+ simpleGet<T>(tableName: string, keys: any, autoRetryCount?: number): Promise<T>;
22
+ simpleGetWithCounterDecrement<T>(tableName: string, keys: any, counterAttributeName: string, deleteOnZero: boolean, autoRetryCount?: number): Promise<T>;
23
+ simpleDelete(tableName: string, keys: any): Promise<DeleteCommandOutput>;
24
+ atomicCounter(tableName: string, keys: any, counterFieldName: string, increment?: number): Promise<number>;
25
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dynamo-ratchet-like.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamo-ratchet-like.js","sourceRoot":"","sources":["../../src/dynamodb/dynamo-ratchet-like.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import { DeleteCommandOutput, DynamoDBDocumentClient, PutCommandOutput, QueryCommandInput, QueryCommandOutput, ScanCommandInput, ScanCommandOutput } from '@aws-sdk/lib-dynamodb';
2
+ import { DynamoCountResult } from '../model/dynamo-count-result.js';
3
+ import { DynamoRatchetLike } from './dynamo-ratchet-like.js';
4
+ export declare class DynamoRatchet implements DynamoRatchetLike {
5
+ private awsDDB;
6
+ constructor(awsDDB: DynamoDBDocumentClient);
7
+ get dynamoDBDocumentClient(): DynamoDBDocumentClient;
8
+ getDDB(): DynamoDBDocumentClient;
9
+ tableIsEmpty(tableName: string): Promise<boolean>;
10
+ scanPromise(input: ScanCommandInput): Promise<ScanCommandOutput>;
11
+ queryPromise(input: QueryCommandInput): Promise<QueryCommandOutput>;
12
+ throughputSafeScanOrQuery<T, R>(proc: (T: any) => Promise<R>, input: T, maxTries?: number, inCurrentTry?: number): Promise<R>;
13
+ fullyExecuteQueryCount(qry: QueryCommandInput, delayMS?: number): Promise<DynamoCountResult>;
14
+ fullyExecuteQuery<T>(qry: QueryCommandInput, delayMS?: number, softLimit?: number): Promise<T[]>;
15
+ fullyExecuteProcessOverQuery<T>(qry: QueryCommandInput, proc: (val: T) => Promise<void>, delayMS?: number, softLimit?: number): Promise<number>;
16
+ fullyExecuteScanCount(scan: ScanCommandInput, delayMS?: number): Promise<DynamoCountResult>;
17
+ fullyExecuteScan<T>(scan: ScanCommandInput, delayMS?: number, softLimit?: number): Promise<T[]>;
18
+ fullyExecuteProcessOverScan<T>(scan: ScanCommandInput, proc: (val: T) => Promise<void>, delayMS?: number, softLimit?: number): Promise<number>;
19
+ writeAllInBatches<T>(tableName: string, elements: T[], batchSize: number): Promise<number>;
20
+ fetchFullObjectsMatchingKeysOnlyIndexQuery<T>(qry: QueryCommandInput, keyNames: string[], batchSize?: number): Promise<T[]>;
21
+ fetchAllInBatches<T>(tableName: string, inKeys: Record<string, any>[], batchSize: number): Promise<T[]>;
22
+ deleteAllInBatches(tableName: string, keys: Record<string, any>[], batchSize: number): Promise<number>;
23
+ simplePut(tableName: string, value: Record<string, any>, autoRetryCount?: number): Promise<PutCommandOutput>;
24
+ simplePutOnlyIfFieldIsNullOrUndefined(tableName: string, value: Record<string, any>, fieldName: string): Promise<boolean>;
25
+ simplePutWithCollisionAvoidance<T>(tableName: string, value: T, keyNames: string[], adjustFunction: (val: T) => T, maxAdjusts?: number, autoRetryCount?: number): Promise<T>;
26
+ simpleGet<T>(tableName: string, keys: Record<string, any>, autoRetryCount?: number): Promise<T>;
27
+ static objectIsErrorWithProvisionedThroughputExceededExceptionCode(err: Record<string, any>): boolean;
28
+ simpleGetWithCounterDecrement<T>(tableName: string, keys: Record<string, any>, counterAttributeName: string, deleteOnZero: boolean, autoRetryCount?: number): Promise<T>;
29
+ simpleDelete(tableName: string, keys: Record<string, any>): Promise<DeleteCommandOutput>;
30
+ atomicCounter(tableName: string, keys: Record<string, any>, counterFieldName: string, increment?: number): Promise<number>;
31
+ static cleanObject(ob: Record<string, any>): void;
32
+ static stripToKeysOnly(input: Record<string, any>, keysNames: string[]): Record<string, any>;
33
+ static stripAllToKeysOnly(input: Record<string, any>[], keys: string[]): Record<string, any>[];
34
+ }