Compare commits

...

69 Commits

Author SHA1 Message Date
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
standardci
b0baaf9ea6 chore(release): publish new version
- @standardnotes/analytics@2.21.3
 - @standardnotes/api-gateway@1.49.6
 - @standardnotes/auth-server@1.93.6
 - @standardnotes/event-store@1.7.5
 - @standardnotes/files-server@1.10.7
 - @standardnotes/revisions-server@1.12.9
 - @standardnotes/scheduler-server@1.17.7
 - @standardnotes/syncing-server@1.32.2
 - @standardnotes/websockets-server@1.6.8
2023-03-09 12:43:53 +00:00
Karol Sójko
b7c6dab3ad chore: upgrade node version to latest LTS 2023-03-09 13:30:16 +01:00
standardci
2daa145867 chore(release): publish new version
- @standardnotes/auth-server@1.93.5
2023-03-09 10:02:53 +00:00
Karol Sójko
4bd5fb22b4 fix(auth): remove migrate email settings procedure 2023-03-09 10:48:40 +01:00
standardci
78533a6045 chore(release): publish new version
- @standardnotes/auth-server@1.93.4
2023-03-09 06:25:32 +00:00
Karol Sójko
e1c533a15e fix(auth): change response from verifying authenticator registration 2023-03-09 07:09:43 +01:00
standardci
b6c2bb8023 chore(release): publish new version
- @standardnotes/auth-server@1.93.3
2023-03-09 05:59:55 +00:00
Karol Sójko
c45653a50a fix(auth): remove authenticator names from server 2023-03-09 06:46:35 +01:00
Karol Sójko
d827513b73 fix(auth): migrate encrypted sign in settings 2023-03-09 06:34:50 +01:00
standardci
ad183ca621 chore(release): publish new version
- @standardnotes/auth-server@1.93.2
2023-03-08 13:22:34 +00:00
Karol Sójko
1d11c5a186 fix(auth): authentication options 2023-03-08 14:08:40 +01:00
standardci
e84e78ec55 chore(release): publish new version
- @standardnotes/auth-server@1.93.1
2023-03-08 12:57:57 +00:00
Karol Sójko
f91e4316ff fix(auth): migrate muted email notifications settings 2023-03-08 13:42:45 +01:00
standardci
d54b812881 chore(release): publish new version
- @standardnotes/analytics@2.21.2
 - @standardnotes/api-gateway@1.49.5
 - @standardnotes/auth-server@1.93.0
 - @standardnotes/domain-core@1.12.0
 - @standardnotes/files-server@1.10.6
 - @standardnotes/revisions-server@1.12.8
 - @standardnotes/scheduler-server@1.17.6
 - @standardnotes/settings@1.20.1
 - @standardnotes/syncing-server@1.32.1
 - @standardnotes/websockets-server@1.6.7
2023-03-08 10:09:09 +00:00
Karol Sójko
28dc5ba2a4 fix(auth): setting name value objects in typeorm queries 2023-03-08 10:54:48 +01:00
Karol Sójko
979a320ca6 feat(domain-core): add internal team user role (#473)
* feat(domain-core): add internal team user role

* feat(auth): add internal team user role

* chore: upgrade @standardnotes/features

---------

Co-authored-by: Karol Sójko <karolsojko@protonmail.com>
2023-03-08 10:45:50 +01:00
standardci
c46186b237 chore(release): publish new version
- @standardnotes/auth-server@1.92.0
 - @standardnotes/settings@1.20.0
 - @standardnotes/syncing-server@1.32.0
2023-03-08 09:35:54 +00:00
Karol Sójko
27cf093f85 feat: sign in setting refactor (#472)
* fix(auth): refactor setting names into domain core value objects

* fix(auth): refactor specs with setting name value objects

* feat(auth): move mute sign in emails to a subscription kind of setting

* feat(auth): add migration script to change sign in email settings to subscription settings

* chore: fix setting name usage

* fix(auth): upper casing setting names

---------

Co-authored-by: Karol Sójko <karolsojko@protonmail.com>
2023-03-08 10:22:27 +01:00
standardci
ec0fb7e0b9 chore(release): publish new version
- @standardnotes/auth-server@1.91.2
2023-03-06 14:02:45 +00:00
Karol Sójko
90029456fe fix(auth): associate setting with sign in alerts permission 2023-03-06 14:48:21 +01:00
Karol Sójko
b167b00075 fix(auth): remove sign in emails permission from free accounts 2023-03-06 14:44:50 +01:00
standardci
b13fab76f3 chore(release): publish new version
- @standardnotes/auth-server@1.91.1
2023-03-06 13:28:57 +00:00
Karol Sójko
782a9d310d fix(auth): disable sign in emails on newly created accounts 2023-03-06 14:15:10 +01:00
standardci
537b1f2a29 chore(release): publish new version
- @standardnotes/auth-server@1.91.0
2023-03-06 10:00:13 +00:00
Karol Sójko
2fad6b62cb feat(auth): add cleanup of expired sessions 2023-03-06 10:43:53 +01:00
standardci
bf173b4ede chore(release): publish new version
- @standardnotes/auth-server@1.90.1
2023-03-06 09:17:04 +00:00
Eric Pierce
c52f038c76 fix: Adding support for redis databases with passwords (#468)
Redis databases with passwords can be supported by specifying the environment parameter REDIS_URL=redis://:$REDIS_PASSWORD@redis:6379
Without this change the redis URL will always be hardcoded without support for a password
2023-03-06 10:02:36 +01:00
mousta0x
b12ba98a5c fix: revisions server url (#469) 2023-03-06 09:57:56 +01:00
Karol Sójko
dbccdf342b fix(auth): prevent listing sessions on readonly access 2023-03-06 09:47:54 +01:00
standardci
49b6d029c4 chore(release): publish new version
- @standardnotes/auth-server@1.90.0
2023-03-02 14:10:08 +00:00
Karol Sójko
d6469954ce feat(auth): add configurable list of readonly users (#462) 2023-03-02 14:51:52 +01:00
standardci
5f40550ad4 chore(release): publish new version
- @standardnotes/auth-server@1.89.7
2023-03-02 11:20:59 +00:00
Karol Sójko
79ccbdf100 fix(auth): function naming for more clarity 2023-03-02 12:07:17 +01:00
standardci
1983cfcab2 chore(release): publish new version
- @standardnotes/auth-server@1.89.6
2023-03-02 10:32:02 +00:00
Karol Sójko
753f86707f fix(auth): changing the updated_at property on sessions 2023-03-02 11:16:32 +01:00
209 changed files with 3423 additions and 1552 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

2
.nvmrc
View File

@@ -1 +1 @@
18.13.0
18.15.0

163
.pnp.cjs generated
View File

@@ -129,7 +129,7 @@ const RAW_RUNTIME_STATE =
["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:9.14.1"],\
["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:9c16c41166def6912b41a967733682217aff4857ab9622fcfed88933c386ec783485c8fb91327c5de4b6cc0639ea6553a848118414f8b898ea3a1556278ef55f#npm:5.0.2", {\
"packageLocation": "./.yarn/__virtual__/@newrelic-aws-sdk-virtual-40f6576f5f/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:9c16c41166def6912b41a967733682217aff4857ab9622fcfed88933c386ec783485c8fb91327c5de4b6cc0639ea6553a848118414f8b898ea3a1556278ef55f#npm:5.0.2"],\
["@types/newrelic", null],\
["newrelic", "npm:9.8.0"]\
["newrelic", "npm:9.14.1"]\
],\
"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:9c16c41166def6912b41a967733682217aff4857ab9622fcfed88933c386ec783485c8fb91327c5de4b6cc0639ea6553a848118414f8b898ea3a1556278ef55f#npm:7.1.1", {\
"packageLocation": "./.yarn/__virtual__/@newrelic-koa-virtual-cee5769872/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:9c16c41166def6912b41a967733682217aff4857ab9622fcfed88933c386ec783485c8fb91327c5de4b6cc0639ea6553a848118414f8b898ea3a1556278ef55f#npm:7.1.1"],\
["@types/newrelic", null],\
["newrelic", "npm:9.8.0"]\
["newrelic", "npm:9.14.1"]\
],\
"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:9c16c41166def6912b41a967733682217aff4857ab9622fcfed88933c386ec783485c8fb91327c5de4b6cc0639ea6553a848118414f8b898ea3a1556278ef55f#npm:6.0.0", {\
"packageLocation": "./.yarn/__virtual__/@newrelic-superagent-virtual-55220e5bf2/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:9c16c41166def6912b41a967733682217aff4857ab9622fcfed88933c386ec783485c8fb91327c5de4b6cc0639ea6553a848118414f8b898ea3a1556278ef55f#npm:6.0.0"],\
["@types/newrelic", null],\
["newrelic", "npm:9.8.0"]\
["newrelic", "npm:9.14.1"]\
],\
"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"],\
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.1"],\
["@types/newrelic", "npm:9.4.0"],\
["newrelic", "npm:9.8.0"]\
["newrelic", "npm:9.14.1"]\
],\
"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"],\
@@ -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:9.14.1"],\
["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"],\
@@ -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:9.14.1"],\
["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.4"],\
["@standardnotes/features", "npm:1.58.12"],\
["@standardnotes/predicates", "workspace:packages/predicates"],\
["@standardnotes/responses", "npm:1.13.9"],\
["@standardnotes/security", "workspace:packages/security"],\
@@ -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:9.14.1"],\
["nodemon", "npm:2.0.20"],\
["npm-check-updates", "npm:16.0.1"],\
["otplib", "npm:12.0.1"],\
@@ -4291,7 +4303,7 @@ const RAW_RUNTIME_STATE =
["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:9.14.1"],\
["reflect-metadata", "npm:0.1.13"],\
["sqs-consumer", "virtual:685a6222c3349423674bb7f0684ba34e2ab20912010f352e04dcf707a156e13183fc382e2417cb37a60f3e7b52fd0178c53181674890e1773eb83e190dc13378#npm:6.2.1"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.0.3"],\
@@ -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:9.14.1"],\
["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.4", {\
"packageLocation": "./.yarn/cache/@standardnotes-features-npm-1.58.4-a84962d125-a39afc145a.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.4"],\
["@standardnotes/features", "npm:1.58.12"],\
["@standardnotes/common", "workspace:packages/common"],\
["@standardnotes/domain-core", "workspace:packages/domain-core"],\
["@standardnotes/security", "workspace:packages/security"],\
@@ -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:9.14.1"],\
["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"],\
@@ -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:9.14.1"],\
["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"],\
@@ -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:9.14.1"],\
["npm-check-updates", "npm:16.0.1"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.0.3"],\
@@ -4587,7 +4599,7 @@ const RAW_RUNTIME_STATE =
["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:9.14.1"],\
["npm-check-updates", "npm:16.0.1"],\
["prettier", "npm:2.7.1"],\
["ts-node", "virtual:8859b278716fedf3e7458b5628625f7e35678c418626878559a0b816445001b7e24c55546f4677ba4c20b521aa0cf52cc33ac07deff171e383ada6eeab69933f#npm:10.9.1"],\
@@ -4601,6 +4613,7 @@ const RAW_RUNTIME_STATE =
"packageLocation": "./packages/settings/",\
"packageDependencies": [\
["@standardnotes/settings", "workspace:packages/settings"],\
["@standardnotes/domain-core", "workspace:packages/domain-core"],\
["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:5.48.2"],\
["eslint-plugin-prettier", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:4.2.1"],\
["reflect-metadata", "npm:0.1.13"],\
@@ -4655,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"],\
@@ -4690,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:9.14.1"],\
["nodemon", "npm:2.0.20"],\
["npm-check-updates", "npm:16.0.1"],\
["prettyjson", "npm:1.2.5"],\
@@ -4754,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"],\
@@ -4781,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:9.14.1"],\
["reflect-metadata", "npm:0.1.13"],\
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.0.3"],\
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.10"],\
@@ -6375,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/",\
@@ -10497,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/",\
@@ -11470,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:9.14.1", {\
"packageLocation": "./.yarn/cache/newrelic-npm-9.14.1-9c16c41166-e050f9198a.zip/node_modules/newrelic/",\
"packageDependencies": [\
["newrelic", "npm:9.8.0"],\
["newrelic", "npm:9.14.1"],\
["@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:9c16c41166def6912b41a967733682217aff4857ab9622fcfed88933c386ec783485c8fb91327c5de4b6cc0639ea6553a848118414f8b898ea3a1556278ef55f#npm:5.0.2"],\
["@newrelic/koa", "virtual:9c16c41166def6912b41a967733682217aff4857ab9622fcfed88933c386ec783485c8fb91327c5de4b6cc0639ea6553a848118414f8b898ea3a1556278ef55f#npm:7.1.1"],\
["@newrelic/native-metrics", "npm:9.0.0"],\
["@newrelic/superagent", "virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:6.0.0"],\
["@newrelic/superagent", "virtual:9c16c41166def6912b41a967733682217aff4857ab9622fcfed88933c386ec783485c8fb91327c5de4b6cc0639ea6553a848118414f8b898ea3a1556278ef55f#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"]\
],\
@@ -12833,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.

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)/binding.gyp $(srcdir)/../../../../node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/addon.gypi $(srcdir)/../../../../../../../../Library/Caches/node-gyp/18.15.0/include/node/common.gypi $(srcdir)/build/config.gypi
$(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

@@ -1,4 +1,4 @@
FROM node:18.13.0-alpine
FROM node:18.15.0-alpine
ENV NODE_ENV production

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,25 +64,31 @@ 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
export REDIS_URL="redis://$REDIS_HOST"
if [ -z "$REDIS_URL" ]; then
export REDIS_URL="redis://$REDIS_HOST"
fi
##########
# SHARED #
##########
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
########
@@ -120,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
@@ -170,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
@@ -349,7 +369,7 @@ export API_GATEWAY_NEW_RELIC_NO_CONFIG_FILE=true
export API_GATEWAY_SYNCING_SERVER_JS_URL=http://localhost:$SYNCING_SERVER_PORT
export API_GATEWAY_AUTH_SERVER_URL=http://localhost:$AUTH_SERVER_PORT
export API_GATEWAY_REVISIONS_SERVER_URL=http://localhost:3005
export API_GATEWAY_REVISIONS_SERVER_URL=http://localhost:$REVISIONS_SERVER_PORT
if [ -z "$PUBLIC_FILES_SERVER_URL" ]; then
export PUBLIC_FILES_SERVER_URL=http://localhost:3125
fi

View File

@@ -40,6 +40,6 @@
"packageManager": "yarn@4.0.0-rc.25",
"dependencies": {
"@sentry/node": "^7.28.1",
"newrelic": "^9.8.0"
"newrelic": "^9.14.1"
}
}

View File

@@ -3,6 +3,26 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [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
## [2.21.2](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.21.1...@standardnotes/analytics@2.21.2) (2023-03-08)
**Note:** Version bump only for package @standardnotes/analytics
## [2.21.1](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.21.0...@standardnotes/analytics@2.21.1) (2023-02-23)
### Bug Fixes

View File

@@ -1,4 +1,4 @@
FROM node:18.13.0-alpine
FROM node:18.15.0-alpine
RUN apk add --update \
curl \

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/analytics",
"version": "2.21.1",
"version": "2.21.6",
"engines": {
"node": ">=18.0.0 <19.0.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": "^9.14.1",
"reflect-metadata": "^0.1.13",
"typeorm": "^0.3.10",
"winston": "^3.8.1"

View File

@@ -3,6 +3,26 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [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
## [1.49.5](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.49.4...@standardnotes/api-gateway@1.49.5) (2023-03-08)
**Note:** Version bump only for package @standardnotes/api-gateway
## [1.49.4](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.49.3...@standardnotes/api-gateway@1.49.4) (2023-02-25)
**Note:** Version bump only for package @standardnotes/api-gateway

View File

@@ -1,4 +1,4 @@
FROM node:18.13.0-alpine
FROM node:18.15.0-alpine
RUN apk add --update \
curl \

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/api-gateway",
"version": "1.49.4",
"version": "1.49.9",
"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": "^9.14.1",
"prettyjson": "^1.2.5",
"reflect-metadata": "0.1.13",
"winston": "^3.8.1"

View File

@@ -3,6 +3,176 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [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
## [1.93.5](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.4...@standardnotes/auth-server@1.93.5) (2023-03-09)
### Bug Fixes
* **auth:** remove migrate email settings procedure ([4bd5fb2](https://github.com/standardnotes/server/commit/4bd5fb22b447b0e0fdb136aa46ddc812c8b272cd))
## [1.93.4](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.3...@standardnotes/auth-server@1.93.4) (2023-03-09)
### Bug Fixes
* **auth:** change response from verifying authenticator registration ([e1c533a](https://github.com/standardnotes/server/commit/e1c533a15e33e215e90fbe15d2d4994605eaa1bd))
## [1.93.3](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.2...@standardnotes/auth-server@1.93.3) (2023-03-09)
### Bug Fixes
* **auth:** migrate encrypted sign in settings ([d827513](https://github.com/standardnotes/server/commit/d827513b73a57fbdb72c3112f32dc2a296103450))
* **auth:** remove authenticator names from server ([c45653a](https://github.com/standardnotes/server/commit/c45653a50a9d25de1e0fc86127ff6931dc98406d))
## [1.93.2](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.1...@standardnotes/auth-server@1.93.2) (2023-03-08)
### Bug Fixes
* **auth:** authentication options ([1d11c5a](https://github.com/standardnotes/server/commit/1d11c5a1865f81ca57d0ad4313cc3df497b4c445))
## [1.93.1](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.93.0...@standardnotes/auth-server@1.93.1) (2023-03-08)
### Bug Fixes
* **auth:** migrate muted email notifications settings ([f91e431](https://github.com/standardnotes/server/commit/f91e4316ff4993d032c016bb233b93a9f3356cf3))
# [1.93.0](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.92.0...@standardnotes/auth-server@1.93.0) (2023-03-08)
### Bug Fixes
* **auth:** setting name value objects in typeorm queries ([28dc5ba](https://github.com/standardnotes/server/commit/28dc5ba2a4e946b7aed86432da160c0be76f839d))
### Features
* **domain-core:** add internal team user role ([#473](https://github.com/standardnotes/server/issues/473)) ([979a320](https://github.com/standardnotes/server/commit/979a320ca666991ad2b023436f58c59ae168c768))
# [1.92.0](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.91.2...@standardnotes/auth-server@1.92.0) (2023-03-08)
### Features
* sign in setting refactor ([#472](https://github.com/standardnotes/server/issues/472)) ([27cf093](https://github.com/standardnotes/server/commit/27cf093f85d0f2e208f48e7c7ddcce36b341ffb7))
## [1.91.2](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.91.1...@standardnotes/auth-server@1.91.2) (2023-03-06)
### Bug Fixes
* **auth:** associate setting with sign in alerts permission ([9002945](https://github.com/standardnotes/server/commit/90029456fe6d654747d6b8b7ae106d3d58b3a3fe))
* **auth:** remove sign in emails permission from free accounts ([b167b00](https://github.com/standardnotes/server/commit/b167b0007555b3850ae274354b6c271fe0a1e47f))
## [1.91.1](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.91.0...@standardnotes/auth-server@1.91.1) (2023-03-06)
### Bug Fixes
* **auth:** disable sign in emails on newly created accounts ([782a9d3](https://github.com/standardnotes/server/commit/782a9d310dc2d2819a49540138ed10b36ebd0d94))
# [1.91.0](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.90.1...@standardnotes/auth-server@1.91.0) (2023-03-06)
### Features
* **auth:** add cleanup of expired sessions ([2fad6b6](https://github.com/standardnotes/server/commit/2fad6b62cbb5bec38a3171a996d3f9c4eedf7836))
## [1.90.1](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.90.0...@standardnotes/auth-server@1.90.1) (2023-03-06)
### Bug Fixes
* **auth:** prevent listing sessions on readonly access ([dbccdf3](https://github.com/standardnotes/server/commit/dbccdf342b52f81fb14f246784d5dc6def2ff3fc))
# [1.90.0](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.89.7...@standardnotes/auth-server@1.90.0) (2023-03-02)
### Features
* **auth:** add configurable list of readonly users ([#462](https://github.com/standardnotes/server/issues/462)) ([d646995](https://github.com/standardnotes/server/commit/d6469954ceb24580c465535e61588b04924734ab))
## [1.89.7](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.89.6...@standardnotes/auth-server@1.89.7) (2023-03-02)
### Bug Fixes
* **auth:** function naming for more clarity ([79ccbdf](https://github.com/standardnotes/server/commit/79ccbdf1000c699074b5271f3c04a30fcb1b3311))
## [1.89.6](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.89.5...@standardnotes/auth-server@1.89.6) (2023-03-02)
### Bug Fixes
* **auth:** changing the updated_at property on sessions ([753f867](https://github.com/standardnotes/server/commit/753f86707ffdbab0d04f49b42275dbb28589780b))
## [1.89.5](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.89.4...@standardnotes/auth-server@1.89.5) (2023-03-01)
**Note:** Version bump only for package @standardnotes/auth-server

View File

@@ -1,4 +1,4 @@
FROM node:18.13.0-alpine
FROM node:18.15.0-alpine
RUN apk add --update \
curl \

View File

@@ -32,36 +32,36 @@ const requestBackups = async (
): Promise<void> => {
let settingName: SettingName,
permissionName: PermissionName,
muteEmailsSettingName: SettingName,
muteEmailsSettingName: string,
muteEmailsSettingValue: string,
providerTokenSettingName: SettingName
switch (backupProvider) {
case 'email':
settingName = SettingName.EmailBackupFrequency
settingName = SettingName.create(SettingName.NAMES.EmailBackupFrequency).getValue()
permissionName = PermissionName.DailyEmailBackup
muteEmailsSettingName = SettingName.MuteFailedBackupsEmails
muteEmailsSettingName = SettingName.NAMES.MuteFailedBackupsEmails
muteEmailsSettingValue = MuteFailedBackupsEmailsOption.Muted
break
case 'dropbox':
settingName = SettingName.DropboxBackupFrequency
settingName = SettingName.create(SettingName.NAMES.DropboxBackupFrequency).getValue()
permissionName = PermissionName.DailyDropboxBackup
muteEmailsSettingName = SettingName.MuteFailedCloudBackupsEmails
muteEmailsSettingName = SettingName.NAMES.MuteFailedCloudBackupsEmails
muteEmailsSettingValue = MuteFailedCloudBackupsEmailsOption.Muted
providerTokenSettingName = SettingName.DropboxBackupToken
providerTokenSettingName = SettingName.create(SettingName.NAMES.DropboxBackupToken).getValue()
break
case 'one_drive':
settingName = SettingName.OneDriveBackupFrequency
settingName = SettingName.create(SettingName.NAMES.OneDriveBackupFrequency).getValue()
permissionName = PermissionName.DailyOneDriveBackup
muteEmailsSettingName = SettingName.MuteFailedCloudBackupsEmails
muteEmailsSettingName = SettingName.NAMES.MuteFailedCloudBackupsEmails
muteEmailsSettingValue = MuteFailedCloudBackupsEmailsOption.Muted
providerTokenSettingName = SettingName.OneDriveBackupToken
providerTokenSettingName = SettingName.create(SettingName.NAMES.OneDriveBackupToken).getValue()
break
case 'google_drive':
settingName = SettingName.GoogleDriveBackupFrequency
settingName = SettingName.create(SettingName.NAMES.GoogleDriveBackupFrequency).getValue()
permissionName = PermissionName.DailyGDriveBackup
muteEmailsSettingName = SettingName.MuteFailedCloudBackupsEmails
muteEmailsSettingName = SettingName.NAMES.MuteFailedCloudBackupsEmails
muteEmailsSettingValue = MuteFailedCloudBackupsEmailsOption.Muted
providerTokenSettingName = SettingName.GoogleDriveBackupToken
providerTokenSettingName = SettingName.create(SettingName.NAMES.GoogleDriveBackupToken).getValue()
break
default:
throw new Error(`Not handled backup provider: ${backupProvider}`)

View File

@@ -8,6 +8,17 @@ import { ContainerConfigLoader } from '../src/Bootstrap/Container'
import TYPES from '../src/Bootstrap/Types'
import { Env } from '../src/Bootstrap/Env'
import { CleanupSessionTraces } from '../src/Domain/UseCase/CleanupSessionTraces/CleanupSessionTraces'
import { CleanupExpiredSessions } from '../src/Domain/UseCase/CleanupExpiredSessions/CleanupExpiredSessions'
const cleanup = async (
cleanupSessionTraces: CleanupSessionTraces,
cleanupExpiredSessions: CleanupExpiredSessions,
): Promise<void> => {
const date = new Date()
await cleanupSessionTraces.execute({ date })
await cleanupExpiredSessions.execute({ date })
}
const container = new ContainerConfigLoader()
void container.load().then((container) => {
@@ -16,22 +27,19 @@ void container.load().then((container) => {
const logger: Logger = container.get(TYPES.Logger)
logger.info('Starting session traces cleanup')
logger.info('Starting sessions and session traces cleanup')
const cleanupSessionTraces: CleanupSessionTraces = container.get(TYPES.CleanupSessionTraces)
const cleanupExpiredSessions: CleanupExpiredSessions = container.get(TYPES.CleanupExpiredSessions)
Promise.resolve(
cleanupSessionTraces.execute({
date: new Date(),
}),
)
Promise.resolve(cleanup(cleanupSessionTraces, cleanupExpiredSessions))
.then(() => {
logger.info('Expired session traces cleaned.')
logger.info('Expired sessions and session traces cleaned.')
process.exit(0)
})
.catch((error) => {
logger.error(`Could not clean session traces: ${error.message}`)
logger.error(`Could not clean sessions and session traces: ${error.message}`)
process.exit(1)
})

View File

@@ -28,7 +28,7 @@ const requestBackups = async (
domainEventPublisher: DomainEventPublisherInterface,
): Promise<void> => {
const permissionName = PermissionName.DailyEmailBackup
const muteEmailsSettingName = SettingName.MuteFailedBackupsEmails
const muteEmailsSettingName = SettingName.NAMES.MuteFailedBackupsEmails
const muteEmailsSettingValue = MuteFailedBackupsEmailsOption.Muted
if (!backupEmail) {

View File

@@ -34,7 +34,7 @@ export class moveMfaItemsToUserSettings1627638504691 implements MigrationInterfa
const setting = new Setting()
setting.uuid = item['uuid']
setting.name = SettingName.MfaSecret
setting.name = SettingName.NAMES.MfaSecret
setting.value = item['content']
if (item['deleted']) {
setting.value = null

View File

@@ -0,0 +1,16 @@
import { MigrationInterface, QueryRunner } from 'typeorm'
export class removeSignInEmailsOnFreeAcounts1678110075698 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
'DELETE FROM `role_permissions` WHERE role_uuid="23bf88ca-bee1-4a4c-adf0-b7a48749eea7" AND permission_uuid="2074d312-78bc-4533-b008-38e1232226c0"',
)
await queryRunner.query(
'DELETE FROM `role_permissions` WHERE role_uuid="bde42e26-628c-44e6-9d76-21b08954b0bf" AND permission_uuid="2074d312-78bc-4533-b008-38e1232226c0"',
)
}
public async down(): Promise<void> {
return
}
}

View File

@@ -0,0 +1,26 @@
import { MigrationInterface, QueryRunner } from 'typeorm'
export class addInternalTeamUserRole1678266947362 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
// remove beta files user role and permission
await queryRunner.query('DELETE FROM `role_permissions` WHERE role_uuid="1cd9ee6e-bc95-4f32-957c-d8c41f94d4ef"')
await queryRunner.query('DELETE FROM `user_roles` WHERE role_uuid="1cd9ee6e-bc95-4f32-957c-d8c41f94d4ef"')
await queryRunner.query('DELETE FROM `roles` WHERE name="FILES_BETA_USER"')
await queryRunner.query('DELETE FROM `permissions` WHERE name="app:files-beta"')
// add internal team user role and permission
await queryRunner.query(
'INSERT INTO `roles` (uuid, name, version) VALUES ("9f8d2313-e8d0-48ad-b19c-026601d0ddf4", "INTERNAL_TEAM_USER", 1)',
)
await queryRunner.query(
'INSERT INTO `permissions` (uuid, name) VALUES ("fb13e7d3-936f-4ded-a543-e1650cc99dfd", "server:universal-second-factor")',
)
await queryRunner.query(
'INSERT INTO `role_permissions` (role_uuid, permission_uuid) VALUES ("9f8d2313-e8d0-48ad-b19c-026601d0ddf4", "fb13e7d3-936f-4ded-a543-e1650cc99dfd")',
)
}
public async down(): Promise<void> {
return
}
}

View File

@@ -0,0 +1,13 @@
import { MigrationInterface, QueryRunner } from 'typeorm'
export class removeAuthenticatorNamesFromServer1678340701766 implements MigrationInterface {
name = 'removeAuthenticatorNamesFromServer1678340701766'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query('ALTER TABLE `authenticators` DROP COLUMN `name`')
}
public async down(): Promise<void> {
return
}
}

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.89.5",
"version": "1.95.2",
"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.4",
"@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": "^9.14.1",
"otplib": "12.0.1",
"prettyjson": "^1.2.5",
"reflect-metadata": "0.1.13",
@@ -73,7 +74,6 @@
"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",

View File

@@ -168,7 +168,6 @@ import { ListSharedSubscriptionInvitations } from '../Domain/UseCase/ListSharedS
import { UserSubscriptionServiceInterface } from '../Domain/Subscription/UserSubscriptionServiceInterface'
import { UserSubscriptionService } from '../Domain/Subscription/UserSubscriptionService'
import { SubscriptionSettingProjector } from '../Projection/SubscriptionSettingProjector'
import { GetSubscriptionSetting } from '../Domain/UseCase/GetSubscriptionSetting/GetSubscriptionSetting'
import { SubscriptionSettingsAssociationService } from '../Domain/Setting/SubscriptionSettingsAssociationService'
import { SubscriptionSettingsAssociationServiceInterface } from '../Domain/Setting/SubscriptionSettingsAssociationServiceInterface'
import { PKCERepositoryInterface } from '../Domain/User/PKCERepositoryInterface'
@@ -216,6 +215,7 @@ import { DeleteAuthenticator } from '../Domain/UseCase/DeleteAuthenticator/Delet
import { GenerateRecoveryCodes } from '../Domain/UseCase/GenerateRecoveryCodes/GenerateRecoveryCodes'
import { SignInWithRecoveryCodes } from '../Domain/UseCase/SignInWithRecoveryCodes/SignInWithRecoveryCodes'
import { GetUserKeyParamsRecovery } from '../Domain/UseCase/GetUserKeyParamsRecovery/GetUserKeyParamsRecovery'
import { CleanupExpiredSessions } from '../Domain/UseCase/CleanupExpiredSessions/CleanupExpiredSessions'
// eslint-disable-next-line @typescript-eslint/no-var-requires
const newrelicFormatter = require('@newrelic/winston-enricher')
@@ -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(
@@ -463,6 +463,10 @@ export class ContainerConfigLoader {
container
.bind(TYPES.U2F_REQUIRE_USER_VERIFICATION)
.toConstantValue(env.get('U2F_REQUIRE_USER_VERIFICATION', true) === 'true')
container
.bind(TYPES.READONLY_USERS)
.toConstantValue(env.get('READONLY_USERS', true) ? env.get('READONLY_USERS', true).split(',') : [])
// Services
container.bind<UAParser>(TYPES.DeviceDetector).toConstantValue(new UAParser())
container.bind<SessionService>(TYPES.SessionService).to(SessionService)
@@ -559,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
@@ -570,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
@@ -595,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(
@@ -612,6 +632,9 @@ export class ContainerConfigLoader {
container
.bind<CleanupSessionTraces>(TYPES.CleanupSessionTraces)
.toConstantValue(new CleanupSessionTraces(container.get(TYPES.SessionTraceRepository)))
container
.bind<CleanupExpiredSessions>(TYPES.CleanupExpiredSessions)
.toConstantValue(new CleanupExpiredSessions(container.get(TYPES.SessionRepository)))
container.bind<AuthenticateUser>(TYPES.AuthenticateUser).to(AuthenticateUser)
container.bind<AuthenticateRequest>(TYPES.AuthenticateRequest).to(AuthenticateRequest)
container.bind<RefreshSessionToken>(TYPES.RefreshSessionToken).to(RefreshSessionToken)
@@ -683,7 +706,6 @@ export class ContainerConfigLoader {
container
.bind<ListSharedSubscriptionInvitations>(TYPES.ListSharedSubscriptionInvitations)
.to(ListSharedSubscriptionInvitations)
container.bind<GetSubscriptionSetting>(TYPES.GetSubscriptionSetting).to(GetSubscriptionSetting)
container.bind<VerifyPredicate>(TYPES.VerifyPredicate).to(VerifyPredicate)
container.bind<CreateCrossServiceToken>(TYPES.CreateCrossServiceToken).to(CreateCrossServiceToken)
container.bind<ProcessUserRequest>(TYPES.ProcessUserRequest).to(ProcessUserRequest)

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

@@ -97,6 +97,7 @@ const TYPES = {
U2F_RELYING_PARTY_NAME: Symbol.for('U2F_RELYING_PARTY_NAME'),
U2F_EXPECTED_ORIGIN: Symbol.for('U2F_EXPECTED_ORIGIN'),
U2F_REQUIRE_USER_VERIFICATION: Symbol.for('U2F_REQUIRE_USER_VERIFICATION'),
READONLY_USERS: Symbol.for('READONLY_USERS'),
// use cases
AuthenticateUser: Symbol.for('AuthenticateUser'),
AuthenticateRequest: Symbol.for('AuthenticateRequest'),
@@ -131,12 +132,12 @@ const TYPES = {
DeclineSharedSubscriptionInvitation: Symbol.for('DeclineSharedSubscriptionInvitation'),
CancelSharedSubscriptionInvitation: Symbol.for('CancelSharedSubscriptionInvitation'),
ListSharedSubscriptionInvitations: Symbol.for('ListSharedSubscriptionInvitations'),
GetSubscriptionSetting: Symbol.for('GetSubscriptionSetting'),
VerifyPredicate: Symbol.for('VerifyPredicate'),
CreateCrossServiceToken: Symbol.for('CreateCrossServiceToken'),
ProcessUserRequest: Symbol.for('ProcessUserRequest'),
TraceSession: Symbol.for('TraceSession'),
CleanupSessionTraces: Symbol.for('CleanupSessionTraces'),
CleanupExpiredSessions: Symbol.for('CleanupExpiredSessions'),
PersistStatistics: Symbol.for('PersistStatistics'),
GenerateAuthenticatorRegistrationOptions: Symbol.for('GenerateAuthenticatorRegistrationOptions'),
VerifyAuthenticatorRegistrationResponse: Symbol.for('VerifyAuthenticatorRegistrationResponse'),

View File

@@ -69,7 +69,7 @@ export class AdminController extends BaseHttpController {
const result = await this.doDeleteSetting.execute({
uuid,
userUuid,
settingName: SettingName.MfaSecret,
settingName: SettingName.NAMES.MfaSecret,
timestamp: updatedAt,
softDelete: true,
})
@@ -115,7 +115,7 @@ export class AdminController extends BaseHttpController {
const result = await this.doDeleteSetting.execute({
userUuid,
settingName: SettingName.EmailBackupFrequency,
settingName: SettingName.NAMES.EmailBackupFrequency,
})
if (result.success) {

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: {
@@ -88,7 +110,6 @@ export class AuthenticatorsController {
): Promise<HttpResponse<VerifyAuthenticatorRegistrationResponseResponseBody>> {
const result = await this.verifyAuthenticatorRegistrationResponse.execute({
userUuid: params.userUuid,
name: params.name,
attestationResponse: params.attestationResponse,
})
@@ -105,7 +126,7 @@ export class AuthenticatorsController {
return {
status: HttpStatusCode.Success,
data: { success: result.getValue() },
data: { id: result.getValue().toString() },
}
}

View File

@@ -58,6 +58,10 @@ export class SessionsController extends BaseHttpController {
@httpGet('/', TYPES.AuthMiddleware, TYPES.SessionMiddleware)
async getSessions(_request: Request, response: Response): Promise<results.JsonResult> {
if (response.locals.readOnlyAccess) {
return this.json([])
}
const useCaseResponse = await this.getActiveSessionsForUser.execute({
userUuid: response.locals.user.uuid,
})

View File

@@ -90,7 +90,7 @@ describe('SettingsController', () => {
const httpResponse = <results.JsonResult>await createController().getSetting(request, response)
const result = await httpResponse.executeAsync()
expect(getSetting.execute).toHaveBeenCalledWith({ userUuid: '1-2-3', settingName: 'test' })
expect(getSetting.execute).toHaveBeenCalledWith({ userUuid: '1-2-3', settingName: 'TEST' })
expect(result.statusCode).toEqual(200)
})
@@ -124,7 +124,7 @@ describe('SettingsController', () => {
const httpResponse = <results.JsonResult>await createController().getSetting(request, response)
const result = await httpResponse.executeAsync()
expect(getSetting.execute).toHaveBeenCalledWith({ userUuid: '1-2-3', settingName: 'test' })
expect(getSetting.execute).toHaveBeenCalledWith({ userUuid: '1-2-3', settingName: 'TEST' })
expect(result.statusCode).toEqual(400)
})

View File

@@ -61,7 +61,7 @@ export class SettingsController extends BaseHttpController {
}
const { userUuid, settingName } = request.params
const result = await this.doGetSetting.execute({ userUuid, settingName })
const result = await this.doGetSetting.execute({ userUuid, settingName: settingName.toUpperCase() })
if (result.success) {
return this.json(result)

View File

@@ -4,24 +4,24 @@ import * as express from 'express'
import { results } from 'inversify-express-utils'
import { User } from '../Domain/User/User'
import { GetSubscriptionSetting } from '../Domain/UseCase/GetSubscriptionSetting/GetSubscriptionSetting'
import { SubscriptionSettingsController } from './SubscriptionSettingsController'
import { GetSetting } from '../Domain/UseCase/GetSetting/GetSetting'
describe('SubscriptionSettingsController', () => {
let getSubscriptionSetting: GetSubscriptionSetting
let getSetting: GetSetting
let request: express.Request
let response: express.Response
let user: User
const createController = () => new SubscriptionSettingsController(getSubscriptionSetting)
const createController = () => new SubscriptionSettingsController(getSetting)
beforeEach(() => {
user = {} as jest.Mocked<User>
user.uuid = '123'
getSubscriptionSetting = {} as jest.Mocked<GetSubscriptionSetting>
getSubscriptionSetting.execute = jest.fn()
getSetting = {} as jest.Mocked<GetSetting>
getSetting.execute = jest.fn()
request = {
headers: {},
@@ -41,12 +41,12 @@ describe('SubscriptionSettingsController', () => {
uuid: '1-2-3',
}
getSubscriptionSetting.execute = jest.fn().mockReturnValue({ success: true })
getSetting.execute = jest.fn().mockReturnValue({ success: true })
const httpResponse = <results.JsonResult>await createController().getSubscriptionSetting(request, response)
const result = await httpResponse.executeAsync()
expect(getSubscriptionSetting.execute).toHaveBeenCalledWith({ userUuid: '1-2-3', subscriptionSettingName: 'test' })
expect(getSetting.execute).toHaveBeenCalledWith({ userUuid: '1-2-3', settingName: 'TEST' })
expect(result.statusCode).toEqual(200)
})
@@ -58,12 +58,12 @@ describe('SubscriptionSettingsController', () => {
uuid: '1-2-3',
}
getSubscriptionSetting.execute = jest.fn().mockReturnValue({ success: false })
getSetting.execute = jest.fn().mockReturnValue({ success: false })
const httpResponse = <results.JsonResult>await createController().getSubscriptionSetting(request, response)
const result = await httpResponse.executeAsync()
expect(getSubscriptionSetting.execute).toHaveBeenCalledWith({ userUuid: '1-2-3', subscriptionSettingName: 'test' })
expect(getSetting.execute).toHaveBeenCalledWith({ userUuid: '1-2-3', settingName: 'TEST' })
expect(result.statusCode).toEqual(400)
})

View File

@@ -1,4 +1,3 @@
import { SubscriptionSettingName } from '@standardnotes/settings'
import { Request, Response } from 'express'
import { inject } from 'inversify'
import {
@@ -9,19 +8,19 @@ import {
results,
} from 'inversify-express-utils'
import TYPES from '../Bootstrap/Types'
import { GetSubscriptionSetting } from '../Domain/UseCase/GetSubscriptionSetting/GetSubscriptionSetting'
import { GetSetting } from '../Domain/UseCase/GetSetting/GetSetting'
@controller('/users/:userUuid')
export class SubscriptionSettingsController extends BaseHttpController {
constructor(@inject(TYPES.GetSubscriptionSetting) private doGetSubscriptionSetting: GetSubscriptionSetting) {
constructor(@inject(TYPES.GetSetting) private doGetSetting: GetSetting) {
super()
}
@httpGet('/subscription-settings/:subscriptionSettingName', TYPES.ApiGatewayAuthMiddleware)
async getSubscriptionSetting(request: Request, response: Response): Promise<results.JsonResult> {
const result = await this.doGetSubscriptionSetting.execute({
const result = await this.doGetSetting.execute({
userUuid: response.locals.user.uuid,
subscriptionSettingName: request.params.subscriptionSettingName as SubscriptionSettingName,
settingName: request.params.subscriptionSettingName.toUpperCase(),
})
if (result.success) {

View File

@@ -77,7 +77,7 @@ export class SubscriptionTokensController extends BaseHttpController {
const user = authenticateTokenResponse.user as User
let extensionKey = undefined
const extensionKeySetting = await this.settingService.findSettingWithDecryptedValue({
settingName: SettingName.ExtensionKey,
settingName: SettingName.create(SettingName.NAMES.ExtensionKey).getValue(),
userUuid: user.uuid,
})
if (extensionKeySetting !== null) {

View File

@@ -6,7 +6,6 @@ describe('Authenticator', () => {
it('should create an entity', () => {
const entityOrError = Authenticator.create({
counter: 1,
name: 'my-key',
credentialBackedUp: true,
credentialDeviceType: 'singleDevice',
credentialId: Buffer.from('credentialId'),

View File

@@ -1,7 +1,6 @@
import { Dates, Uuid } from '@standardnotes/domain-core'
export interface AuthenticatorProps {
name: string
userUuid: Uuid
credentialId: Uint8Array
credentialPublicKey: Uint8Array

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,14 +392,15 @@ describe('FeatureService', () => {
expires_at: 777,
},
{
permission_name: PermissionName.FilesBeta,
identifier: 'files-beta',
permission_name: 'files-beta' as PermissionName,
expires_at: undefined,
no_expire: true,
},
])
const nonSubscriptionRole = {
name: RoleName.NAMES.FilesBetaUser,
name: RoleName.NAMES.InternalTeamUser,
uuid: 'role-files-beta',
permissions: Promise.resolve([nonSubscriptionPermission]),
} as jest.Mocked<Role>

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

@@ -27,13 +27,13 @@ export class EmailSubscriptionUnsubscribedEventHandler implements DomainEventHan
private getSettingNameFromLevel(level: string): string {
switch (level) {
case EmailLevel.LEVELS.FailedCloudBackup:
return SettingName.MuteFailedCloudBackupsEmails
return SettingName.NAMES.MuteFailedCloudBackupsEmails
case EmailLevel.LEVELS.FailedEmailBackup:
return SettingName.MuteFailedBackupsEmails
return SettingName.NAMES.MuteFailedBackupsEmails
case EmailLevel.LEVELS.Marketing:
return SettingName.MuteMarketingEmails
return SettingName.NAMES.MuteMarketingEmails
case EmailLevel.LEVELS.SignIn:
return SettingName.MuteSignInEmails
return SettingName.NAMES.MuteSignInEmails
default:
throw new Error(`Unknown level: ${level}`)
}

View File

@@ -54,7 +54,7 @@ export class ExtensionKeyGrantedEventHandler implements DomainEventHandlerInterf
await this.settingService.createOrReplace({
user,
props: {
name: SettingName.ExtensionKey,
name: SettingName.NAMES.ExtensionKey,
unencryptedValue: event.payload.extensionKey,
serverEncryptionVersion: EncryptionVersion.Default,
sensitive: true,

View File

@@ -1,5 +1,5 @@
import { DomainEventHandlerInterface, FileRemovedEvent } from '@standardnotes/domain-events'
import { SubscriptionSettingName } from '@standardnotes/settings'
import { SettingName } from '@standardnotes/settings'
import { inject, injectable } from 'inversify'
import { Logger } from 'winston'
@@ -38,7 +38,7 @@ export class FileRemovedEventHandler implements DomainEventHandlerInterface {
const bytesUsedSetting = await this.subscriptionSettingService.findSubscriptionSettingWithDecryptedValue({
userUuid: user.uuid,
userSubscriptionUuid: subscription.uuid,
subscriptionSettingName: SubscriptionSettingName.FileUploadBytesUsed,
subscriptionSettingName: SettingName.create(SettingName.NAMES.FileUploadBytesUsed).getValue(),
})
if (bytesUsedSetting === null) {
this.logger.warn(`Could not find bytes used setting for user with uuid: ${user.uuid}`)
@@ -51,7 +51,7 @@ export class FileRemovedEventHandler implements DomainEventHandlerInterface {
await this.subscriptionSettingService.createOrReplace({
userSubscription: subscription,
props: {
name: SubscriptionSettingName.FileUploadBytesUsed,
name: SettingName.NAMES.FileUploadBytesUsed,
unencryptedValue: (+bytesUsed - byteSize).toString(),
sensitive: false,
serverEncryptionVersion: EncryptionVersion.Unencrypted,

View File

@@ -1,5 +1,5 @@
import { DomainEventHandlerInterface, FileUploadedEvent } from '@standardnotes/domain-events'
import { SubscriptionSettingName } from '@standardnotes/settings'
import { SettingName } from '@standardnotes/settings'
import { inject, injectable } from 'inversify'
import { Logger } from 'winston'
@@ -47,7 +47,7 @@ export class FileUploadedEventHandler implements DomainEventHandlerInterface {
const bytesUsedSetting = await this.subscriptionSettingService.findSubscriptionSettingWithDecryptedValue({
userUuid: (await subscription.user).uuid,
userSubscriptionUuid: subscription.uuid,
subscriptionSettingName: SubscriptionSettingName.FileUploadBytesUsed,
subscriptionSettingName: SettingName.create(SettingName.NAMES.FileUploadBytesUsed).getValue(),
})
if (bytesUsedSetting !== null) {
bytesUsed = bytesUsedSetting.value as string
@@ -56,7 +56,7 @@ export class FileUploadedEventHandler implements DomainEventHandlerInterface {
await this.subscriptionSettingService.createOrReplace({
userSubscription: subscription,
props: {
name: SubscriptionSettingName.FileUploadBytesUsed,
name: SettingName.NAMES.FileUploadBytesUsed,
unencryptedValue: (+bytesUsed + byteSize).toString(),
sensitive: false,
serverEncryptionVersion: EncryptionVersion.Unencrypted,

View File

@@ -28,7 +28,7 @@ export class ListedAccountCreatedEventHandler implements DomainEventHandlerInter
let authSecrets: ListedAuthorSecretsData = [newSecret]
const listedAuthorSecretsSetting = await this.settingService.findSettingWithDecryptedValue({
settingName: SettingName.ListedAuthorSecrets,
settingName: SettingName.create(SettingName.NAMES.ListedAuthorSecrets).getValue(),
userUuid: user.uuid,
})
if (listedAuthorSecretsSetting !== null) {
@@ -40,7 +40,7 @@ export class ListedAccountCreatedEventHandler implements DomainEventHandlerInter
await this.settingService.createOrReplace({
user,
props: {
name: SettingName.ListedAuthorSecrets,
name: SettingName.NAMES.ListedAuthorSecrets,
unencryptedValue: JSON.stringify(authSecrets),
sensitive: false,
},

View File

@@ -24,7 +24,7 @@ export class ListedAccountDeletedEventHandler implements DomainEventHandlerInter
}
const listedAuthorSecretsSetting = await this.settingService.findSettingWithDecryptedValue({
settingName: SettingName.ListedAuthorSecrets,
settingName: SettingName.create(SettingName.NAMES.ListedAuthorSecrets).getValue(),
userUuid: user.uuid,
})
if (listedAuthorSecretsSetting === null) {
@@ -43,7 +43,7 @@ export class ListedAccountDeletedEventHandler implements DomainEventHandlerInter
await this.settingService.createOrReplace({
user,
props: {
name: SettingName.ListedAuthorSecrets,
name: SettingName.NAMES.ListedAuthorSecrets,
unencryptedValue: JSON.stringify(filteredSecrets),
sensitive: false,
},

View File

@@ -47,7 +47,7 @@ export class SubscriptionReassignedEventHandler implements DomainEventHandlerInt
await this.settingService.createOrReplace({
user,
props: {
name: SettingName.ExtensionKey,
name: SettingName.NAMES.ExtensionKey,
unencryptedValue: event.payload.extensionKey,
serverEncryptionVersion: EncryptionVersion.Default,
sensitive: true,

View File

@@ -95,7 +95,7 @@ export class SubscriptionSyncRequestedEventHandler implements DomainEventHandler
await this.settingService.createOrReplace({
user,
props: {
name: SettingName.ExtensionKey,
name: SettingName.NAMES.ExtensionKey,
unencryptedValue: event.payload.extensionKey,
serverEncryptionVersion: EncryptionVersion.Default,
sensitive: true,

View File

@@ -27,7 +27,7 @@ describe('RoleToSubscriptionMap', () => {
name: RoleName.NAMES.CoreUser,
} as jest.Mocked<Role>,
{
name: RoleName.NAMES.FilesBetaUser,
name: RoleName.NAMES.InternalTeamUser,
} as jest.Mocked<Role>,
{
name: RoleName.NAMES.PlusUser,
@@ -38,7 +38,7 @@ describe('RoleToSubscriptionMap', () => {
name: RoleName.NAMES.CoreUser,
},
{
name: RoleName.NAMES.FilesBetaUser,
name: RoleName.NAMES.InternalTeamUser,
},
])
})
@@ -49,7 +49,7 @@ describe('RoleToSubscriptionMap', () => {
name: RoleName.NAMES.CoreUser,
} as jest.Mocked<Role>,
{
name: RoleName.NAMES.FilesBetaUser,
name: RoleName.NAMES.InternalTeamUser,
} as jest.Mocked<Role>,
{
name: RoleName.NAMES.PlusUser,

View File

@@ -12,7 +12,7 @@ export class RoleToSubscriptionMap implements RoleToSubscriptionMapInterface {
[RoleName.NAMES.ProUser, SubscriptionName.ProPlan],
])
private readonly nonSubscriptionRoles = [RoleName.NAMES.CoreUser, RoleName.NAMES.FilesBetaUser]
private readonly nonSubscriptionRoles = [RoleName.NAMES.CoreUser, RoleName.NAMES.InternalTeamUser]
filterNonSubscriptionRoles(roles: Role[]): Array<Role> {
return roles.filter((role) => this.nonSubscriptionRoles.includes(role.name))

View File

@@ -12,4 +12,5 @@ export interface SessionRepositoryInterface {
save(session: Session): Promise<Session>
remove(session: Session): Promise<Session>
clearUserAgentByUserUuid(userUuid: string): Promise<void>
removeExpiredBefore(date: Date): Promise<void>
}

View File

@@ -34,6 +34,7 @@ describe('SessionService', () => {
let cryptoNode: CryptoNode
let traceSession: TraceSession
let userSubscriptionRepository: UserSubscriptionRepositoryInterface
const readonlyUsers = ['demo@standardnotes.com']
const createService = () =>
new SessionService(
@@ -49,6 +50,7 @@ describe('SessionService', () => {
cryptoNode,
traceSession,
userSubscriptionRepository,
readonlyUsers,
)
beforeEach(() => {
@@ -59,6 +61,7 @@ describe('SessionService', () => {
session.apiVersion = ApiVersion.v20200115
session.hashedAccessToken = '4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce'
session.hashedRefreshToken = '4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce'
session.readonlyAccess = false
revokedSession = {} as jest.Mocked<RevokedSession>
revokedSession.uuid = '2e1e43'
@@ -182,6 +185,42 @@ describe('SessionService', () => {
})
})
it('should create new readonly session for a user that is readonly restricted', async () => {
const user = {} as jest.Mocked<User>
user.email = 'demo@standardnotes.com'
user.uuid = '123'
const sessionPayload = await createService().createNewSessionForUser({
user,
apiVersion: '003',
userAgent: 'Google Chrome',
readonlyAccess: false,
})
expect(sessionRepository.save).toHaveBeenCalledWith(expect.any(Session))
expect(sessionRepository.save).toHaveBeenCalledWith({
accessExpiration: expect.any(Date),
apiVersion: '003',
createdAt: expect.any(Date),
hashedAccessToken: expect.any(String),
hashedRefreshToken: expect.any(String),
refreshExpiration: expect.any(Date),
updatedAt: expect.any(Date),
userAgent: 'Google Chrome',
userUuid: '123',
uuid: expect.any(String),
readonlyAccess: true,
})
expect(sessionPayload).toEqual({
access_expiration: 123,
access_token: expect.any(String),
refresh_expiration: 123,
refresh_token: expect.any(String),
readonly_access: true,
})
})
it('should create new session for a user with disabled user agent logging', async () => {
const user = {} as jest.Mocked<User>
user.uuid = '123'
@@ -409,9 +448,9 @@ describe('SessionService', () => {
})
it('should determine if a refresh token is valid', async () => {
expect(createService().isRefreshTokenValid(session, '1:2:3')).toBeTruthy()
expect(createService().isRefreshTokenValid(session, '1:2:4')).toBeFalsy()
expect(createService().isRefreshTokenValid(session, '1:2')).toBeFalsy()
expect(createService().isRefreshTokenMatchingHashedSessionToken(session, '1:2:3')).toBeTruthy()
expect(createService().isRefreshTokenMatchingHashedSessionToken(session, '1:2:4')).toBeFalsy()
expect(createService().isRefreshTokenMatchingHashedSessionToken(session, '1:2')).toBeFalsy()
})
it('should return device info based on user agent', () => {

View File

@@ -39,6 +39,7 @@ export class SessionService implements SessionServiceInterface {
@inject(TYPES.CryptoNode) private cryptoNode: CryptoNode,
@inject(TYPES.TraceSession) private traceSession: TraceSession,
@inject(TYPES.UserSubscriptionRepository) private userSubscriptionRepository: UserSubscriptionRepositoryInterface,
@inject(TYPES.READONLY_USERS) private readonlyUsers: string[],
) {}
async createNewSessionForUser(dto: {
@@ -113,7 +114,7 @@ export class SessionService implements SessionServiceInterface {
return sessionPayload
}
isRefreshTokenValid(session: Session, token: string): boolean {
isRefreshTokenMatchingHashedSessionToken(session: Session, token: string): boolean {
const tokenParts = token.split(':')
const refreshToken = tokenParts[2]
if (!refreshToken) {
@@ -268,7 +269,9 @@ export class SessionService implements SessionServiceInterface {
session.apiVersion = dto.apiVersion
session.createdAt = this.timer.getUTCDate()
session.updatedAt = this.timer.getUTCDate()
session.readonlyAccess = dto.readonlyAccess
const userIsReadonly = this.readonlyUsers.includes(dto.user.email)
session.readonlyAccess = userIsReadonly || dto.readonlyAccess
return session
}
@@ -302,13 +305,13 @@ export class SessionService implements SessionServiceInterface {
refresh_token: `${SessionService.SESSION_TOKEN_VERSION}:${session.uuid}:${refreshToken}`,
access_expiration: this.timer.convertStringDateToMilliseconds(accessTokenExpiration.toString()),
refresh_expiration: this.timer.convertStringDateToMilliseconds(refreshTokenExpiration.toString()),
readonly_access: false,
readonly_access: session.readonlyAccess,
}
}
private async isLoggingUserAgentEnabledOnSessions(user: User): Promise<boolean> {
const loggingSetting = await this.settingService.findSettingWithDecryptedValue({
settingName: SettingName.LogSessionUserAgent,
settingName: SettingName.create(SettingName.NAMES.LogSessionUserAgent).getValue(),
userUuid: user.uuid,
})

View File

@@ -21,7 +21,7 @@ export interface SessionServiceInterface {
getRevokedSessionFromToken(token: string): Promise<RevokedSession | null>
markRevokedSessionAsReceived(revokedSession: RevokedSession): Promise<RevokedSession>
deleteSessionByToken(token: string): Promise<string | null>
isRefreshTokenValid(session: Session, token: string): boolean
isRefreshTokenMatchingHashedSessionToken(session: Session, token: string): boolean
getDeviceInfo(session: Session): string
getOperatingSystemInfoFromUserAgent(userAgent: string): string
getBrowserInfoFromUserAgent(userAgent: string): string

View File

@@ -1,8 +1,8 @@
import { SubscriptionSettingName } from '@standardnotes/settings'
import { SettingName } from '@standardnotes/settings'
export type FindSubscriptionSettingDTO = {
userUuid: string
userSubscriptionUuid: string
subscriptionSettingName: SubscriptionSettingName
subscriptionSettingName: SettingName
settingUuid?: string
}

View File

@@ -70,12 +70,11 @@ describe('SettingInterpreter', () => {
})
it('should trigger session cleanup if user is disabling session user agent logging', async () => {
const setting = {
name: SettingName.LogSessionUserAgent,
value: LogSessionUserAgentOption.Disabled,
} as jest.Mocked<Setting>
await createInterpreter().interpretSettingUpdated(setting, user, LogSessionUserAgentOption.Disabled)
await createInterpreter().interpretSettingUpdated(
SettingName.NAMES.LogSessionUserAgent,
user,
LogSessionUserAgentOption.Disabled,
)
expect(domainEventPublisher.publish).toHaveBeenCalled()
expect(domainEventFactory.createUserDisabledSessionUserAgentLoggingEvent).toHaveBeenCalledWith({
@@ -85,55 +84,50 @@ describe('SettingInterpreter', () => {
})
it('should trigger backup if email backup setting is created - emails not muted', async () => {
const setting = {
name: SettingName.EmailBackupFrequency,
value: EmailBackupFrequency.Daily,
} as jest.Mocked<Setting>
await createInterpreter().interpretSettingUpdated(setting, user, EmailBackupFrequency.Daily)
await createInterpreter().interpretSettingUpdated(
SettingName.NAMES.EmailBackupFrequency,
user,
EmailBackupFrequency.Daily,
)
expect(domainEventPublisher.publish).toHaveBeenCalled()
expect(domainEventFactory.createEmailBackupRequestedEvent).toHaveBeenCalledWith('4-5-6', '', false)
})
it('should trigger backup if email backup setting is created - emails muted', async () => {
const setting = {
name: SettingName.EmailBackupFrequency,
value: EmailBackupFrequency.Daily,
} as jest.Mocked<Setting>
settingRepository.findOneByNameAndUserUuid = jest.fn().mockReturnValue({
name: SettingName.MuteFailedBackupsEmails,
name: SettingName.NAMES.MuteFailedBackupsEmails,
uuid: '6-7-8',
value: 'muted',
} as jest.Mocked<Setting>)
await createInterpreter().interpretSettingUpdated(setting, user, EmailBackupFrequency.Daily)
await createInterpreter().interpretSettingUpdated(
SettingName.NAMES.EmailBackupFrequency,
user,
EmailBackupFrequency.Daily,
)
expect(domainEventPublisher.publish).toHaveBeenCalled()
expect(domainEventFactory.createEmailBackupRequestedEvent).toHaveBeenCalledWith('4-5-6', '6-7-8', true)
})
it('should not trigger backup if email backup setting is disabled', async () => {
const setting = {
name: SettingName.EmailBackupFrequency,
value: EmailBackupFrequency.Disabled,
} as jest.Mocked<Setting>
settingRepository.findOneByNameAndUserUuid = jest.fn().mockReturnValue(null)
await createInterpreter().interpretSettingUpdated(setting, user, EmailBackupFrequency.Disabled)
await createInterpreter().interpretSettingUpdated(
SettingName.NAMES.EmailBackupFrequency,
user,
EmailBackupFrequency.Disabled,
)
expect(domainEventPublisher.publish).not.toHaveBeenCalled()
expect(domainEventFactory.createEmailBackupRequestedEvent).not.toHaveBeenCalled()
})
it('should trigger cloud backup if dropbox backup setting is created', async () => {
const setting = {
name: SettingName.DropboxBackupToken,
value: 'test-token',
} as jest.Mocked<Setting>
settingRepository.findOneByNameAndUserUuid = jest.fn().mockReturnValue(null)
await createInterpreter().interpretSettingUpdated(setting, user, 'test-token')
await createInterpreter().interpretSettingUpdated(SettingName.NAMES.DropboxBackupToken, user, 'test-token')
expect(domainEventPublisher.publish).toHaveBeenCalled()
expect(domainEventFactory.createCloudBackupRequestedEvent).toHaveBeenCalledWith(
@@ -146,17 +140,13 @@ describe('SettingInterpreter', () => {
})
it('should trigger cloud backup if dropbox backup setting is created - muted emails', async () => {
const setting = {
name: SettingName.DropboxBackupToken,
value: 'test-token',
} as jest.Mocked<Setting>
settingRepository.findOneByNameAndUserUuid = jest.fn().mockReturnValue({
name: SettingName.MuteFailedCloudBackupsEmails,
name: SettingName.NAMES.MuteFailedCloudBackupsEmails,
uuid: '6-7-8',
value: 'muted',
} as jest.Mocked<Setting>)
await createInterpreter().interpretSettingUpdated(setting, user, 'test-token')
await createInterpreter().interpretSettingUpdated(SettingName.NAMES.DropboxBackupToken, user, 'test-token')
expect(domainEventPublisher.publish).toHaveBeenCalled()
expect(domainEventFactory.createCloudBackupRequestedEvent).toHaveBeenCalledWith(
@@ -169,13 +159,9 @@ describe('SettingInterpreter', () => {
})
it('should trigger cloud backup if google drive backup setting is created', async () => {
const setting = {
name: SettingName.GoogleDriveBackupToken,
value: 'test-token',
} as jest.Mocked<Setting>
settingRepository.findOneByNameAndUserUuid = jest.fn().mockReturnValue(null)
await createInterpreter().interpretSettingUpdated(setting, user, 'test-token')
await createInterpreter().interpretSettingUpdated(SettingName.NAMES.GoogleDriveBackupToken, user, 'test-token')
expect(domainEventPublisher.publish).toHaveBeenCalled()
expect(domainEventFactory.createCloudBackupRequestedEvent).toHaveBeenCalledWith(
@@ -188,13 +174,9 @@ describe('SettingInterpreter', () => {
})
it('should trigger cloud backup if one drive backup setting is created', async () => {
const setting = {
name: SettingName.OneDriveBackupToken,
value: 'test-token',
} as jest.Mocked<Setting>
settingRepository.findOneByNameAndUserUuid = jest.fn().mockReturnValue(null)
await createInterpreter().interpretSettingUpdated(setting, user, 'test-token')
await createInterpreter().interpretSettingUpdated(SettingName.NAMES.OneDriveBackupToken, user, 'test-token')
expect(domainEventPublisher.publish).toHaveBeenCalled()
expect(domainEventFactory.createCloudBackupRequestedEvent).toHaveBeenCalledWith(
@@ -207,13 +189,13 @@ describe('SettingInterpreter', () => {
})
it('should trigger mute subscription emails rejection if mute setting changed', async () => {
const setting = {
name: SettingName.MuteMarketingEmails,
value: MuteMarketingEmailsOption.Muted,
} as jest.Mocked<Setting>
settingRepository.findOneByNameAndUserUuid = jest.fn().mockReturnValue(null)
await createInterpreter().interpretSettingUpdated(setting, user, MuteMarketingEmailsOption.Muted)
await createInterpreter().interpretSettingUpdated(
SettingName.NAMES.MuteMarketingEmails,
user,
MuteMarketingEmailsOption.Muted,
)
expect(domainEventPublisher.publish).toHaveBeenCalled()
expect(domainEventFactory.createMuteEmailsSettingChangedEvent).toHaveBeenCalledWith({
@@ -225,19 +207,13 @@ describe('SettingInterpreter', () => {
it('should trigger cloud backup if backup frequency setting is updated and a backup token setting is present', async () => {
settingRepository.findLastByNameAndUserUuid = jest.fn().mockReturnValueOnce({
name: SettingName.OneDriveBackupToken,
name: SettingName.NAMES.OneDriveBackupToken,
serverEncryptionVersion: 1,
value: 'encrypted-backup-token',
sensitive: true,
} as jest.Mocked<Setting>)
const setting = {
name: SettingName.OneDriveBackupFrequency,
serverEncryptionVersion: 0,
value: 'daily',
sensitive: false,
} as jest.Mocked<Setting>
await createInterpreter().interpretSettingUpdated(setting, user, 'daily')
await createInterpreter().interpretSettingUpdated(SettingName.NAMES.OneDriveBackupFrequency, user, 'daily')
expect(domainEventPublisher.publish).toHaveBeenCalled()
expect(domainEventFactory.createCloudBackupRequestedEvent).toHaveBeenCalledWith(
@@ -251,19 +227,17 @@ describe('SettingInterpreter', () => {
it('should not trigger cloud backup if backup frequency setting is updated as disabled', async () => {
settingRepository.findLastByNameAndUserUuid = jest.fn().mockReturnValueOnce({
name: SettingName.OneDriveBackupToken,
name: SettingName.NAMES.OneDriveBackupToken,
serverEncryptionVersion: 1,
value: 'encrypted-backup-token',
sensitive: true,
} as jest.Mocked<Setting>)
const setting = {
name: SettingName.OneDriveBackupFrequency,
serverEncryptionVersion: 0,
value: OneDriveBackupFrequency.Disabled,
sensitive: false,
} as jest.Mocked<Setting>
await createInterpreter().interpretSettingUpdated(setting, user, OneDriveBackupFrequency.Disabled)
await createInterpreter().interpretSettingUpdated(
SettingName.NAMES.OneDriveBackupFrequency,
user,
OneDriveBackupFrequency.Disabled,
)
expect(domainEventPublisher.publish).not.toHaveBeenCalled()
expect(domainEventFactory.createCloudBackupRequestedEvent).not.toHaveBeenCalled()
@@ -271,14 +245,8 @@ describe('SettingInterpreter', () => {
it('should not trigger cloud backup if backup frequency setting is updated and a backup token setting is not present', async () => {
settingRepository.findLastByNameAndUserUuid = jest.fn().mockReturnValueOnce(null)
const setting = {
name: SettingName.OneDriveBackupFrequency,
serverEncryptionVersion: 0,
value: 'daily',
sensitive: false,
} as jest.Mocked<Setting>
await createInterpreter().interpretSettingUpdated(setting, user, 'daily')
await createInterpreter().interpretSettingUpdated(SettingName.NAMES.OneDriveBackupFrequency, user, 'daily')
expect(domainEventPublisher.publish).not.toHaveBeenCalled()
expect(domainEventFactory.createCloudBackupRequestedEvent).not.toHaveBeenCalled()

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