Compare commits

...

32 Commits

Author SHA1 Message Date
standardci
2af812eaf1 chore(release): publish new version
- @standardnotes/analytics@2.26.2
 - @standardnotes/api-gateway@1.73.6
 - @standardnotes/auth-server@1.137.5
 - @standardnotes/common@1.50.3
 - @standardnotes/domain-core@1.26.2
 - @standardnotes/domain-events-infra@1.12.20
 - @standardnotes/domain-events@2.122.1
 - @standardnotes/event-store@1.11.30
 - @standardnotes/files-server@1.22.9
 - @standardnotes/home-server@1.15.20
 - @standardnotes/predicates@1.6.10
 - @standardnotes/revisions-server@1.30.10
 - @standardnotes/scheduler-server@1.20.34
 - @standardnotes/security@1.12.1
 - @standardnotes/settings@1.21.27
 - @standardnotes/sncrypto-node@1.15.5
 - @standardnotes/syncing-server@1.91.1
 - @standardnotes/time@1.15.2
 - @standardnotes/websockets-server@1.10.27
2023-09-01 14:54:13 +00:00
Karol Sójko
d13c975f94 chore: upgrade deps (#805)
* chore: upgrade semver

* chore: upgrade configure-aws-credentials@v2

* chore: upgrade prettier deps

* fix: linter issues
2023-09-01 16:14:51 +02:00
standardci
1f7e4dd184 chore(release): publish new version
- @standardnotes/analytics@2.26.1
 - @standardnotes/api-gateway@1.73.5
 - @standardnotes/auth-server@1.137.4
 - @standardnotes/domain-events-infra@1.12.19
 - @standardnotes/domain-events@2.122.0
 - @standardnotes/event-store@1.11.29
 - @standardnotes/files-server@1.22.8
 - @standardnotes/home-server@1.15.19
 - @standardnotes/revisions-server@1.30.9
 - @standardnotes/scheduler-server@1.20.33
 - @standardnotes/syncing-server@1.91.0
 - @standardnotes/websockets-server@1.10.26
2023-09-01 12:28:05 +00:00
Karol Sójko
8b04216998 chore: fix e2e to fail fast 2023-09-01 12:41:31 +02:00
Karol Sójko
27ff25b70e fix: inserting revisions instead of upsert (#803)
* fix: inserting revisions instead of upsert

* fix: specs

* fix: specs
2023-09-01 12:40:47 +02:00
Karol Sójko
dc3a41e4bb feat(syncing-server): add sending invites via websockets (#804)
* feat(domain-events): add user invited to shared vault event

* feat(syncing-server): add sending invites via websockets
2023-09-01 12:39:38 +02:00
standardci
94448bb5d8 chore(release): publish new version
- @standardnotes/analytics@2.26.0
 - @standardnotes/api-gateway@1.73.4
 - @standardnotes/auth-server@1.137.3
 - @standardnotes/domain-events-infra@1.12.18
 - @standardnotes/domain-events@2.121.0
 - @standardnotes/event-store@1.11.28
 - @standardnotes/files-server@1.22.7
 - @standardnotes/home-server@1.15.18
 - @standardnotes/revisions-server@1.30.8
 - @standardnotes/scheduler-server@1.20.32
 - @standardnotes/syncing-server@1.90.0
 - @standardnotes/websockets-server@1.10.25
2023-09-01 08:56:44 +00:00
Karol Sójko
9a568b0f73 feat: send websocket event to user when a message is sent (#802) 2023-09-01 09:39:10 +02:00
Karol Sójko
a1ee491dc5 fix(revisions): add transition start info 2023-09-01 08:22:29 +02:00
Karol Sójko
e5c118c262 fix(revisions): info logs on total revisions transitioned count 2023-09-01 08:21:41 +02:00
Karol Sójko
1bef1279e6 fix: remove the alive and kicking info logs on workers 2023-09-01 08:19:14 +02:00
Karol Sójko
c511f259c7 fix(analytics): throwing errors on unexisting users 2023-09-01 08:17:22 +02:00
standardci
f77ed8ef94 chore(release): publish new version
- @standardnotes/home-server@1.15.17
 - @standardnotes/revisions-server@1.30.7
2023-08-31 13:57:20 +00:00
Karol Sójko
a4929af2ee fix(revisions): add more verbose messages about failures in revision transitioning 2023-08-31 14:46:11 +02:00
Karol Sójko
095811dda9 fix(revisions): revisions transition check for total count at the end 2023-08-31 14:00:05 +02:00
standardci
480d5879ba chore(release): publish new version
- @standardnotes/analytics@2.25.21
 - @standardnotes/api-gateway@1.73.3
 - @standardnotes/auth-server@1.137.2
 - @standardnotes/domain-events-infra@1.12.17
 - @standardnotes/domain-events@2.120.0
 - @standardnotes/event-store@1.11.27
 - @standardnotes/files-server@1.22.6
 - @standardnotes/home-server@1.15.16
 - @standardnotes/revisions-server@1.30.6
 - @standardnotes/scheduler-server@1.20.31
 - @standardnotes/syncing-server@1.89.0
 - @standardnotes/websockets-server@1.10.24
2023-08-31 11:58:21 +00:00
Karol Sójko
c0722b173b feat: add sending notifications to user via websockets (#799)
* feat: add sending notifications to user via websockets

* fix: notification added for user event payload structure
2023-08-31 13:26:42 +02:00
standardci
f07c8e4bd4 chore(release): publish new version
- @standardnotes/home-server@1.15.15
 - @standardnotes/revisions-server@1.30.5
 - @standardnotes/syncing-server@1.88.3
2023-08-31 11:26:16 +00:00
Karol Sójko
baf4b2c1d2 fix(syncing-server): persistence mapping for deleted field 2023-08-31 12:11:39 +02:00
Karol Sójko
a6039bd99a fix(revisions): indiciate if revision did not save 2023-08-31 12:04:21 +02:00
standardci
7c0010c902 chore(release): publish new version
- @standardnotes/analytics@2.25.20
 - @standardnotes/api-gateway@1.73.2
 - @standardnotes/auth-server@1.137.1
 - @standardnotes/event-store@1.11.26
 - @standardnotes/files-server@1.22.5
 - @standardnotes/home-server@1.15.14
 - @standardnotes/revisions-server@1.30.4
 - @standardnotes/scheduler-server@1.20.30
 - @standardnotes/syncing-server@1.88.2
 - @standardnotes/time@1.15.1
2023-08-31 09:20:18 +00:00
Karol Sójko
596a0f1a02 fix: transitionining revisions (#801) 2023-08-31 09:50:57 +02:00
standardci
efda3df09b chore(release): publish new version
- @standardnotes/home-server@1.15.13
 - @standardnotes/revisions-server@1.30.3
 - @standardnotes/syncing-server@1.88.1
2023-08-30 17:00:54 +00:00
Karol Sójko
ec35f46d45 fix: mongo delete queries 2023-08-30 18:23:08 +02:00
standardci
c64fa2f47c chore(release): publish new version
- @standardnotes/home-server@1.15.12
 - @standardnotes/revisions-server@1.30.2
2023-08-30 15:51:18 +00:00
Karol Sójko
6ce42a0101 fix(revisions): mongo queries 2023-08-30 17:13:11 +02:00
standardci
d40c74c072 chore(release): publish new version
- @standardnotes/home-server@1.15.11
 - @standardnotes/revisions-server@1.30.1
2023-08-30 14:56:54 +00:00
Karol Sójko
d722206916 fix(revisions): message in logs for trasitions status updated 2023-08-30 16:18:21 +02:00
standardci
19e4c8bf5e chore(release): publish new version
- @standardnotes/api-gateway@1.73.1
 - @standardnotes/home-server@1.15.10
2023-08-30 13:43:55 +00:00
Karol Sójko
ee656b868b fix(api-gateway): transition triggering endpoint call for revisions 2023-08-30 14:08:13 +02:00
standardci
5e79d28bbf chore(release): publish new version
- @standardnotes/api-gateway@1.73.0
 - @standardnotes/home-server@1.15.9
 - @standardnotes/revisions-server@1.30.0
2023-08-30 11:49:34 +00:00
Karol Sójko
25ffd6b803 feat: add a way to trigger transition procedure for revisions (#798)
* feat: add a way to trigger transition procedure for revisions

* fix: localstack linking

* fix: revisions endpoints
2023-08-30 13:14:49 +02:00
180 changed files with 2494 additions and 489 deletions

View File

@@ -24,7 +24,7 @@ jobs:
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
uses: aws-actions/configure-aws-credentials@v3
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

View File

@@ -70,7 +70,7 @@ jobs:
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
uses: aws-actions/configure-aws-credentials@v3
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

View File

@@ -21,7 +21,7 @@ jobs:
e2e:
name: (Self Hosting) E2E Test Suite
strategy:
fail-fast: false
fail-fast: true
matrix:
secondary_db_enabled: [true, false]
transition_mode_enabled: [true, false]
@@ -70,7 +70,7 @@ jobs:
e2e-home-server:
name: (Home Server) E2E Test Suite
strategy:
fail-fast: false
fail-fast: true
matrix:
db_type: [mysql, sqlite]
cache_type: [redis, memory]

457
.pnp.cjs generated
View File

@@ -4648,6 +4648,21 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["@pkgr/utils", [\
["npm:2.4.2", {\
"packageLocation": "./.yarn/cache/@pkgr-utils-npm-2.4.2-5333ff17f3-b400d4fe07.zip/node_modules/@pkgr/utils/",\
"packageDependencies": [\
["@pkgr/utils", "npm:2.4.2"],\
["cross-spawn", "npm:7.0.3"],\
["fast-glob", "npm:3.3.1"],\
["is-glob", "npm:4.0.3"],\
["open", "npm:9.1.0"],\
["picocolors", "npm:1.0.0"],\
["tslib", "npm:2.6.2"]\
],\
"linkType": "HARD"\
}]\
]],\
["@pnpm/config.env-replace", [\
["npm:1.1.0", {\
"packageLocation": "./.yarn/cache/@pnpm-config.env-replace-npm-1.1.0-cd7057bf65-cdfd011ca6.zip/node_modules/@pnpm/config.env-replace/",\
@@ -5428,21 +5443,21 @@ const RAW_RUNTIME_STATE =
["@types/newrelic", "npm:9.14.0"],\
["@types/node", "npm:20.5.7"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["dayjs", "npm:1.11.7"],\
["dotenv", "npm:16.1.3"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["inversify", "npm:6.0.1"],\
["ioredis", "npm:5.3.2"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.5.0"],\
["mixpanel", "npm:0.17.0"],\
["mysql2", "npm:3.3.3"],\
["newrelic", "npm:11.0.0"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.16"],\
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.17"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"],\
["winston", "npm:3.9.0"]\
],\
@@ -5485,12 +5500,12 @@ const RAW_RUNTIME_STATE =
["@types/node", "npm:20.5.7"],\
["@types/prettyjson", "npm:0.0.30"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["axios", "npm:1.4.0"],\
["cors", "npm:2.8.5"],\
["dotenv", "npm:16.1.3"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["express", "npm:4.18.2"],\
["express-robots-txt", "virtual:04783e12400851b8a3d76e71495851cc94959db6e62f04cb0a31190080629440b182d8c8eb4d7f2b04e281912f2783a5fd4d2c3c6ab68d38b7097246c93f4c19#npm:1.0.0"],\
["helmet", "npm:7.0.0"],\
@@ -5502,7 +5517,7 @@ const RAW_RUNTIME_STATE =
["newrelic", "npm:11.0.0"],\
["nodemon", "npm:2.0.22"],\
["npm-check-updates", "npm:16.13.2"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["prettyjson", "npm:1.2.5"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
@@ -5549,14 +5564,14 @@ const RAW_RUNTIME_STATE =
["@types/ua-parser-js", "npm:0.7.36"],\
["@types/uuid", "npm:9.0.2"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["axios", "npm:1.4.0"],\
["bcryptjs", "npm:2.4.3"],\
["cors", "npm:2.8.5"],\
["dayjs", "npm:1.11.7"],\
["dotenv", "npm:16.1.3"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["express", "npm:4.18.2"],\
["inversify", "npm:6.0.1"],\
["inversify-express-utils", "npm:6.4.3"],\
@@ -5567,12 +5582,12 @@ const RAW_RUNTIME_STATE =
["nodemon", "npm:2.0.22"],\
["npm-check-updates", "npm:16.13.2"],\
["otplib", "npm:12.0.1"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["prettyjson", "npm:1.2.5"],\
["reflect-metadata", "npm:0.1.13"],\
["sqlite3", "virtual:31b5a94a105c89c9294c3d524a7f8929fe63ee5a2efadf21951ca4c0cfd2ecf02e8f4ef5a066bbda091f1e3a56e57c6749069a080618c96b22e51131a330fc4a#npm:5.1.6"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
["typeorm", "virtual:31b5a94a105c89c9294c3d524a7f8929fe63ee5a2efadf21951ca4c0cfd2ecf02e8f4ef5a066bbda091f1e3a56e57c6749069a080618c96b22e51131a330fc4a#npm:0.3.16"],\
["typeorm", "virtual:31b5a94a105c89c9294c3d524a7f8929fe63ee5a2efadf21951ca4c0cfd2ecf02e8f4ef5a066bbda091f1e3a56e57c6749069a080618c96b22e51131a330fc4a#npm:0.3.17"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"],\
["ua-parser-js", "npm:1.0.35"],\
["uuid", "npm:9.0.0"],\
@@ -5589,11 +5604,11 @@ const RAW_RUNTIME_STATE =
["@types/jest", "npm:29.5.2"],\
["@types/node", "npm:20.5.7"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.5.0"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"]\
@@ -5610,11 +5625,11 @@ const RAW_RUNTIME_STATE =
["@types/node", "npm:20.5.7"],\
["@types/uuid", "npm:9.0.2"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.5.0"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"],\
["uuid", "npm:9.0.0"]\
@@ -5631,11 +5646,11 @@ const RAW_RUNTIME_STATE =
["@standardnotes/security", "workspace:packages/security"],\
["@types/jest", "npm:29.5.2"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.5.0"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"]\
],\
@@ -5654,13 +5669,13 @@ const RAW_RUNTIME_STATE =
["@types/jest", "npm:29.5.2"],\
["@types/newrelic", "npm:9.14.0"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["ioredis", "npm:5.3.2"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.5.0"],\
["newrelic", "npm:11.0.0"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["reflect-metadata", "npm:0.1.13"],\
["sqs-consumer", "virtual:685a6222c3349423674bb7f0684ba34e2ab20912010f352e04dcf707a156e13183fc382e2417cb37a60f3e7b52fd0178c53181674890e1773eb83e190dc13378#npm:6.2.1"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
@@ -5685,19 +5700,19 @@ const RAW_RUNTIME_STATE =
["@types/newrelic", "npm:9.14.0"],\
["@types/nodemailer", "npm:6.4.8"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["dotenv", "npm:16.1.3"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["inversify", "npm:6.0.1"],\
["ioredis", "npm:5.3.2"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.5.0"],\
["mysql2", "npm:3.3.3"],\
["newrelic", "npm:11.0.0"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.16"],\
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.17"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"],\
["winston", "npm:3.9.0"]\
],\
@@ -5743,13 +5758,13 @@ const RAW_RUNTIME_STATE =
["@types/prettyjson", "npm:0.0.30"],\
["@types/uuid", "npm:9.0.2"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["connect-busboy", "npm:1.0.0"],\
["cors", "npm:2.8.5"],\
["dayjs", "npm:1.11.7"],\
["dotenv", "npm:16.1.3"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["express", "npm:4.18.2"],\
["express-robots-txt", "virtual:04783e12400851b8a3d76e71495851cc94959db6e62f04cb0a31190080629440b182d8c8eb4d7f2b04e281912f2783a5fd4d2c3c6ab68d38b7097246c93f4c19#npm:1.0.0"],\
["express-winston", "virtual:b442cf0427cc365d1c137f7340f9b81f9b204561afe791a8564ae9590c3a7fc4b5f793aaf8817b946f75a3cb64d03ef8790eb847f8b576b41e700da7b00c240c#npm:4.2.0"],\
@@ -5762,7 +5777,7 @@ const RAW_RUNTIME_STATE =
["newrelic", "npm:11.0.0"],\
["nodemon", "npm:2.0.22"],\
["npm-check-updates", "npm:16.13.2"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["prettyjson", "npm:1.2.5"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
@@ -5789,17 +5804,17 @@ const RAW_RUNTIME_STATE =
["@types/express", "npm:4.17.17"],\
["@types/prettyjson", "npm:0.0.30"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["cors", "npm:2.8.5"],\
["dotenv", "npm:16.1.3"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["express", "npm:4.18.2"],\
["express-robots-txt", "virtual:04783e12400851b8a3d76e71495851cc94959db6e62f04cb0a31190080629440b182d8c8eb4d7f2b04e281912f2783a5fd4d2c3c6ab68d38b7097246c93f4c19#npm:1.0.0"],\
["helmet", "npm:7.0.0"],\
["inversify", "npm:6.0.1"],\
["inversify-express-utils", "npm:6.4.3"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["prettyjson", "npm:1.2.5"],\
["reflect-metadata", "npm:0.1.13"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"],\
@@ -5831,11 +5846,11 @@ const RAW_RUNTIME_STATE =
["@standardnotes/predicates", "workspace:packages/predicates"],\
["@types/jest", "npm:29.5.2"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.5.0"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"]\
],\
@@ -5861,6 +5876,7 @@ const RAW_RUNTIME_STATE =
"packageDependencies": [\
["@standardnotes/revisions-server", "workspace:packages/revisions"],\
["@aws-sdk/client-s3", "npm:3.342.0"],\
["@aws-sdk/client-sns", "npm:3.342.0"],\
["@aws-sdk/client-sqs", "npm:3.342.0"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.1"],\
["@standardnotes/api", "npm:1.26.26"],\
@@ -5878,11 +5894,11 @@ const RAW_RUNTIME_STATE =
["@types/newrelic", "npm:9.14.0"],\
["@types/node", "npm:20.5.7"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["cors", "npm:2.8.5"],\
["dotenv", "npm:16.1.3"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["express", "npm:4.18.2"],\
["inversify", "npm:6.0.1"],\
["inversify-express-utils", "npm:6.4.3"],\
@@ -5891,11 +5907,11 @@ const RAW_RUNTIME_STATE =
["mysql2", "npm:3.3.3"],\
["newrelic", "npm:11.0.0"],\
["npm-check-updates", "npm:16.13.2"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["reflect-metadata", "npm:0.1.13"],\
["sqlite3", "virtual:31b5a94a105c89c9294c3d524a7f8929fe63ee5a2efadf21951ca4c0cfd2ecf02e8f4ef5a066bbda091f1e3a56e57c6749069a080618c96b22e51131a330fc4a#npm:5.1.6"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
["typeorm", "virtual:365b8c88cdf194291829ee28b79556e2328175d26a621363e703848100bea0042e9500db2a1206c9bbc3a4a76a1d169639ef774b2ea3a1a98584a9936b58c6be#npm:0.3.16"],\
["typeorm", "virtual:365b8c88cdf194291829ee28b79556e2328175d26a621363e703848100bea0042e9500db2a1206c9bbc3a4a76a1d169639ef774b2ea3a1a98584a9936b58c6be#npm:0.3.17"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"],\
["winston", "npm:3.9.0"]\
],\
@@ -5920,21 +5936,21 @@ const RAW_RUNTIME_STATE =
["@types/newrelic", "npm:9.14.0"],\
["@types/node", "npm:20.5.7"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["dayjs", "npm:1.11.7"],\
["dotenv", "npm:16.1.3"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["inversify", "npm:6.0.1"],\
["ioredis", "npm:5.3.2"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.5.0"],\
["mysql2", "npm:3.3.3"],\
["newrelic", "npm:11.0.0"],\
["npm-check-updates", "npm:16.13.2"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.16"],\
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.17"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"],\
["winston", "npm:3.9.0"]\
],\
@@ -5949,12 +5965,12 @@ const RAW_RUNTIME_STATE =
["@types/jest", "npm:29.5.2"],\
["@types/jsonwebtoken", "npm:9.0.2"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.5.0"],\
["jsonwebtoken", "npm:9.0.0"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"]\
@@ -5995,10 +6011,10 @@ const RAW_RUNTIME_STATE =
["@standardnotes/settings", "workspace:packages/settings"],\
["@standardnotes/domain-core", "workspace:packages/domain-core"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["prettier", "npm:2.8.8"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["prettier", "npm:3.0.3"],\
["reflect-metadata", "npm:0.1.13"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"]\
],\
@@ -6024,11 +6040,11 @@ const RAW_RUNTIME_STATE =
["@types/jest", "npm:29.5.2"],\
["@types/node", "npm:20.5.7"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.5.0"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["reflect-metadata", "npm:0.1.13"],\
["regenerator-runtime", "npm:0.13.11"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
@@ -6066,16 +6082,16 @@ const RAW_RUNTIME_STATE =
["@types/newrelic", "npm:9.14.0"],\
["@types/node", "npm:20.5.7"],\
["@types/prettyjson", "npm:0.0.30"],\
["@types/semver", "npm:7.5.0"],\
["@types/semver", "npm:7.5.1"],\
["@types/ua-parser-js", "npm:0.7.36"],\
["@types/uuid", "npm:9.0.2"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["axios", "npm:1.4.0"],\
["cors", "npm:2.8.5"],\
["dotenv", "npm:16.1.3"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["express", "npm:4.18.2"],\
["helmet", "npm:7.0.0"],\
["inversify", "npm:6.0.1"],\
@@ -6087,13 +6103,13 @@ const RAW_RUNTIME_STATE =
["newrelic", "npm:11.0.0"],\
["nodemon", "npm:2.0.22"],\
["npm-check-updates", "npm:16.13.2"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["prettyjson", "npm:1.2.5"],\
["reflect-metadata", "npm:0.1.13"],\
["semver", "npm:7.5.1"],\
["semver", "npm:7.5.4"],\
["sqlite3", "virtual:31b5a94a105c89c9294c3d524a7f8929fe63ee5a2efadf21951ca4c0cfd2ecf02e8f4ef5a066bbda091f1e3a56e57c6749069a080618c96b22e51131a330fc4a#npm:5.1.6"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
["typeorm", "virtual:365b8c88cdf194291829ee28b79556e2328175d26a621363e703848100bea0042e9500db2a1206c9bbc3a4a76a1d169639ef774b2ea3a1a98584a9936b58c6be#npm:0.3.16"],\
["typeorm", "virtual:365b8c88cdf194291829ee28b79556e2328175d26a621363e703848100bea0042e9500db2a1206c9bbc3a4a76a1d169639ef774b2ea3a1a98584a9936b58c6be#npm:0.3.17"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"],\
["ua-parser-js", "npm:1.0.35"],\
["uuid", "npm:9.0.0"],\
@@ -6110,13 +6126,13 @@ const RAW_RUNTIME_STATE =
["@types/jest", "npm:29.5.2"],\
["@types/microtime", "npm:2.1.0"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["dayjs", "npm:1.11.7"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.5.0"],\
["microtime", "npm:3.1.1"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"]\
@@ -6157,12 +6173,12 @@ const RAW_RUNTIME_STATE =
["@types/jest", "npm:29.5.2"],\
["@types/newrelic", "npm:9.14.0"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["axios", "npm:1.4.0"],\
["cors", "npm:2.8.5"],\
["dotenv", "npm:16.1.3"],\
["eslint", "npm:8.41.0"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["express", "npm:4.18.2"],\
["inversify", "npm:6.0.1"],\
["inversify-express-utils", "npm:6.4.3"],\
@@ -6170,10 +6186,10 @@ const RAW_RUNTIME_STATE =
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.5.0"],\
["mysql2", "npm:3.3.3"],\
["newrelic", "npm:11.0.0"],\
["prettier", "npm:2.8.8"],\
["prettier", "npm:3.0.3"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.0"],\
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.16"],\
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.17"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"],\
["winston", "npm:3.9.0"]\
],\
@@ -6742,6 +6758,13 @@ const RAW_RUNTIME_STATE =
["@types/semver", "npm:7.5.0"]\
],\
"linkType": "HARD"\
}],\
["npm:7.5.1", {\
"packageLocation": "./.yarn/cache/@types-semver-npm-7.5.1-cda240741c-6bb8541017.zip/node_modules/@types/semver/",\
"packageDependencies": [\
["@types/semver", "npm:7.5.1"]\
],\
"linkType": "HARD"\
}]\
]],\
["@types/send", [\
@@ -6857,7 +6880,7 @@ const RAW_RUNTIME_STATE =
["@types/eslint", null],\
["@types/typescript", null],\
["@types/typescript-eslint__parser", null],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["@typescript-eslint/scope-manager", "npm:5.59.8"],\
["@typescript-eslint/type-utils", "virtual:39388bed223ddbce0d44acc203a1485ae46c267cbf9a4235c873101dd46794d5d451d3ffec8cd2f10f4ef8a595a45361c82ed2e82f691a9fad381895d9f1855d#npm:5.59.8"],\
["@typescript-eslint/utils", "virtual:39388bed223ddbce0d44acc203a1485ae46c267cbf9a4235c873101dd46794d5d451d3ffec8cd2f10f4ef8a595a45361c82ed2e82f691a9fad381895d9f1855d#npm:5.59.8"],\
@@ -6882,22 +6905,23 @@ const RAW_RUNTIME_STATE =
}]\
]],\
["@typescript-eslint/parser", [\
["npm:5.59.8", {\
"packageLocation": "./.yarn/cache/@typescript-eslint-parser-npm-5.59.8-ceb8b0eaa0-e912585cf3.zip/node_modules/@typescript-eslint/parser/",\
["npm:6.5.0", {\
"packageLocation": "./.yarn/cache/@typescript-eslint-parser-npm-6.5.0-2185874d65-0b789509e3.zip/node_modules/@typescript-eslint/parser/",\
"packageDependencies": [\
["@typescript-eslint/parser", "npm:5.59.8"]\
["@typescript-eslint/parser", "npm:6.5.0"]\
],\
"linkType": "SOFT"\
}],\
["virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8", {\
"packageLocation": "./.yarn/__virtual__/@typescript-eslint-parser-virtual-e8e6d00381/0/cache/@typescript-eslint-parser-npm-5.59.8-ceb8b0eaa0-e912585cf3.zip/node_modules/@typescript-eslint/parser/",\
["virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0", {\
"packageLocation": "./.yarn/__virtual__/@typescript-eslint-parser-virtual-ac5f69106d/0/cache/@typescript-eslint-parser-npm-6.5.0-2185874d65-0b789509e3.zip/node_modules/@typescript-eslint/parser/",\
"packageDependencies": [\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.59.8"],\
["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
["@types/eslint", null],\
["@types/typescript", null],\
["@typescript-eslint/scope-manager", "npm:5.59.8"],\
["@typescript-eslint/types", "npm:5.59.8"],\
["@typescript-eslint/typescript-estree", "virtual:324cfb1fa0a2310088acfa4157b7802167297b7dc05ce5858c7d17384b91d26d46b32bcc17660a59b838c86f329e23757758526cdf783b596e58a41f3ab4a0e9#npm:5.59.8"],\
["@typescript-eslint/scope-manager", "npm:6.5.0"],\
["@typescript-eslint/types", "npm:6.5.0"],\
["@typescript-eslint/typescript-estree", "virtual:ac5f69106dba10b9444bb7abc2cfbc97a6a016a7a4dd55488001fc5a3f897ed4e2bd0946080187ccc7394d8bf0d1097a1a97bd5678737551f22a2075044b4f2a#npm:6.5.0"],\
["@typescript-eslint/visitor-keys", "npm:6.5.0"],\
["debug", "virtual:ac3d8e680759ce54399273724d44e041d6c9b73454d191d411a8c44bb27e22f02aaf6ed9d3ad0ac1c298eac4833cff369c9c7b84c573016112c4f84be2cd8543#npm:4.3.4"],\
["eslint", "npm:8.41.0"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"]\
@@ -6920,6 +6944,15 @@ const RAW_RUNTIME_STATE =
["@typescript-eslint/visitor-keys", "npm:5.59.8"]\
],\
"linkType": "HARD"\
}],\
["npm:6.5.0", {\
"packageLocation": "./.yarn/cache/@typescript-eslint-scope-manager-npm-6.5.0-950a5168ee-25551c323f.zip/node_modules/@typescript-eslint/scope-manager/",\
"packageDependencies": [\
["@typescript-eslint/scope-manager", "npm:6.5.0"],\
["@typescript-eslint/types", "npm:6.5.0"],\
["@typescript-eslint/visitor-keys", "npm:6.5.0"]\
],\
"linkType": "HARD"\
}]\
]],\
["@typescript-eslint/type-utils", [\
@@ -6959,6 +6992,13 @@ const RAW_RUNTIME_STATE =
["@typescript-eslint/types", "npm:5.59.8"]\
],\
"linkType": "HARD"\
}],\
["npm:6.5.0", {\
"packageLocation": "./.yarn/cache/@typescript-eslint-types-npm-6.5.0-bab6e93f93-0e0d8fd4bd.zip/node_modules/@typescript-eslint/types/",\
"packageDependencies": [\
["@typescript-eslint/types", "npm:6.5.0"]\
],\
"linkType": "HARD"\
}]\
]],\
["@typescript-eslint/typescript-estree", [\
@@ -6969,6 +7009,13 @@ const RAW_RUNTIME_STATE =
],\
"linkType": "SOFT"\
}],\
["npm:6.5.0", {\
"packageLocation": "./.yarn/cache/@typescript-eslint-typescript-estree-npm-6.5.0-a2645bd83f-fe858d8cb3.zip/node_modules/@typescript-eslint/typescript-estree/",\
"packageDependencies": [\
["@typescript-eslint/typescript-estree", "npm:6.5.0"]\
],\
"linkType": "SOFT"\
}],\
["virtual:324cfb1fa0a2310088acfa4157b7802167297b7dc05ce5858c7d17384b91d26d46b32bcc17660a59b838c86f329e23757758526cdf783b596e58a41f3ab4a0e9#npm:5.59.8", {\
"packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-7705ca7c6b/0/cache/@typescript-eslint-typescript-estree-npm-5.59.8-8d25500a8f-94f08e72ba.zip/node_modules/@typescript-eslint/typescript-estree/",\
"packageDependencies": [\
@@ -6989,6 +7036,26 @@ const RAW_RUNTIME_STATE =
],\
"linkType": "HARD"\
}],\
["virtual:ac5f69106dba10b9444bb7abc2cfbc97a6a016a7a4dd55488001fc5a3f897ed4e2bd0946080187ccc7394d8bf0d1097a1a97bd5678737551f22a2075044b4f2a#npm:6.5.0", {\
"packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-57884e2fa3/0/cache/@typescript-eslint-typescript-estree-npm-6.5.0-a2645bd83f-fe858d8cb3.zip/node_modules/@typescript-eslint/typescript-estree/",\
"packageDependencies": [\
["@typescript-eslint/typescript-estree", "virtual:ac5f69106dba10b9444bb7abc2cfbc97a6a016a7a4dd55488001fc5a3f897ed4e2bd0946080187ccc7394d8bf0d1097a1a97bd5678737551f22a2075044b4f2a#npm:6.5.0"],\
["@types/typescript", null],\
["@typescript-eslint/types", "npm:6.5.0"],\
["@typescript-eslint/visitor-keys", "npm:6.5.0"],\
["debug", "virtual:ac3d8e680759ce54399273724d44e041d6c9b73454d191d411a8c44bb27e22f02aaf6ed9d3ad0ac1c298eac4833cff369c9c7b84c573016112c4f84be2cd8543#npm:4.3.4"],\
["globby", "npm:11.1.0"],\
["is-glob", "npm:4.0.3"],\
["semver", "npm:7.5.4"],\
["ts-api-utils", "virtual:57884e2fa339d46d04dd5029ad35043a402f766ba2dfaa805cc908a9f2dfda7e5d7836264f2734e4497c8806a22ab5be52bcd7861d3763e9c1935af24b3a34e8#npm:1.0.2"],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"]\
],\
"packagePeers": [\
"@types/typescript",\
"typescript"\
],\
"linkType": "HARD"\
}],\
["virtual:fcb617ee99b2af3881ae95250bcf6cfcb517a07dce8227a9488c7a2465773dd7facec58f236b76302d0ff405ea50ca5b20bd5859ea4fc39c729a77fc5cc2ac30#npm:5.59.8", {\
"packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-ca06b20d81/0/cache/@typescript-eslint-typescript-estree-npm-5.59.8-8d25500a8f-94f08e72ba.zip/node_modules/@typescript-eslint/typescript-estree/",\
"packageDependencies": [\
@@ -7049,6 +7116,15 @@ const RAW_RUNTIME_STATE =
["eslint-visitor-keys", "npm:3.4.1"]\
],\
"linkType": "HARD"\
}],\
["npm:6.5.0", {\
"packageLocation": "./.yarn/cache/@typescript-eslint-visitor-keys-npm-6.5.0-f5e0d86a48-58846a7361.zip/node_modules/@typescript-eslint/visitor-keys/",\
"packageDependencies": [\
["@typescript-eslint/visitor-keys", "npm:6.5.0"],\
["@typescript-eslint/types", "npm:6.5.0"],\
["eslint-visitor-keys", "npm:3.4.1"]\
],\
"linkType": "HARD"\
}]\
]],\
["@tyriar/fibonacci-heap", [\
@@ -7920,6 +7996,15 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["big-integer", [\
["npm:1.6.51", {\
"packageLocation": "./.yarn/cache/big-integer-npm-1.6.51-1a244d8e1f-fc20ceb6b1.zip/node_modules/big-integer/",\
"packageDependencies": [\
["big-integer", "npm:1.6.51"]\
],\
"linkType": "HARD"\
}]\
]],\
["bignumber.js", [\
["npm:9.1.1", {\
"packageLocation": "./.yarn/cache/bignumber.js-npm-9.1.1-5929e8d8dc-e44d008049.zip/node_modules/bignumber.js/",\
@@ -8010,6 +8095,16 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["bplist-parser", [\
["npm:0.2.0", {\
"packageLocation": "./.yarn/cache/bplist-parser-npm-0.2.0-91a681e495-d8a4607229.zip/node_modules/bplist-parser/",\
"packageDependencies": [\
["bplist-parser", "npm:0.2.0"],\
["big-integer", "npm:1.6.51"]\
],\
"linkType": "HARD"\
}]\
]],\
["brace-expansion", [\
["npm:1.1.11", {\
"packageLocation": "./.yarn/cache/brace-expansion-npm-1.1.11-fb95eb05ad-5ecc6da29c.zip/node_modules/brace-expansion/",\
@@ -8129,6 +8224,16 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["bundle-name", [\
["npm:3.0.0", {\
"packageLocation": "./.yarn/cache/bundle-name-npm-3.0.0-d7e52ba2a3-4cb6c319b9.zip/node_modules/bundle-name/",\
"packageDependencies": [\
["bundle-name", "npm:3.0.0"],\
["run-applescript", "npm:5.0.0"]\
],\
"linkType": "HARD"\
}]\
]],\
["busboy", [\
["npm:1.6.0", {\
"packageLocation": "./.yarn/cache/busboy-npm-1.6.0-ebb5cbb04b-4f9b97d974.zip/node_modules/busboy/",\
@@ -9315,6 +9420,30 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["default-browser", [\
["npm:4.0.0", {\
"packageLocation": "./.yarn/cache/default-browser-npm-4.0.0-e9e9c8aba0-ac1138a297.zip/node_modules/default-browser/",\
"packageDependencies": [\
["default-browser", "npm:4.0.0"],\
["bundle-name", "npm:3.0.0"],\
["default-browser-id", "npm:3.0.0"],\
["execa", "npm:7.1.1"],\
["titleize", "npm:3.0.0"]\
],\
"linkType": "HARD"\
}]\
]],\
["default-browser-id", [\
["npm:3.0.0", {\
"packageLocation": "./.yarn/cache/default-browser-id-npm-3.0.0-f65ceaa214-14d2d42e1d.zip/node_modules/default-browser-id/",\
"packageDependencies": [\
["default-browser-id", "npm:3.0.0"],\
["bplist-parser", "npm:0.2.0"],\
["untildify", "npm:4.0.0"]\
],\
"linkType": "HARD"\
}]\
]],\
["defaults", [\
["npm:1.0.4", {\
"packageLocation": "./.yarn/cache/defaults-npm-1.0.4-f3fbaf2528-e48b7520b3.zip/node_modules/defaults/",\
@@ -9334,6 +9463,15 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["define-lazy-prop", [\
["npm:3.0.0", {\
"packageLocation": "./.yarn/cache/define-lazy-prop-npm-3.0.0-6bb0fc1510-73a8f71f62.zip/node_modules/define-lazy-prop/",\
"packageDependencies": [\
["define-lazy-prop", "npm:3.0.0"]\
],\
"linkType": "HARD"\
}]\
]],\
["delayed-stream", [\
["npm:1.0.0", {\
"packageLocation": "./.yarn/cache/delayed-stream-npm-1.0.0-c5a4c4cc02-22f11ed342.zip/node_modules/delayed-stream/",\
@@ -9764,24 +9902,25 @@ const RAW_RUNTIME_STATE =
}]\
]],\
["eslint-plugin-prettier", [\
["npm:4.2.1", {\
"packageLocation": "./.yarn/cache/eslint-plugin-prettier-npm-4.2.1-ba8e1240f1-add67757bf.zip/node_modules/eslint-plugin-prettier/",\
["npm:5.0.0", {\
"packageLocation": "./.yarn/cache/eslint-plugin-prettier-npm-5.0.0-2f21113cba-c0bcb4e169.zip/node_modules/eslint-plugin-prettier/",\
"packageDependencies": [\
["eslint-plugin-prettier", "npm:4.2.1"]\
["eslint-plugin-prettier", "npm:5.0.0"]\
],\
"linkType": "SOFT"\
}],\
["virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1", {\
"packageLocation": "./.yarn/__virtual__/eslint-plugin-prettier-virtual-72eb35fb5e/0/cache/eslint-plugin-prettier-npm-4.2.1-ba8e1240f1-add67757bf.zip/node_modules/eslint-plugin-prettier/",\
["virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0", {\
"packageLocation": "./.yarn/__virtual__/eslint-plugin-prettier-virtual-b594c946fe/0/cache/eslint-plugin-prettier-npm-5.0.0-2f21113cba-c0bcb4e169.zip/node_modules/eslint-plugin-prettier/",\
"packageDependencies": [\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.0.0"],\
["@types/eslint", null],\
["@types/eslint-config-prettier", null],\
["@types/prettier", null],\
["eslint", "npm:8.41.0"],\
["eslint-config-prettier", null],\
["prettier", "npm:2.8.8"],\
["prettier-linter-helpers", "npm:1.0.0"]\
["prettier", "npm:3.0.3"],\
["prettier-linter-helpers", "npm:1.0.0"],\
["synckit", "npm:0.8.5"]\
],\
"packagePeers": [\
"@types/eslint-config-prettier",\
@@ -10120,6 +10259,18 @@ const RAW_RUNTIME_STATE =
["micromatch", "npm:4.0.5"]\
],\
"linkType": "HARD"\
}],\
["npm:3.3.1", {\
"packageLocation": "./.yarn/cache/fast-glob-npm-3.3.1-8045ff8f4d-e266590623.zip/node_modules/fast-glob/",\
"packageDependencies": [\
["fast-glob", "npm:3.3.1"],\
["@nodelib/fs.stat", "npm:2.0.5"],\
["@nodelib/fs.walk", "npm:1.2.8"],\
["glob-parent", "npm:5.1.2"],\
["merge2", "npm:1.4.1"],\
["micromatch", "npm:4.0.5"]\
],\
"linkType": "HARD"\
}]\
]],\
["fast-json-stable-stringify", [\
@@ -11504,6 +11655,22 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["is-docker", [\
["npm:2.2.1", {\
"packageLocation": "./.yarn/cache/is-docker-npm-2.2.1-3f18a53aff-4a6decb5f3.zip/node_modules/is-docker/",\
"packageDependencies": [\
["is-docker", "npm:2.2.1"]\
],\
"linkType": "HARD"\
}],\
["npm:3.0.0", {\
"packageLocation": "./.yarn/cache/is-docker-npm-3.0.0-1570e32177-91077b4db2.zip/node_modules/is-docker/",\
"packageDependencies": [\
["is-docker", "npm:3.0.0"]\
],\
"linkType": "HARD"\
}]\
]],\
["is-extendable", [\
["npm:0.1.1", {\
"packageLocation": "./.yarn/cache/is-extendable-npm-0.1.1-322b4649ec-ffa5a697b9.zip/node_modules/is-extendable/",\
@@ -11550,6 +11717,16 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["is-inside-container", [\
["npm:1.0.0", {\
"packageLocation": "./.yarn/cache/is-inside-container-npm-1.0.0-f2c9e9bb96-8dc4c40610.zip/node_modules/is-inside-container/",\
"packageDependencies": [\
["is-inside-container", "npm:1.0.0"],\
["is-docker", "npm:3.0.0"]\
],\
"linkType": "HARD"\
}]\
]],\
["is-installed-globally", [\
["npm:0.4.0", {\
"packageLocation": "./.yarn/cache/is-installed-globally-npm-0.4.0-a30dd056c7-35a1a89a9b.zip/node_modules/is-installed-globally/",\
@@ -11727,6 +11904,16 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["is-wsl", [\
["npm:2.2.0", {\
"packageLocation": "./.yarn/cache/is-wsl-npm-2.2.0-2ba10d6393-44a5dd51a5.zip/node_modules/is-wsl/",\
"packageDependencies": [\
["is-wsl", "npm:2.2.0"],\
["is-docker", "npm:2.2.1"]\
],\
"linkType": "HARD"\
}]\
]],\
["is-yarn-global", [\
["npm:0.4.1", {\
"packageLocation": "./.yarn/cache/is-yarn-global-npm-0.4.1-f8a5811770-dcf4694c67.zip/node_modules/is-yarn-global/",\
@@ -14248,6 +14435,19 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["open", [\
["npm:9.1.0", {\
"packageLocation": "./.yarn/unplugged/open-npm-9.1.0-d104a17ec5/node_modules/open/",\
"packageDependencies": [\
["open", "npm:9.1.0"],\
["default-browser", "npm:4.0.0"],\
["define-lazy-prop", "npm:3.0.0"],\
["is-inside-container", "npm:1.0.0"],\
["is-wsl", "npm:2.2.0"]\
],\
"linkType": "HARD"\
}]\
]],\
["optionator", [\
["npm:0.9.1", {\
"packageLocation": "./.yarn/cache/optionator-npm-0.9.1-577e397aae-bb7b06099c.zip/node_modules/optionator/",\
@@ -14759,10 +14959,10 @@ const RAW_RUNTIME_STATE =
}]\
]],\
["prettier", [\
["npm:2.8.8", {\
"packageLocation": "./.yarn/cache/prettier-npm-2.8.8-430828a36c-38b0a43ea1.zip/node_modules/prettier/",\
["npm:3.0.3", {\
"packageLocation": "./.yarn/unplugged/prettier-npm-3.0.3-fced695dae/node_modules/prettier/",\
"packageDependencies": [\
["prettier", "npm:2.8.8"]\
["prettier", "npm:3.0.3"]\
],\
"linkType": "HARD"\
}]\
@@ -15553,6 +15753,16 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["run-applescript", [\
["npm:5.0.0", {\
"packageLocation": "./.yarn/cache/run-applescript-npm-5.0.0-ea4b8840dd-5967da9f76.zip/node_modules/run-applescript/",\
"packageDependencies": [\
["run-applescript", "npm:5.0.0"],\
["execa", "npm:5.1.1"]\
],\
"linkType": "HARD"\
}]\
]],\
["run-async", [\
["npm:3.0.0", {\
"packageLocation": "./.yarn/cache/run-async-npm-3.0.0-bfba9a6e47-18831602b5.zip/node_modules/run-async/",\
@@ -16429,6 +16639,17 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["synckit", [\
["npm:0.8.5", {\
"packageLocation": "./.yarn/cache/synckit-npm-0.8.5-40a594eb38-4f8cad99ec.zip/node_modules/synckit/",\
"packageDependencies": [\
["synckit", "npm:0.8.5"],\
["@pkgr/utils", "npm:2.4.2"],\
["tslib", "npm:2.5.2"]\
],\
"linkType": "HARD"\
}]\
]],\
["tapable", [\
["npm:2.2.1", {\
"packageLocation": "./.yarn/cache/tapable-npm-2.2.1-8cf5ff3039-d54320ef41.zip/node_modules/tapable/",\
@@ -16630,6 +16851,15 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["titleize", [\
["npm:3.0.0", {\
"packageLocation": "./.yarn/cache/titleize-npm-3.0.0-7deac2f3a3-8468b57b8e.zip/node_modules/titleize/",\
"packageDependencies": [\
["titleize", "npm:3.0.0"]\
],\
"linkType": "HARD"\
}]\
]],\
["tmp", [\
["npm:0.0.33", {\
"packageLocation": "./.yarn/cache/tmp-npm-0.0.33-bcbf65df2a-0800f6e402.zip/node_modules/tmp/",\
@@ -16731,6 +16961,28 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["ts-api-utils", [\
["npm:1.0.2", {\
"packageLocation": "./.yarn/cache/ts-api-utils-npm-1.0.2-0fe6a86036-7513f3da1f.zip/node_modules/ts-api-utils/",\
"packageDependencies": [\
["ts-api-utils", "npm:1.0.2"]\
],\
"linkType": "SOFT"\
}],\
["virtual:57884e2fa339d46d04dd5029ad35043a402f766ba2dfaa805cc908a9f2dfda7e5d7836264f2734e4497c8806a22ab5be52bcd7861d3763e9c1935af24b3a34e8#npm:1.0.2", {\
"packageLocation": "./.yarn/__virtual__/ts-api-utils-virtual-af46ec17fe/0/cache/ts-api-utils-npm-1.0.2-0fe6a86036-7513f3da1f.zip/node_modules/ts-api-utils/",\
"packageDependencies": [\
["ts-api-utils", "virtual:57884e2fa339d46d04dd5029ad35043a402f766ba2dfaa805cc908a9f2dfda7e5d7836264f2734e4497c8806a22ab5be52bcd7861d3763e9c1935af24b3a34e8#npm:1.0.2"],\
["@types/typescript", null],\
["typescript", "patch:typescript@npm%3A5.0.4#optional!builtin<compat/typescript>::version=5.0.4&hash=b5f058"]\
],\
"packagePeers": [\
"@types/typescript",\
"typescript"\
],\
"linkType": "HARD"\
}]\
]],\
["ts-jest", [\
["npm:29.1.0", {\
"packageLocation": "./.yarn/cache/ts-jest-npm-29.1.0-ede119702b-0a30822a27.zip/node_modules/ts-jest/",\
@@ -16906,6 +17158,13 @@ const RAW_RUNTIME_STATE =
["tslib", "npm:2.5.2"]\
],\
"linkType": "HARD"\
}],\
["npm:2.6.2", {\
"packageLocation": "./.yarn/cache/tslib-npm-2.6.2-4fc8c068d9-e565469129.zip/node_modules/tslib/",\
"packageDependencies": [\
["tslib", "npm:2.6.2"]\
],\
"linkType": "HARD"\
}]\
]],\
["tsutils", [\
@@ -17058,17 +17317,17 @@ const RAW_RUNTIME_STATE =
}]\
]],\
["typeorm", [\
["npm:0.3.16", {\
"packageLocation": "./.yarn/cache/typeorm-npm-0.3.16-5ac12a7afc-19803f935e.zip/node_modules/typeorm/",\
["npm:0.3.17", {\
"packageLocation": "./.yarn/cache/typeorm-npm-0.3.17-f8c2578e7f-bae071e097.zip/node_modules/typeorm/",\
"packageDependencies": [\
["typeorm", "npm:0.3.16"]\
["typeorm", "npm:0.3.17"]\
],\
"linkType": "SOFT"\
}],\
["virtual:31b5a94a105c89c9294c3d524a7f8929fe63ee5a2efadf21951ca4c0cfd2ecf02e8f4ef5a066bbda091f1e3a56e57c6749069a080618c96b22e51131a330fc4a#npm:0.3.16", {\
"packageLocation": "./.yarn/__virtual__/typeorm-virtual-3f6407120b/0/cache/typeorm-npm-0.3.16-5ac12a7afc-19803f935e.zip/node_modules/typeorm/",\
["virtual:31b5a94a105c89c9294c3d524a7f8929fe63ee5a2efadf21951ca4c0cfd2ecf02e8f4ef5a066bbda091f1e3a56e57c6749069a080618c96b22e51131a330fc4a#npm:0.3.17", {\
"packageLocation": "./.yarn/__virtual__/typeorm-virtual-39f2df0bb4/0/cache/typeorm-npm-0.3.17-f8c2578e7f-bae071e097.zip/node_modules/typeorm/",\
"packageDependencies": [\
["typeorm", "virtual:31b5a94a105c89c9294c3d524a7f8929fe63ee5a2efadf21951ca4c0cfd2ecf02e8f4ef5a066bbda091f1e3a56e57c6749069a080618c96b22e51131a330fc4a#npm:0.3.16"],\
["typeorm", "virtual:31b5a94a105c89c9294c3d524a7f8929fe63ee5a2efadf21951ca4c0cfd2ecf02e8f4ef5a066bbda091f1e3a56e57c6749069a080618c96b22e51131a330fc4a#npm:0.3.17"],\
["@google-cloud/spanner", null],\
["@sap/hana-client", null],\
["@sqltools/formatter", "npm:1.2.5"],\
@@ -17157,10 +17416,10 @@ const RAW_RUNTIME_STATE =
],\
"linkType": "HARD"\
}],\
["virtual:365b8c88cdf194291829ee28b79556e2328175d26a621363e703848100bea0042e9500db2a1206c9bbc3a4a76a1d169639ef774b2ea3a1a98584a9936b58c6be#npm:0.3.16", {\
"packageLocation": "./.yarn/__virtual__/typeorm-virtual-6adc0d3ce7/0/cache/typeorm-npm-0.3.16-5ac12a7afc-19803f935e.zip/node_modules/typeorm/",\
["virtual:365b8c88cdf194291829ee28b79556e2328175d26a621363e703848100bea0042e9500db2a1206c9bbc3a4a76a1d169639ef774b2ea3a1a98584a9936b58c6be#npm:0.3.17", {\
"packageLocation": "./.yarn/__virtual__/typeorm-virtual-bfb7ebf128/0/cache/typeorm-npm-0.3.17-f8c2578e7f-bae071e097.zip/node_modules/typeorm/",\
"packageDependencies": [\
["typeorm", "virtual:365b8c88cdf194291829ee28b79556e2328175d26a621363e703848100bea0042e9500db2a1206c9bbc3a4a76a1d169639ef774b2ea3a1a98584a9936b58c6be#npm:0.3.16"],\
["typeorm", "virtual:365b8c88cdf194291829ee28b79556e2328175d26a621363e703848100bea0042e9500db2a1206c9bbc3a4a76a1d169639ef774b2ea3a1a98584a9936b58c6be#npm:0.3.17"],\
["@google-cloud/spanner", null],\
["@sap/hana-client", null],\
["@sqltools/formatter", "npm:1.2.5"],\
@@ -17249,10 +17508,10 @@ const RAW_RUNTIME_STATE =
],\
"linkType": "HARD"\
}],\
["virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.16", {\
"packageLocation": "./.yarn/__virtual__/typeorm-virtual-fc9b7b780b/0/cache/typeorm-npm-0.3.16-5ac12a7afc-19803f935e.zip/node_modules/typeorm/",\
["virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.17", {\
"packageLocation": "./.yarn/__virtual__/typeorm-virtual-bfa664706d/0/cache/typeorm-npm-0.3.17-f8c2578e7f-bae071e097.zip/node_modules/typeorm/",\
"packageDependencies": [\
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.16"],\
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.17"],\
["@google-cloud/spanner", null],\
["@sap/hana-client", null],\
["@sqltools/formatter", "npm:1.2.5"],\

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -178,6 +178,11 @@ LINKING_RESULT=$(link_queue_and_topic $SYNCING_SERVER_TOPIC_ARN $REVISIONS_QUEUE
echo "linking done:"
echo "$LINKING_RESULT"
echo "linking topic $REVISIONS_TOPIC_ARN to queue $REVISIONS_QUEUE_ARN"
LINKING_RESULT=$(link_queue_and_topic $REVISIONS_TOPIC_ARN $REVISIONS_QUEUE_ARN)
echo "linking done:"
echo "$LINKING_RESULT"
QUEUE_NAME="scheduler-local-queue"
echo "creating queue $QUEUE_NAME"

View File

@@ -3,6 +3,35 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [2.26.2](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.26.1...@standardnotes/analytics@2.26.2) (2023-09-01)
**Note:** Version bump only for package @standardnotes/analytics
## [2.26.1](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.26.0...@standardnotes/analytics@2.26.1) (2023-09-01)
### Bug Fixes
* inserting revisions instead of upsert ([#803](https://github.com/standardnotes/server/issues/803)) ([27ff25b](https://github.com/standardnotes/server/commit/27ff25b70e6b65dfe89aa35582422dce682a4105))
# [2.26.0](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.25.21...@standardnotes/analytics@2.26.0) (2023-09-01)
### Bug Fixes
* **analytics:** throwing errors on unexisting users ([c511f25](https://github.com/standardnotes/server/commit/c511f259c765fe5cb5b022213d2a59d67390a3c4))
* remove the alive and kicking info logs on workers ([1bef127](https://github.com/standardnotes/server/commit/1bef1279e6dbf3cbdfa87e44aa9108ed6dbb3b0f))
### Features
* send websocket event to user when a message is sent ([#802](https://github.com/standardnotes/server/issues/802)) ([9a568b0](https://github.com/standardnotes/server/commit/9a568b0f73078ab74d4771bac469903a124e67da))
## [2.25.21](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.25.20...@standardnotes/analytics@2.25.21) (2023-08-31)
**Note:** Version bump only for package @standardnotes/analytics
## [2.25.20](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.25.19...@standardnotes/analytics@2.25.20) (2023-08-31)
**Note:** Version bump only for package @standardnotes/analytics
## [2.25.19](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.25.18...@standardnotes/analytics@2.25.19) (2023-08-30)
**Note:** Version bump only for package @standardnotes/analytics

View File

@@ -22,6 +22,4 @@ void container.load().then((container) => {
const subscriberFactory: DomainEventSubscriberFactoryInterface = container.get(TYPES.DomainEventSubscriberFactory)
subscriberFactory.create().start()
setInterval(() => logger.info('Alive and kicking!'), 20 * 60 * 1000)
})

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/analytics",
"version": "2.25.19",
"version": "2.26.2",
"engines": {
"node": ">=18.0.0 <21.0.0"
},
@@ -30,11 +30,11 @@
"@types/mixpanel": "^2.14.4",
"@types/node": "^20.5.7",
"@typescript-eslint/eslint-plugin": "^5.59.2",
"@typescript-eslint/parser": "^5.59.2",
"@typescript-eslint/parser": "^6.5.0",
"eslint": "^8.39.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-prettier": "^5.0.0",
"jest": "^29.5.0",
"prettier": "^2.8.8",
"prettier": "^3.0.3",
"ts-jest": "^29.1.0",
"typescript": "^5.0.4"
},
@@ -53,7 +53,7 @@
"mixpanel": "^0.17.0",
"mysql2": "^3.0.1",
"reflect-metadata": "^0.1.13",
"typeorm": "^0.3.15",
"typeorm": "^0.3.17",
"winston": "^3.8.1"
},
"optionalDependencies": {

View File

@@ -41,13 +41,13 @@ export class AccountDeletionRequestedEventHandler implements DomainEventHandlerI
Period.ThisMonth,
])
await this.analyticsEntityRepository.remove(analyticsEntity)
if (this.mixpanelClient !== null) {
this.mixpanelClient.track(event.type, {
distinct_id: analyticsEntity.id.toString(),
user_created_at: this.timer.convertMicrosecondsToDate(event.payload.userCreatedAtTimestamp),
})
}
await this.analyticsEntityRepository.remove(analyticsEntity)
}
}

View File

@@ -17,7 +17,11 @@ export class PaymentFailedEventHandler implements DomainEventHandlerInterface {
) {}
async handle(event: PaymentFailedEvent): Promise<void> {
const { analyticsId } = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
const analyticsMetadataOrError = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
if (analyticsMetadataOrError.isFailed()) {
return
}
const { analyticsId } = analyticsMetadataOrError.getValue()
await this.analyticsStore.markActivity([AnalyticsActivity.PaymentFailed], analyticsId, [
Period.Today,
Period.ThisWeek,

View File

@@ -88,7 +88,11 @@ export class PaymentSuccessEventHandler implements DomainEventHandlerInterface {
) {}
async handle(event: PaymentSuccessEvent): Promise<void> {
const { analyticsId } = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
const analyticsMetadataOrError = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
if (analyticsMetadataOrError.isFailed()) {
return
}
const { analyticsId } = analyticsMetadataOrError.getValue()
await this.analyticsStore.markActivity([AnalyticsActivity.PaymentSuccess], analyticsId, [
Period.Today,
Period.ThisWeek,

View File

@@ -17,8 +17,11 @@ export class RefundProcessedEventHandler implements DomainEventHandlerInterface
) {}
async handle(event: RefundProcessedEvent): Promise<void> {
const { analyticsId } = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
const analyticsMetadataOrError = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
if (analyticsMetadataOrError.isFailed()) {
return
}
const { analyticsId } = analyticsMetadataOrError.getValue()
await this.statisticsStore.incrementMeasure(StatisticMeasureName.NAMES.Refunds, event.payload.amount, [
Period.Today,
Period.ThisWeek,

View File

@@ -13,7 +13,11 @@ export class SessionCreatedEventHandler implements DomainEventHandlerInterface {
) {}
async handle(event: SessionCreatedEvent): Promise<void> {
const { analyticsId } = await this.getUserAnalyticsId.execute({ userUuid: event.payload.userUuid })
const analyticsMetadataOrError = await this.getUserAnalyticsId.execute({ userUuid: event.payload.userUuid })
if (analyticsMetadataOrError.isFailed()) {
return
}
const { analyticsId } = analyticsMetadataOrError.getValue()
if (this.mixpanelClient !== null) {
this.mixpanelClient.track(event.type, {

View File

@@ -13,7 +13,11 @@ export class SessionRefreshedEventHandler implements DomainEventHandlerInterface
) {}
async handle(event: SessionRefreshedEvent): Promise<void> {
const { analyticsId } = await this.getUserAnalyticsId.execute({ userUuid: event.payload.userUuid })
const analyticsMetadataOrError = await this.getUserAnalyticsId.execute({ userUuid: event.payload.userUuid })
if (analyticsMetadataOrError.isFailed()) {
return
}
const { analyticsId } = analyticsMetadataOrError.getValue()
if (this.mixpanelClient !== null) {
this.mixpanelClient.track(event.type, {

View File

@@ -29,7 +29,11 @@ export class SubscriptionCancelledEventHandler implements DomainEventHandlerInte
) {}
async handle(event: SubscriptionCancelledEvent): Promise<void> {
const { analyticsId, userUuid } = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
const analyticsMetadataOrError = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
if (analyticsMetadataOrError.isFailed()) {
return
}
const { analyticsId, userUuid } = analyticsMetadataOrError.getValue()
await this.analyticsStore.markActivity([AnalyticsActivity.SubscriptionCancelled], analyticsId, [
Period.Today,
Period.ThisWeek,

View File

@@ -27,7 +27,11 @@ export class SubscriptionExpiredEventHandler implements DomainEventHandlerInterf
) {}
async handle(event: SubscriptionExpiredEvent): Promise<void> {
const { analyticsId, userUuid } = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
const analyticsMetadataOrError = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
if (analyticsMetadataOrError.isFailed()) {
return
}
const { analyticsId, userUuid } = analyticsMetadataOrError.getValue()
await this.analyticsStore.markActivity(
[AnalyticsActivity.SubscriptionExpired, AnalyticsActivity.ExistingCustomersChurn],
analyticsId,

View File

@@ -29,7 +29,11 @@ export class SubscriptionPurchasedEventHandler implements DomainEventHandlerInte
) {}
async handle(event: SubscriptionPurchasedEvent): Promise<void> {
const { analyticsId, userUuid } = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
const analyticsMetadataOrError = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
if (analyticsMetadataOrError.isFailed()) {
return
}
const { analyticsId, userUuid } = analyticsMetadataOrError.getValue()
await this.analyticsStore.markActivity([AnalyticsActivity.SubscriptionPurchased], analyticsId, [
Period.Today,
Period.ThisWeek,

View File

@@ -19,7 +19,11 @@ export class SubscriptionReactivatedEventHandler implements DomainEventHandlerIn
) {}
async handle(event: SubscriptionReactivatedEvent): Promise<void> {
const { analyticsId } = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
const analyticsMetadataOrError = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
if (analyticsMetadataOrError.isFailed()) {
return
}
const { analyticsId } = analyticsMetadataOrError.getValue()
await this.analyticsStore.markActivity([AnalyticsActivity.SubscriptionReactivated], analyticsId, [
Period.Today,
Period.ThisWeek,

View File

@@ -27,7 +27,11 @@ export class SubscriptionRefundedEventHandler implements DomainEventHandlerInter
) {}
async handle(event: SubscriptionRefundedEvent): Promise<void> {
const { analyticsId, userUuid } = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
const analyticsMetadataOrError = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
if (analyticsMetadataOrError.isFailed()) {
return
}
const { analyticsId, userUuid } = analyticsMetadataOrError.getValue()
await this.analyticsStore.markActivity([AnalyticsActivity.SubscriptionRefunded], analyticsId, [
Period.Today,
Period.ThisWeek,

View File

@@ -26,7 +26,11 @@ export class SubscriptionRenewedEventHandler implements DomainEventHandlerInterf
) {}
async handle(event: SubscriptionRenewedEvent): Promise<void> {
const { analyticsId, userUuid } = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
const analyticsMetadataOrError = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail })
if (analyticsMetadataOrError.isFailed()) {
return
}
const { analyticsId, userUuid } = analyticsMetadataOrError.getValue()
await this.analyticsStore.markActivity([AnalyticsActivity.SubscriptionRenewed], analyticsId, [
Period.Today,
Period.ThisWeek,

View File

@@ -24,23 +24,18 @@ describe('GetUserAnalyticsId', () => {
})
it('should return analytics id for a user by uuid', async () => {
expect((await createUseCase().execute({ userUuid: '1-2-3' })).analyticsId).toEqual(123)
expect((await createUseCase().execute({ userUuid: '1-2-3' })).getValue().analyticsId).toEqual(123)
})
it('should return analytics id for a user by email', async () => {
expect((await createUseCase().execute({ userEmail: 'test@test.te' })).analyticsId).toEqual(123)
expect((await createUseCase().execute({ userEmail: 'test@test.te' })).getValue().analyticsId).toEqual(123)
})
it('should throw error if user is missing analytics entity', async () => {
analyticsEntityRepository.findOneByUserUuid = jest.fn().mockReturnValue(null)
let error = null
try {
await createUseCase().execute({ userUuid: '1-2-3' })
} catch (caughtError) {
error = caughtError
}
const result = await createUseCase().execute({ userUuid: '1-2-3' })
expect(error).not.toBeNull()
expect(result.isFailed()).toEqual(true)
})
})

View File

@@ -1,19 +1,18 @@
import { inject, injectable } from 'inversify'
import { Username, Uuid } from '@standardnotes/domain-core'
import { Result, UseCaseInterface, Username, Uuid } from '@standardnotes/domain-core'
import TYPES from '../../../Bootstrap/Types'
import { AnalyticsEntityRepositoryInterface } from '../../Entity/AnalyticsEntityRepositoryInterface'
import { UseCaseInterface } from '../UseCaseInterface'
import { GetUserAnalyticsIdDTO } from './GetUserAnalyticsIdDTO'
import { GetUserAnalyticsIdResponse } from './GetUserAnalyticsIdResponse'
@injectable()
export class GetUserAnalyticsId implements UseCaseInterface {
export class GetUserAnalyticsId implements UseCaseInterface<GetUserAnalyticsIdResponse> {
constructor(
@inject(TYPES.AnalyticsEntityRepository) private analyticsEntityRepository: AnalyticsEntityRepositoryInterface,
) {}
async execute(dto: GetUserAnalyticsIdDTO): Promise<GetUserAnalyticsIdResponse> {
async execute(dto: GetUserAnalyticsIdDTO): Promise<Result<GetUserAnalyticsIdResponse>> {
let analyticsEntity = null
if (dto.userUuid) {
analyticsEntity = await this.analyticsEntityRepository.findOneByUserUuid(dto.userUuid)
@@ -22,13 +21,13 @@ export class GetUserAnalyticsId implements UseCaseInterface {
}
if (analyticsEntity === null) {
throw new Error(`Could not find analytics entity for user ${dto.userUuid}`)
return Result.fail(`Could not find analytics entity ${dto.userUuid}`)
}
return {
return Result.ok({
analyticsId: analyticsEntity.id,
userUuid: Uuid.create(analyticsEntity.userUuid).getValue(),
username: Username.create(analyticsEntity.username).getValue(),
}
})
}
}

View File

@@ -6,7 +6,10 @@ import { AnalyticsActivity } from '../../Domain/Analytics/AnalyticsActivity'
import { AnalyticsStoreInterface } from '../../Domain/Analytics/AnalyticsStoreInterface'
export class RedisAnalyticsStore implements AnalyticsStoreInterface {
constructor(private periodKeyGenerator: PeriodKeyGeneratorInterface, private redisClient: IORedis.Redis) {}
constructor(
private periodKeyGenerator: PeriodKeyGeneratorInterface,
private redisClient: IORedis.Redis,
) {}
async calculateActivityTotalCountOverTime(activity: AnalyticsActivity, period: Period): Promise<number> {
if (

View File

@@ -8,7 +8,10 @@ import { Period } from '../../Domain/Time/Period'
import { PeriodKeyGeneratorInterface } from '../../Domain/Time/PeriodKeyGeneratorInterface'
export class RedisStatisticsStore implements StatisticsStoreInterface, StatisticMeasureRepositoryInterface {
constructor(private periodKeyGenerator: PeriodKeyGeneratorInterface, private redisClient: IORedis.Redis) {}
constructor(
private periodKeyGenerator: PeriodKeyGeneratorInterface,
private redisClient: IORedis.Redis,
) {}
async save(statisticMeasure: StatisticMeasure): Promise<void> {
const periodKey = this.periodKeyGenerator.getDailyKey(statisticMeasure.props.date)

View File

@@ -3,6 +3,38 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.73.6](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.73.5...@standardnotes/api-gateway@1.73.6) (2023-09-01)
**Note:** Version bump only for package @standardnotes/api-gateway
## [1.73.5](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.73.4...@standardnotes/api-gateway@1.73.5) (2023-09-01)
**Note:** Version bump only for package @standardnotes/api-gateway
## [1.73.4](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.73.3...@standardnotes/api-gateway@1.73.4) (2023-09-01)
**Note:** Version bump only for package @standardnotes/api-gateway
## [1.73.3](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.73.2...@standardnotes/api-gateway@1.73.3) (2023-08-31)
**Note:** Version bump only for package @standardnotes/api-gateway
## [1.73.2](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.73.1...@standardnotes/api-gateway@1.73.2) (2023-08-31)
**Note:** Version bump only for package @standardnotes/api-gateway
## [1.73.1](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.73.0...@standardnotes/api-gateway@1.73.1) (2023-08-30)
### Bug Fixes
* **api-gateway:** transition triggering endpoint call for revisions ([ee656b8](https://github.com/standardnotes/api-gateway/commit/ee656b868b8ebcd63b568b48a450803c80fa78a6))
# [1.73.0](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.72.3...@standardnotes/api-gateway@1.73.0) (2023-08-30)
### Features
* add a way to trigger transition procedure for revisions ([#798](https://github.com/standardnotes/api-gateway/issues/798)) ([25ffd6b](https://github.com/standardnotes/api-gateway/commit/25ffd6b8036117b33584c6d948bb0867b637ae65))
## [1.72.3](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.72.2...@standardnotes/api-gateway@1.72.3) (2023-08-30)
**Note:** Version bump only for package @standardnotes/api-gateway

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/api-gateway",
"version": "1.72.3",
"version": "1.73.6",
"engines": {
"node": ">=18.0.0 <21.0.0"
},
@@ -55,13 +55,13 @@
"@types/node": "^20.5.7",
"@types/prettyjson": "^0.0.30",
"@typescript-eslint/eslint-plugin": "^5.59.2",
"@typescript-eslint/parser": "^5.59.2",
"@typescript-eslint/parser": "^6.5.0",
"eslint": "^8.39.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-prettier": "^5.0.0",
"jest": "^29.5.0",
"nodemon": "^2.0.19",
"npm-check-updates": "^16.13.2",
"prettier": "^2.8.8",
"prettier": "^3.0.3",
"ts-jest": "^29.1.0",
"typescript": "^5.0.4"
},

View File

@@ -1,23 +1,23 @@
import { Request, Response } from 'express'
import { inject } from 'inversify'
import { BaseHttpController, controller, httpDelete, httpGet } from 'inversify-express-utils'
import { BaseHttpController, controller, httpDelete, httpGet, httpPost } from 'inversify-express-utils'
import { TYPES } from '../../Bootstrap/Types'
import { ServiceProxyInterface } from '../../Service/Http/ServiceProxyInterface'
import { EndpointResolverInterface } from '../../Service/Resolver/EndpointResolverInterface'
@controller('/v2/items/:itemUuid/revisions', TYPES.ApiGateway_RequiredCrossServiceTokenMiddleware)
@controller('/v2', TYPES.ApiGateway_RequiredCrossServiceTokenMiddleware)
export class RevisionsControllerV2 extends BaseHttpController {
constructor(
@inject(TYPES.ApiGateway_ServiceProxy) private httpService: ServiceProxyInterface,
@inject(TYPES.ApiGateway_ServiceProxy) private serviceProxy: ServiceProxyInterface,
@inject(TYPES.ApiGateway_EndpointResolver) private endpointResolver: EndpointResolverInterface,
) {
super()
}
@httpGet('/')
@httpGet('/items/:itemUuid/revisions')
async getRevisions(request: Request, response: Response): Promise<void> {
await this.httpService.callRevisionsServer(
await this.serviceProxy.callRevisionsServer(
request,
response,
this.endpointResolver.resolveEndpointOrMethodIdentifier(
@@ -28,9 +28,9 @@ export class RevisionsControllerV2 extends BaseHttpController {
)
}
@httpGet('/:uuid')
@httpGet('/items/:itemUuid/revisions/:uuid')
async getRevision(request: Request, response: Response): Promise<void> {
await this.httpService.callRevisionsServer(
await this.serviceProxy.callRevisionsServer(
request,
response,
this.endpointResolver.resolveEndpointOrMethodIdentifier(
@@ -42,9 +42,9 @@ export class RevisionsControllerV2 extends BaseHttpController {
)
}
@httpDelete('/:uuid')
@httpDelete('/items/:itemUuid/revisions/:uuid')
async deleteRevision(request: Request, response: Response): Promise<void> {
await this.httpService.callRevisionsServer(
await this.serviceProxy.callRevisionsServer(
request,
response,
this.endpointResolver.resolveEndpointOrMethodIdentifier(
@@ -55,4 +55,14 @@ export class RevisionsControllerV2 extends BaseHttpController {
),
)
}
@httpPost('/revisions/transition')
async transition(request: Request, response: Response): Promise<void> {
await this.serviceProxy.callRevisionsServer(
request,
response,
this.endpointResolver.resolveEndpointOrMethodIdentifier('POST', 'revisions/transition'),
request.body,
)
}
}

View File

@@ -4,7 +4,10 @@ import { ServiceContainerInterface, ServiceIdentifier } from '@standardnotes/dom
import { ServiceProxyInterface } from '../Http/ServiceProxyInterface'
export class DirectCallServiceProxy implements ServiceProxyInterface {
constructor(private serviceContainer: ServiceContainerInterface, private filesServerUrl: string) {}
constructor(
private serviceContainer: ServiceContainerInterface,
private filesServerUrl: string,
) {}
async validateSession(headers: {
authorization: string

View File

@@ -65,6 +65,7 @@ export class EndpointResolver implements EndpointResolverInterface {
['[GET]:items/:itemUuid/revisions', 'revisions.revisions.getRevisions'],
['[GET]:items/:itemUuid/revisions/:id', 'revisions.revisions.getRevision'],
['[DELETE]:items/:itemUuid/revisions/:id', 'revisions.revisions.deleteRevision'],
['[POST]:revisions/transition', 'revisions.revisions.transition'],
// Messages Controller
['[GET]:messages/', 'sync.messages.get-received'],
['[GET]:messages/outbound', 'sync.messages.get-sent'],

View File

@@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.137.5](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.137.4...@standardnotes/auth-server@1.137.5) (2023-09-01)
**Note:** Version bump only for package @standardnotes/auth-server
## [1.137.4](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.137.3...@standardnotes/auth-server@1.137.4) (2023-09-01)
### Bug Fixes
* inserting revisions instead of upsert ([#803](https://github.com/standardnotes/server/issues/803)) ([27ff25b](https://github.com/standardnotes/server/commit/27ff25b70e6b65dfe89aa35582422dce682a4105))
## [1.137.3](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.137.2...@standardnotes/auth-server@1.137.3) (2023-09-01)
### Bug Fixes
* remove the alive and kicking info logs on workers ([1bef127](https://github.com/standardnotes/server/commit/1bef1279e6dbf3cbdfa87e44aa9108ed6dbb3b0f))
## [1.137.2](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.137.1...@standardnotes/auth-server@1.137.2) (2023-08-31)
**Note:** Version bump only for package @standardnotes/auth-server
## [1.137.1](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.137.0...@standardnotes/auth-server@1.137.1) (2023-08-31)
**Note:** Version bump only for package @standardnotes/auth-server
# [1.137.0](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.136.0...@standardnotes/auth-server@1.137.0) (2023-08-30)
### Features

View File

@@ -24,6 +24,4 @@ void container.load().then((container) => {
TYPES.Auth_DomainEventSubscriberFactory,
)
subscriberFactory.create().start()
setInterval(() => logger.info('Alive and kicking!'), 20 * 60 * 1000)
})

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/auth-server",
"version": "1.137.0",
"version": "1.137.5",
"engines": {
"node": ">=18.0.0 <21.0.0"
},
@@ -69,7 +69,7 @@
"prettyjson": "^1.2.5",
"reflect-metadata": "0.1.13",
"sqlite3": "^5.1.6",
"typeorm": "^0.3.15",
"typeorm": "^0.3.17",
"ua-parser-js": "^1.0.35",
"uuid": "^9.0.0",
"winston": "^3.8.1"
@@ -86,13 +86,13 @@
"@types/ua-parser-js": "^0.7.36",
"@types/uuid": "^9.0.2",
"@typescript-eslint/eslint-plugin": "^5.59.2",
"@typescript-eslint/parser": "^5.59.2",
"@typescript-eslint/parser": "^6.5.0",
"eslint": "^8.39.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-prettier": "^5.0.0",
"jest": "^29.5.0",
"nodemon": "^2.0.19",
"npm-check-updates": "^16.13.2",
"prettier": "^2.8.8",
"prettier": "^3.0.3",
"ts-jest": "^29.1.0",
"typescript": "^5.0.4"
},

View File

@@ -1,5 +1,9 @@
export class MFAValidationError extends Error {
constructor(message: string, public tag: string, public payload?: Record<string, unknown>) {
constructor(
message: string,
public tag: string,
public payload?: Record<string, unknown>,
) {
super(message)
Object.setPrototypeOf(this, MFAValidationError.prototype)
}

View File

@@ -6,7 +6,10 @@ import { SettingServiceInterface } from '../Setting/SettingServiceInterface'
import { UserRepositoryInterface } from '../User/UserRepositoryInterface'
export class EmailSubscriptionUnsubscribedEventHandler implements DomainEventHandlerInterface {
constructor(private userRepository: UserRepositoryInterface, private settingsService: SettingServiceInterface) {}
constructor(
private userRepository: UserRepositoryInterface,
private settingsService: SettingServiceInterface,
) {}
async handle(event: EmailSubscriptionUnsubscribedEvent): Promise<void> {
const usernameOrError = Username.create(event.payload.userEmail)

View File

@@ -4,7 +4,10 @@ import { Logger } from 'winston'
import { UpdateStorageQuotaUsedForUser } from '../UseCase/UpdateStorageQuotaUsedForUser/UpdateStorageQuotaUsedForUser'
export class FileRemovedEventHandler implements DomainEventHandlerInterface {
constructor(private updateStorageQuotaUsedForUserUseCase: UpdateStorageQuotaUsedForUser, private logger: Logger) {}
constructor(
private updateStorageQuotaUsedForUserUseCase: UpdateStorageQuotaUsedForUser,
private logger: Logger,
) {}
async handle(event: FileRemovedEvent): Promise<void> {
const result = await this.updateStorageQuotaUsedForUserUseCase.execute({

View File

@@ -4,7 +4,10 @@ import { Logger } from 'winston'
import { UpdateStorageQuotaUsedForUser } from '../UseCase/UpdateStorageQuotaUsedForUser/UpdateStorageQuotaUsedForUser'
export class FileUploadedEventHandler implements DomainEventHandlerInterface {
constructor(private updateStorageQuotaUsedForUserUseCase: UpdateStorageQuotaUsedForUser, private logger: Logger) {}
constructor(
private updateStorageQuotaUsedForUserUseCase: UpdateStorageQuotaUsedForUser,
private logger: Logger,
) {}
async handle(event: FileUploadedEvent): Promise<void> {
const result = await this.updateStorageQuotaUsedForUserUseCase.execute({

View File

@@ -4,7 +4,10 @@ import { Logger } from 'winston'
import { DeleteAccount } from '../UseCase/DeleteAccount/DeleteAccount'
export class PaymentsAccountDeletedEventHandler implements DomainEventHandlerInterface {
constructor(private deleteAccountUseCase: DeleteAccount, private logger: Logger) {}
constructor(
private deleteAccountUseCase: DeleteAccount,
private logger: Logger,
) {}
async handle(event: PaymentsAccountDeletedEvent): Promise<void> {
const result = await this.deleteAccountUseCase.execute({

View File

@@ -4,7 +4,10 @@ import { Logger } from 'winston'
import { UpdateStorageQuotaUsedForUser } from '../UseCase/UpdateStorageQuotaUsedForUser/UpdateStorageQuotaUsedForUser'
export class SharedVaultFileMovedEventHandler implements DomainEventHandlerInterface {
constructor(private updateStorageQuotaUsedForUserUseCase: UpdateStorageQuotaUsedForUser, private logger: Logger) {}
constructor(
private updateStorageQuotaUsedForUserUseCase: UpdateStorageQuotaUsedForUser,
private logger: Logger,
) {}
async handle(event: SharedVaultFileMovedEvent): Promise<void> {
const subtractResult = await this.updateStorageQuotaUsedForUserUseCase.execute({

View File

@@ -4,7 +4,10 @@ import { Logger } from 'winston'
import { UpdateStorageQuotaUsedForUser } from '../UseCase/UpdateStorageQuotaUsedForUser/UpdateStorageQuotaUsedForUser'
export class SharedVaultFileRemovedEventHandler implements DomainEventHandlerInterface {
constructor(private updateStorageQuotaUsedForUserUseCase: UpdateStorageQuotaUsedForUser, private logger: Logger) {}
constructor(
private updateStorageQuotaUsedForUserUseCase: UpdateStorageQuotaUsedForUser,
private logger: Logger,
) {}
async handle(event: SharedVaultFileRemovedEvent): Promise<void> {
const result = await this.updateStorageQuotaUsedForUserUseCase.execute({

View File

@@ -4,7 +4,10 @@ import { Logger } from 'winston'
import { UpdateStorageQuotaUsedForUser } from '../UseCase/UpdateStorageQuotaUsedForUser/UpdateStorageQuotaUsedForUser'
export class SharedVaultFileUploadedEventHandler implements DomainEventHandlerInterface {
constructor(private updateStorageQuotaUsedForUserUseCase: UpdateStorageQuotaUsedForUser, private logger: Logger) {}
constructor(
private updateStorageQuotaUsedForUserUseCase: UpdateStorageQuotaUsedForUser,
private logger: Logger,
) {}
async handle(event: SharedVaultFileUploadedEvent): Promise<void> {
const result = await this.updateStorageQuotaUsedForUserUseCase.execute({

View File

@@ -3,7 +3,10 @@ import { UpdateTransitionStatus } from '../UseCase/UpdateTransitionStatus/Update
import { Logger } from 'winston'
export class TransitionStatusUpdatedEventHandler implements DomainEventHandlerInterface {
constructor(private updateTransitionStatusUseCase: UpdateTransitionStatus, private logger: Logger) {}
constructor(
private updateTransitionStatusUseCase: UpdateTransitionStatus,
private logger: Logger,
) {}
async handle(event: TransitionStatusUpdatedEvent): Promise<void> {
const result = await this.updateTransitionStatusUseCase.execute({

View File

@@ -5,7 +5,10 @@ import { Request, Response } from 'express'
import { GetSetting } from '../../../Domain/UseCase/GetSetting/GetSetting'
export class BaseSubscriptionSettingsController extends BaseHttpController {
constructor(protected doGetSetting: GetSetting, private controllerContainer?: ControllerContainerInterface) {
constructor(
protected doGetSetting: GetSetting,
private controllerContainer?: ControllerContainerInterface,
) {
super()
if (this.controllerContainer !== undefined) {

View File

@@ -8,7 +8,10 @@ import { CreateValetToken } from '../../../Domain/UseCase/CreateValetToken/Creat
import { CreateValetTokenPayload } from '../../../Domain/ValetToken/CreateValetTokenPayload'
export class BaseValetTokenController extends BaseHttpController {
constructor(protected createValetKey: CreateValetToken, private controllerContainer?: ControllerContainerInterface) {
constructor(
protected createValetKey: CreateValetToken,
private controllerContainer?: ControllerContainerInterface,
) {
super()
if (this.controllerContainer !== undefined) {

View File

@@ -4,7 +4,10 @@ import { BaseMiddleware } from 'inversify-express-utils'
import { Logger } from 'winston'
export abstract class ApiGatewayAuthMiddleware extends BaseMiddleware {
constructor(private tokenDecoder: TokenDecoderInterface<CrossServiceTokenData>, private logger: Logger) {
constructor(
private tokenDecoder: TokenDecoderInterface<CrossServiceTokenData>,
private logger: Logger,
) {
super()
}

View File

@@ -7,7 +7,10 @@ import { OfflineSubscriptionTokenRepositoryInterface } from '../../Domain/Auth/O
export class TypeORMOfflineSubscriptionTokenRepository implements OfflineSubscriptionTokenRepositoryInterface {
private readonly PREFIX = 'offline-subscription-token'
constructor(private cacheEntryRepository: CacheEntryRepositoryInterface, private timer: TimerInterface) {}
constructor(
private cacheEntryRepository: CacheEntryRepositoryInterface,
private timer: TimerInterface,
) {}
async getUserEmailByToken(token: string): Promise<string | undefined> {
const userUuid = await this.cacheEntryRepository.findUnexpiredOneByKey(`${this.PREFIX}:${token}`)

View File

@@ -7,7 +7,10 @@ import { SubscriptionTokenRepositoryInterface } from '../../Domain/Subscription/
export class TypeORMSubscriptionTokenRepository implements SubscriptionTokenRepositoryInterface {
private readonly PREFIX = 'subscription-token'
constructor(private cacheEntryRepository: CacheEntryRepositoryInterface, private timer: TimerInterface) {}
constructor(
private cacheEntryRepository: CacheEntryRepositoryInterface,
private timer: TimerInterface,
) {}
async getUserUuidByToken(token: string): Promise<string | undefined> {
const userUuid = await this.cacheEntryRepository.findUnexpiredOneByKey(`${this.PREFIX}:${token}`)

View File

@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.50.3](https://github.com/standardnotes/server/compare/@standardnotes/common@1.50.2...@standardnotes/common@1.50.3) (2023-09-01)
**Note:** Version bump only for package @standardnotes/common
## [1.50.2](https://github.com/standardnotes/server/compare/@standardnotes/common@1.50.1...@standardnotes/common@1.50.2) (2023-08-30)
**Note:** Version bump only for package @standardnotes/common

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/common",
"version": "1.50.2",
"version": "1.50.3",
"engines": {
"node": ">=18.0.0 <21.0.0"
},
@@ -26,11 +26,11 @@
"@types/jest": "^29.5.1",
"@types/node": "^20.5.7",
"@typescript-eslint/eslint-plugin": "^5.59.2",
"@typescript-eslint/parser": "^5.59.2",
"@typescript-eslint/parser": "^6.5.0",
"eslint": "^8.39.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-prettier": "^5.0.0",
"jest": "^29.5.0",
"prettier": "^2.8.8",
"prettier": "^3.0.3",
"ts-jest": "^29.1.0",
"typescript": "^5.0.4"
},

View File

@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.26.2](https://github.com/standardnotes/server/compare/@standardnotes/domain-core@1.26.1...@standardnotes/domain-core@1.26.2) (2023-09-01)
**Note:** Version bump only for package @standardnotes/domain-core
## [1.26.1](https://github.com/standardnotes/server/compare/@standardnotes/domain-core@1.26.0...@standardnotes/domain-core@1.26.1) (2023-08-30)
**Note:** Version bump only for package @standardnotes/domain-core

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/domain-core",
"version": "1.26.1",
"version": "1.26.2",
"engines": {
"node": ">=18.0.0 <21.0.0"
},
@@ -20,6 +20,7 @@
"clean": "rm -fr dist",
"build": "tsc --build",
"lint": "eslint . --ext .ts",
"lint:fix": "eslint . --ext .ts --fix",
"test": "jest spec --coverage --passWithNoTests"
},
"dependencies": {
@@ -30,11 +31,11 @@
"@types/node": "^20.5.7",
"@types/uuid": "^9.0.2",
"@typescript-eslint/eslint-plugin": "^5.59.2",
"@typescript-eslint/parser": "^5.59.2",
"@typescript-eslint/parser": "^6.5.0",
"eslint": "^8.39.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-prettier": "^5.0.0",
"jest": "^29.5.0",
"prettier": "^2.8.8",
"prettier": "^3.0.3",
"ts-jest": "^29.1.0",
"typescript": "^5.0.4"
}

View File

@@ -5,7 +5,10 @@ import { UniqueEntityId } from './UniqueEntityId'
export abstract class Entity<T> {
protected readonly _id: UniqueEntityId
constructor(public readonly props: T, id?: UniqueEntityId) {
constructor(
public readonly props: T,
id?: UniqueEntityId,
) {
this._id = id ? id : new UniqueEntityId()
}

View File

@@ -1,7 +1,11 @@
/* istanbul ignore file */
export class Result<T> {
constructor(private isSuccess: boolean, private error?: string, private value?: T) {
constructor(
private isSuccess: boolean,
private error?: string,
private value?: T,
) {
Object.freeze(this)
}

View File

@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.12.20](https://github.com/standardnotes/server/compare/@standardnotes/domain-events-infra@1.12.19...@standardnotes/domain-events-infra@1.12.20) (2023-09-01)
**Note:** Version bump only for package @standardnotes/domain-events-infra
## [1.12.19](https://github.com/standardnotes/server/compare/@standardnotes/domain-events-infra@1.12.18...@standardnotes/domain-events-infra@1.12.19) (2023-09-01)
**Note:** Version bump only for package @standardnotes/domain-events-infra
## [1.12.18](https://github.com/standardnotes/server/compare/@standardnotes/domain-events-infra@1.12.17...@standardnotes/domain-events-infra@1.12.18) (2023-09-01)
**Note:** Version bump only for package @standardnotes/domain-events-infra
## [1.12.17](https://github.com/standardnotes/server/compare/@standardnotes/domain-events-infra@1.12.16...@standardnotes/domain-events-infra@1.12.17) (2023-08-31)
**Note:** Version bump only for package @standardnotes/domain-events-infra
## [1.12.16](https://github.com/standardnotes/server/compare/@standardnotes/domain-events-infra@1.12.15...@standardnotes/domain-events-infra@1.12.16) (2023-08-30)
**Note:** Version bump only for package @standardnotes/domain-events-infra

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/domain-events-infra",
"version": "1.12.16",
"version": "1.12.20",
"engines": {
"node": ">=18.0.0 <21.0.0"
},
@@ -20,6 +20,7 @@
"clean": "rm -fr dist",
"build": "tsc --build",
"lint": "eslint . --ext .ts",
"lint:fix": "eslint . --ext .ts --fix",
"test": "jest spec --coverage"
},
"dependencies": {
@@ -35,11 +36,11 @@
"@types/ioredis": "^5.0.0",
"@types/jest": "^29.5.1",
"@typescript-eslint/eslint-plugin": "^5.59.2",
"@typescript-eslint/parser": "^5.59.2",
"@typescript-eslint/parser": "^6.5.0",
"eslint": "^8.39.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-prettier": "^5.0.0",
"jest": "^29.5.0",
"prettier": "^2.8.8",
"prettier": "^3.0.3",
"ts-jest": "^29.1.0",
"typescript": "^5.0.4"
},

View File

@@ -7,7 +7,10 @@ import {
} from '@standardnotes/domain-events'
export class DirectCallEventMessageHandler implements DomainEventMessageHandlerInterface {
constructor(private handlers: Map<string, DomainEventHandlerInterface>, private logger: Logger) {}
constructor(
private handlers: Map<string, DomainEventHandlerInterface>,
private logger: Logger,
) {}
async handleMessage(messageOrEvent: string | DomainEventInterface): Promise<void> {
if (typeof messageOrEvent === 'string') {

View File

@@ -4,7 +4,10 @@ import * as zlib from 'zlib'
import { DomainEventPublisherInterface, DomainEventInterface } from '@standardnotes/domain-events'
export class RedisDomainEventPublisher implements DomainEventPublisherInterface {
constructor(private redisClient: IORedis.Redis, private eventChannel: string) {}
constructor(
private redisClient: IORedis.Redis,
private eventChannel: string,
) {}
async publish(event: DomainEventInterface): Promise<void> {
const message = zlib.deflateSync(JSON.stringify(event)).toString('base64')

View File

@@ -3,7 +3,10 @@ import * as IORedis from 'ioredis'
import { DomainEventSubscriberInterface } from '@standardnotes/domain-events'
export class RedisDomainEventSubscriber implements DomainEventSubscriberInterface {
constructor(private redisClient: IORedis.Redis, private eventChannel: string) {}
constructor(
private redisClient: IORedis.Redis,
private eventChannel: string,
) {}
start(): void {
void this.redisClient.subscribe(this.eventChannel)

View File

@@ -8,7 +8,10 @@ import {
} from '@standardnotes/domain-events'
export class RedisEventMessageHandler implements DomainEventMessageHandlerInterface {
constructor(private handlers: Map<string, DomainEventHandlerInterface>, private logger: Logger) {}
constructor(
private handlers: Map<string, DomainEventHandlerInterface>,
private logger: Logger,
) {}
async handleMessage(message: string): Promise<void> {
try {

View File

@@ -4,7 +4,10 @@ import { MessageAttributeValue, PublishCommand, PublishCommandInput, SNSClient }
import { DomainEventInterface, DomainEventPublisherInterface } from '@standardnotes/domain-events'
export class SNSDomainEventPublisher implements DomainEventPublisherInterface {
constructor(private snsClient: SNSClient, private topicArn: string) {}
constructor(
private snsClient: SNSClient,
private topicArn: string,
) {}
async publish(event: DomainEventInterface): Promise<void> {
const message: PublishCommandInput = {

View File

@@ -8,7 +8,10 @@ import {
} from '@standardnotes/domain-events'
export class SQSEventMessageHandler implements DomainEventMessageHandlerInterface {
constructor(private handlers: Map<string, DomainEventHandlerInterface>, private logger: Logger) {}
constructor(
private handlers: Map<string, DomainEventHandlerInterface>,
private logger: Logger,
) {}
async handleMessage(message: string): Promise<void> {
const messageParsed = JSON.parse(message)

View File

@@ -10,7 +10,10 @@ import {
export class SQSNewRelicBounceNotificiationHandler implements DomainEventMessageHandlerInterface {
private readonly ALLOWED_NOTIFICATION_TYPES = ['Bounce']
constructor(private handlers: Map<string, DomainEventHandlerInterface>, private logger: Logger) {}
constructor(
private handlers: Map<string, DomainEventHandlerInterface>,
private logger: Logger,
) {}
async handleMessage(message: string): Promise<void> {
const messageParsed = JSON.parse(JSON.parse(message).Message)

View File

@@ -8,7 +8,10 @@ import {
} from '@standardnotes/domain-events'
export class SQSNewRelicEventMessageHandler implements DomainEventMessageHandlerInterface {
constructor(private handlers: Map<string, DomainEventHandlerInterface>, private logger: Logger) {}
constructor(
private handlers: Map<string, DomainEventHandlerInterface>,
private logger: Logger,
) {}
async handleMessage(message: string): Promise<void> {
const messageParsed = JSON.parse(message)

View File

@@ -3,6 +3,28 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [2.122.1](https://github.com/standardnotes/server/compare/@standardnotes/domain-events@2.122.0...@standardnotes/domain-events@2.122.1) (2023-09-01)
**Note:** Version bump only for package @standardnotes/domain-events
# [2.122.0](https://github.com/standardnotes/server/compare/@standardnotes/domain-events@2.121.0...@standardnotes/domain-events@2.122.0) (2023-09-01)
### Features
* **syncing-server:** add sending invites via websockets ([#804](https://github.com/standardnotes/server/issues/804)) ([dc3a41e](https://github.com/standardnotes/server/commit/dc3a41e4bb3f3541f812b938fd42a6192e3e20f8))
# [2.121.0](https://github.com/standardnotes/server/compare/@standardnotes/domain-events@2.120.0...@standardnotes/domain-events@2.121.0) (2023-09-01)
### Features
* send websocket event to user when a message is sent ([#802](https://github.com/standardnotes/server/issues/802)) ([9a568b0](https://github.com/standardnotes/server/commit/9a568b0f73078ab74d4771bac469903a124e67da))
# [2.120.0](https://github.com/standardnotes/server/compare/@standardnotes/domain-events@2.119.0...@standardnotes/domain-events@2.120.0) (2023-08-31)
### Features
* add sending notifications to user via websockets ([#799](https://github.com/standardnotes/server/issues/799)) ([c0722b1](https://github.com/standardnotes/server/commit/c0722b173b71d696568d8e8c5095a22fd219bef6))
# [2.119.0](https://github.com/standardnotes/server/compare/@standardnotes/domain-events@2.118.0...@standardnotes/domain-events@2.119.0) (2023-08-30)
### Features

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/domain-events",
"version": "2.119.0",
"version": "2.122.1",
"engines": {
"node": ">=18.0.0 <21.0.0"
},
@@ -29,11 +29,11 @@
"devDependencies": {
"@types/jest": "^29.5.1",
"@typescript-eslint/eslint-plugin": "^5.59.2",
"@typescript-eslint/parser": "^5.59.2",
"@typescript-eslint/parser": "^6.5.0",
"eslint": "^8.39.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-prettier": "^5.0.0",
"jest": "^29.5.0",
"prettier": "^2.8.8",
"prettier": "^3.0.3",
"ts-jest": "^29.1.0",
"typescript": "^5.0.4"
}

View File

@@ -0,0 +1,8 @@
import { DomainEventInterface } from './DomainEventInterface'
import { MessageSentToUserEventPayload } from './MessageSentToUserEventPayload'
export interface MessageSentToUserEvent extends DomainEventInterface {
type: 'MESSAGE_SENT_TO_USER'
payload: MessageSentToUserEventPayload
}

View File

@@ -0,0 +1,11 @@
export interface MessageSentToUserEventPayload {
message: {
uuid: string
recipient_uuid: string
sender_uuid: string
encrypted_message: string
replaceability_identifier: string | null
created_at_timestamp: number
updated_at_timestamp: number
}
}

View File

@@ -0,0 +1,8 @@
import { DomainEventInterface } from './DomainEventInterface'
import { NotificationAddedForUserEventPayload } from './NotificationAddedForUserEventPayload'
export interface NotificationAddedForUserEvent extends DomainEventInterface {
type: 'NOTIFICATION_ADDED_FOR_USER'
payload: NotificationAddedForUserEventPayload
}

View File

@@ -0,0 +1,10 @@
export interface NotificationAddedForUserEventPayload {
notification: {
uuid: string
user_uuid: string
type: string
payload: string
created_at_timestamp: number
updated_at_timestamp: number
}
}

View File

@@ -0,0 +1,8 @@
import { DomainEventInterface } from './DomainEventInterface'
import { UserInvitedToSharedVaultEventPayload } from './UserInvitedToSharedVaultEventPayload'
export interface UserInvitedToSharedVaultEvent extends DomainEventInterface {
type: 'USER_INVITED_TO_SHARED_VAULT'
payload: UserInvitedToSharedVaultEventPayload
}

View File

@@ -0,0 +1,12 @@
export interface UserInvitedToSharedVaultEventPayload {
invite: {
uuid: string
shared_vault_uuid: string
user_uuid: string
sender_uuid: string
encrypted_message: string
permission: string
created_at_timestamp: number
updated_at_timestamp: number
}
}

Some files were not shown because too many files have changed in this diff Show More