Compare commits

..

36 Commits

Author SHA1 Message Date
standardci
2f9d8e776f chore(release): publish new version
- @standardnotes/analytics@2.21.7
 - @standardnotes/api-gateway@1.49.10
 - @standardnotes/auth-server@1.95.3
 - @standardnotes/domain-events-infra@1.10.1
 - @standardnotes/event-store@1.7.9
 - @standardnotes/files-server@1.10.11
 - @standardnotes/revisions-server@1.12.14
 - @standardnotes/scheduler-server@1.17.11
 - @standardnotes/syncing-server@1.32.7
 - @standardnotes/websockets-server@1.6.12
2023-04-21 12:29:01 +00:00
Karol Sójko
9503f0d963 chore(deps): upgrade newrelic deps 2023-04-21 14:11:47 +02:00
standardci
32aff3e3f4 chore(release): publish new version
- @standardnotes/analytics@2.21.6
 - @standardnotes/api-gateway@1.49.9
 - @standardnotes/auth-server@1.95.2
 - @standardnotes/domain-events-infra@1.10.0
 - @standardnotes/domain-events@2.109.0
 - @standardnotes/event-store@1.7.8
 - @standardnotes/files-server@1.10.10
 - @standardnotes/revisions-server@1.12.13
 - @standardnotes/scheduler-server@1.17.10
 - @standardnotes/syncing-server@1.32.6
 - @standardnotes/websockets-server@1.6.11
2023-04-21 08:19:39 +00:00
Karol Sójko
9b9f10d4ca feat(domain-events-infra): add SES email bounce notifications handler (#569)
* feat(domain-events-infra): add SES email bounce notifications handler

* fix(domain-events-infra): specs
2023-04-21 10:03:39 +02:00
standardci
e4f0cc6b37 chore(release): publish new version
- @standardnotes/auth-server@1.95.1
2023-04-20 10:13:23 +00:00
Karol Sójko
d211249086 fix(auth): add u2f permissions for pro users 2023-04-20 11:58:37 +02:00
Karol Sójko
0fc5db8aee fix(env): default u2f origins 2023-04-19 17:32:37 +02:00
standardci
0a2abef979 chore(release): publish new version
- @standardnotes/auth-server@1.95.0
2023-04-04 09:23:48 +00:00
Karol Sójko
8242f13aff feat(auth): add initial emergency access invitations model (#528) 2023-04-04 11:10:11 +02:00
standardci
7516ba7028 chore(release): publish new version
- @standardnotes/auth-server@1.94.1
2023-04-04 07:21:21 +00:00
Karol Sójko
3417407cbe fix(auth): change status code for updating a subscription setting without a subscription 2023-04-04 09:08:27 +02:00
standardci
720d046c00 chore(release): publish new version
- @standardnotes/auth-server@1.94.0
2023-04-03 14:08:48 +00:00
Karol Sójko
b88f560b07 fix(auth): feature service specs 2023-04-03 15:53:04 +02:00
Karol Sójko
51b264ca13 feat(auth): feature entitlement check for u2f endpoints 2023-04-03 15:43:32 +02:00
standardci
0309aeab34 chore(release): publish new version
- @standardnotes/auth-server@1.93.14
2023-04-03 10:56:30 +00:00
Karol Sójko
aca8d2948d fix(auth): relying party id 2023-04-03 12:43:05 +02:00
standardci
09596d2181 chore(release): publish new version
- @standardnotes/analytics@2.21.5
 - @standardnotes/api-gateway@1.49.8
 - @standardnotes/auth-server@1.93.13
 - @standardnotes/domain-events-infra@1.9.74
 - @standardnotes/event-store@1.7.7
 - @standardnotes/files-server@1.10.9
 - @standardnotes/revisions-server@1.12.12
 - @standardnotes/scheduler-server@1.17.9
 - @standardnotes/syncing-server@1.32.5
 - @standardnotes/websockets-server@1.6.10
2023-03-30 09:51:30 +00:00
Karol Sójko
e87f7e1674 chore(deps): upgrade newrelic 2023-03-30 11:33:09 +02:00
Karol Sójko
4ad1cccc33 fix: disable newrelic on self-hosted by default 2023-03-30 11:32:56 +02:00
Karol Sójko
5d12648669 chore: fix service name in deployments 2023-03-27 11:26:29 +02:00
standardci
7e989720bf chore(release): publish new version
- @standardnotes/auth-server@1.93.12
2023-03-16 13:31:44 +00:00
Karol Sójko
f8a2892811 fix(auth): persistence mapping for authenticators 2023-03-16 14:14:46 +01:00
Karol Sójko
eaab23ec19 fix: persistent server keys between updates - fixes #476 (#481)
* fix: persistent server keys between updates - fixes #476

* fix: env vars for ci
2023-03-16 11:02:16 +01:00
standardci
36dcdf256f chore(release): publish new version
- @standardnotes/revisions-server@1.12.11
 - @standardnotes/syncing-server@1.32.4
2023-03-15 10:36:43 +00:00
Karol Sójko
10a596db65 fix(syncing-server): remove unused methods from auth http service 2023-03-15 11:20:24 +01:00
Karol Sójko
c76302cf98 fix(revisions): add warning logs if a revision dump could not be found 2023-03-15 11:14:48 +01:00
standardci
176cf608ef chore(release): publish new version
- @standardnotes/auth-server@1.93.11
2023-03-10 14:12:51 +00:00
Karol Sójko
f69073ba02 fix(auth): chage attestation type to none 2023-03-10 14:59:14 +01:00
standardci
09ecf9262a chore(release): publish new version
- @standardnotes/auth-server@1.93.10
2023-03-10 13:38:48 +00:00
Karol Sójko
a3fc0d9120 fix(auth): attestation params and authenticator transports 2023-03-10 14:25:23 +01:00
standardci
0d5c3283d3 chore(release): publish new version
- @standardnotes/analytics@2.21.4
 - @standardnotes/api-gateway@1.49.7
 - @standardnotes/auth-server@1.93.9
 - @standardnotes/domain-events-infra@1.9.73
 - @standardnotes/event-store@1.7.6
 - @standardnotes/files-server@1.10.8
 - @standardnotes/revisions-server@1.12.10
 - @standardnotes/scheduler-server@1.17.8
 - @standardnotes/syncing-server@1.32.3
 - @standardnotes/websockets-server@1.6.9
2023-03-10 12:44:00 +00:00
Karol Sójko
7b486348ef chore: upgrade newrelic 2023-03-10 13:30:29 +01:00
standardci
25f752d6b5 chore(release): publish new version
- @standardnotes/auth-server@1.93.8
2023-03-10 08:11:17 +00:00
Karol Sójko
74e35a2d65 Revert "fix(auth): change supported algorithms on authenticator registration options"
This reverts commit 7db9ba03f3.
2023-03-10 08:56:56 +01:00
standardci
3532289575 chore(release): publish new version
- @standardnotes/auth-server@1.93.7
2023-03-10 06:21:38 +00:00
Karol Sójko
7db9ba03f3 fix(auth): change supported algorithms on authenticator registration options 2023-03-10 07:07:48 +01:00
112 changed files with 1799 additions and 689 deletions

View File

@@ -7,7 +7,6 @@ DB_PORT=3306
DB_USERNAME=std_notes_user
DB_PASSWORD=changeme123
DB_DATABASE=standard_notes_db
DB_DEBUG_LEVEL=all
#########
# CACHE #
@@ -15,3 +14,11 @@ DB_DEBUG_LEVEL=all
REDIS_PORT=6379
REDIS_HOST=cache
########
# KEYS #
########
AUTH_JWT_SECRET=
AUTH_SERVER_ENCRYPTION_SERVER_KEY=
VALET_TOKEN_SECRET=

5
.github/ci.env vendored
View File

@@ -3,6 +3,7 @@ DB_HOST=db
DB_USERNAME=std_notes_user
DB_PASSWORD=changeme123
DB_DATABASE=standard_notes_db
DB_PORT=3306
REDIS_PORT=6379
REDIS_HOST=cache
AUTH_SERVER_ACCESS_TOKEN_AGE=4
@@ -19,3 +20,7 @@ MYSQL_DATABASE=standard_notes_db
MYSQL_USER=std_notes_user
MYSQL_PASSWORD=changeme123
MYSQL_ROOT_PASSWORD=changeme123
AUTH_JWT_SECRET=f95259c5e441f5a4646d76422cfb3df4c4488842901aa50b6c51b8be2e0040e9
AUTH_SERVER_ENCRYPTION_SERVER_KEY=1087415dfde3093797f9a7ca93a49e7d7aa1861735eb0d32aae9c303b8c3d060
VALET_TOKEN_SECRET=4b886819ebe1e908077c6cae96311b48a8416bd60cc91c03060e15bdf6b30d1f

View File

@@ -50,6 +50,6 @@ jobs:
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
with:
task-definition: ${{ steps.task-def-prod.outputs.task-definition }}
service: ${{ inputs.service_name }}-prod
service: ${{ inputs.service_name }}
cluster: prod
wait-for-service-stability: true

200
.pnp.cjs generated
View File

@@ -123,13 +123,13 @@ const RAW_RUNTIME_STATE =
["@lerna-lite/run", "npm:1.6.0"],\
["@sentry/node", "npm:7.28.1"],\
["@types/jest", "npm:29.1.1"],\
["@types/newrelic", "npm:9.4.0"],\
["@types/newrelic", "npm:9.13.0"],\
["@types/node", "npm:18.11.9"],\
["@typescript-eslint/parser", "virtual:8859b278716fedf3e7458b5628625f7e35678c418626878559a0b816445001b7e24c55546f4677ba4c20b521aa0cf52cc33ac07deff171e383ada6eeab69933f#npm:5.40.1"],\
["eslint", "npm:8.32.0"],\
["eslint-config-prettier", "virtual:8859b278716fedf3e7458b5628625f7e35678c418626878559a0b816445001b7e24c55546f4677ba4c20b521aa0cf52cc33ac07deff171e383ada6eeab69933f#npm:8.6.0"],\
["ini", "npm:3.0.0"],\
["newrelic", "npm:9.8.0"],\
["newrelic", "npm:10.0.0"],\
["npm-check-updates", "npm:16.0.1"],\
["prettier", "npm:2.7.1"],\
["ts-node", "virtual:8859b278716fedf3e7458b5628625f7e35678c418626878559a0b816445001b7e24c55546f4677ba4c20b521aa0cf52cc33ac07deff171e383ada6eeab69933f#npm:10.9.1"],\
@@ -2594,10 +2594,10 @@ const RAW_RUNTIME_STATE =
}]\
]],\
["@grpc/grpc-js", [\
["npm:1.8.4", {\
"packageLocation": "./.yarn/cache/@grpc-grpc-js-npm-1.8.4-287c8bdac8-6367a2ee38.zip/node_modules/@grpc/grpc-js/",\
["npm:1.8.13", {\
"packageLocation": "./.yarn/cache/@grpc-grpc-js-npm-1.8.13-59d4d0dc89-04d24ca840.zip/node_modules/@grpc/grpc-js/",\
"packageDependencies": [\
["@grpc/grpc-js", "npm:1.8.4"],\
["@grpc/grpc-js", "npm:1.8.13"],\
["@grpc/proto-loader", "npm:0.7.4"],\
["@types/node", "npm:18.0.3"]\
],\
@@ -2616,6 +2616,18 @@ const RAW_RUNTIME_STATE =
["yargs", "npm:16.2.0"]\
],\
"linkType": "HARD"\
}],\
["npm:0.7.5", {\
"packageLocation": "./.yarn/cache/@grpc-proto-loader-npm-0.7.5-53f472433f-e6461534eb.zip/node_modules/@grpc/proto-loader/",\
"packageDependencies": [\
["@grpc/proto-loader", "npm:0.7.5"],\
["@types/long", "npm:4.0.2"],\
["lodash.camelcase", "npm:4.3.0"],\
["long", "npm:4.0.0"],\
["protobufjs", "npm:7.1.2"],\
["yargs", "npm:16.2.0"]\
],\
"linkType": "HARD"\
}]\
]],\
["@hexagon/base64", [\
@@ -3265,19 +3277,19 @@ const RAW_RUNTIME_STATE =
}]\
]],\
["@newrelic/aws-sdk", [\
["npm:5.0.0", {\
"packageLocation": "./.yarn/cache/@newrelic-aws-sdk-npm-5.0.0-7d9d10d58f-ed1dc3fa16.zip/node_modules/@newrelic/aws-sdk/",\
["npm:5.0.2", {\
"packageLocation": "./.yarn/cache/@newrelic-aws-sdk-npm-5.0.2-96d8663350-d99b851c78.zip/node_modules/@newrelic/aws-sdk/",\
"packageDependencies": [\
["@newrelic/aws-sdk", "npm:5.0.0"]\
["@newrelic/aws-sdk", "npm:5.0.2"]\
],\
"linkType": "SOFT"\
}],\
["virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:5.0.0", {\
"packageLocation": "./.yarn/__virtual__/@newrelic-aws-sdk-virtual-b32c5d232e/0/cache/@newrelic-aws-sdk-npm-5.0.0-7d9d10d58f-ed1dc3fa16.zip/node_modules/@newrelic/aws-sdk/",\
["virtual:2e94dc408d78a7f546b419c58b70581fdb1401ee1979fe214195b4cfca74499df9c9aa918c3214331583e314b7e767fec897581d1a684dcab7cc3bba5897fc45#npm:5.0.2", {\
"packageLocation": "./.yarn/__virtual__/@newrelic-aws-sdk-virtual-32f8e7f038/0/cache/@newrelic-aws-sdk-npm-5.0.2-96d8663350-d99b851c78.zip/node_modules/@newrelic/aws-sdk/",\
"packageDependencies": [\
["@newrelic/aws-sdk", "virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:5.0.0"],\
["@newrelic/aws-sdk", "virtual:2e94dc408d78a7f546b419c58b70581fdb1401ee1979fe214195b4cfca74499df9c9aa918c3214331583e314b7e767fec897581d1a684dcab7cc3bba5897fc45#npm:5.0.2"],\
["@types/newrelic", null],\
["newrelic", "npm:9.8.0"]\
["newrelic", "npm:10.0.0"]\
],\
"packagePeers": [\
"@types/newrelic",\
@@ -3287,19 +3299,19 @@ const RAW_RUNTIME_STATE =
}]\
]],\
["@newrelic/koa", [\
["npm:7.0.0", {\
"packageLocation": "./.yarn/cache/@newrelic-koa-npm-7.0.0-903c251b9f-0fc2298c8b.zip/node_modules/@newrelic/koa/",\
["npm:7.1.1", {\
"packageLocation": "./.yarn/cache/@newrelic-koa-npm-7.1.1-363bc0d9f3-b4fd860e8b.zip/node_modules/@newrelic/koa/",\
"packageDependencies": [\
["@newrelic/koa", "npm:7.0.0"]\
["@newrelic/koa", "npm:7.1.1"]\
],\
"linkType": "SOFT"\
}],\
["virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:7.0.0", {\
"packageLocation": "./.yarn/__virtual__/@newrelic-koa-virtual-cc6a41398f/0/cache/@newrelic-koa-npm-7.0.0-903c251b9f-0fc2298c8b.zip/node_modules/@newrelic/koa/",\
["virtual:2e94dc408d78a7f546b419c58b70581fdb1401ee1979fe214195b4cfca74499df9c9aa918c3214331583e314b7e767fec897581d1a684dcab7cc3bba5897fc45#npm:7.1.1", {\
"packageLocation": "./.yarn/__virtual__/@newrelic-koa-virtual-d5ac9cc242/0/cache/@newrelic-koa-npm-7.1.1-363bc0d9f3-b4fd860e8b.zip/node_modules/@newrelic/koa/",\
"packageDependencies": [\
["@newrelic/koa", "virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:7.0.0"],\
["@newrelic/koa", "virtual:2e94dc408d78a7f546b419c58b70581fdb1401ee1979fe214195b4cfca74499df9c9aa918c3214331583e314b7e767fec897581d1a684dcab7cc3bba5897fc45#npm:7.1.1"],\
["@types/newrelic", null],\
["newrelic", "npm:9.8.0"]\
["newrelic", "npm:10.0.0"]\
],\
"packagePeers": [\
"@types/newrelic",\
@@ -3329,12 +3341,12 @@ const RAW_RUNTIME_STATE =
],\
"linkType": "SOFT"\
}],\
["virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:6.0.0", {\
"packageLocation": "./.yarn/__virtual__/@newrelic-superagent-virtual-dc0653ca20/0/cache/@newrelic-superagent-npm-6.0.0-db8b77d0f3-b77997b792.zip/node_modules/@newrelic/superagent/",\
["virtual:2e94dc408d78a7f546b419c58b70581fdb1401ee1979fe214195b4cfca74499df9c9aa918c3214331583e314b7e767fec897581d1a684dcab7cc3bba5897fc45#npm:6.0.0", {\
"packageLocation": "./.yarn/__virtual__/@newrelic-superagent-virtual-0d8a0615e8/0/cache/@newrelic-superagent-npm-6.0.0-db8b77d0f3-b77997b792.zip/node_modules/@newrelic/superagent/",\
"packageDependencies": [\
["@newrelic/superagent", "virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:6.0.0"],\
["@newrelic/superagent", "virtual:2e94dc408d78a7f546b419c58b70581fdb1401ee1979fe214195b4cfca74499df9c9aa918c3214331583e314b7e767fec897581d1a684dcab7cc3bba5897fc45#npm:6.0.0"],\
["@types/newrelic", null],\
["newrelic", "npm:9.8.0"]\
["newrelic", "npm:10.0.0"]\
],\
"packagePeers": [\
"@types/newrelic",\
@@ -3344,19 +3356,19 @@ const RAW_RUNTIME_STATE =
}]\
]],\
["@newrelic/winston-enricher", [\
["npm:4.0.0", {\
"packageLocation": "./.yarn/cache/@newrelic-winston-enricher-npm-4.0.0-ebaf2d0d28-3fc901cded.zip/node_modules/@newrelic/winston-enricher/",\
["npm:4.0.1", {\
"packageLocation": "./.yarn/cache/@newrelic-winston-enricher-npm-4.0.1-ef1230a3ce-e45880f6ec.zip/node_modules/@newrelic/winston-enricher/",\
"packageDependencies": [\
["@newrelic/winston-enricher", "npm:4.0.0"]\
["@newrelic/winston-enricher", "npm:4.0.1"]\
],\
"linkType": "SOFT"\
}],\
["virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.0", {\
"packageLocation": "./.yarn/__virtual__/@newrelic-winston-enricher-virtual-6b8c53ab3d/0/cache/@newrelic-winston-enricher-npm-4.0.0-ebaf2d0d28-3fc901cded.zip/node_modules/@newrelic/winston-enricher/",\
["virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.1", {\
"packageLocation": "./.yarn/__virtual__/@newrelic-winston-enricher-virtual-c32d28b076/0/cache/@newrelic-winston-enricher-npm-4.0.1-ef1230a3ce-e45880f6ec.zip/node_modules/@newrelic/winston-enricher/",\
"packageDependencies": [\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.0"],\
["@types/newrelic", "npm:9.4.0"],\
["newrelic", "npm:9.8.0"]\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.1"],\
["@types/newrelic", "npm:9.13.0"],\
["newrelic", "npm:10.0.0"]\
],\
"packagePeers": [\
"@types/newrelic",\
@@ -4050,7 +4062,7 @@ const RAW_RUNTIME_STATE =
["@standardnotes/analytics", "workspace:packages/analytics"],\
["@aws-sdk/client-sns", "npm:3.259.0"],\
["@aws-sdk/client-sqs", "npm:3.259.0"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.0"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.1"],\
["@sentry/node", "npm:7.28.1"],\
["@standardnotes/common", "workspace:packages/common"],\
["@standardnotes/domain-core", "workspace:packages/domain-core"],\
@@ -4060,7 +4072,7 @@ const RAW_RUNTIME_STATE =
["@types/ioredis", "npm:5.0.0"],\
["@types/jest", "npm:29.1.1"],\
["@types/mixpanel", "npm:2.14.4"],\
["@types/newrelic", "npm:9.4.0"],\
["@types/newrelic", "npm:9.13.0"],\
["@types/node", "npm:18.11.9"],\
["@typescript-eslint/eslint-plugin", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:5.48.2"],\
["dayjs", "npm:1.11.6"],\
@@ -4072,7 +4084,7 @@ const RAW_RUNTIME_STATE =
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.2"],\
["mixpanel", "npm:0.17.0"],\
["mysql2", "npm:3.0.1"],\
["newrelic", "npm:9.8.0"],\
["newrelic", "npm:10.0.0"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.0.3"],\
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.10"],\
@@ -4104,7 +4116,7 @@ const RAW_RUNTIME_STATE =
"packageLocation": "./packages/api-gateway/",\
"packageDependencies": [\
["@standardnotes/api-gateway", "workspace:packages/api-gateway"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.0"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.1"],\
["@sentry/node", "npm:7.28.1"],\
["@standardnotes/domain-core", "workspace:packages/domain-core"],\
["@standardnotes/domain-events", "workspace:packages/domain-events"],\
@@ -4116,7 +4128,7 @@ const RAW_RUNTIME_STATE =
["@types/ioredis", "npm:5.0.0"],\
["@types/jest", "npm:29.1.1"],\
["@types/jsonwebtoken", "npm:9.0.1"],\
["@types/newrelic", "npm:9.4.0"],\
["@types/newrelic", "npm:9.13.0"],\
["@types/prettyjson", "npm:0.0.30"],\
["@typescript-eslint/eslint-plugin", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:5.48.2"],\
["axios", "npm:1.1.3"],\
@@ -4132,7 +4144,7 @@ const RAW_RUNTIME_STATE =
["ioredis", "npm:5.2.4"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.2"],\
["jsonwebtoken", "npm:9.0.0"],\
["newrelic", "npm:9.8.0"],\
["newrelic", "npm:10.0.0"],\
["nodemon", "npm:2.0.20"],\
["npm-check-updates", "npm:16.0.1"],\
["prettyjson", "npm:1.2.5"],\
@@ -4153,7 +4165,7 @@ const RAW_RUNTIME_STATE =
["@aws-sdk/client-sqs", "npm:3.259.0"],\
["@cbor-extract/cbor-extract-linux-arm64", "npm:2.1.1"],\
["@cbor-extract/cbor-extract-linux-x64", "npm:2.1.1"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.0"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.1"],\
["@sentry/node", "npm:7.28.1"],\
["@sentry/tracing", "npm:7.28.1"],\
["@simplewebauthn/server", "npm:7.0.1"],\
@@ -4163,7 +4175,7 @@ const RAW_RUNTIME_STATE =
["@standardnotes/domain-core", "workspace:packages/domain-core"],\
["@standardnotes/domain-events", "workspace:packages/domain-events"],\
["@standardnotes/domain-events-infra", "workspace:packages/domain-events-infra"],\
["@standardnotes/features", "npm:1.58.9"],\
["@standardnotes/features", "npm:1.58.12"],\
["@standardnotes/predicates", "workspace:packages/predicates"],\
["@standardnotes/responses", "npm:1.13.9"],\
["@standardnotes/security", "workspace:packages/security"],\
@@ -4176,7 +4188,7 @@ const RAW_RUNTIME_STATE =
["@types/express", "npm:4.17.14"],\
["@types/ioredis", "npm:5.0.0"],\
["@types/jest", "npm:29.1.1"],\
["@types/newrelic", "npm:9.4.0"],\
["@types/newrelic", "npm:9.13.0"],\
["@types/otplib", "npm:10.0.0"],\
["@types/prettyjson", "npm:0.0.30"],\
["@types/ua-parser-js", "npm:0.7.36"],\
@@ -4195,7 +4207,7 @@ const RAW_RUNTIME_STATE =
["ioredis", "npm:5.2.4"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.2"],\
["mysql2", "npm:3.0.1"],\
["newrelic", "npm:9.8.0"],\
["newrelic", "npm:10.0.0"],\
["nodemon", "npm:2.0.20"],\
["npm-check-updates", "npm:16.0.1"],\
["otplib", "npm:12.0.1"],\
@@ -4286,12 +4298,12 @@ const RAW_RUNTIME_STATE =
["@standardnotes/domain-events", "workspace:packages/domain-events"],\
["@types/ioredis", "npm:5.0.0"],\
["@types/jest", "npm:29.1.1"],\
["@types/newrelic", "npm:9.4.0"],\
["@types/newrelic", "npm:9.13.0"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.48.2"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["ioredis", "npm:5.2.4"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.2"],\
["newrelic", "npm:9.8.0"],\
["newrelic", "npm:10.0.0"],\
["reflect-metadata", "npm:0.1.13"],\
["sqs-consumer", "virtual:685a6222c3349423674bb7f0684ba34e2ab20912010f352e04dcf707a156e13183fc382e2417cb37a60f3e7b52fd0178c53181674890e1773eb83e190dc13378#npm:6.2.1"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.0.3"],\
@@ -4327,7 +4339,7 @@ const RAW_RUNTIME_STATE =
["@standardnotes/time", "workspace:packages/time"],\
["@types/ioredis", "npm:5.0.0"],\
["@types/jest", "npm:29.1.1"],\
["@types/newrelic", "npm:9.4.0"],\
["@types/newrelic", "npm:9.13.0"],\
["@types/nodemailer", "npm:6.4.6"],\
["@typescript-eslint/eslint-plugin", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:5.48.2"],\
["dotenv", "npm:16.0.1"],\
@@ -4337,7 +4349,7 @@ const RAW_RUNTIME_STATE =
["ioredis", "npm:5.2.4"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.2"],\
["mysql2", "npm:3.0.1"],\
["newrelic", "npm:9.8.0"],\
["newrelic", "npm:10.0.0"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.0.3"],\
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.10"],\
@@ -4348,10 +4360,10 @@ const RAW_RUNTIME_STATE =
}]\
]],\
["@standardnotes/features", [\
["npm:1.58.8", {\
"packageLocation": "./.yarn/cache/@standardnotes-features-npm-1.58.8-d97ff2aae1-77bac7d0a0.zip/node_modules/@standardnotes/features/",\
["npm:1.58.12", {\
"packageLocation": "./.yarn/cache/@standardnotes-features-npm-1.58.12-9778b78276-3fcd9a9488.zip/node_modules/@standardnotes/features/",\
"packageDependencies": [\
["@standardnotes/features", "npm:1.58.8"],\
["@standardnotes/features", "npm:1.58.12"],\
["@standardnotes/common", "workspace:packages/common"],\
["@standardnotes/domain-core", "workspace:packages/domain-core"],\
["@standardnotes/security", "workspace:packages/security"],\
@@ -4359,10 +4371,10 @@ const RAW_RUNTIME_STATE =
],\
"linkType": "HARD"\
}],\
["npm:1.58.9", {\
"packageLocation": "./.yarn/cache/@standardnotes-features-npm-1.58.9-c278f712cd-218350ee55.zip/node_modules/@standardnotes/features/",\
["npm:1.58.8", {\
"packageLocation": "./.yarn/cache/@standardnotes-features-npm-1.58.8-d97ff2aae1-77bac7d0a0.zip/node_modules/@standardnotes/features/",\
"packageDependencies": [\
["@standardnotes/features", "npm:1.58.9"],\
["@standardnotes/features", "npm:1.58.8"],\
["@standardnotes/common", "workspace:packages/common"],\
["@standardnotes/domain-core", "workspace:packages/domain-core"],\
["@standardnotes/security", "workspace:packages/security"],\
@@ -4394,7 +4406,7 @@ const RAW_RUNTIME_STATE =
["@types/ioredis", "npm:5.0.0"],\
["@types/jest", "npm:29.1.1"],\
["@types/jsonwebtoken", "npm:9.0.1"],\
["@types/newrelic", "npm:9.4.0"],\
["@types/newrelic", "npm:9.13.0"],\
["@types/prettyjson", "npm:0.0.30"],\
["@types/uuid", "npm:8.3.4"],\
["@typescript-eslint/eslint-plugin", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:5.48.2"],\
@@ -4413,7 +4425,7 @@ const RAW_RUNTIME_STATE =
["ioredis", "npm:5.2.4"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.2"],\
["jsonwebtoken", "npm:9.0.0"],\
["newrelic", "npm:9.8.0"],\
["newrelic", "npm:10.0.0"],\
["nodemon", "npm:2.0.20"],\
["npm-check-updates", "npm:16.0.1"],\
["prettyjson", "npm:1.2.5"],\
@@ -4476,7 +4488,7 @@ const RAW_RUNTIME_STATE =
["@standardnotes/revisions-server", "workspace:packages/revisions"],\
["@aws-sdk/client-s3", "npm:3.259.0"],\
["@aws-sdk/client-sqs", "npm:3.259.0"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.0"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.1"],\
["@sentry/node", "npm:7.28.1"],\
["@standardnotes/api", "npm:1.25.3"],\
["@standardnotes/common", "workspace:packages/common"],\
@@ -4491,7 +4503,7 @@ const RAW_RUNTIME_STATE =
["@types/express", "npm:4.17.14"],\
["@types/inversify-express-utils", "npm:2.0.0"],\
["@types/jest", "npm:29.1.1"],\
["@types/newrelic", "npm:9.4.0"],\
["@types/newrelic", "npm:9.13.0"],\
["@typescript-eslint/eslint-plugin", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:5.48.2"],\
["cors", "npm:2.8.5"],\
["dotenv", "npm:16.0.1"],\
@@ -4502,7 +4514,7 @@ const RAW_RUNTIME_STATE =
["inversify-express-utils", "npm:6.4.3"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.2"],\
["mysql2", "npm:3.0.1"],\
["newrelic", "npm:9.8.0"],\
["newrelic", "npm:10.0.0"],\
["npm-check-updates", "npm:16.0.1"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.0.3"],\
@@ -4520,7 +4532,7 @@ const RAW_RUNTIME_STATE =
["@standardnotes/scheduler-server", "workspace:packages/scheduler"],\
["@aws-sdk/client-sns", "npm:3.259.0"],\
["@aws-sdk/client-sqs", "npm:3.259.0"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.0"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.1"],\
["@sentry/node", "npm:7.28.1"],\
["@standardnotes/domain-core", "workspace:packages/domain-core"],\
["@standardnotes/domain-events", "workspace:packages/domain-events"],\
@@ -4529,7 +4541,7 @@ const RAW_RUNTIME_STATE =
["@standardnotes/time", "workspace:packages/time"],\
["@types/ioredis", "npm:5.0.0"],\
["@types/jest", "npm:29.1.1"],\
["@types/newrelic", "npm:9.4.0"],\
["@types/newrelic", "npm:9.13.0"],\
["@types/node", "npm:18.11.9"],\
["@typescript-eslint/eslint-plugin", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:5.48.2"],\
["dayjs", "npm:1.11.6"],\
@@ -4540,7 +4552,7 @@ const RAW_RUNTIME_STATE =
["ioredis", "npm:5.2.4"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.2"],\
["mysql2", "npm:3.0.1"],\
["newrelic", "npm:9.8.0"],\
["newrelic", "npm:10.0.0"],\
["npm-check-updates", "npm:16.0.1"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.0.3"],\
@@ -4581,13 +4593,13 @@ const RAW_RUNTIME_STATE =
["@lerna-lite/run", "npm:1.6.0"],\
["@sentry/node", "npm:7.28.1"],\
["@types/jest", "npm:29.1.1"],\
["@types/newrelic", "npm:9.4.0"],\
["@types/newrelic", "npm:9.13.0"],\
["@types/node", "npm:18.11.9"],\
["@typescript-eslint/parser", "virtual:8859b278716fedf3e7458b5628625f7e35678c418626878559a0b816445001b7e24c55546f4677ba4c20b521aa0cf52cc33ac07deff171e383ada6eeab69933f#npm:5.40.1"],\
["eslint", "npm:8.32.0"],\
["eslint-config-prettier", "virtual:8859b278716fedf3e7458b5628625f7e35678c418626878559a0b816445001b7e24c55546f4677ba4c20b521aa0cf52cc33ac07deff171e383ada6eeab69933f#npm:8.6.0"],\
["ini", "npm:3.0.0"],\
["newrelic", "npm:9.8.0"],\
["newrelic", "npm:10.0.0"],\
["npm-check-updates", "npm:16.0.1"],\
["prettier", "npm:2.7.1"],\
["ts-node", "virtual:8859b278716fedf3e7458b5628625f7e35678c418626878559a0b816445001b7e24c55546f4677ba4c20b521aa0cf52cc33ac07deff171e383ada6eeab69933f#npm:10.9.1"],\
@@ -4656,7 +4668,7 @@ const RAW_RUNTIME_STATE =
["@aws-sdk/client-s3", "npm:3.259.0"],\
["@aws-sdk/client-sns", "npm:3.259.0"],\
["@aws-sdk/client-sqs", "npm:3.259.0"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.0"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.1"],\
["@sentry/node", "npm:7.28.1"],\
["@sentry/tracing", "npm:7.28.1"],\
["@standardnotes/api", "npm:1.25.3"],\
@@ -4674,7 +4686,7 @@ const RAW_RUNTIME_STATE =
["@types/inversify-express-utils", "npm:2.0.0"],\
["@types/jest", "npm:29.1.1"],\
["@types/jsonwebtoken", "npm:9.0.1"],\
["@types/newrelic", "npm:9.4.0"],\
["@types/newrelic", "npm:9.13.0"],\
["@types/prettyjson", "npm:0.0.30"],\
["@types/ua-parser-js", "npm:0.7.36"],\
["@types/uuid", "npm:8.3.4"],\
@@ -4691,7 +4703,7 @@ const RAW_RUNTIME_STATE =
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.2"],\
["jsonwebtoken", "npm:9.0.0"],\
["mysql2", "npm:3.0.1"],\
["newrelic", "npm:9.8.0"],\
["newrelic", "npm:10.0.0"],\
["nodemon", "npm:2.0.20"],\
["npm-check-updates", "npm:16.0.1"],\
["prettyjson", "npm:1.2.5"],\
@@ -4755,7 +4767,7 @@ const RAW_RUNTIME_STATE =
"packageDependencies": [\
["@standardnotes/websockets-server", "workspace:packages/websockets"],\
["@aws-sdk/client-sqs", "npm:3.259.0"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.0"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.1"],\
["@sentry/node", "npm:7.28.1"],\
["@standardnotes/api", "npm:1.25.3"],\
["@standardnotes/common", "workspace:packages/common"],\
@@ -4769,7 +4781,7 @@ const RAW_RUNTIME_STATE =
["@types/express", "npm:4.17.14"],\
["@types/ioredis", "npm:5.0.0"],\
["@types/jest", "npm:29.1.1"],\
["@types/newrelic", "npm:9.4.0"],\
["@types/newrelic", "npm:9.13.0"],\
["@typescript-eslint/eslint-plugin", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:5.48.2"],\
["axios", "npm:1.1.3"],\
["cors", "npm:2.8.5"],\
@@ -4782,7 +4794,7 @@ const RAW_RUNTIME_STATE =
["ioredis", "npm:5.2.4"],\
["jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.1.2"],\
["mysql2", "npm:3.0.1"],\
["newrelic", "npm:9.8.0"],\
["newrelic", "npm:10.0.0"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.0.3"],\
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.10"],\
@@ -5173,10 +5185,10 @@ const RAW_RUNTIME_STATE =
}]\
]],\
["@types/newrelic", [\
["npm:9.4.0", {\
"packageLocation": "./.yarn/cache/@types-newrelic-npm-9.4.0-72a77bd5e6-adb12973e8.zip/node_modules/@types/newrelic/",\
["npm:9.13.0", {\
"packageLocation": "./.yarn/cache/@types-newrelic-npm-9.13.0-a283f22b65-d0269b05c4.zip/node_modules/@types/newrelic/",\
"packageDependencies": [\
["@types/newrelic", "npm:9.4.0"]\
["@types/newrelic", "npm:9.13.0"]\
],\
"linkType": "HARD"\
}]\
@@ -6376,6 +6388,15 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["bignumber.js", [\
["npm:9.1.1", {\
"packageLocation": "./.yarn/cache/bignumber.js-npm-9.1.1-5929e8d8dc-e44d008049.zip/node_modules/bignumber.js/",\
"packageDependencies": [\
["bignumber.js", "npm:9.1.1"]\
],\
"linkType": "HARD"\
}]\
]],\
["binary-extensions", [\
["npm:2.2.0", {\
"packageLocation": "./.yarn/cache/binary-extensions-npm-2.2.0-180c33fec7-16cf7c0cfd.zip/node_modules/binary-extensions/",\
@@ -10498,6 +10519,16 @@ const RAW_RUNTIME_STATE =
"linkType": "HARD"\
}]\
]],\
["json-bigint", [\
["npm:1.0.0", {\
"packageLocation": "./.yarn/cache/json-bigint-npm-1.0.0-8e35bcb143-6e40674d13.zip/node_modules/json-bigint/",\
"packageDependencies": [\
["json-bigint", "npm:1.0.0"],\
["bignumber.js", "npm:9.1.1"]\
],\
"linkType": "HARD"\
}]\
]],\
["json-buffer", [\
["npm:3.0.1", {\
"packageLocation": "./.yarn/cache/json-buffer-npm-3.0.1-f8f6d20603-33bf05e079.zip/node_modules/json-buffer/",\
@@ -11471,22 +11502,23 @@ const RAW_RUNTIME_STATE =
}]\
]],\
["newrelic", [\
["npm:9.8.0", {\
"packageLocation": "./.yarn/cache/newrelic-npm-9.8.0-4c49b89cbc-ed3b893298.zip/node_modules/newrelic/",\
["npm:10.0.0", {\
"packageLocation": "./.yarn/cache/newrelic-npm-10.0.0-2e94dc408d-b5af478708.zip/node_modules/newrelic/",\
"packageDependencies": [\
["newrelic", "npm:9.8.0"],\
["newrelic", "npm:10.0.0"],\
["@contrast/fn-inspect", "npm:3.3.0"],\
["@grpc/grpc-js", "npm:1.8.4"],\
["@grpc/proto-loader", "npm:0.7.4"],\
["@newrelic/aws-sdk", "virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:5.0.0"],\
["@newrelic/koa", "virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:7.0.0"],\
["@grpc/grpc-js", "npm:1.8.13"],\
["@grpc/proto-loader", "npm:0.7.5"],\
["@newrelic/aws-sdk", "virtual:2e94dc408d78a7f546b419c58b70581fdb1401ee1979fe214195b4cfca74499df9c9aa918c3214331583e314b7e767fec897581d1a684dcab7cc3bba5897fc45#npm:5.0.2"],\
["@newrelic/koa", "virtual:2e94dc408d78a7f546b419c58b70581fdb1401ee1979fe214195b4cfca74499df9c9aa918c3214331583e314b7e767fec897581d1a684dcab7cc3bba5897fc45#npm:7.1.1"],\
["@newrelic/native-metrics", "npm:9.0.0"],\
["@newrelic/superagent", "virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:6.0.0"],\
["@newrelic/superagent", "virtual:2e94dc408d78a7f546b419c58b70581fdb1401ee1979fe214195b4cfca74499df9c9aa918c3214331583e314b7e767fec897581d1a684dcab7cc3bba5897fc45#npm:6.0.0"],\
["@tyriar/fibonacci-heap", "npm:2.0.9"],\
["concat-stream", "npm:2.0.0"],\
["https-proxy-agent", "npm:5.0.1"],\
["json-bigint", "npm:1.0.0"],\
["json-stringify-safe", "npm:5.0.1"],\
["readable-stream", "npm:3.6.0"],\
["readable-stream", "npm:3.6.2"],\
["semver", "npm:5.7.1"],\
["winston-transport", "npm:4.5.0"]\
],\
@@ -12834,6 +12866,16 @@ const RAW_RUNTIME_STATE =
["util-deprecate", "npm:1.0.2"]\
],\
"linkType": "HARD"\
}],\
["npm:3.6.2", {\
"packageLocation": "./.yarn/cache/readable-stream-npm-3.6.2-d2a6069158-b1cbe0fea6.zip/node_modules/readable-stream/",\
"packageDependencies": [\
["readable-stream", "npm:3.6.2"],\
["inherits", "npm:2.0.4"],\
["string_decoder", "npm:1.3.0"],\
["util-deprecate", "npm:1.0.2"]\
],\
"linkType": "HARD"\
}]\
]],\
["readdirp", [\

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

@@ -326,8 +326,8 @@ ifeq ($(strip $(foreach prefix,$(NO_LOAD),\
endif
quiet_cmd_regen_makefile = ACTION Regenerating $@
cmd_regen_makefile = cd $(srcdir); /Users/mo/Desktop/sn/dev/server/.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/gyp_main.py -fmake --ignore-environment "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/Users/mo/Library/Caches/node-gyp/18.13.0" "-Dnode_gyp_dir=/Users/mo/Desktop/sn/dev/server/.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp" "-Dnode_lib_file=/Users/mo/Library/Caches/node-gyp/18.13.0/<(target_arch)/node.lib" "-Dmodule_root_dir=/Users/mo/Desktop/sn/dev/server/.yarn/unplugged/@newrelic-native-metrics-npm-9.0.0-590d2e713a/node_modules/@newrelic/native-metrics" "-Dnode_engine=v8" "--depth=." "-Goutput_dir=." "--generator-output=build" -I/Users/mo/Desktop/sn/dev/server/.yarn/unplugged/@newrelic-native-metrics-npm-9.0.0-590d2e713a/node_modules/@newrelic/native-metrics/build/config.gypi -I/Users/mo/Desktop/sn/dev/server/.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/addon.gypi -I/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/common.gypi "--toplevel-dir=." binding.gyp
Makefile: $(srcdir)/../../../../node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/addon.gypi $(srcdir)/binding.gyp $(srcdir)/../../../../../../../../../../Library/Caches/node-gyp/18.13.0/include/node/common.gypi $(srcdir)/build/config.gypi
cmd_regen_makefile = cd $(srcdir); /Users/karolsojko/workspace/server/.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/gyp_main.py -fmake --ignore-environment "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/Users/karolsojko/Library/Caches/node-gyp/18.15.0" "-Dnode_gyp_dir=/Users/karolsojko/workspace/server/.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp" "-Dnode_lib_file=/Users/karolsojko/Library/Caches/node-gyp/18.15.0/<(target_arch)/node.lib" "-Dmodule_root_dir=/Users/karolsojko/workspace/server/.yarn/unplugged/@newrelic-native-metrics-npm-9.0.0-590d2e713a/node_modules/@newrelic/native-metrics" "-Dnode_engine=v8" "--depth=." "-Goutput_dir=." "--generator-output=build" -I/Users/karolsojko/workspace/server/.yarn/unplugged/@newrelic-native-metrics-npm-9.0.0-590d2e713a/node_modules/@newrelic/native-metrics/build/config.gypi -I/Users/karolsojko/workspace/server/.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/addon.gypi -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/common.gypi "--toplevel-dir=." binding.gyp
Makefile: $(srcdir)/../../../../node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/addon.gypi $(srcdir)/build/config.gypi $(srcdir)/../../../../../../../../Library/Caches/node-gyp/18.15.0/include/node/common.gypi $(srcdir)/binding.gyp
$(call do_cmd,regen_makefile)
# "all" is a concatenation of the "all" targets from all the included

View File

@@ -1,65 +1,65 @@
cmd_Release/obj.target/native_metrics/src/GCBinder.o := c++ -o Release/obj.target/native_metrics/src/GCBinder.o ../src/GCBinder.cpp '-DNODE_GYP_MODULE_NAME=native_metrics' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DNOMINMAX' '-DBUILDING_NODE_EXTENSION' -I/Users/mo/Library/Caches/node-gyp/18.13.0/include/node -I/Users/mo/Library/Caches/node-gyp/18.13.0/src -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/openssl/config -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/openssl/openssl/include -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/uv/include -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/zlib -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/v8/include -I../src -I../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan -O3 -gdwarf-2 -mmacosx-version-min=10.15 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=gnu++17 -stdlib=libc++ -fno-rtti -fno-exceptions -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/native_metrics/src/GCBinder.o.d.raw -c
cmd_Release/obj.target/native_metrics/src/GCBinder.o := c++ -o Release/obj.target/native_metrics/src/GCBinder.o ../src/GCBinder.cpp '-DNODE_GYP_MODULE_NAME=native_metrics' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DNOMINMAX' '-DBUILDING_NODE_EXTENSION' -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/src -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/openssl/config -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/openssl/openssl/include -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/uv/include -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/zlib -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/v8/include -I../src -I../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan -O3 -gdwarf-2 -mmacosx-version-min=10.15 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=gnu++17 -stdlib=libc++ -fno-rtti -fno-exceptions -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/native_metrics/src/GCBinder.o.d.raw -c
Release/obj.target/native_metrics/src/GCBinder.o: ../src/GCBinder.cpp \
../src/GCBinder.hpp \
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_version.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/errno.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/version.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/unix.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/threadpool.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/darwin.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/cppgc/common.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8config.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-array-buffer.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-local-handle.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-internal.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-version.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-object.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-maybe.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-persistent-handle.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-weak-callback-info.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-primitive.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-data.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-value.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-traced-handle.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-container.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-context.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-snapshot.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-date.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-debug.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-script.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-message.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-exception.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-extension.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-external.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-function.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-function-callback.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-template.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-memory-span.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-initialization.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-callbacks.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-isolate.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-embedder-heap.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-microtask.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-statistics.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-promise.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-unwinder.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-embedder-state-scope.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-platform.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-json.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-locker.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-microtask-queue.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-primitive-object.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-proxy.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-regexp.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-typed-array.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-value-serializer.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-wasm.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_buffer.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_object_wrap.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_version.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/errno.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/version.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/unix.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/threadpool.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/darwin.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/cppgc/common.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8config.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-array-buffer.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-local-handle.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-internal.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-version.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-object.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-maybe.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-persistent-handle.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-weak-callback-info.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-primitive.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-data.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-value.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-traced-handle.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-container.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-context.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-snapshot.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-date.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-debug.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-script.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-message.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-exception.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-extension.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-external.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-function.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-function-callback.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-template.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-memory-span.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-initialization.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-callbacks.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-isolate.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-embedder-heap.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-microtask.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-statistics.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-promise.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-unwinder.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-embedder-state-scope.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-platform.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-json.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-locker.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-microtask-queue.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-primitive-object.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-proxy.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-regexp.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-typed-array.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-value-serializer.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-wasm.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_buffer.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_object_wrap.h \
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_callbacks.h \
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_callbacks_12_inl.h \
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_maybe_43_inl.h \
@@ -78,64 +78,64 @@ Release/obj.target/native_metrics/src/GCBinder.o: ../src/GCBinder.cpp \
../src/GCBinder.cpp:
../src/GCBinder.hpp:
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_version.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/errno.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/version.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/unix.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/threadpool.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/darwin.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/cppgc/common.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8config.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-array-buffer.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-local-handle.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-internal.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-version.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-object.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-maybe.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-persistent-handle.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-weak-callback-info.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-primitive.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-data.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-value.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-traced-handle.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-container.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-context.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-snapshot.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-date.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-debug.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-script.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-message.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-exception.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-extension.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-external.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-function.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-function-callback.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-template.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-memory-span.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-initialization.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-callbacks.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-isolate.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-embedder-heap.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-microtask.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-statistics.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-promise.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-unwinder.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-embedder-state-scope.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-platform.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-json.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-locker.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-microtask-queue.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-primitive-object.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-proxy.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-regexp.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-typed-array.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-value-serializer.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-wasm.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_buffer.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_object_wrap.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_version.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/errno.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/version.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/unix.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/threadpool.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/darwin.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/cppgc/common.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8config.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-array-buffer.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-local-handle.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-internal.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-version.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-object.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-maybe.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-persistent-handle.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-weak-callback-info.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-primitive.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-data.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-value.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-traced-handle.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-container.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-context.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-snapshot.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-date.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-debug.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-script.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-message.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-exception.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-extension.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-external.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-function.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-function-callback.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-template.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-memory-span.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-initialization.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-callbacks.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-isolate.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-embedder-heap.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-microtask.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-statistics.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-promise.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-unwinder.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-embedder-state-scope.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-platform.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-json.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-locker.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-microtask-queue.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-primitive-object.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-proxy.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-regexp.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-typed-array.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-value-serializer.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-wasm.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_buffer.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_object_wrap.h:
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_callbacks.h:
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_callbacks_12_inl.h:
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_maybe_43_inl.h:

View File

@@ -1,66 +1,66 @@
cmd_Release/obj.target/native_metrics/src/LoopChecker.o := c++ -o Release/obj.target/native_metrics/src/LoopChecker.o ../src/LoopChecker.cpp '-DNODE_GYP_MODULE_NAME=native_metrics' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DNOMINMAX' '-DBUILDING_NODE_EXTENSION' -I/Users/mo/Library/Caches/node-gyp/18.13.0/include/node -I/Users/mo/Library/Caches/node-gyp/18.13.0/src -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/openssl/config -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/openssl/openssl/include -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/uv/include -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/zlib -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/v8/include -I../src -I../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan -O3 -gdwarf-2 -mmacosx-version-min=10.15 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=gnu++17 -stdlib=libc++ -fno-rtti -fno-exceptions -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/native_metrics/src/LoopChecker.o.d.raw -c
cmd_Release/obj.target/native_metrics/src/LoopChecker.o := c++ -o Release/obj.target/native_metrics/src/LoopChecker.o ../src/LoopChecker.cpp '-DNODE_GYP_MODULE_NAME=native_metrics' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DNOMINMAX' '-DBUILDING_NODE_EXTENSION' -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/src -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/openssl/config -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/openssl/openssl/include -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/uv/include -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/zlib -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/v8/include -I../src -I../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan -O3 -gdwarf-2 -mmacosx-version-min=10.15 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=gnu++17 -stdlib=libc++ -fno-rtti -fno-exceptions -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/native_metrics/src/LoopChecker.o.d.raw -c
Release/obj.target/native_metrics/src/LoopChecker.o: \
../src/LoopChecker.cpp \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/errno.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/version.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/unix.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/threadpool.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/darwin.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/errno.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/version.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/unix.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/threadpool.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/darwin.h \
../src/LoopChecker.hpp \
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_version.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/cppgc/common.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8config.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-array-buffer.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-local-handle.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-internal.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-version.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-object.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-maybe.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-persistent-handle.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-weak-callback-info.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-primitive.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-data.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-value.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-traced-handle.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-container.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-context.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-snapshot.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-date.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-debug.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-script.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-message.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-exception.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-extension.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-external.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-function.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-function-callback.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-template.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-memory-span.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-initialization.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-callbacks.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-isolate.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-embedder-heap.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-microtask.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-statistics.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-promise.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-unwinder.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-embedder-state-scope.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-platform.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-json.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-locker.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-microtask-queue.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-primitive-object.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-proxy.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-regexp.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-typed-array.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-value-serializer.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-wasm.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_buffer.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_object_wrap.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_version.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/cppgc/common.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8config.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-array-buffer.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-local-handle.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-internal.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-version.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-object.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-maybe.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-persistent-handle.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-weak-callback-info.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-primitive.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-data.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-value.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-traced-handle.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-container.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-context.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-snapshot.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-date.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-debug.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-script.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-message.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-exception.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-extension.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-external.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-function.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-function-callback.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-template.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-memory-span.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-initialization.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-callbacks.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-isolate.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-embedder-heap.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-microtask.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-statistics.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-promise.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-unwinder.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-embedder-state-scope.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-platform.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-json.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-locker.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-microtask-queue.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-primitive-object.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-proxy.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-regexp.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-typed-array.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-value-serializer.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-wasm.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_buffer.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_object_wrap.h \
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_callbacks.h \
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_callbacks_12_inl.h \
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_maybe_43_inl.h \
@@ -77,66 +77,66 @@ Release/obj.target/native_metrics/src/LoopChecker.o: \
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_scriptorigin.h \
../src/Metric.hpp
../src/LoopChecker.cpp:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/errno.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/version.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/unix.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/threadpool.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/darwin.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/errno.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/version.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/unix.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/threadpool.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/darwin.h:
../src/LoopChecker.hpp:
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_version.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/cppgc/common.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8config.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-array-buffer.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-local-handle.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-internal.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-version.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-object.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-maybe.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-persistent-handle.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-weak-callback-info.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-primitive.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-data.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-value.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-traced-handle.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-container.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-context.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-snapshot.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-date.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-debug.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-script.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-message.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-exception.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-extension.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-external.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-function.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-function-callback.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-template.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-memory-span.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-initialization.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-callbacks.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-isolate.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-embedder-heap.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-microtask.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-statistics.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-promise.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-unwinder.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-embedder-state-scope.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-platform.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-json.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-locker.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-microtask-queue.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-primitive-object.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-proxy.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-regexp.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-typed-array.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-value-serializer.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-wasm.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_buffer.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_object_wrap.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_version.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/cppgc/common.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8config.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-array-buffer.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-local-handle.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-internal.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-version.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-object.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-maybe.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-persistent-handle.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-weak-callback-info.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-primitive.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-data.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-value.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-traced-handle.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-container.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-context.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-snapshot.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-date.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-debug.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-script.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-message.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-exception.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-extension.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-external.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-function.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-function-callback.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-template.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-memory-span.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-initialization.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-callbacks.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-isolate.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-embedder-heap.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-microtask.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-statistics.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-promise.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-unwinder.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-embedder-state-scope.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-platform.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-json.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-locker.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-microtask-queue.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-primitive-object.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-proxy.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-regexp.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-typed-array.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-value-serializer.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-wasm.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_buffer.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_object_wrap.h:
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_callbacks.h:
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_callbacks_12_inl.h:
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_maybe_43_inl.h:

View File

@@ -1,65 +1,65 @@
cmd_Release/obj.target/native_metrics/src/native_metrics.o := c++ -o Release/obj.target/native_metrics/src/native_metrics.o ../src/native_metrics.cpp '-DNODE_GYP_MODULE_NAME=native_metrics' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DNOMINMAX' '-DBUILDING_NODE_EXTENSION' -I/Users/mo/Library/Caches/node-gyp/18.13.0/include/node -I/Users/mo/Library/Caches/node-gyp/18.13.0/src -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/openssl/config -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/openssl/openssl/include -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/uv/include -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/zlib -I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/v8/include -I../src -I../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan -O3 -gdwarf-2 -mmacosx-version-min=10.15 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=gnu++17 -stdlib=libc++ -fno-rtti -fno-exceptions -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/native_metrics/src/native_metrics.o.d.raw -c
cmd_Release/obj.target/native_metrics/src/native_metrics.o := c++ -o Release/obj.target/native_metrics/src/native_metrics.o ../src/native_metrics.cpp '-DNODE_GYP_MODULE_NAME=native_metrics' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DNOMINMAX' '-DBUILDING_NODE_EXTENSION' -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/src -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/openssl/config -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/openssl/openssl/include -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/uv/include -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/zlib -I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/v8/include -I../src -I../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan -O3 -gdwarf-2 -mmacosx-version-min=10.15 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=gnu++17 -stdlib=libc++ -fno-rtti -fno-exceptions -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/native_metrics/src/native_metrics.o.d.raw -c
Release/obj.target/native_metrics/src/native_metrics.o: \
../src/native_metrics.cpp \
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_version.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/errno.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/version.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/unix.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/threadpool.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/darwin.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/cppgc/common.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8config.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-array-buffer.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-local-handle.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-internal.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-version.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-object.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-maybe.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-persistent-handle.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-weak-callback-info.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-primitive.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-data.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-value.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-traced-handle.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-container.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-context.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-snapshot.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-date.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-debug.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-script.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-message.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-exception.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-extension.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-external.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-function.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-function-callback.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-template.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-memory-span.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-initialization.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-callbacks.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-isolate.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-embedder-heap.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-microtask.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-statistics.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-promise.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-unwinder.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-embedder-state-scope.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-platform.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-json.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-locker.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-microtask-queue.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-primitive-object.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-proxy.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-regexp.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-typed-array.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-value-serializer.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-wasm.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_buffer.h \
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_object_wrap.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_version.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/errno.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/version.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/unix.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/threadpool.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/darwin.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/cppgc/common.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8config.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-array-buffer.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-local-handle.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-internal.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-version.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-object.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-maybe.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-persistent-handle.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-weak-callback-info.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-primitive.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-data.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-value.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-traced-handle.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-container.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-context.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-snapshot.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-date.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-debug.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-script.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-message.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-exception.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-extension.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-external.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-function.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-function-callback.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-template.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-memory-span.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-initialization.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-callbacks.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-isolate.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-embedder-heap.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-microtask.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-statistics.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-promise.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-unwinder.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-embedder-state-scope.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-platform.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-json.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-locker.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-microtask-queue.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-primitive-object.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-proxy.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-regexp.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-typed-array.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-value-serializer.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-wasm.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_buffer.h \
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_object_wrap.h \
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_callbacks.h \
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_callbacks_12_inl.h \
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_maybe_43_inl.h \
@@ -77,64 +77,64 @@ Release/obj.target/native_metrics/src/native_metrics.o: \
../src/GCBinder.hpp ../src/Metric.hpp ../src/LoopChecker.hpp
../src/native_metrics.cpp:
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_version.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/errno.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/version.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/unix.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/threadpool.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/uv/darwin.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/cppgc/common.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8config.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-array-buffer.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-local-handle.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-internal.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-version.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-object.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-maybe.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-persistent-handle.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-weak-callback-info.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-primitive.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-data.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-value.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-traced-handle.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-container.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-context.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-snapshot.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-date.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-debug.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-script.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-message.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-exception.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-extension.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-external.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-function.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-function-callback.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-template.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-memory-span.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-initialization.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-callbacks.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-isolate.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-embedder-heap.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-microtask.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-statistics.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-promise.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-unwinder.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-embedder-state-scope.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-platform.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-json.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-locker.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-microtask-queue.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-primitive-object.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-proxy.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-regexp.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-typed-array.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-value-serializer.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/v8-wasm.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_buffer.h:
/Users/mo/Library/Caches/node-gyp/18.13.0/include/node/node_object_wrap.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_version.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/errno.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/version.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/unix.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/threadpool.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/uv/darwin.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/cppgc/common.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8config.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-array-buffer.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-local-handle.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-internal.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-version.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-object.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-maybe.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-persistent-handle.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-weak-callback-info.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-primitive.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-data.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-value.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-traced-handle.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-container.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-context.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-snapshot.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-date.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-debug.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-script.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-message.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-exception.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-extension.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-external.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-function.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-function-callback.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-template.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-memory-span.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-initialization.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-callbacks.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-isolate.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-embedder-heap.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-microtask.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-statistics.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-promise.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-unwinder.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-embedder-state-scope.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-platform.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-json.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-locker.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-microtask-queue.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-primitive-object.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-proxy.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-regexp.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-typed-array.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-value-serializer.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/v8-wasm.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_buffer.h:
/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node/node_object_wrap.h:
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_callbacks.h:
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_callbacks_12_inl.h:
../../../../../nan-npm-2.16.0-cac314a230/node_modules/nan/nan_maybe_43_inl.h:

View File

@@ -84,7 +84,6 @@
"lib/internal/assert.js",
"lib/internal/assert/assertion_error.js",
"lib/internal/assert/calltracker.js",
"lib/internal/assert/snapshot.js",
"lib/internal/async_hooks.js",
"lib/internal/blob.js",
"lib/internal/blocklist.js",
@@ -265,15 +264,20 @@
"lib/internal/structured_clone.js",
"lib/internal/test/binding.js",
"lib/internal/test/transfer.js",
"lib/internal/test_runner/coverage.js",
"lib/internal/test_runner/harness.js",
"lib/internal/test_runner/mock.js",
"lib/internal/test_runner/reporter/dot.js",
"lib/internal/test_runner/reporter/spec.js",
"lib/internal/test_runner/reporter/tap.js",
"lib/internal/test_runner/runner.js",
"lib/internal/test_runner/tap_checker.js",
"lib/internal/test_runner/tap_lexer.js",
"lib/internal/test_runner/tap_parser.js",
"lib/internal/test_runner/tap_stream.js",
"lib/internal/test_runner/test.js",
"lib/internal/test_runner/tests_stream.js",
"lib/internal/test_runner/utils.js",
"lib/internal/test_runner/yaml_to_js.js",
"lib/internal/timers.js",
"lib/internal/tls/secure-context.js",
"lib/internal/tls/secure-pair.js",
@@ -394,8 +398,8 @@
"v8_use_siphash": 1,
"want_separate_host_toolset": 0,
"xcode_version": "12.0",
"nodedir": "/Users/mo/Library/Caches/node-gyp/18.13.0",
"nodedir": "/Users/karolsojko/Library/Caches/node-gyp/18.15.0",
"standalone_static_library": 1,
"user_agent": "yarn/4.0.0-rc.25 npm/? node/v18.13.0 darwin arm64"
"user_agent": "yarn/4.0.0-rc.25 npm/? node/v18.15.0 darwin arm64"
}
}

View File

@@ -51,13 +51,13 @@ CFLAGS_OBJC_Debug :=
CFLAGS_OBJCC_Debug :=
INCS_Debug := \
-I/Users/mo/Library/Caches/node-gyp/18.13.0/include/node \
-I/Users/mo/Library/Caches/node-gyp/18.13.0/src \
-I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/openssl/config \
-I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/openssl/openssl/include \
-I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/uv/include \
-I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/zlib \
-I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/v8/include \
-I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node \
-I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/src \
-I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/openssl/config \
-I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/openssl/openssl/include \
-I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/uv/include \
-I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/zlib \
-I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/v8/include \
-I$(srcdir)/src \
-I$(srcdir)/../../../../nan-npm-2.16.0-cac314a230/node_modules/nan
@@ -107,13 +107,13 @@ CFLAGS_OBJC_Release :=
CFLAGS_OBJCC_Release :=
INCS_Release := \
-I/Users/mo/Library/Caches/node-gyp/18.13.0/include/node \
-I/Users/mo/Library/Caches/node-gyp/18.13.0/src \
-I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/openssl/config \
-I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/openssl/openssl/include \
-I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/uv/include \
-I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/zlib \
-I/Users/mo/Library/Caches/node-gyp/18.13.0/deps/v8/include \
-I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/include/node \
-I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/src \
-I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/openssl/config \
-I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/openssl/openssl/include \
-I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/uv/include \
-I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/zlib \
-I/Users/karolsojko/Library/Caches/node-gyp/18.15.0/deps/v8/include \
-I$(srcdir)/src \
-I$(srcdir)/../../../../nan-npm-2.16.0-cac314a230/node_modules/nan

View File

@@ -22,24 +22,37 @@ if [ -z "$REVISIONS_SERVER_PORT" ]; then
export REVISIONS_SERVER_PORT=3105
fi
#############
# NEW RELIC #
#############
if [ -z "$NEW_RELIC_ENABLED" ]; then
export NEW_RELIC_ENABLED=false
fi
######
# DB #
######
if [ -z "$DB_HOST" ]; then
export DB_HOST="db"
echo "DB_HOST is not set. Please set it in your .env file."
exit 1
fi
if [ -z "$DB_PORT" ]; then
export DB_PORT="3306"
echo "DB_PORT is not set. Please set it in your .env file."
exit 1
fi
if [ -z "$DB_USERNAME" ]; then
export DB_USERNAME="std_notes_user"
echo "DB_USERNAME is not set. Please set it in your .env file."
exit 1
fi
if [ -z "$DB_PASSWORD" ]; then
export DB_PASSWORD=$(openssl rand -hex 32)
echo "DB_PASSWORD is not set. Please set it in your .env file."
exit 1
fi
if [ -z "$DB_DATABASE" ]; then
export DB_DATABASE="standard_notes_db"
echo "DB_DATABASE is not set. Please set it in your .env file."
exit 1
fi
if [ -z "$DB_DEBUG_LEVEL" ]; then
export DB_DEBUG_LEVEL="all"
@@ -51,11 +64,13 @@ export DB_MIGRATIONS_PATH="dist/migrations/*.js"
#########
if [ -z "$REDIS_PORT" ]; then
export REDIS_PORT=6379
echo "REDIS_PORT is not set. Please set it in your .env file."
exit 1
fi
if [ -z "$REDIS_HOST" ]; then
export REDIS_HOST="cache"
echo "REDIS_HOST is not set. Please set it in your .env file."
exit 1
fi
if [ -z "$REDIS_URL" ]; then
@@ -67,11 +82,13 @@ fi
##########
if [ -z "$AUTH_JWT_SECRET" ]; then
export AUTH_JWT_SECRET=$(openssl rand -hex 32)
echo "AUTH_JWT_SECRET is not set. Please set it in your .env file. You can run 'openssl rand -hex 32' to generate a random string."
exit 1
fi
if [ -z "$VALET_TOKEN_SECRET" ]; then
export VALET_TOKEN_SECRET=$(openssl rand -base64 32)
echo "VALET_TOKEN_SECRET is not set. Please set it in your .env file. You can run 'openssl rand -hex 32' to generate a random string."
exit 1
fi
########
@@ -122,7 +139,8 @@ if [ -z "$AUTH_SERVER_EPHEMERAL_SESSION_AGE" ]; then
fi
if [ -z "$AUTH_SERVER_ENCRYPTION_SERVER_KEY" ]; then
export AUTH_SERVER_ENCRYPTION_SERVER_KEY=$(openssl rand -hex 32)
echo "AUTH_SERVER_ENCRYPTION_SERVER_KEY is not set. Please set it in your .env file. You can run 'openssl rand -hex 32' to generate a random string."
exit 1
fi
export AUTH_SERVER_SYNCING_SERVER_URL=http://localhost:$SYNCING_SERVER_PORT
@@ -172,7 +190,7 @@ if [ -z "$AUTH_SERVER_U2F_RELYING_PARTY_NAME" ]; then
export AUTH_SERVER_U2F_RELYING_PARTY_NAME="Standard Notes"
fi
if [ -z "$AUTH_SERVER_U2F_EXPECTED_ORIGIN" ]; then
export AUTH_SERVER_U2F_EXPECTED_ORIGIN="http://localhost,http://localhost:3001"
export AUTH_SERVER_U2F_EXPECTED_ORIGIN="http://localhost,http://localhost:3001,https://app.standardnotes.com,android:apk-key-hash:WD_EG0kMOAtW--nuRzgetO9T4DcZpVA_wfKdzY4okCo"
fi
if [ -z "$AUTH_SERVER_U2F_REQUIRE_USER_VERIFICATION" ]; then
export AUTH_SERVER_U2F_REQUIRE_USER_VERIFICATION=false

View File

@@ -26,7 +26,7 @@
"@lerna-lite/list": "^1.5.1",
"@lerna-lite/run": "^1.5.1",
"@types/jest": "^29.1.1",
"@types/newrelic": "^9.4.0",
"@types/newrelic": "^9.13.0",
"@types/node": "^18.11.9",
"@typescript-eslint/parser": "^5.40.1",
"eslint": "^8.32.0",
@@ -40,6 +40,6 @@
"packageManager": "yarn@4.0.0-rc.25",
"dependencies": {
"@sentry/node": "^7.28.1",
"newrelic": "^9.8.0"
"newrelic": "^10.0.0"
}
}

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.
## [2.21.7](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.21.6...@standardnotes/analytics@2.21.7) (2023-04-21)
**Note:** Version bump only for package @standardnotes/analytics
## [2.21.6](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.21.5...@standardnotes/analytics@2.21.6) (2023-04-21)
**Note:** Version bump only for package @standardnotes/analytics
## [2.21.5](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.21.4...@standardnotes/analytics@2.21.5) (2023-03-30)
**Note:** Version bump only for package @standardnotes/analytics
## [2.21.4](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.21.3...@standardnotes/analytics@2.21.4) (2023-03-10)
**Note:** Version bump only for package @standardnotes/analytics
## [2.21.3](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.21.2...@standardnotes/analytics@2.21.3) (2023-03-09)
**Note:** Version bump only for package @standardnotes/analytics

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/analytics",
"version": "2.21.3",
"version": "2.21.7",
"engines": {
"node": ">=18.0.0 <19.0.0"
},
@@ -28,7 +28,7 @@
"@types/ioredis": "^5.0.0",
"@types/jest": "^29.1.1",
"@types/mixpanel": "^2.14.4",
"@types/newrelic": "^9.4.0",
"@types/newrelic": "^9.13.0",
"@types/node": "^18.11.9",
"@typescript-eslint/eslint-plugin": "^5.48.2",
"eslint": "^8.32.0",
@@ -40,7 +40,7 @@
"dependencies": {
"@aws-sdk/client-sns": "^3.259.0",
"@aws-sdk/client-sqs": "^3.259.0",
"@newrelic/winston-enricher": "^4.0.0",
"@newrelic/winston-enricher": "^4.0.1",
"@sentry/node": "^7.28.1",
"@standardnotes/common": "workspace:*",
"@standardnotes/domain-core": "workspace:^",
@@ -53,7 +53,7 @@
"ioredis": "^5.2.4",
"mixpanel": "^0.17.0",
"mysql2": "^3.0.1",
"newrelic": "^9.8.0",
"newrelic": "^10.0.0",
"reflect-metadata": "^0.1.13",
"typeorm": "^0.3.10",
"winston": "^3.8.1"

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.49.10](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.49.9...@standardnotes/api-gateway@1.49.10) (2023-04-21)
**Note:** Version bump only for package @standardnotes/api-gateway
## [1.49.9](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.49.8...@standardnotes/api-gateway@1.49.9) (2023-04-21)
**Note:** Version bump only for package @standardnotes/api-gateway
## [1.49.8](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.49.7...@standardnotes/api-gateway@1.49.8) (2023-03-30)
**Note:** Version bump only for package @standardnotes/api-gateway
## [1.49.7](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.49.6...@standardnotes/api-gateway@1.49.7) (2023-03-10)
**Note:** Version bump only for package @standardnotes/api-gateway
## [1.49.6](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.49.5...@standardnotes/api-gateway@1.49.6) (2023-03-09)
**Note:** Version bump only for package @standardnotes/api-gateway

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/api-gateway",
"version": "1.49.6",
"version": "1.49.10",
"engines": {
"node": ">=18.0.0 <19.0.0"
},
@@ -20,7 +20,7 @@
"upgrade:snjs": "yarn ncu -u '@standardnotes/*'"
},
"dependencies": {
"@newrelic/winston-enricher": "^4.0.0",
"@newrelic/winston-enricher": "^4.0.1",
"@sentry/node": "^7.28.1",
"@standardnotes/domain-core": "workspace:^",
"@standardnotes/domain-events": "workspace:*",
@@ -37,7 +37,7 @@
"inversify-express-utils": "^6.4.3",
"ioredis": "^5.2.4",
"jsonwebtoken": "^9.0.0",
"newrelic": "^9.8.0",
"newrelic": "^10.0.0",
"prettyjson": "^1.2.5",
"reflect-metadata": "0.1.13",
"winston": "^3.8.1"
@@ -48,7 +48,7 @@
"@types/ioredis": "^5.0.0",
"@types/jest": "^29.1.1",
"@types/jsonwebtoken": "^9.0.1",
"@types/newrelic": "^9.4.0",
"@types/newrelic": "^9.13.0",
"@types/prettyjson": "^0.0.30",
"@typescript-eslint/eslint-plugin": "^5.48.2",
"eslint": "^8.32.0",

View File

@@ -3,6 +3,86 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.95.3](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.95.2...@standardnotes/auth-server@1.95.3) (2023-04-21)
**Note:** Version bump only for package @standardnotes/auth-server
## [1.95.2](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.95.1...@standardnotes/auth-server@1.95.2) (2023-04-21)
**Note:** Version bump only for package @standardnotes/auth-server
## [1.95.1](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.95.0...@standardnotes/auth-server@1.95.1) (2023-04-20)
### Bug Fixes
* **auth:** add u2f permissions for pro users ([d211249](https://github.com/standardnotes/server/commit/d21124908652e89a7995c8f58e6b95394268967f))
# [1.95.0](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.94.1...@standardnotes/auth-server@1.95.0) (2023-04-04)
### Features
* **auth:** add initial emergency access invitations model ([#528](https://github.com/standardnotes/server/issues/528)) ([8242f13](https://github.com/standardnotes/server/commit/8242f13aff63ea9f3007308fe4f65973fa1478e1))
## [1.94.1](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.94.0...@standardnotes/auth-server@1.94.1) (2023-04-04)
### Bug Fixes
* **auth:** change status code for updating a subscription setting without a subscription ([3417407](https://github.com/standardnotes/server/commit/3417407cbe3b8e19069f6003e767d707e14b4501))
# [1.94.0](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.14...@standardnotes/auth-server@1.94.0) (2023-04-03)
### Bug Fixes
* **auth:** feature service specs ([b88f560](https://github.com/standardnotes/server/commit/b88f560b07de183d4101220626785d3ba994b44c))
### Features
* **auth:** feature entitlement check for u2f endpoints ([51b264c](https://github.com/standardnotes/server/commit/51b264ca13fffc66e2dc31e87b0934ba61a48435))
## [1.93.14](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.13...@standardnotes/auth-server@1.93.14) (2023-04-03)
### Bug Fixes
* **auth:** relying party id ([aca8d29](https://github.com/standardnotes/server/commit/aca8d2948da67b32445dc8da54b561ff08bf5c62))
## [1.93.13](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.12...@standardnotes/auth-server@1.93.13) (2023-03-30)
**Note:** Version bump only for package @standardnotes/auth-server
## [1.93.12](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.11...@standardnotes/auth-server@1.93.12) (2023-03-16)
### Bug Fixes
* **auth:** persistence mapping for authenticators ([f8a2892](https://github.com/standardnotes/server/commit/f8a2892811ebb4d8f067e036fb9f54780a400535))
## [1.93.11](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.10...@standardnotes/auth-server@1.93.11) (2023-03-10)
### Bug Fixes
* **auth:** chage attestation type to none ([f69073b](https://github.com/standardnotes/server/commit/f69073ba029bfe15cb6855ff764aba96010c84da))
## [1.93.10](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.9...@standardnotes/auth-server@1.93.10) (2023-03-10)
### Bug Fixes
* **auth:** attestation params and authenticator transports ([a3fc0d9](https://github.com/standardnotes/server/commit/a3fc0d912032d209b78f6c5ba5b47805a491fb15))
## [1.93.9](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.8...@standardnotes/auth-server@1.93.9) (2023-03-10)
**Note:** Version bump only for package @standardnotes/auth-server
## [1.93.8](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.7...@standardnotes/auth-server@1.93.8) (2023-03-10)
### Reverts
* Revert "fix(auth): change supported algorithms on authenticator registration options" ([74e35a2](https://github.com/standardnotes/server/commit/74e35a2d659f13def87869df29e863a2ce32910c))
## [1.93.7](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.6...@standardnotes/auth-server@1.93.7) (2023-03-10)
### Bug Fixes
* **auth:** change supported algorithms on authenticator registration options ([7db9ba0](https://github.com/standardnotes/server/commit/7db9ba03f3c14b83dc4344935499f48db800c87d))
## [1.93.6](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.5...@standardnotes/auth-server@1.93.6) (2023-03-09)
**Note:** Version bump only for package @standardnotes/auth-server

View File

@@ -0,0 +1,23 @@
import { MigrationInterface, QueryRunner } from 'typeorm'
export class emergencyAccessInvitations1680597887475 implements MigrationInterface {
name = 'emergencyAccessInvitations1680597887475'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
'CREATE TABLE `emergency_access_invitations` (`uuid` varchar(36) NOT NULL, `grantor_uuid` varchar(36) NOT NULL, `grantee_uuid` varchar(36) NOT NULL, `status` varchar(36) NOT NULL, `expires_at` datetime NOT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, PRIMARY KEY (`uuid`)) ENGINE=InnoDB',
)
await queryRunner.query(
'ALTER TABLE `emergency_access_invitations` ADD CONSTRAINT `grantor_uuid_fk` FOREIGN KEY (`grantor_uuid`) REFERENCES `users`(`uuid`) ON DELETE CASCADE ON UPDATE NO ACTION',
)
await queryRunner.query(
'ALTER TABLE `emergency_access_invitations` ADD CONSTRAINT `grantee_uuid_fk` FOREIGN KEY (`grantee_uuid`) REFERENCES `users`(`uuid`) ON DELETE CASCADE ON UPDATE NO ACTION',
)
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query('ALTER TABLE `emergency_access_invitations` DROP FOREIGN KEY `grantee_uuid_fk`')
await queryRunner.query('ALTER TABLE `emergency_access_invitations` DROP FOREIGN KEY `grantor_uuid_fk`')
await queryRunner.query('DROP TABLE `emergency_access_invitations`')
}
}

View File

@@ -0,0 +1,14 @@
import { MigrationInterface, QueryRunner } from 'typeorm'
export class enableU2f1681984540867 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
// add u2f permission for pro users
await queryRunner.query(
'INSERT INTO `role_permissions` (role_uuid, permission_uuid) VALUES ("8047edbb-a10a-4ff8-8d53-c2cae600a8e8", "fb13e7d3-936f-4ded-a543-e1650cc99dfd")',
)
}
public async down(): Promise<void> {
return
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/auth-server",
"version": "1.93.6",
"version": "1.95.3",
"engines": {
"node": ">=18.0.0 <19.0.0"
},
@@ -36,16 +36,17 @@
"@aws-sdk/client-sqs": "^3.259.0",
"@cbor-extract/cbor-extract-linux-arm64": "^2.1.1",
"@cbor-extract/cbor-extract-linux-x64": "^2.1.1",
"@newrelic/winston-enricher": "^4.0.0",
"@newrelic/winston-enricher": "^4.0.1",
"@sentry/node": "^7.28.1",
"@sentry/tracing": "^7.28.1",
"@simplewebauthn/server": "^7.0.1",
"@simplewebauthn/typescript-types": "^7.0.0",
"@standardnotes/api": "^1.25.3",
"@standardnotes/common": "workspace:*",
"@standardnotes/domain-core": "workspace:^",
"@standardnotes/domain-events": "workspace:*",
"@standardnotes/domain-events-infra": "workspace:*",
"@standardnotes/features": "^1.58.9",
"@standardnotes/features": "^1.58.12",
"@standardnotes/predicates": "workspace:*",
"@standardnotes/responses": "^1.13.9",
"@standardnotes/security": "workspace:*",
@@ -63,7 +64,7 @@
"inversify-express-utils": "^6.4.3",
"ioredis": "^5.2.4",
"mysql2": "^3.0.1",
"newrelic": "^9.8.0",
"newrelic": "^10.0.0",
"otplib": "12.0.1",
"prettyjson": "^1.2.5",
"reflect-metadata": "0.1.13",
@@ -73,13 +74,12 @@
"winston": "^3.8.1"
},
"devDependencies": {
"@simplewebauthn/typescript-types": "^7.0.0",
"@types/bcryptjs": "^2.4.2",
"@types/cors": "^2.8.9",
"@types/express": "^4.17.14",
"@types/ioredis": "^5.0.0",
"@types/jest": "^29.1.1",
"@types/newrelic": "^9.4.0",
"@types/newrelic": "^9.13.0",
"@types/otplib": "^10.0.0",
"@types/prettyjson": "^0.0.30",
"@types/ua-parser-js": "^0.7.36",

View File

@@ -452,7 +452,7 @@ export class ContainerConfigLoader {
.toConstantValue(env.get('U2F_RELYING_PARTY_NAME', true) ?? 'Standard Notes')
container
.bind(TYPES.U2F_RELYING_PARTY_ID)
.toConstantValue(env.get('U2F_RELYING_PARTY_ID', true) ?? 'standardnotes.com')
.toConstantValue(env.get('U2F_RELYING_PARTY_ID', true) ?? 'app.standardnotes.com')
container
.bind(TYPES.U2F_EXPECTED_ORIGIN)
.toConstantValue(
@@ -563,6 +563,8 @@ export class ContainerConfigLoader {
container.get(TYPES.AuthenticatorChallengeRepository),
container.get(TYPES.U2F_RELYING_PARTY_NAME),
container.get(TYPES.U2F_RELYING_PARTY_ID),
container.get(TYPES.UserRepository),
container.get(TYPES.FeatureService),
),
)
container
@@ -574,6 +576,8 @@ export class ContainerConfigLoader {
container.get(TYPES.U2F_RELYING_PARTY_ID),
container.get(TYPES.U2F_EXPECTED_ORIGIN),
container.get(TYPES.U2F_REQUIRE_USER_VERIFICATION),
container.get(TYPES.UserRepository),
container.get(TYPES.FeatureService),
),
)
container
@@ -599,10 +603,22 @@ export class ContainerConfigLoader {
)
container
.bind<ListAuthenticators>(TYPES.ListAuthenticators)
.toConstantValue(new ListAuthenticators(container.get(TYPES.AuthenticatorRepository)))
.toConstantValue(
new ListAuthenticators(
container.get(TYPES.AuthenticatorRepository),
container.get(TYPES.UserRepository),
container.get(TYPES.FeatureService),
),
)
container
.bind<DeleteAuthenticator>(TYPES.DeleteAuthenticator)
.toConstantValue(new DeleteAuthenticator(container.get(TYPES.AuthenticatorRepository)))
.toConstantValue(
new DeleteAuthenticator(
container.get(TYPES.AuthenticatorRepository),
container.get(TYPES.UserRepository),
container.get(TYPES.FeatureService),
),
)
container
.bind<GenerateRecoveryCodes>(TYPES.GenerateRecoveryCodes)
.toConstantValue(

View File

@@ -12,6 +12,7 @@ import { UserSubscription } from '../Domain/Subscription/UserSubscription'
import { User } from '../Domain/User/User'
import { TypeORMAuthenticator } from '../Infra/TypeORM/TypeORMAuthenticator'
import { TypeORMAuthenticatorChallenge } from '../Infra/TypeORM/TypeORMAuthenticatorChallenge'
import { TypeORMEmergencyAccessInvitation } from '../Infra/TypeORM/TypeORMEmergencyAccessInvitation'
import { TypeORMSessionTrace } from '../Infra/TypeORM/TypeORMSessionTrace'
import { Env } from './Env'
@@ -72,6 +73,7 @@ export const AppDataSource = new DataSource({
TypeORMSessionTrace,
TypeORMAuthenticator,
TypeORMAuthenticatorChallenge,
TypeORMEmergencyAccessInvitation,
],
migrations: [env.get('DB_MIGRATIONS_PATH', true) ?? 'dist/migrations/*.js'],
migrationsRun: true,

View File

@@ -34,6 +34,17 @@ export class AuthenticatorsController {
userUuid: params.userUuid,
})
if (result.isFailed()) {
return {
status: HttpStatusCode.Unauthorized,
data: {
error: {
message: result.getError(),
},
},
}
}
return {
status: HttpStatusCode.Success,
data: {
@@ -50,6 +61,17 @@ export class AuthenticatorsController {
authenticatorId: params.authenticatorId,
})
if (result.isFailed()) {
return {
status: HttpStatusCode.Unauthorized,
data: {
error: {
message: result.getError(),
},
},
}
}
return {
status: HttpStatusCode.Success,
data: {

View File

@@ -0,0 +1,17 @@
import { Entity, Result, UniqueEntityId } from '@standardnotes/domain-core'
import { EmergencyAccessInvitationProps } from './EmergencyAccessInvitationProps'
export class EmergencyAccessInvitation extends Entity<EmergencyAccessInvitationProps> {
get id(): UniqueEntityId {
return this._id
}
private constructor(props: EmergencyAccessInvitationProps, id?: UniqueEntityId) {
super(props, id)
}
static create(props: EmergencyAccessInvitationProps, id?: UniqueEntityId): Result<EmergencyAccessInvitation> {
return Result.ok<EmergencyAccessInvitation>(new EmergencyAccessInvitation(props, id))
}
}

View File

@@ -0,0 +1,11 @@
import { Dates, Uuid } from '@standardnotes/domain-core'
import { EmergencyAccessInvitationStatus } from './EmergencyAccessInvitationStatus'
export interface EmergencyAccessInvitationProps {
grantorUuid: Uuid
granteeUuid: Uuid
status: EmergencyAccessInvitationStatus
expiresAt: Date
dates: Dates
}

View File

@@ -0,0 +1,30 @@
import { Result, ValueObject } from '@standardnotes/domain-core'
import { EmergencyAccessInvitationStatusProps } from './EmergencyAccessInvitationStatusProps'
export class EmergencyAccessInvitationStatus extends ValueObject<EmergencyAccessInvitationStatusProps> {
static readonly NAMES = {
Sent: 'sent',
Accepted: 'accepted',
Confirmed: 'confirmed',
Expired: 'expired',
Revoked: 'revoked',
}
get value(): string {
return this.props.value
}
private constructor(props: EmergencyAccessInvitationStatusProps) {
super(props)
}
static create(name: string): Result<EmergencyAccessInvitationStatus> {
const isValidName = Object.values(this.NAMES).includes(name)
if (!isValidName) {
return Result.fail<EmergencyAccessInvitationStatus>(`Invalid status name: ${name}`)
} else {
return Result.ok<EmergencyAccessInvitationStatus>(new EmergencyAccessInvitationStatus({ value: name }))
}
}
}

View File

@@ -0,0 +1,3 @@
export interface EmergencyAccessInvitationStatusProps {
value: string
}

View File

@@ -30,7 +30,7 @@ jest.mock('@standardnotes/features', () => {
const { GetFeatures } = jest.requireMock('@standardnotes/features')
import { FeatureService } from './FeatureService'
import { Permission, PermissionName } from '@standardnotes/features'
import { FeatureIdentifier, Permission, PermissionName } from '@standardnotes/features'
import { OfflineUserSubscriptionRepositoryInterface } from '../Subscription/OfflineUserSubscriptionRepositoryInterface'
import { TimerInterface } from '@standardnotes/time'
import { OfflineUserSubscription } from '../Subscription/OfflineUserSubscription'
@@ -201,6 +201,62 @@ describe('FeatureService', () => {
})
describe('online subscribers', () => {
it('should tell if a user is entitled to a feature', async () => {
expect(await createService().userIsEntitledToFeature(user, FeatureIdentifier.AutobiographyTheme)).toBe(true)
expect(await createService().userIsEntitledToFeature(user, FeatureIdentifier.DeprecatedBoldEditor)).toBe(false)
})
it('should tell if a user is not entitled to a feature because it is expired', async () => {
timer.getTimestampInMicroseconds = jest.fn().mockReturnValue(777)
expect(await createService().userIsEntitledToFeature(user, FeatureIdentifier.AutobiographyTheme)).toBe(false)
})
it('should tell if a user is entitled to a feature that does not expire', async () => {
const nonSubscriptionPermission = {
uuid: 'files-beta-permission-1-1-1',
name: 'files-beta' as PermissionName,
} as jest.Mocked<Permission>
GetFeatures.mockImplementation(() => [
{
identifier: 'org.standardnotes.theme-autobiography',
permission_name: PermissionName.AutobiographyTheme,
expires_at: 555,
},
{
identifier: 'org.standardnotes.bold-editor',
permission_name: PermissionName.BoldEditor,
expires_at: 777,
},
{
identifier: 'files-beta',
permission_name: 'files-beta' as PermissionName,
expires_at: undefined,
no_expire: true,
},
])
const nonSubscriptionRole = {
name: RoleName.NAMES.InternalTeamUser,
uuid: 'role-files-beta',
permissions: Promise.resolve([nonSubscriptionPermission]),
} as jest.Mocked<Role>
roleToSubscriptionMap.filterNonSubscriptionRoles = jest.fn().mockReturnValue([nonSubscriptionRole])
roleToSubscriptionMap.getSubscriptionNameForRoleName = jest
.fn()
.mockReturnValueOnce(SubscriptionName.PlusPlan)
.mockReturnValueOnce(SubscriptionName.ProPlan)
user = {
uuid: 'user-1-1-1',
roles: Promise.resolve([role1, role2, nonSubscriptionRole]),
subscriptions: Promise.resolve([subscription1, subscription2]),
} as jest.Mocked<User>
expect(await createService().userIsEntitledToFeature(user, 'files-beta')).toBe(true)
})
it('should return user features with `expires_at` field', async () => {
const features = await createService().getFeaturesForUser(user)
expect(features).toEqual(
@@ -321,7 +377,7 @@ describe('FeatureService', () => {
it('should return user features along with features related to non subscription roles', async () => {
const nonSubscriptionPermission = {
uuid: 'files-beta-permission-1-1-1',
name: PermissionName.FilesBeta,
name: 'files-beta' as PermissionName,
} as jest.Mocked<Permission>
GetFeatures.mockImplementation(() => [
@@ -336,7 +392,8 @@ describe('FeatureService', () => {
expires_at: 777,
},
{
permission_name: PermissionName.FilesBeta,
identifier: 'files-beta',
permission_name: 'files-beta' as PermissionName,
expires_at: undefined,
no_expire: true,
},

View File

@@ -21,6 +21,25 @@ export class FeatureService implements FeatureServiceInterface {
@inject(TYPES.Timer) private timer: TimerInterface,
) {}
async userIsEntitledToFeature(user: User, featureIdentifier: string): Promise<boolean> {
const userFeatures = await this.getFeaturesForUser(user)
const feature = userFeatures.find((userFeature) => userFeature.identifier === featureIdentifier)
if (feature === undefined) {
return false
}
if (feature.no_expire) {
return true
}
const featureIsExpired =
feature.expires_at !== undefined && feature.expires_at < this.timer.getTimestampInMicroseconds()
return !featureIsExpired
}
async getFeaturesForOfflineUser(email: string): Promise<{ features: FeatureDescription[]; roles: string[] }> {
const userSubscriptions = await this.offlineUserSubscriptionRepository.findByEmail(
email,

View File

@@ -4,5 +4,6 @@ import { User } from '../User/User'
export interface FeatureServiceInterface {
getFeaturesForUser(user: User): Promise<Array<FeatureDescription>>
userIsEntitledToFeature(user: User, featureIdentifier: string): Promise<boolean>
getFeaturesForOfflineUser(email: string): Promise<{ features: FeatureDescription[]; roles: string[] }>
}

View File

@@ -2,12 +2,18 @@ import { Dates, Uuid } from '@standardnotes/domain-core'
import { Authenticator } from '../../Authenticator/Authenticator'
import { AuthenticatorRepositoryInterface } from '../../Authenticator/AuthenticatorRepositoryInterface'
import { FeatureServiceInterface } from '../../Feature/FeatureServiceInterface'
import { User } from '../../User/User'
import { UserRepositoryInterface } from '../../User/UserRepositoryInterface'
import { DeleteAuthenticator } from './DeleteAuthenticator'
describe('DeleteAuthenticator', () => {
let authenticatorRepository: AuthenticatorRepositoryInterface
let authenticator: Authenticator
const createUseCase = () => new DeleteAuthenticator(authenticatorRepository)
let userRepository: UserRepositoryInterface
let featureService: FeatureServiceInterface
const createUseCase = () => new DeleteAuthenticator(authenticatorRepository, userRepository, featureService)
beforeEach(() => {
authenticator = Authenticator.create({
@@ -24,6 +30,12 @@ describe('DeleteAuthenticator', () => {
authenticatorRepository = {} as jest.Mocked<AuthenticatorRepositoryInterface>
authenticatorRepository.findById = jest.fn().mockReturnValue(authenticator)
authenticatorRepository.remove = jest.fn()
userRepository = {} as jest.Mocked<UserRepositoryInterface>
userRepository.findOneByUuid = jest.fn().mockReturnValue({} as jest.Mocked<User>)
featureService = {} as jest.Mocked<FeatureServiceInterface>
featureService.userIsEntitledToFeature = jest.fn().mockReturnValue(true)
})
it('should return error if authenticator not found', async () => {
@@ -38,6 +50,40 @@ describe('DeleteAuthenticator', () => {
expect(result.getError()).toEqual('Authenticator not found')
})
it('should return error if user is not found', async () => {
userRepository.findOneByUuid = jest.fn().mockReturnValue(null)
const result = await createUseCase().execute({
userUuid: '00000000-0000-0000-0000-000000000000',
authenticatorId: '00000000-0000-0000-0000-000000000000',
})
expect(result.isFailed()).toBe(true)
expect(result.getError()).toEqual('Could not delete authenticator: user not found.')
})
it('should return error if user is not entitled to U2F', async () => {
featureService.userIsEntitledToFeature = jest.fn().mockReturnValue(false)
const result = await createUseCase().execute({
userUuid: '00000000-0000-0000-0000-000000000000',
authenticatorId: '00000000-0000-0000-0000-000000000000',
})
expect(result.isFailed()).toBe(true)
expect(result.getError()).toEqual('Could not delete authenticator: user is not entitled to U2F.')
})
it('should return error if user uuid is not valid', async () => {
const result = await createUseCase().execute({
userUuid: 'invalid',
authenticatorId: '00000000-0000-0000-0000-000000000000',
})
expect(result.isFailed()).toBe(true)
expect(result.getError()).toEqual('Could not delete authenticator: Given value is not a valid uuid: invalid')
})
it('should return error if authenticator does not belong to user', async () => {
authenticatorRepository.findById = jest.fn().mockReturnValue({
...authenticator,

View File

@@ -1,12 +1,41 @@
import { Result, UniqueEntityId, UseCaseInterface } from '@standardnotes/domain-core'
import { Result, UniqueEntityId, UseCaseInterface, Uuid } from '@standardnotes/domain-core'
import { FeatureIdentifier } from '@standardnotes/features'
import { AuthenticatorRepositoryInterface } from '../../Authenticator/AuthenticatorRepositoryInterface'
import { FeatureServiceInterface } from '../../Feature/FeatureServiceInterface'
import { UserRepositoryInterface } from '../../User/UserRepositoryInterface'
import { DeleteAuthenticatorDTO } from './DeleteAuthenticatorDTO'
export class DeleteAuthenticator implements UseCaseInterface<string> {
constructor(private authenticatorRepository: AuthenticatorRepositoryInterface) {}
constructor(
private authenticatorRepository: AuthenticatorRepositoryInterface,
private userRepository: UserRepositoryInterface,
private featureService: FeatureServiceInterface,
) {}
async execute(dto: DeleteAuthenticatorDTO): Promise<Result<string>> {
const userUuidOrError = Uuid.create(dto.userUuid)
if (userUuidOrError.isFailed()) {
return Result.fail(`Could not delete authenticator: ${userUuidOrError.getError()}`)
}
const userUuid = userUuidOrError.getValue()
const user = await this.userRepository.findOneByUuid(userUuid.value)
if (user === null) {
return Result.fail('Could not delete authenticator: user not found.')
}
const userIsEntitledToU2F = await this.featureService.userIsEntitledToFeature(
user,
FeatureIdentifier.UniversalSecondFactor,
)
if (!userIsEntitledToU2F) {
return Result.fail('Could not delete authenticator: user is not entitled to U2F.')
}
const authenticator = await this.authenticatorRepository.findById(new UniqueEntityId(dto.authenticatorId))
if (!authenticator || authenticator.props.userUuid.value !== dto.userUuid) {
if (!authenticator || authenticator.props.userUuid.value !== userUuid.value) {
return Result.fail('Authenticator not found')
}

View File

@@ -57,7 +57,7 @@ export class GenerateAuthenticatorAuthenticationOptions implements UseCaseInterf
type: 'public-key',
transports: authenticator.props.transports,
})),
userVerification: 'discouraged',
userVerification: 'preferred',
})
const authenticatorChallengeOrError = AuthenticatorChallenge.create({

View File

@@ -4,11 +4,16 @@ import { Authenticator } from '../../Authenticator/Authenticator'
import { AuthenticatorChallenge } from '../../Authenticator/AuthenticatorChallenge'
import { AuthenticatorChallengeRepositoryInterface } from '../../Authenticator/AuthenticatorChallengeRepositoryInterface'
import { AuthenticatorRepositoryInterface } from '../../Authenticator/AuthenticatorRepositoryInterface'
import { FeatureServiceInterface } from '../../Feature/FeatureServiceInterface'
import { User } from '../../User/User'
import { UserRepositoryInterface } from '../../User/UserRepositoryInterface'
import { GenerateAuthenticatorRegistrationOptions } from './GenerateAuthenticatorRegistrationOptions'
describe('GenerateAuthenticatorRegistrationOptions', () => {
let authenticatorRepository: AuthenticatorRepositoryInterface
let authenticatorChallengeRepository: AuthenticatorChallengeRepositoryInterface
let userRepository: UserRepositoryInterface
let featureService: FeatureServiceInterface
const createUseCase = () =>
new GenerateAuthenticatorRegistrationOptions(
@@ -16,6 +21,8 @@ describe('GenerateAuthenticatorRegistrationOptions', () => {
authenticatorChallengeRepository,
'Standard Notes',
'standardnotes.com',
userRepository,
featureService,
)
beforeEach(() => {
@@ -35,6 +42,12 @@ describe('GenerateAuthenticatorRegistrationOptions', () => {
authenticatorChallengeRepository = {} as jest.Mocked<AuthenticatorChallengeRepositoryInterface>
authenticatorChallengeRepository.save = jest.fn()
userRepository = {} as jest.Mocked<UserRepositoryInterface>
userRepository.findOneByUuid = jest.fn().mockReturnValue({} as jest.Mocked<User>)
featureService = {} as jest.Mocked<FeatureServiceInterface>
featureService.userIsEntitledToFeature = jest.fn().mockReturnValue(true)
})
it('should return error if userUuid is invalid', async () => {
@@ -63,6 +76,36 @@ describe('GenerateAuthenticatorRegistrationOptions', () => {
expect(result.getError()).toBe('Could not generate authenticator registration options: Username cannot be empty')
})
it('should return error if user is not entitled to u2f feature', async () => {
featureService.userIsEntitledToFeature = jest.fn().mockReturnValue(false)
const useCase = createUseCase()
const result = await useCase.execute({
userUuid: '00000000-0000-0000-0000-000000000000',
username: 'username',
})
expect(result.isFailed()).toBe(true)
expect(result.getError()).toBe(
'Could not generate authenticator registration options: user is not entitled to U2F.',
)
})
it('should return error if user is not found', async () => {
userRepository.findOneByUuid = jest.fn().mockReturnValue(null)
const useCase = createUseCase()
const result = await useCase.execute({
userUuid: '00000000-0000-0000-0000-000000000000',
username: 'username',
})
expect(result.isFailed()).toBe(true)
expect(result.getError()).toBe('Could not generate authenticator registration options: user not found.')
})
it('should return error if authenticator challenge is invalid', async () => {
const mock = jest.spyOn(AuthenticatorChallenge, 'create')
mock.mockReturnValue(Result.fail('Oops'))

View File

@@ -5,6 +5,9 @@ import { GenerateAuthenticatorRegistrationOptionsDTO } from './GenerateAuthentic
import { AuthenticatorRepositoryInterface } from '../../Authenticator/AuthenticatorRepositoryInterface'
import { AuthenticatorChallengeRepositoryInterface } from '../../Authenticator/AuthenticatorChallengeRepositoryInterface'
import { AuthenticatorChallenge } from '../../Authenticator/AuthenticatorChallenge'
import { FeatureIdentifier } from '@standardnotes/features'
import { FeatureServiceInterface } from '../../Feature/FeatureServiceInterface'
import { UserRepositoryInterface } from '../../User/UserRepositoryInterface'
export class GenerateAuthenticatorRegistrationOptions implements UseCaseInterface<Record<string, unknown>> {
constructor(
@@ -12,6 +15,8 @@ export class GenerateAuthenticatorRegistrationOptions implements UseCaseInterfac
private authenticatorChallengeRepository: AuthenticatorChallengeRepositoryInterface,
private relyingPartyName: string,
private relyingPartyId: string,
private userRepository: UserRepositoryInterface,
private featureService: FeatureServiceInterface,
) {}
async execute(dto: GenerateAuthenticatorRegistrationOptionsDTO): Promise<Result<Record<string, unknown>>> {
@@ -27,6 +32,20 @@ export class GenerateAuthenticatorRegistrationOptions implements UseCaseInterfac
}
const username = usernameOrError.getValue()
const user = await this.userRepository.findOneByUuid(userUuid.value)
if (user === null) {
return Result.fail('Could not generate authenticator registration options: user not found.')
}
const userIsEntitledToU2F = await this.featureService.userIsEntitledToFeature(
user,
FeatureIdentifier.UniversalSecondFactor,
)
if (!userIsEntitledToU2F) {
return Result.fail('Could not generate authenticator registration options: user is not entitled to U2F.')
}
const authenticators = await this.authenticatorRepository.findByUserUuid(userUuid)
const options = generateRegistrationOptions({
rpID: this.relyingPartyId,
@@ -36,7 +55,6 @@ export class GenerateAuthenticatorRegistrationOptions implements UseCaseInterfac
attestationType: 'none',
authenticatorSelection: {
authenticatorAttachment: 'cross-platform',
userVerification: 'discouraged',
},
excludeCredentials: authenticators.map((authenticator) => ({
id: authenticator.props.credentialId,

View File

@@ -1,14 +1,25 @@
import { AuthenticatorRepositoryInterface } from '../../Authenticator/AuthenticatorRepositoryInterface'
import { FeatureServiceInterface } from '../../Feature/FeatureServiceInterface'
import { User } from '../../User/User'
import { UserRepositoryInterface } from '../../User/UserRepositoryInterface'
import { ListAuthenticators } from './ListAuthenticators'
describe('ListAuthenticators', () => {
let authenticatorRepository: AuthenticatorRepositoryInterface
let userRepository: UserRepositoryInterface
let featureService: FeatureServiceInterface
const createUseCase = () => new ListAuthenticators(authenticatorRepository)
const createUseCase = () => new ListAuthenticators(authenticatorRepository, userRepository, featureService)
beforeEach(() => {
authenticatorRepository = {} as jest.Mocked<AuthenticatorRepositoryInterface>
authenticatorRepository.findByUserUuid = jest.fn().mockReturnValue([])
userRepository = {} as jest.Mocked<UserRepositoryInterface>
userRepository.findOneByUuid = jest.fn().mockReturnValue({} as jest.Mocked<User>)
featureService = {} as jest.Mocked<FeatureServiceInterface>
featureService.userIsEntitledToFeature = jest.fn().mockReturnValue(true)
})
it('should list authenticators', async () => {
@@ -27,4 +38,24 @@ describe('ListAuthenticators', () => {
expect(result.isFailed()).toBeTruthy()
})
it('should fail if user is not found', async () => {
userRepository.findOneByUuid = jest.fn().mockReturnValue(null)
const useCase = createUseCase()
const result = await useCase.execute({ userUuid: '00000000-0000-0000-0000-000000000000' })
expect(result.isFailed()).toBeTruthy()
})
it('should fail if user is not entitled to U2F', async () => {
featureService.userIsEntitledToFeature = jest.fn().mockReturnValue(false)
const useCase = createUseCase()
const result = await useCase.execute({ userUuid: '00000000-0000-0000-0000-000000000000' })
expect(result.isFailed()).toBeTruthy()
})
})

View File

@@ -1,11 +1,19 @@
import { Result, UseCaseInterface, Uuid } from '@standardnotes/domain-core'
import { FeatureIdentifier } from '@standardnotes/features'
import { Authenticator } from '../../Authenticator/Authenticator'
import { AuthenticatorRepositoryInterface } from '../../Authenticator/AuthenticatorRepositoryInterface'
import { FeatureServiceInterface } from '../../Feature/FeatureServiceInterface'
import { UserRepositoryInterface } from '../../User/UserRepositoryInterface'
import { ListAuthenticatorsDTO } from './ListAuthenticatorsDTO'
export class ListAuthenticators implements UseCaseInterface<Authenticator[]> {
constructor(private authenticatorRepository: AuthenticatorRepositoryInterface) {}
constructor(
private authenticatorRepository: AuthenticatorRepositoryInterface,
private userRepository: UserRepositoryInterface,
private featureService: FeatureServiceInterface,
) {}
async execute(dto: ListAuthenticatorsDTO): Promise<Result<Authenticator[]>> {
const userUuidOrError = Uuid.create(dto.userUuid)
if (userUuidOrError.isFailed()) {
@@ -13,6 +21,20 @@ export class ListAuthenticators implements UseCaseInterface<Authenticator[]> {
}
const userUuid = userUuidOrError.getValue()
const user = await this.userRepository.findOneByUuid(userUuid.value)
if (user === null) {
return Result.fail('Could not list authenticators: user not found.')
}
const userIsEntitledToU2F = await this.featureService.userIsEntitledToFeature(
user,
FeatureIdentifier.UniversalSecondFactor,
)
if (!userIsEntitledToU2F) {
return Result.fail('Could not list authenticators: user is not entitled to U2F.')
}
const authenticators = await this.authenticatorRepository.findByUserUuid(userUuid)
return Result.ok(authenticators)

View File

@@ -168,7 +168,7 @@ describe('UpdateSetting', () => {
error: {
message: 'User 1-2-3 has no subscription to change a subscription setting.',
},
statusCode: 401,
statusCode: 400,
})
})

View File

@@ -83,7 +83,7 @@ export class UpdateSetting implements UseCaseInterface {
error: {
message: `User ${userUuid} has no subscription to change a subscription setting.`,
},
statusCode: 401,
statusCode: 400,
}
}

View File

@@ -1,16 +1,22 @@
import * as simeplWebAuthnServer from '@simplewebauthn/server'
import { VerifiedRegistrationResponse } from '@simplewebauthn/server'
import { RegistrationResponseJSON } from '@simplewebauthn/typescript-types'
import { Result } from '@standardnotes/domain-core'
import { Authenticator } from '../../Authenticator/Authenticator'
import { AuthenticatorChallenge } from '../../Authenticator/AuthenticatorChallenge'
import { AuthenticatorChallengeRepositoryInterface } from '../../Authenticator/AuthenticatorChallengeRepositoryInterface'
import { AuthenticatorRepositoryInterface } from '../../Authenticator/AuthenticatorRepositoryInterface'
import { FeatureServiceInterface } from '../../Feature/FeatureServiceInterface'
import { User } from '../../User/User'
import { UserRepositoryInterface } from '../../User/UserRepositoryInterface'
import { VerifyAuthenticatorRegistrationResponse } from './VerifyAuthenticatorRegistrationResponse'
describe('VerifyAuthenticatorRegistrationResponse', () => {
let authenticatorRepository: AuthenticatorRepositoryInterface
let authenticatorChallengeRepository: AuthenticatorChallengeRepositoryInterface
let userRepository: UserRepositoryInterface
let featureService: FeatureServiceInterface
const createUseCase = () =>
new VerifyAuthenticatorRegistrationResponse(
@@ -19,6 +25,8 @@ describe('VerifyAuthenticatorRegistrationResponse', () => {
'standardnotes.com',
['localhost', 'https://app.standardnotes.com'],
true,
userRepository,
featureService,
)
beforeEach(() => {
@@ -31,6 +39,12 @@ describe('VerifyAuthenticatorRegistrationResponse', () => {
challenge: Buffer.from('challenge'),
},
} as jest.Mocked<AuthenticatorChallenge>)
userRepository = {} as jest.Mocked<UserRepositoryInterface>
userRepository.findOneByUuid = jest.fn().mockReturnValue({} as jest.Mocked<User>)
featureService = {} as jest.Mocked<FeatureServiceInterface>
featureService.userIsEntitledToFeature = jest.fn().mockReturnValue(true)
})
it('should return error if user uuid is invalid', async () => {
@@ -39,14 +53,15 @@ describe('VerifyAuthenticatorRegistrationResponse', () => {
const result = await useCase.execute({
userUuid: 'invalid',
attestationResponse: {
id: Buffer.from('id'),
rawId: Buffer.from('rawId'),
id: 'id',
rawId: 'rawId',
response: {
attestationObject: Buffer.from('attestationObject'),
clientDataJSON: Buffer.from('clientDataJSON'),
attestationObject: 'attestationObject',
clientDataJSON: 'clientDataJSON',
},
type: 'type',
},
type: 'public-key',
clientExtensionResults: {},
} as jest.Mocked<RegistrationResponseJSON>,
})
expect(result.isFailed()).toBeTruthy()
@@ -55,6 +70,54 @@ describe('VerifyAuthenticatorRegistrationResponse', () => {
)
})
it('should return error if user is not entitled to feature', async () => {
featureService.userIsEntitledToFeature = jest.fn().mockReturnValue(false)
const useCase = createUseCase()
const result = await useCase.execute({
userUuid: '00000000-0000-0000-0000-000000000000',
attestationResponse: {
id: 'id',
rawId: 'rawId',
response: {
attestationObject: 'attestationObject',
clientDataJSON: 'clientDataJSON',
},
type: 'public-key',
clientExtensionResults: {},
} as jest.Mocked<RegistrationResponseJSON>,
})
expect(result.isFailed()).toBeTruthy()
expect(result.getError()).toEqual(
'Could not verify authenticator registration response: user is not entitled to U2F.',
)
})
it('should return error if user is not found', async () => {
userRepository.findOneByUuid = jest.fn().mockReturnValue(null)
const useCase = createUseCase()
const result = await useCase.execute({
userUuid: '00000000-0000-0000-0000-000000000000',
attestationResponse: {
id: 'id',
rawId: 'rawId',
response: {
attestationObject: 'attestationObject',
clientDataJSON: 'clientDataJSON',
},
type: 'public-key',
clientExtensionResults: {},
} as jest.Mocked<RegistrationResponseJSON>,
})
expect(result.isFailed()).toBeTruthy()
expect(result.getError()).toEqual('Could not verify authenticator registration response: user not found.')
})
it('should return error if challenge is not found', async () => {
authenticatorChallengeRepository.findByUserUuid = jest.fn().mockReturnValue(null)
@@ -63,14 +126,15 @@ describe('VerifyAuthenticatorRegistrationResponse', () => {
const result = await useCase.execute({
userUuid: '00000000-0000-0000-0000-000000000000',
attestationResponse: {
id: Buffer.from('id'),
rawId: Buffer.from('rawId'),
id: 'id',
rawId: 'rawId',
response: {
attestationObject: Buffer.from('attestationObject'),
clientDataJSON: Buffer.from('clientDataJSON'),
attestationObject: 'attestationObject',
clientDataJSON: 'clientDataJSON',
},
type: 'type',
},
type: 'public-key',
clientExtensionResults: {},
} as jest.Mocked<RegistrationResponseJSON>,
})
expect(result.isFailed()).toBeTruthy()
@@ -103,14 +167,15 @@ describe('VerifyAuthenticatorRegistrationResponse', () => {
const result = await useCase.execute({
userUuid: '00000000-0000-0000-0000-000000000000',
attestationResponse: {
id: Buffer.from('id'),
rawId: Buffer.from('rawId'),
id: 'id',
rawId: 'rawId',
response: {
attestationObject: Buffer.from('attestationObject'),
clientDataJSON: Buffer.from('clientDataJSON'),
attestationObject: 'attestationObject',
clientDataJSON: 'clientDataJSON',
},
type: 'type',
},
type: 'public-key',
clientExtensionResults: {},
} as jest.Mocked<RegistrationResponseJSON>,
})
expect(result.isFailed()).toBeTruthy()
@@ -136,14 +201,15 @@ describe('VerifyAuthenticatorRegistrationResponse', () => {
const result = await useCase.execute({
userUuid: '00000000-0000-0000-0000-000000000000',
attestationResponse: {
id: Buffer.from('id'),
rawId: Buffer.from('rawId'),
id: 'id',
rawId: 'rawId',
response: {
attestationObject: Buffer.from('attestationObject'),
clientDataJSON: Buffer.from('clientDataJSON'),
attestationObject: 'attestationObject',
clientDataJSON: 'clientDataJSON',
},
type: 'type',
},
type: 'public-key',
clientExtensionResults: {},
} as jest.Mocked<RegistrationResponseJSON>,
})
expect(result.isFailed()).toBeTruthy()
@@ -171,14 +237,15 @@ describe('VerifyAuthenticatorRegistrationResponse', () => {
const result = await useCase.execute({
userUuid: '00000000-0000-0000-0000-000000000000',
attestationResponse: {
id: Buffer.from('id'),
rawId: Buffer.from('rawId'),
id: 'id',
rawId: 'rawId',
response: {
attestationObject: Buffer.from('attestationObject'),
clientDataJSON: Buffer.from('clientDataJSON'),
attestationObject: 'attestationObject',
clientDataJSON: 'clientDataJSON',
},
type: 'type',
},
type: 'public-key',
clientExtensionResults: {},
} as jest.Mocked<RegistrationResponseJSON>,
})
expect(result.isFailed()).toBeTruthy()
@@ -220,14 +287,15 @@ describe('VerifyAuthenticatorRegistrationResponse', () => {
const result = await useCase.execute({
userUuid: '00000000-0000-0000-0000-000000000000',
attestationResponse: {
id: Buffer.from('id'),
rawId: Buffer.from('rawId'),
id: 'id',
rawId: 'rawId',
response: {
attestationObject: Buffer.from('attestationObject'),
clientDataJSON: Buffer.from('clientDataJSON'),
attestationObject: 'attestationObject',
clientDataJSON: 'clientDataJSON',
},
type: 'type',
},
type: 'public-key',
clientExtensionResults: {},
} as jest.Mocked<RegistrationResponseJSON>,
})
expect(result.isFailed()).toBeTruthy()
@@ -263,14 +331,15 @@ describe('VerifyAuthenticatorRegistrationResponse', () => {
const result = await useCase.execute({
userUuid: '00000000-0000-0000-0000-000000000000',
attestationResponse: {
id: Buffer.from('id'),
rawId: Buffer.from('rawId'),
id: 'id',
rawId: 'rawId',
response: {
attestationObject: Buffer.from('attestationObject'),
clientDataJSON: Buffer.from('clientDataJSON'),
attestationObject: 'attestationObject',
clientDataJSON: 'clientDataJSON',
},
type: 'type',
},
type: 'public-key',
clientExtensionResults: {},
} as jest.Mocked<RegistrationResponseJSON>,
})
expect(result.isFailed()).toBeFalsy()

View File

@@ -1,10 +1,13 @@
import { Dates, Result, UniqueEntityId, UseCaseInterface, Uuid } from '@standardnotes/domain-core'
import { VerifiedRegistrationResponse, verifyRegistrationResponse } from '@simplewebauthn/server'
import { FeatureIdentifier } from '@standardnotes/features'
import { AuthenticatorChallengeRepositoryInterface } from '../../Authenticator/AuthenticatorChallengeRepositoryInterface'
import { AuthenticatorRepositoryInterface } from '../../Authenticator/AuthenticatorRepositoryInterface'
import { Authenticator } from '../../Authenticator/Authenticator'
import { VerifyAuthenticatorRegistrationResponseDTO } from './VerifyAuthenticatorRegistrationResponseDTO'
import { FeatureServiceInterface } from '../../Feature/FeatureServiceInterface'
import { UserRepositoryInterface } from '../../User/UserRepositoryInterface'
export class VerifyAuthenticatorRegistrationResponse implements UseCaseInterface<UniqueEntityId> {
constructor(
@@ -13,6 +16,8 @@ export class VerifyAuthenticatorRegistrationResponse implements UseCaseInterface
private relyingPartyId: string,
private expectedOrigin: string[],
private requireUserVerification: boolean,
private userRepository: UserRepositoryInterface,
private featureService: FeatureServiceInterface,
) {}
async execute(dto: VerifyAuthenticatorRegistrationResponseDTO): Promise<Result<UniqueEntityId>> {
@@ -22,6 +27,20 @@ export class VerifyAuthenticatorRegistrationResponse implements UseCaseInterface
}
const userUuid = userUuidOrError.getValue()
const user = await this.userRepository.findOneByUuid(userUuid.value)
if (user === null) {
return Result.fail('Could not verify authenticator registration response: user not found.')
}
const userIsEntitledToU2F = await this.featureService.userIsEntitledToFeature(
user,
FeatureIdentifier.UniversalSecondFactor,
)
if (!userIsEntitledToU2F) {
return Result.fail('Could not verify authenticator registration response: user is not entitled to U2F.')
}
const authenticatorChallenge = await this.authenticatorChallengeRepository.findByUserUuid(userUuid)
if (!authenticatorChallenge) {
return Result.fail('Could not verify authenticator registration response: challenge not found')
@@ -56,6 +75,7 @@ export class VerifyAuthenticatorRegistrationResponse implements UseCaseInterface
credentialId: verification.registrationInfo.credentialID,
credentialPublicKey: verification.registrationInfo.credentialPublicKey,
dates: Dates.create(new Date(), new Date()).getValue(),
transports: dto.attestationResponse.response.transports,
})
if (authenticatorOrError.isFailed()) {

View File

@@ -1,4 +1,5 @@
import { RegistrationResponseJSON } from '@simplewebauthn/typescript-types'
export interface VerifyAuthenticatorRegistrationResponseDTO {
userUuid: string
attestationResponse: Record<string, unknown>
attestationResponse: RegistrationResponseJSON
}

View File

@@ -4,6 +4,7 @@ import { Role } from '../Role/Role'
import { Setting } from '../Setting/Setting'
import { UserSubscription } from '../Subscription/UserSubscription'
import { ProtocolVersion } from '@standardnotes/common'
import { TypeORMEmergencyAccessInvitation } from '../../Infra/TypeORM/TypeORMEmergencyAccessInvitation'
@Entity({ name: 'users' })
export class User {
@@ -181,6 +182,22 @@ export class User {
)
declare subscriptions: Promise<UserSubscription[]>
@OneToMany(
/* istanbul ignore next */
() => TypeORMEmergencyAccessInvitation,
/* istanbul ignore next */
(invitation) => invitation.grantor,
)
declare emergencyAccessInvitationsCreated: Promise<TypeORMEmergencyAccessInvitation[]>
@OneToMany(
/* istanbul ignore next */
() => TypeORMEmergencyAccessInvitation,
/* istanbul ignore next */
(invitation) => invitation.grantee,
)
declare emergencyAccessInvitationsReceived: Promise<TypeORMEmergencyAccessInvitation[]>
supportsSessions(): boolean {
return parseInt(this.version) >= parseInt(ProtocolVersion.V004)
}

View File

@@ -1,4 +1,6 @@
import { RegistrationResponseJSON } from '@simplewebauthn/typescript-types'
export interface VerifyAuthenticatorRegistrationResponseRequestParams {
userUuid: string
attestationResponse: Record<string, unknown>
attestationResponse: RegistrationResponseJSON
}

View File

@@ -0,0 +1,66 @@
import { Column, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'
import { User } from '../../Domain/User/User'
@Entity({ name: 'emergency_access_invitations' })
export class TypeORMEmergencyAccessInvitation {
@PrimaryGeneratedColumn('uuid')
declare uuid: string
@Column({
name: 'grantor_uuid',
length: 36,
})
declare grantorUuid: string
@ManyToOne(
/* istanbul ignore next */
() => User,
/* istanbul ignore next */
(user) => user.emergencyAccessInvitationsCreated,
/* istanbul ignore next */
{ onDelete: 'CASCADE', nullable: false },
)
@JoinColumn({ name: 'grantor_uuid', referencedColumnName: 'uuid', foreignKeyConstraintName: 'grantor_uuid_fk' })
declare grantor: Promise<User>
@Column({
name: 'grantee_uuid',
length: 36,
})
declare granteeUuid: string
@ManyToOne(
/* istanbul ignore next */
() => User,
/* istanbul ignore next */
(user) => user.emergencyAccessInvitationsReceived,
/* istanbul ignore next */
{ onDelete: 'CASCADE', nullable: false },
)
@JoinColumn({ name: 'grantee_uuid', referencedColumnName: 'uuid', foreignKeyConstraintName: 'grantee_uuid_fk' })
declare grantee: Promise<User>
@Column({
name: 'status',
length: 36,
})
declare status: string
@Column({
name: 'expires_at',
type: 'datetime',
})
declare expiresAt: Date
@Column({
name: 'created_at',
type: 'datetime',
})
declare createdAt: Date
@Column({
name: 'updated_at',
type: 'datetime',
})
declare updatedAt: Date
}

View File

@@ -23,8 +23,8 @@ export class AuthenticatorPersistenceMapper implements MapperInterface<Authentic
counter: projection.counter,
credentialBackedUp: projection.credentialBackedUp,
credentialDeviceType: projection.credentialDeviceType,
credentialId: Buffer.from(projection.credentialId, 'base64url'),
credentialPublicKey: projection.credentialPublicKey,
credentialId: new Uint8Array(Buffer.from(projection.credentialId, 'base64url')),
credentialPublicKey: new Uint8Array(projection.credentialPublicKey),
dates,
transports: projection.transports ? JSON.parse(projection.transports) : undefined,
},
@@ -43,7 +43,7 @@ export class AuthenticatorPersistenceMapper implements MapperInterface<Authentic
typeorm.uuid = domain.id.toString()
typeorm.userUuid = domain.props.userUuid.value
typeorm.credentialId = Buffer.from(domain.props.credentialId).toString('base64url')
typeorm.credentialId = Buffer.from(domain.props.credentialId.buffer).toString('base64url')
typeorm.credentialPublicKey = Buffer.from(domain.props.credentialPublicKey.buffer)
typeorm.counter = domain.props.counter
typeorm.credentialDeviceType = domain.props.credentialDeviceType

View File

@@ -0,0 +1,63 @@
import { Dates, MapperInterface, UniqueEntityId, Uuid } from '@standardnotes/domain-core'
import { EmergencyAccessInvitation } from '../Domain/EmergencyAccess/EmergencyAccessInvitation'
import { EmergencyAccessInvitationStatus } from '../Domain/EmergencyAccess/EmergencyAccessInvitationStatus'
import { TypeORMEmergencyAccessInvitation } from '../Infra/TypeORM/TypeORMEmergencyAccessInvitation'
export class EmergencyAccessInvitationPersistenceMapper
implements MapperInterface<EmergencyAccessInvitation, TypeORMEmergencyAccessInvitation>
{
toDomain(projection: TypeORMEmergencyAccessInvitation): EmergencyAccessInvitation {
const grantorUuidOrError = Uuid.create(projection.grantorUuid)
if (grantorUuidOrError.isFailed()) {
throw new Error(grantorUuidOrError.getError())
}
const grantorUuid = grantorUuidOrError.getValue()
const granteeUuidOrError = Uuid.create(projection.granteeUuid)
if (granteeUuidOrError.isFailed()) {
throw new Error(granteeUuidOrError.getError())
}
const granteeUuid = granteeUuidOrError.getValue()
const emergencyAccessInvitationStatusOrError = EmergencyAccessInvitationStatus.create(projection.status)
if (emergencyAccessInvitationStatusOrError.isFailed()) {
throw new Error(emergencyAccessInvitationStatusOrError.getError())
}
const emergencyAccessInvitationStatus = emergencyAccessInvitationStatusOrError.getValue()
const datesOrError = Dates.create(projection.createdAt, projection.updatedAt)
if (datesOrError.isFailed()) {
throw new Error(datesOrError.getError())
}
const dates = datesOrError.getValue()
const emergencyAccessInvitationOrError = EmergencyAccessInvitation.create(
{
grantorUuid,
granteeUuid,
status: emergencyAccessInvitationStatus,
expiresAt: projection.expiresAt,
dates,
},
new UniqueEntityId(projection.uuid),
)
const emergencyAccessInvitation = emergencyAccessInvitationOrError.getValue()
return emergencyAccessInvitation
}
toProjection(domain: EmergencyAccessInvitation): TypeORMEmergencyAccessInvitation {
const typeorm = new TypeORMEmergencyAccessInvitation()
typeorm.uuid = domain.id.toString()
typeorm.grantorUuid = domain.props.grantorUuid.value
typeorm.granteeUuid = domain.props.granteeUuid.value
typeorm.status = domain.props.status.value
typeorm.expiresAt = domain.props.expiresAt
typeorm.createdAt = domain.props.dates.createdAt
typeorm.updatedAt = domain.props.dates.updatedAt
return typeorm
}
}

View File

@@ -3,6 +3,24 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.10.1](https://github.com/standardnotes/server/compare/@standardnotes/domain-events-infra@1.10.0...@standardnotes/domain-events-infra@1.10.1) (2023-04-21)
**Note:** Version bump only for package @standardnotes/domain-events-infra
# [1.10.0](https://github.com/standardnotes/server/compare/@standardnotes/domain-events-infra@1.9.74...@standardnotes/domain-events-infra@1.10.0) (2023-04-21)
### Features
* **domain-events-infra:** add SES email bounce notifications handler ([#569](https://github.com/standardnotes/server/issues/569)) ([9b9f10d](https://github.com/standardnotes/server/commit/9b9f10d4ca9ceef1defa868b7c96f570e46d8053))
## [1.9.74](https://github.com/standardnotes/server/compare/@standardnotes/domain-events-infra@1.9.73...@standardnotes/domain-events-infra@1.9.74) (2023-03-30)
**Note:** Version bump only for package @standardnotes/domain-events-infra
## [1.9.73](https://github.com/standardnotes/server/compare/@standardnotes/domain-events-infra@1.9.72...@standardnotes/domain-events-infra@1.9.73) (2023-03-10)
**Note:** Version bump only for package @standardnotes/domain-events-infra
## [1.9.72](https://github.com/standardnotes/server/compare/@standardnotes/domain-events-infra@1.9.71...@standardnotes/domain-events-infra@1.9.72) (2023-02-23)
**Note:** Version bump only for package @standardnotes/domain-events-infra

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/domain-events-infra",
"version": "1.9.72",
"version": "1.10.1",
"engines": {
"node": ">=18.0.0 <19.0.0"
},
@@ -27,7 +27,7 @@
"@aws-sdk/client-sqs": "^3.259.0",
"@standardnotes/domain-events": "workspace:*",
"ioredis": "^5.2.4",
"newrelic": "^9.8.0",
"newrelic": "^10.0.0",
"reflect-metadata": "^0.1.13",
"sqs-consumer": "^6.2.1",
"winston": "^3.8.1"
@@ -35,7 +35,7 @@
"devDependencies": {
"@types/ioredis": "^5.0.0",
"@types/jest": "^29.1.1",
"@types/newrelic": "^9.4.0",
"@types/newrelic": "^9.13.0",
"@typescript-eslint/eslint-plugin": "^5.48.2",
"eslint-plugin-prettier": "^4.2.1",
"jest": "^29.1.2",

View File

@@ -0,0 +1,72 @@
import 'reflect-metadata'
import { DomainEventHandlerInterface } from '@standardnotes/domain-events'
import { startBackgroundTransaction } from 'newrelic'
jest.mock('newrelic')
import { Logger } from 'winston'
import { SQSNewRelicBounceNotificiationHandler } from './SQSNewRelicBounceNotificiationHandler'
describe('SQSNewRelicBounceNotificiationHandler', () => {
let handler: DomainEventHandlerInterface
let handlers: Map<string, DomainEventHandlerInterface>
let logger: Logger
let mockedStartBackgroundTransaction: unknown
const createHandler = () => new SQSNewRelicBounceNotificiationHandler(handlers, logger)
beforeEach(() => {
handler = {} as jest.Mocked<DomainEventHandlerInterface>
handler.handle = jest.fn()
handlers = new Map([['EMAIL_BOUNCED', handler]])
logger = {} as jest.Mocked<Logger>
logger.debug = jest.fn()
logger.error = jest.fn()
mockedStartBackgroundTransaction = startBackgroundTransaction as jest.Mocked<unknown>
})
it('should handle messages', async () => {
const sqsMessage = `{
"Message" : "{\\"notificationType\\":\\"Bounce\\",\\"bounce\\":{\\"feedbackId\\":\\"010001879d0a9def-d9882210-6467-48ed-8088-2193c66a349b-000000\\",\\"bounceType\\":\\"Transient\\",\\"bounceSubType\\":\\"General\\",\\"bouncedRecipients\\":[{\\"emailAddress\\":\\"test@test.te\\",\\"action\\":\\"failed\\",\\"status\\":\\"5.7.1\\",\\"diagnosticCode\\":\\"smtp; 550 5.7.1 <test@test.te>: Recipient address rejected: Recipient not found\\"}],\\"timestamp\\":\\"2023-04-20T05:02:11.000Z\\",\\"remoteMtaIp\\":\\"1.2.3.4\\",\\"reportingMTA\\":\\"dns; test.smtp-out.amazonses.com\\"},\\"mail\\":{\\"timestamp\\":\\"2023-04-20T05:02:08.589Z\\",\\"source\\":\\"Standard Notes <backups@standardnotes.org>\\",\\"sourceArn\\":\\"arn:aws:ses:us-east-1:336603415364:identity/backups@standardnotes.org\\",\\"sourceIp\\":\\"1.2.3.4\\",\\"callerIdentity\\":\\"test\\",\\"sendingAccountId\\":\\"123456\\",\\"messageId\\":\\"010001879d0a92cd-00ed31d1-bf9e-4ce4-abb9-8c6e95a30733-000000\\",\\"destination\\":[\\"test@test.te\\"]}}"
}`
await createHandler().handleMessage(sqsMessage)
// eslint-disable-next-line @typescript-eslint/no-explicit-any
expect((<any>mockedStartBackgroundTransaction).mock.calls[0][0]).toBe('EMAIL_BOUNCED')
})
it('should not handle unsupported messages', async () => {
const sqsMessage = `{
"Message" : "{\\"notificationType\\":\\"TEST\\",\\"bounce\\":{\\"feedbackId\\":\\"010001879d0a9def-d9882210-6467-48ed-8088-2193c66a349b-000000\\",\\"bounceType\\":\\"Transient\\",\\"bounceSubType\\":\\"General\\",\\"bouncedRecipients\\":[{\\"emailAddress\\":\\"test@test.te\\",\\"action\\":\\"failed\\",\\"status\\":\\"5.7.1\\",\\"diagnosticCode\\":\\"smtp; 550 5.7.1 <test@test.te>: Recipient address rejected: Recipient not found\\"}],\\"timestamp\\":\\"2023-04-20T05:02:11.000Z\\",\\"remoteMtaIp\\":\\"1.2.3.4\\",\\"reportingMTA\\":\\"dns; test.smtp-out.amazonses.com\\"},\\"mail\\":{\\"timestamp\\":\\"2023-04-20T05:02:08.589Z\\",\\"source\\":\\"Standard Notes <backups@standardnotes.org>\\",\\"sourceArn\\":\\"arn:aws:ses:us-east-1:336603415364:identity/backups@standardnotes.org\\",\\"sourceIp\\":\\"1.2.3.4\\",\\"callerIdentity\\":\\"test\\",\\"sendingAccountId\\":\\"123456\\",\\"messageId\\":\\"010001879d0a92cd-00ed31d1-bf9e-4ce4-abb9-8c6e95a30733-000000\\",\\"destination\\":[\\"test@test.te\\"]}}"
}`
await createHandler().handleMessage(sqsMessage)
expect(handler.handle).not.toHaveBeenCalled()
})
it('should handle errors', async () => {
await createHandler().handleError(new Error('test'))
expect(logger.error).toHaveBeenCalled()
})
it('should tell if there is no handler for an event', async () => {
const sqsMessage = `{
"Message" : "{\\"notificationType\\":\\"Bounce\\",\\"bounce\\":{\\"feedbackId\\":\\"010001879d0a9def-d9882210-6467-48ed-8088-2193c66a349b-000000\\",\\"bounceType\\":\\"Transient\\",\\"bounceSubType\\":\\"General\\",\\"bouncedRecipients\\":[{\\"emailAddress\\":\\"test@test.te\\",\\"action\\":\\"failed\\",\\"status\\":\\"5.7.1\\",\\"diagnosticCode\\":\\"smtp; 550 5.7.1 <test@test.te>: Recipient address rejected: Recipient not found\\"}],\\"timestamp\\":\\"2023-04-20T05:02:11.000Z\\",\\"remoteMtaIp\\":\\"1.2.3.4\\",\\"reportingMTA\\":\\"dns; test.smtp-out.amazonses.com\\"},\\"mail\\":{\\"timestamp\\":\\"2023-04-20T05:02:08.589Z\\",\\"source\\":\\"Standard Notes <backups@standardnotes.org>\\",\\"sourceArn\\":\\"arn:aws:ses:us-east-1:336603415364:identity/backups@standardnotes.org\\",\\"sourceIp\\":\\"1.2.3.4\\",\\"callerIdentity\\":\\"test\\",\\"sendingAccountId\\":\\"123456\\",\\"messageId\\":\\"010001879d0a92cd-00ed31d1-bf9e-4ce4-abb9-8c6e95a30733-000000\\",\\"destination\\":[\\"test@test.te\\"]}}"
}`
const bounceHandler = new SQSNewRelicBounceNotificiationHandler(new Map([]), logger)
await bounceHandler.handleMessage(sqsMessage)
expect(logger.debug).toHaveBeenCalledWith('Event handler for event type EMAIL_BOUNCED does not exist')
expect(handler.handle).not.toHaveBeenCalled()
})
})

View File

@@ -0,0 +1,68 @@
import { Logger } from 'winston'
import * as newrelic from 'newrelic'
import {
DomainEventHandlerInterface,
DomainEventMessageHandlerInterface,
DomainEventService,
EmailBouncedEvent,
} from '@standardnotes/domain-events'
export class SQSNewRelicBounceNotificiationHandler implements DomainEventMessageHandlerInterface {
private readonly ALLOWED_NOTIFICATION_TYPES = ['Bounce']
constructor(private handlers: Map<string, DomainEventHandlerInterface>, private logger: Logger) {}
async handleMessage(message: string): Promise<void> {
const messageParsed = JSON.parse(JSON.parse(message).Message)
if (!this.ALLOWED_NOTIFICATION_TYPES.includes(messageParsed.notificationType)) {
this.logger.error(`Received notification of type ${messageParsed.notificationType} which is not allowed`)
return
}
for (const bouncedRecipient of messageParsed.bounce.bouncedRecipients) {
const domainEvent: EmailBouncedEvent = {
type: 'EMAIL_BOUNCED',
payload: {
bounceType: messageParsed.bounce.bounceType,
bounceSubType: messageParsed.bounce.bounceSubType,
recipientEmail: bouncedRecipient.emailAddress,
diagnosticCode: bouncedRecipient.diagnosticCode,
},
createdAt: new Date(),
meta: {
correlation: {
userIdentifier: bouncedRecipient.emailAddress,
userIdentifierType: 'email',
},
origin: DomainEventService.SES,
},
}
const handler = this.handlers.get(domainEvent.type)
if (!handler) {
this.logger.debug(`Event handler for event type ${domainEvent.type} does not exist`)
return
}
this.logger.debug(`Received event: ${domainEvent.type}`)
await newrelic.startBackgroundTransaction(
domainEvent.type,
/* istanbul ignore next */
() => {
newrelic.getTransaction()
return handler.handle(domainEvent)
},
)
}
}
async handleError(error: Error): Promise<void> {
this.logger.error('Error occured while handling SQS message: %O', error)
}
}

View File

@@ -5,6 +5,7 @@ export * from './Redis/RedisEventMessageHandler'
export * from './SNS/SNSDomainEventPublisher'
export * from './SQS/SQSNewRelicBounceNotificiationHandler'
export * from './SQS/SQSDomainEventSubscriberFactory'
export * from './SQS/SQSEventMessageHandler'
export * from './SQS/SQSNewRelicEventMessageHandler'

View File

@@ -3,6 +3,12 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# [2.109.0](https://github.com/standardnotes/server/compare/@standardnotes/domain-events@2.108.1...@standardnotes/domain-events@2.109.0) (2023-04-21)
### Features
* **domain-events-infra:** add SES email bounce notifications handler ([#569](https://github.com/standardnotes/server/issues/569)) ([9b9f10d](https://github.com/standardnotes/server/commit/9b9f10d4ca9ceef1defa868b7c96f570e46d8053))
## [2.108.1](https://github.com/standardnotes/server/compare/@standardnotes/domain-events@2.108.0...@standardnotes/domain-events@2.108.1) (2023-02-23)
**Note:** Version bump only for package @standardnotes/domain-events

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/domain-events",
"version": "2.108.1",
"version": "2.109.0",
"engines": {
"node": ">=18.0.0 <19.0.0"
},

View File

@@ -12,4 +12,5 @@ export enum DomainEventService {
Revisions = 'revisions',
Email = 'email',
Settings = 'settings',
SES = 'ses',
}

View File

@@ -0,0 +1,7 @@
import { DomainEventInterface } from './DomainEventInterface'
import { EmailBouncedEventPayload } from './EmailBouncedEventPayload'
export interface EmailBouncedEvent extends DomainEventInterface {
type: 'EMAIL_BOUNCED'
payload: EmailBouncedEventPayload
}

View File

@@ -0,0 +1,6 @@
export interface EmailBouncedEventPayload {
recipientEmail: string
bounceType: string
bounceSubType: string
diagnosticCode?: string
}

View File

@@ -12,6 +12,8 @@ export * from './Event/DuplicateItemSyncedEvent'
export * from './Event/DuplicateItemSyncedEventPayload'
export * from './Event/EmailBackupRequestedEvent'
export * from './Event/EmailBackupRequestedEventPayload'
export * from './Event/EmailBouncedEvent'
export * from './Event/EmailBouncedEventPayload'
export * from './Event/EmailRequestedEvent'
export * from './Event/EmailRequestedEventPayload'
export * from './Event/EmailSentEvent'

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.7.9](https://github.com/standardnotes/server/compare/@standardnotes/event-store@1.7.8...@standardnotes/event-store@1.7.9) (2023-04-21)
**Note:** Version bump only for package @standardnotes/event-store
## [1.7.8](https://github.com/standardnotes/server/compare/@standardnotes/event-store@1.7.7...@standardnotes/event-store@1.7.8) (2023-04-21)
**Note:** Version bump only for package @standardnotes/event-store
## [1.7.7](https://github.com/standardnotes/server/compare/@standardnotes/event-store@1.7.6...@standardnotes/event-store@1.7.7) (2023-03-30)
**Note:** Version bump only for package @standardnotes/event-store
## [1.7.6](https://github.com/standardnotes/server/compare/@standardnotes/event-store@1.7.5...@standardnotes/event-store@1.7.6) (2023-03-10)
**Note:** Version bump only for package @standardnotes/event-store
## [1.7.5](https://github.com/standardnotes/server/compare/@standardnotes/event-store@1.7.4...@standardnotes/event-store@1.7.5) (2023-03-09)
**Note:** Version bump only for package @standardnotes/event-store

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/event-store",
"version": "1.7.5",
"version": "1.7.9",
"description": "Event Store Service",
"private": true,
"main": "dist/src/index.js",
@@ -21,7 +21,7 @@
"devDependencies": {
"@types/ioredis": "^5.0.0",
"@types/jest": "^29.1.1",
"@types/newrelic": "^9.4.0",
"@types/newrelic": "^9.13.0",
"@types/nodemailer": "^6.4.1",
"@typescript-eslint/eslint-plugin": "^5.48.2",
"eslint": "^8.32.0",
@@ -39,7 +39,7 @@
"inversify": "^6.0.1",
"ioredis": "^5.2.4",
"mysql2": "^3.0.1",
"newrelic": "^9.8.0",
"newrelic": "^10.0.0",
"reflect-metadata": "0.1.13",
"typeorm": "^0.3.10",
"winston": "^3.8.1"

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.10.11](https://github.com/standardnotes/files/compare/@standardnotes/files-server@1.10.10...@standardnotes/files-server@1.10.11) (2023-04-21)
**Note:** Version bump only for package @standardnotes/files-server
## [1.10.10](https://github.com/standardnotes/files/compare/@standardnotes/files-server@1.10.9...@standardnotes/files-server@1.10.10) (2023-04-21)
**Note:** Version bump only for package @standardnotes/files-server
## [1.10.9](https://github.com/standardnotes/files/compare/@standardnotes/files-server@1.10.8...@standardnotes/files-server@1.10.9) (2023-03-30)
**Note:** Version bump only for package @standardnotes/files-server
## [1.10.8](https://github.com/standardnotes/files/compare/@standardnotes/files-server@1.10.7...@standardnotes/files-server@1.10.8) (2023-03-10)
**Note:** Version bump only for package @standardnotes/files-server
## [1.10.7](https://github.com/standardnotes/files/compare/@standardnotes/files-server@1.10.6...@standardnotes/files-server@1.10.7) (2023-03-09)
**Note:** Version bump only for package @standardnotes/files-server

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/files-server",
"version": "1.10.7",
"version": "1.10.11",
"engines": {
"node": ">=18.0.0 <19.0.0"
},
@@ -48,7 +48,7 @@
"inversify-express-utils": "^6.4.3",
"ioredis": "^5.2.4",
"jsonwebtoken": "^9.0.0",
"newrelic": "^9.8.0",
"newrelic": "^10.0.0",
"nodemon": "^2.0.19",
"prettyjson": "^1.2.5",
"reflect-metadata": "^0.1.13",
@@ -63,7 +63,7 @@
"@types/ioredis": "^5.0.0",
"@types/jest": "^29.1.1",
"@types/jsonwebtoken": "^9.0.1",
"@types/newrelic": "^9.4.0",
"@types/newrelic": "^9.13.0",
"@types/prettyjson": "^0.0.30",
"@types/uuid": "^8.3.0",
"@typescript-eslint/eslint-plugin": "^5.48.2",

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.
## [1.12.14](https://github.com/standardnotes/server/compare/@standardnotes/revisions-server@1.12.13...@standardnotes/revisions-server@1.12.14) (2023-04-21)
**Note:** Version bump only for package @standardnotes/revisions-server
## [1.12.13](https://github.com/standardnotes/server/compare/@standardnotes/revisions-server@1.12.12...@standardnotes/revisions-server@1.12.13) (2023-04-21)
**Note:** Version bump only for package @standardnotes/revisions-server
## [1.12.12](https://github.com/standardnotes/server/compare/@standardnotes/revisions-server@1.12.11...@standardnotes/revisions-server@1.12.12) (2023-03-30)
**Note:** Version bump only for package @standardnotes/revisions-server
## [1.12.11](https://github.com/standardnotes/server/compare/@standardnotes/revisions-server@1.12.10...@standardnotes/revisions-server@1.12.11) (2023-03-15)
### Bug Fixes
* **revisions:** add warning logs if a revision dump could not be found ([c76302c](https://github.com/standardnotes/server/commit/c76302cf9868f59770bde3882dcac67f4c51314b))
## [1.12.10](https://github.com/standardnotes/server/compare/@standardnotes/revisions-server@1.12.9...@standardnotes/revisions-server@1.12.10) (2023-03-10)
**Note:** Version bump only for package @standardnotes/revisions-server
## [1.12.9](https://github.com/standardnotes/server/compare/@standardnotes/revisions-server@1.12.8...@standardnotes/revisions-server@1.12.9) (2023-03-09)
**Note:** Version bump only for package @standardnotes/revisions-server

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/revisions-server",
"version": "1.12.9",
"version": "1.12.14",
"engines": {
"node": ">=18.0.0 <19.0.0"
},
@@ -25,7 +25,7 @@
"dependencies": {
"@aws-sdk/client-s3": "^3.259.0",
"@aws-sdk/client-sqs": "^3.259.0",
"@newrelic/winston-enricher": "^4.0.0",
"@newrelic/winston-enricher": "^4.0.1",
"@sentry/node": "^7.28.1",
"@standardnotes/api": "^1.25.3",
"@standardnotes/common": "workspace:^",
@@ -41,7 +41,7 @@
"inversify": "^6.0.1",
"inversify-express-utils": "^6.4.3",
"mysql2": "^3.0.1",
"newrelic": "^9.8.0",
"newrelic": "^10.0.0",
"reflect-metadata": "0.1.13",
"typeorm": "^0.3.10",
"winston": "^3.8.1"
@@ -52,7 +52,7 @@
"@types/express": "^4.17.14",
"@types/inversify-express-utils": "^2.0.0",
"@types/jest": "^29.1.1",
"@types/newrelic": "^9.4.0",
"@types/newrelic": "^9.13.0",
"@typescript-eslint/eslint-plugin": "^5.48.2",
"eslint": "^8.32.0",
"eslint-plugin-prettier": "^4.0.0",

View File

@@ -83,6 +83,7 @@ export class WorkerContainerConfigLoader extends CommonContainerConfigLoader {
context.container.get(TYPES.S3_BACKUP_BUCKET_NAME),
context.container.get(TYPES.S3),
context.container.get(TYPES.RevisionItemStringMapper),
context.container.get(TYPES.Logger),
)
} else {
return new FSDumpRepository(context.container.get(TYPES.RevisionItemStringMapper))

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