mirror of
https://github.com/standardnotes/server
synced 2026-02-12 11:01:14 -05:00
Compare commits
41 Commits
@standardn
...
@standardn
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0d5c3283d3 | ||
|
|
7b486348ef | ||
|
|
25f752d6b5 | ||
|
|
74e35a2d65 | ||
|
|
3532289575 | ||
|
|
7db9ba03f3 | ||
|
|
b0baaf9ea6 | ||
|
|
b7c6dab3ad | ||
|
|
2daa145867 | ||
|
|
4bd5fb22b4 | ||
|
|
78533a6045 | ||
|
|
e1c533a15e | ||
|
|
b6c2bb8023 | ||
|
|
c45653a50a | ||
|
|
d827513b73 | ||
|
|
ad183ca621 | ||
|
|
1d11c5a186 | ||
|
|
e84e78ec55 | ||
|
|
f91e4316ff | ||
|
|
d54b812881 | ||
|
|
28dc5ba2a4 | ||
|
|
979a320ca6 | ||
|
|
c46186b237 | ||
|
|
27cf093f85 | ||
|
|
ec0fb7e0b9 | ||
|
|
90029456fe | ||
|
|
b167b00075 | ||
|
|
b13fab76f3 | ||
|
|
782a9d310d | ||
|
|
537b1f2a29 | ||
|
|
2fad6b62cb | ||
|
|
bf173b4ede | ||
|
|
c52f038c76 | ||
|
|
b12ba98a5c | ||
|
|
dbccdf342b | ||
|
|
49b6d029c4 | ||
|
|
d6469954ce | ||
|
|
5f40550ad4 | ||
|
|
79ccbdf100 | ||
|
|
1983cfcab2 | ||
|
|
753f86707f |
131
.pnp.cjs
generated
131
.pnp.cjs
generated
@@ -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.11.0"],\
|
||||
["npm-check-updates", "npm:16.0.1"],\
|
||||
["prettier", "npm:2.7.1"],\
|
||||
["ts-node", "virtual:8859b278716fedf3e7458b5628625f7e35678c418626878559a0b816445001b7e24c55546f4677ba4c20b521aa0cf52cc33ac07deff171e383ada6eeab69933f#npm:10.9.1"],\
|
||||
@@ -2594,10 +2594,10 @@ const RAW_RUNTIME_STATE =
|
||||
}]\
|
||||
]],\
|
||||
["@grpc/grpc-js", [\
|
||||
["npm:1.8.4", {\
|
||||
"packageLocation": "./.yarn/cache/@grpc-grpc-js-npm-1.8.4-287c8bdac8-6367a2ee38.zip/node_modules/@grpc/grpc-js/",\
|
||||
["npm:1.8.12", {\
|
||||
"packageLocation": "./.yarn/cache/@grpc-grpc-js-npm-1.8.12-055f611493-cf2523ed61.zip/node_modules/@grpc/grpc-js/",\
|
||||
"packageDependencies": [\
|
||||
["@grpc/grpc-js", "npm:1.8.4"],\
|
||||
["@grpc/grpc-js", "npm:1.8.12"],\
|
||||
["@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:3903f8b52579d93ef51c172e331bc99e7b2816716d59e05f43ef24f0b7764b243282fc408399f3458a146bc3927d0afc82281a5fef8bf3c4a084cec2d908e789#npm:5.0.2", {\
|
||||
"packageLocation": "./.yarn/__virtual__/@newrelic-aws-sdk-virtual-5e033661a6/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:3903f8b52579d93ef51c172e331bc99e7b2816716d59e05f43ef24f0b7764b243282fc408399f3458a146bc3927d0afc82281a5fef8bf3c4a084cec2d908e789#npm:5.0.2"],\
|
||||
["@types/newrelic", null],\
|
||||
["newrelic", "npm:9.8.0"]\
|
||||
["newrelic", "npm:9.11.0"]\
|
||||
],\
|
||||
"packagePeers": [\
|
||||
"@types/newrelic",\
|
||||
@@ -3287,19 +3299,19 @@ const RAW_RUNTIME_STATE =
|
||||
}]\
|
||||
]],\
|
||||
["@newrelic/koa", [\
|
||||
["npm:7.0.0", {\
|
||||
"packageLocation": "./.yarn/cache/@newrelic-koa-npm-7.0.0-903c251b9f-0fc2298c8b.zip/node_modules/@newrelic/koa/",\
|
||||
["npm:7.1.1", {\
|
||||
"packageLocation": "./.yarn/cache/@newrelic-koa-npm-7.1.1-363bc0d9f3-b4fd860e8b.zip/node_modules/@newrelic/koa/",\
|
||||
"packageDependencies": [\
|
||||
["@newrelic/koa", "npm:7.0.0"]\
|
||||
["@newrelic/koa", "npm:7.1.1"]\
|
||||
],\
|
||||
"linkType": "SOFT"\
|
||||
}],\
|
||||
["virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:7.0.0", {\
|
||||
"packageLocation": "./.yarn/__virtual__/@newrelic-koa-virtual-cc6a41398f/0/cache/@newrelic-koa-npm-7.0.0-903c251b9f-0fc2298c8b.zip/node_modules/@newrelic/koa/",\
|
||||
["virtual:3903f8b52579d93ef51c172e331bc99e7b2816716d59e05f43ef24f0b7764b243282fc408399f3458a146bc3927d0afc82281a5fef8bf3c4a084cec2d908e789#npm:7.1.1", {\
|
||||
"packageLocation": "./.yarn/__virtual__/@newrelic-koa-virtual-5f623c0915/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:3903f8b52579d93ef51c172e331bc99e7b2816716d59e05f43ef24f0b7764b243282fc408399f3458a146bc3927d0afc82281a5fef8bf3c4a084cec2d908e789#npm:7.1.1"],\
|
||||
["@types/newrelic", null],\
|
||||
["newrelic", "npm:9.8.0"]\
|
||||
["newrelic", "npm:9.11.0"]\
|
||||
],\
|
||||
"packagePeers": [\
|
||||
"@types/newrelic",\
|
||||
@@ -3329,12 +3341,12 @@ const RAW_RUNTIME_STATE =
|
||||
],\
|
||||
"linkType": "SOFT"\
|
||||
}],\
|
||||
["virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:6.0.0", {\
|
||||
"packageLocation": "./.yarn/__virtual__/@newrelic-superagent-virtual-dc0653ca20/0/cache/@newrelic-superagent-npm-6.0.0-db8b77d0f3-b77997b792.zip/node_modules/@newrelic/superagent/",\
|
||||
["virtual:3903f8b52579d93ef51c172e331bc99e7b2816716d59e05f43ef24f0b7764b243282fc408399f3458a146bc3927d0afc82281a5fef8bf3c4a084cec2d908e789#npm:6.0.0", {\
|
||||
"packageLocation": "./.yarn/__virtual__/@newrelic-superagent-virtual-4f2fdfe6c7/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:3903f8b52579d93ef51c172e331bc99e7b2816716d59e05f43ef24f0b7764b243282fc408399f3458a146bc3927d0afc82281a5fef8bf3c4a084cec2d908e789#npm:6.0.0"],\
|
||||
["@types/newrelic", null],\
|
||||
["newrelic", "npm:9.8.0"]\
|
||||
["newrelic", "npm:9.11.0"]\
|
||||
],\
|
||||
"packagePeers": [\
|
||||
"@types/newrelic",\
|
||||
@@ -3356,7 +3368,7 @@ const RAW_RUNTIME_STATE =
|
||||
"packageDependencies": [\
|
||||
["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.0"],\
|
||||
["@types/newrelic", "npm:9.4.0"],\
|
||||
["newrelic", "npm:9.8.0"]\
|
||||
["newrelic", "npm:9.11.0"]\
|
||||
],\
|
||||
"packagePeers": [\
|
||||
"@types/newrelic",\
|
||||
@@ -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.11.0"],\
|
||||
["reflect-metadata", "npm:0.1.13"],\
|
||||
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.0.3"],\
|
||||
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.10"],\
|
||||
@@ -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.11.0"],\
|
||||
["nodemon", "npm:2.0.20"],\
|
||||
["npm-check-updates", "npm:16.0.1"],\
|
||||
["prettyjson", "npm:1.2.5"],\
|
||||
@@ -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.9"],\
|
||||
["@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.11.0"],\
|
||||
["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.11.0"],\
|
||||
["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.11.0"],\
|
||||
["reflect-metadata", "npm:0.1.13"],\
|
||||
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.0.3"],\
|
||||
["typeorm", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:0.3.10"],\
|
||||
@@ -4348,10 +4360,10 @@ const RAW_RUNTIME_STATE =
|
||||
}]\
|
||||
]],\
|
||||
["@standardnotes/features", [\
|
||||
["npm:1.58.4", {\
|
||||
"packageLocation": "./.yarn/cache/@standardnotes-features-npm-1.58.4-a84962d125-a39afc145a.zip/node_modules/@standardnotes/features/",\
|
||||
["npm:1.58.8", {\
|
||||
"packageLocation": "./.yarn/cache/@standardnotes-features-npm-1.58.8-d97ff2aae1-77bac7d0a0.zip/node_modules/@standardnotes/features/",\
|
||||
"packageDependencies": [\
|
||||
["@standardnotes/features", "npm:1.58.4"],\
|
||||
["@standardnotes/features", "npm:1.58.8"],\
|
||||
["@standardnotes/common", "workspace:packages/common"],\
|
||||
["@standardnotes/domain-core", "workspace:packages/domain-core"],\
|
||||
["@standardnotes/security", "workspace:packages/security"],\
|
||||
@@ -4359,10 +4371,10 @@ const RAW_RUNTIME_STATE =
|
||||
],\
|
||||
"linkType": "HARD"\
|
||||
}],\
|
||||
["npm:1.58.8", {\
|
||||
"packageLocation": "./.yarn/cache/@standardnotes-features-npm-1.58.8-d97ff2aae1-77bac7d0a0.zip/node_modules/@standardnotes/features/",\
|
||||
["npm:1.58.9", {\
|
||||
"packageLocation": "./.yarn/cache/@standardnotes-features-npm-1.58.9-c278f712cd-218350ee55.zip/node_modules/@standardnotes/features/",\
|
||||
"packageDependencies": [\
|
||||
["@standardnotes/features", "npm:1.58.8"],\
|
||||
["@standardnotes/features", "npm:1.58.9"],\
|
||||
["@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.11.0"],\
|
||||
["nodemon", "npm:2.0.20"],\
|
||||
["npm-check-updates", "npm:16.0.1"],\
|
||||
["prettyjson", "npm:1.2.5"],\
|
||||
@@ -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.11.0"],\
|
||||
["npm-check-updates", "npm:16.0.1"],\
|
||||
["reflect-metadata", "npm:0.1.13"],\
|
||||
["ts-jest", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:29.0.3"],\
|
||||
@@ -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.11.0"],\
|
||||
["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.11.0"],\
|
||||
["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"],\
|
||||
@@ -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.11.0"],\
|
||||
["nodemon", "npm:2.0.20"],\
|
||||
["npm-check-updates", "npm:16.0.1"],\
|
||||
["prettyjson", "npm:1.2.5"],\
|
||||
@@ -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.11.0"],\
|
||||
["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,20 +11502,21 @@ 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.11.0", {\
|
||||
"packageLocation": "./.yarn/cache/newrelic-npm-9.11.0-3903f8b525-fd1ec1b307.zip/node_modules/newrelic/",\
|
||||
"packageDependencies": [\
|
||||
["newrelic", "npm:9.8.0"],\
|
||||
["newrelic", "npm:9.11.0"],\
|
||||
["@contrast/fn-inspect", "npm:3.3.0"],\
|
||||
["@grpc/grpc-js", "npm:1.8.4"],\
|
||||
["@grpc/proto-loader", "npm:0.7.4"],\
|
||||
["@newrelic/aws-sdk", "virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:5.0.0"],\
|
||||
["@newrelic/koa", "virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:7.0.0"],\
|
||||
["@grpc/grpc-js", "npm:1.8.12"],\
|
||||
["@grpc/proto-loader", "npm:0.7.5"],\
|
||||
["@newrelic/aws-sdk", "virtual:3903f8b52579d93ef51c172e331bc99e7b2816716d59e05f43ef24f0b7764b243282fc408399f3458a146bc3927d0afc82281a5fef8bf3c4a084cec2d908e789#npm:5.0.2"],\
|
||||
["@newrelic/koa", "virtual:3903f8b52579d93ef51c172e331bc99e7b2816716d59e05f43ef24f0b7764b243282fc408399f3458a146bc3927d0afc82281a5fef8bf3c4a084cec2d908e789#npm:7.1.1"],\
|
||||
["@newrelic/native-metrics", "npm:9.0.0"],\
|
||||
["@newrelic/superagent", "virtual:4c49b89cbc97666c528d8405a7490a32a30cd8b65c1a61cb32c444f3a312dab1385405717f9866d113d67518b3d487f15de177279ba1a80f8958b28cad021846#npm:6.0.0"],\
|
||||
["@newrelic/superagent", "virtual:3903f8b52579d93ef51c172e331bc99e7b2816716d59e05f43ef24f0b7764b243282fc408399f3458a146bc3927d0afc82281a5fef8bf3c4a084cec2d908e789#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"],\
|
||||
["semver", "npm:5.7.1"],\
|
||||
|
||||
Binary file not shown.
BIN
.yarn/cache/@grpc-proto-loader-npm-0.7.5-53f472433f-e6461534eb.zip
vendored
Normal file
BIN
.yarn/cache/@grpc-proto-loader-npm-0.7.5-53f472433f-e6461534eb.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@newrelic-aws-sdk-npm-5.0.2-96d8663350-d99b851c78.zip
vendored
Normal file
BIN
.yarn/cache/@newrelic-aws-sdk-npm-5.0.2-96d8663350-d99b851c78.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@newrelic-koa-npm-7.1.1-363bc0d9f3-b4fd860e8b.zip
vendored
Normal file
BIN
.yarn/cache/@newrelic-koa-npm-7.1.1-363bc0d9f3-b4fd860e8b.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/bignumber.js-npm-9.1.1-5929e8d8dc-e44d008049.zip
vendored
Normal file
BIN
.yarn/cache/bignumber.js-npm-9.1.1-5929e8d8dc-e44d008049.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/json-bigint-npm-1.0.0-8e35bcb143-6e40674d13.zip
vendored
Normal file
BIN
.yarn/cache/json-bigint-npm-1.0.0-8e35bcb143-6e40674d13.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/MSVSUtil.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/MSVSUtil.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/MSVSVersion.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/MSVSVersion.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/__init__.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/__init__.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/common.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/common.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/input.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/input.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/msvs_emulation.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/msvs_emulation.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/ninja_syntax.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/ninja_syntax.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/simple_copy.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/simple_copy.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/xcode_emulation.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/xcode_emulation.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/xcode_ninja.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/xcode_ninja.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/xcodeproj_file.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/__pycache__/xcodeproj_file.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/__init__.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/__init__.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/make.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/make.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/ninja.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/ninja.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/xcode.cpython-311.pyc
generated
vendored
Normal file
BIN
.yarn/unplugged/node-gyp-npm-9.0.0-0eccfca4d1/node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/xcode.cpython-311.pyc
generated
vendored
Normal file
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
FROM node:18.13.0-alpine
|
||||
FROM node:18.15.0-alpine
|
||||
|
||||
ENV NODE_ENV production
|
||||
|
||||
|
||||
@@ -58,7 +58,9 @@ if [ -z "$REDIS_HOST" ]; then
|
||||
export REDIS_HOST="cache"
|
||||
fi
|
||||
|
||||
export REDIS_URL="redis://$REDIS_HOST"
|
||||
if [ -z "$REDIS_URL" ]; then
|
||||
export REDIS_URL="redis://$REDIS_HOST"
|
||||
fi
|
||||
|
||||
##########
|
||||
# SHARED #
|
||||
@@ -349,7 +351,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
|
||||
|
||||
@@ -40,6 +40,6 @@
|
||||
"packageManager": "yarn@4.0.0-rc.25",
|
||||
"dependencies": {
|
||||
"@sentry/node": "^7.28.1",
|
||||
"newrelic": "^9.8.0"
|
||||
"newrelic": "^9.11.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,18 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:18.13.0-alpine
|
||||
FROM node:18.15.0-alpine
|
||||
|
||||
RUN apk add --update \
|
||||
curl \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@standardnotes/analytics",
|
||||
"version": "2.21.1",
|
||||
"version": "2.21.4",
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <19.0.0"
|
||||
},
|
||||
@@ -53,7 +53,7 @@
|
||||
"ioredis": "^5.2.4",
|
||||
"mixpanel": "^0.17.0",
|
||||
"mysql2": "^3.0.1",
|
||||
"newrelic": "^9.8.0",
|
||||
"newrelic": "^9.11.0",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"typeorm": "^0.3.10",
|
||||
"winston": "^3.8.1"
|
||||
|
||||
@@ -3,6 +3,18 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:18.13.0-alpine
|
||||
FROM node:18.15.0-alpine
|
||||
|
||||
RUN apk add --update \
|
||||
curl \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@standardnotes/api-gateway",
|
||||
"version": "1.49.4",
|
||||
"version": "1.49.7",
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <19.0.0"
|
||||
},
|
||||
@@ -37,7 +37,7 @@
|
||||
"inversify-express-utils": "^6.4.3",
|
||||
"ioredis": "^5.2.4",
|
||||
"jsonwebtoken": "^9.0.0",
|
||||
"newrelic": "^9.8.0",
|
||||
"newrelic": "^9.11.0",
|
||||
"prettyjson": "^1.2.5",
|
||||
"reflect-metadata": "0.1.13",
|
||||
"winston": "^3.8.1"
|
||||
|
||||
@@ -3,6 +3,116 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:18.13.0-alpine
|
||||
FROM node:18.15.0-alpine
|
||||
|
||||
RUN apk add --update \
|
||||
curl \
|
||||
|
||||
@@ -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}`)
|
||||
|
||||
@@ -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)
|
||||
})
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@standardnotes/auth-server",
|
||||
"version": "1.89.5",
|
||||
"version": "1.93.9",
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <19.0.0"
|
||||
},
|
||||
@@ -45,7 +45,7 @@
|
||||
"@standardnotes/domain-core": "workspace:^",
|
||||
"@standardnotes/domain-events": "workspace:*",
|
||||
"@standardnotes/domain-events-infra": "workspace:*",
|
||||
"@standardnotes/features": "^1.58.4",
|
||||
"@standardnotes/features": "^1.58.9",
|
||||
"@standardnotes/predicates": "workspace:*",
|
||||
"@standardnotes/responses": "^1.13.9",
|
||||
"@standardnotes/security": "workspace:*",
|
||||
@@ -63,7 +63,7 @@
|
||||
"inversify-express-utils": "^6.4.3",
|
||||
"ioredis": "^5.2.4",
|
||||
"mysql2": "^3.0.1",
|
||||
"newrelic": "^9.8.0",
|
||||
"newrelic": "^9.11.0",
|
||||
"otplib": "12.0.1",
|
||||
"prettyjson": "^1.2.5",
|
||||
"reflect-metadata": "0.1.13",
|
||||
|
||||
@@ -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')
|
||||
@@ -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)
|
||||
@@ -612,6 +616,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 +690,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)
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -88,7 +88,6 @@ export class AuthenticatorsController {
|
||||
): Promise<HttpResponse<VerifyAuthenticatorRegistrationResponseResponseBody>> {
|
||||
const result = await this.verifyAuthenticatorRegistrationResponse.execute({
|
||||
userUuid: params.userUuid,
|
||||
name: params.name,
|
||||
attestationResponse: params.attestationResponse,
|
||||
})
|
||||
|
||||
@@ -105,7 +104,7 @@ export class AuthenticatorsController {
|
||||
|
||||
return {
|
||||
status: HttpStatusCode.Success,
|
||||
data: { success: result.getValue() },
|
||||
data: { id: result.getValue().toString() },
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
|
||||
@@ -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)
|
||||
})
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
})
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { Dates, Uuid } from '@standardnotes/domain-core'
|
||||
|
||||
export interface AuthenticatorProps {
|
||||
name: string
|
||||
userUuid: Uuid
|
||||
credentialId: Uint8Array
|
||||
credentialPublicKey: Uint8Array
|
||||
|
||||
@@ -343,7 +343,7 @@ describe('FeatureService', () => {
|
||||
])
|
||||
|
||||
const nonSubscriptionRole = {
|
||||
name: RoleName.NAMES.FilesBetaUser,
|
||||
name: RoleName.NAMES.InternalTeamUser,
|
||||
uuid: 'role-files-beta',
|
||||
permissions: Promise.resolve([nonSubscriptionPermission]),
|
||||
} as jest.Mocked<Role>
|
||||
|
||||
@@ -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}`)
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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>
|
||||
}
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -15,7 +15,6 @@ import { Logger } from 'winston'
|
||||
import TYPES from '../../Bootstrap/Types'
|
||||
import { DomainEventFactoryInterface } from '../Event/DomainEventFactoryInterface'
|
||||
import { User } from '../User/User'
|
||||
import { Setting } from './Setting'
|
||||
import { SettingDecrypterInterface } from './SettingDecrypterInterface'
|
||||
import { SettingInterpreterInterface } from './SettingInterpreterInterface'
|
||||
import { SettingRepositoryInterface } from './SettingRepositoryInterface'
|
||||
@@ -23,15 +22,15 @@ import { SettingRepositoryInterface } from './SettingRepositoryInterface'
|
||||
@injectable()
|
||||
export class SettingInterpreter implements SettingInterpreterInterface {
|
||||
private readonly cloudBackupTokenSettings = [
|
||||
SettingName.DropboxBackupToken,
|
||||
SettingName.GoogleDriveBackupToken,
|
||||
SettingName.OneDriveBackupToken,
|
||||
SettingName.NAMES.DropboxBackupToken,
|
||||
SettingName.NAMES.GoogleDriveBackupToken,
|
||||
SettingName.NAMES.OneDriveBackupToken,
|
||||
]
|
||||
|
||||
private readonly cloudBackupFrequencySettings = [
|
||||
SettingName.DropboxBackupFrequency,
|
||||
SettingName.GoogleDriveBackupFrequency,
|
||||
SettingName.OneDriveBackupFrequency,
|
||||
SettingName.NAMES.DropboxBackupFrequency,
|
||||
SettingName.NAMES.GoogleDriveBackupFrequency,
|
||||
SettingName.NAMES.OneDriveBackupFrequency,
|
||||
]
|
||||
|
||||
private readonly cloudBackupFrequencyDisabledValues = [
|
||||
@@ -40,11 +39,11 @@ export class SettingInterpreter implements SettingInterpreterInterface {
|
||||
OneDriveBackupFrequency.Disabled,
|
||||
]
|
||||
|
||||
private readonly emailSettingToSubscriptionRejectionLevelMap: Map<SettingName, string> = new Map([
|
||||
[SettingName.MuteFailedBackupsEmails, EmailLevel.LEVELS.FailedEmailBackup],
|
||||
[SettingName.MuteFailedCloudBackupsEmails, EmailLevel.LEVELS.FailedCloudBackup],
|
||||
[SettingName.MuteMarketingEmails, EmailLevel.LEVELS.Marketing],
|
||||
[SettingName.MuteSignInEmails, EmailLevel.LEVELS.SignIn],
|
||||
private readonly emailSettingToSubscriptionRejectionLevelMap: Map<string, string> = new Map([
|
||||
[SettingName.NAMES.MuteFailedBackupsEmails, EmailLevel.LEVELS.FailedEmailBackup],
|
||||
[SettingName.NAMES.MuteFailedCloudBackupsEmails, EmailLevel.LEVELS.FailedCloudBackup],
|
||||
[SettingName.NAMES.MuteMarketingEmails, EmailLevel.LEVELS.Marketing],
|
||||
[SettingName.NAMES.MuteSignInEmails, EmailLevel.LEVELS.SignIn],
|
||||
])
|
||||
|
||||
constructor(
|
||||
@@ -55,20 +54,24 @@ export class SettingInterpreter implements SettingInterpreterInterface {
|
||||
@inject(TYPES.Logger) private logger: Logger,
|
||||
) {}
|
||||
|
||||
async interpretSettingUpdated(updatedSetting: Setting, user: User, unencryptedValue: string | null): Promise<void> {
|
||||
if (this.isChangingMuteEmailsSetting(updatedSetting)) {
|
||||
await this.triggerEmailSubscriptionChange(user, updatedSetting.name as SettingName, unencryptedValue)
|
||||
async interpretSettingUpdated(
|
||||
updatedSettingName: string,
|
||||
user: User,
|
||||
unencryptedValue: string | null,
|
||||
): Promise<void> {
|
||||
if (this.isChangingMuteEmailsSetting(updatedSettingName)) {
|
||||
await this.triggerEmailSubscriptionChange(user, updatedSettingName, unencryptedValue)
|
||||
}
|
||||
|
||||
if (this.isEnablingEmailBackupSetting(updatedSetting)) {
|
||||
if (this.isEnablingEmailBackupSetting(updatedSettingName, unencryptedValue)) {
|
||||
await this.triggerEmailBackup(user.uuid)
|
||||
}
|
||||
|
||||
if (this.isEnablingCloudBackupSetting(updatedSetting)) {
|
||||
await this.triggerCloudBackup(updatedSetting, user.uuid, unencryptedValue)
|
||||
if (this.isEnablingCloudBackupSetting(updatedSettingName, unencryptedValue)) {
|
||||
await this.triggerCloudBackup(updatedSettingName, user.uuid, unencryptedValue)
|
||||
}
|
||||
|
||||
if (this.isDisablingSessionUserAgentLogging(updatedSetting)) {
|
||||
if (this.isDisablingSessionUserAgentLogging(updatedSettingName, unencryptedValue)) {
|
||||
await this.triggerSessionUserAgentCleanup(user)
|
||||
}
|
||||
}
|
||||
@@ -77,7 +80,7 @@ export class SettingInterpreter implements SettingInterpreterInterface {
|
||||
let userHasEmailsMuted = false
|
||||
let muteEmailsSettingUuid = ''
|
||||
const muteFailedEmailsBackupSetting = await this.settingRepository.findOneByNameAndUserUuid(
|
||||
SettingName.MuteFailedBackupsEmails,
|
||||
SettingName.NAMES.MuteFailedBackupsEmails,
|
||||
userUuid,
|
||||
)
|
||||
if (muteFailedEmailsBackupSetting !== null) {
|
||||
@@ -90,36 +93,39 @@ export class SettingInterpreter implements SettingInterpreterInterface {
|
||||
)
|
||||
}
|
||||
|
||||
private isChangingMuteEmailsSetting(setting: Setting): boolean {
|
||||
private isChangingMuteEmailsSetting(settingName: string): boolean {
|
||||
return [
|
||||
SettingName.MuteFailedBackupsEmails,
|
||||
SettingName.MuteFailedCloudBackupsEmails,
|
||||
SettingName.MuteMarketingEmails,
|
||||
SettingName.MuteSignInEmails,
|
||||
].includes(setting.name as SettingName)
|
||||
SettingName.NAMES.MuteFailedBackupsEmails,
|
||||
SettingName.NAMES.MuteFailedCloudBackupsEmails,
|
||||
SettingName.NAMES.MuteMarketingEmails,
|
||||
SettingName.NAMES.MuteSignInEmails,
|
||||
].includes(settingName)
|
||||
}
|
||||
|
||||
private isEnablingEmailBackupSetting(setting: Setting): boolean {
|
||||
return setting.name === SettingName.EmailBackupFrequency && setting.value !== EmailBackupFrequency.Disabled
|
||||
}
|
||||
|
||||
private isEnablingCloudBackupSetting(setting: Setting): boolean {
|
||||
private isEnablingEmailBackupSetting(settingName: string, newValue: string | null): boolean {
|
||||
return (
|
||||
(this.cloudBackupFrequencySettings.includes(setting.name as SettingName) ||
|
||||
this.cloudBackupTokenSettings.includes(setting.name as SettingName)) &&
|
||||
settingName === SettingName.NAMES.EmailBackupFrequency &&
|
||||
[EmailBackupFrequency.Daily, EmailBackupFrequency.Weekly].includes(newValue as EmailBackupFrequency)
|
||||
)
|
||||
}
|
||||
|
||||
private isEnablingCloudBackupSetting(settingName: string, newValue: string | null): boolean {
|
||||
return (
|
||||
(this.cloudBackupFrequencySettings.includes(settingName) ||
|
||||
this.cloudBackupTokenSettings.includes(settingName)) &&
|
||||
!this.cloudBackupFrequencyDisabledValues.includes(
|
||||
setting.value as DropboxBackupFrequency | OneDriveBackupFrequency | GoogleDriveBackupFrequency,
|
||||
newValue as DropboxBackupFrequency | OneDriveBackupFrequency | GoogleDriveBackupFrequency,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private isDisablingSessionUserAgentLogging(setting: Setting): boolean {
|
||||
return SettingName.LogSessionUserAgent === setting.name && LogSessionUserAgentOption.Disabled === setting.value
|
||||
private isDisablingSessionUserAgentLogging(settingName: string, newValue: string | null): boolean {
|
||||
return SettingName.NAMES.LogSessionUserAgent === settingName && LogSessionUserAgentOption.Disabled === newValue
|
||||
}
|
||||
|
||||
private async triggerEmailSubscriptionChange(
|
||||
user: User,
|
||||
settingName: SettingName,
|
||||
settingName: string,
|
||||
unencryptedValue: string | null,
|
||||
): Promise<void> {
|
||||
await this.domainEventPublisher.publish(
|
||||
@@ -140,33 +146,34 @@ export class SettingInterpreter implements SettingInterpreterInterface {
|
||||
)
|
||||
}
|
||||
|
||||
private async triggerCloudBackup(setting: Setting, userUuid: string, unencryptedValue: string | null): Promise<void> {
|
||||
private async triggerCloudBackup(
|
||||
settingName: string,
|
||||
userUuid: string,
|
||||
unencryptedValue: string | null,
|
||||
): Promise<void> {
|
||||
let cloudProvider
|
||||
let tokenSettingName
|
||||
switch (setting.name) {
|
||||
case SettingName.DropboxBackupToken:
|
||||
case SettingName.DropboxBackupFrequency:
|
||||
switch (settingName) {
|
||||
case SettingName.NAMES.DropboxBackupToken:
|
||||
case SettingName.NAMES.DropboxBackupFrequency:
|
||||
cloudProvider = 'DROPBOX'
|
||||
tokenSettingName = SettingName.DropboxBackupToken
|
||||
tokenSettingName = SettingName.NAMES.DropboxBackupToken
|
||||
break
|
||||
case SettingName.GoogleDriveBackupToken:
|
||||
case SettingName.GoogleDriveBackupFrequency:
|
||||
case SettingName.NAMES.GoogleDriveBackupToken:
|
||||
case SettingName.NAMES.GoogleDriveBackupFrequency:
|
||||
cloudProvider = 'GOOGLE_DRIVE'
|
||||
tokenSettingName = SettingName.GoogleDriveBackupToken
|
||||
tokenSettingName = SettingName.NAMES.GoogleDriveBackupToken
|
||||
break
|
||||
case SettingName.OneDriveBackupToken:
|
||||
case SettingName.OneDriveBackupFrequency:
|
||||
case SettingName.NAMES.OneDriveBackupToken:
|
||||
case SettingName.NAMES.OneDriveBackupFrequency:
|
||||
cloudProvider = 'ONE_DRIVE'
|
||||
tokenSettingName = SettingName.OneDriveBackupToken
|
||||
tokenSettingName = SettingName.NAMES.OneDriveBackupToken
|
||||
break
|
||||
}
|
||||
|
||||
let backupToken = null
|
||||
if (this.cloudBackupFrequencySettings.includes(setting.name as SettingName)) {
|
||||
const tokenSetting = await this.settingRepository.findLastByNameAndUserUuid(
|
||||
tokenSettingName as SettingName,
|
||||
userUuid,
|
||||
)
|
||||
if (this.cloudBackupFrequencySettings.includes(settingName)) {
|
||||
const tokenSetting = await this.settingRepository.findLastByNameAndUserUuid(tokenSettingName as string, userUuid)
|
||||
if (tokenSetting !== null) {
|
||||
backupToken = await this.settingDecrypter.decryptSettingValue(tokenSetting, userUuid)
|
||||
}
|
||||
@@ -183,7 +190,7 @@ export class SettingInterpreter implements SettingInterpreterInterface {
|
||||
let userHasEmailsMuted = false
|
||||
let muteEmailsSettingUuid = ''
|
||||
const muteFailedCloudBackupSetting = await this.settingRepository.findOneByNameAndUserUuid(
|
||||
SettingName.MuteFailedCloudBackupsEmails,
|
||||
SettingName.NAMES.MuteFailedCloudBackupsEmails,
|
||||
userUuid,
|
||||
)
|
||||
if (muteFailedCloudBackupSetting !== null) {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { User } from '../User/User'
|
||||
import { Setting } from './Setting'
|
||||
|
||||
export interface SettingInterpreterInterface {
|
||||
interpretSettingUpdated(updatedSetting: Setting, user: User, newUnencryptedValue: string | null): Promise<void>
|
||||
interpretSettingUpdated(updatedSettingName: string, user: User, newUnencryptedValue: string | null): Promise<void>
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ export interface SettingRepositoryInterface {
|
||||
findLastByNameAndUserUuid(name: string, userUuid: string): Promise<Setting | null>
|
||||
findAllByUserUuid(userUuid: string): Promise<Setting[]>
|
||||
streamAllByNameAndValue(name: SettingName, value: string): Promise<ReadStream>
|
||||
streamAllByName(name: SettingName): Promise<ReadStream>
|
||||
deleteByUserUuid(dto: DeleteSettingDto): Promise<void>
|
||||
save(setting: Setting): Promise<Setting>
|
||||
}
|
||||
|
||||
@@ -39,7 +39,9 @@ describe('SettingService', () => {
|
||||
} as jest.Mocked<User>
|
||||
user.isPotentiallyAVaultAccount = jest.fn().mockReturnValue(false)
|
||||
|
||||
setting = {} as jest.Mocked<Setting>
|
||||
setting = {
|
||||
name: SettingName.NAMES.DropboxBackupToken,
|
||||
} as jest.Mocked<Setting>
|
||||
|
||||
factory = {} as jest.Mocked<SettingFactoryInterface>
|
||||
factory.create = jest.fn().mockReturnValue(setting)
|
||||
@@ -54,7 +56,7 @@ describe('SettingService', () => {
|
||||
settingsAssociationService.getDefaultSettingsAndValuesForNewUser = jest.fn().mockReturnValue(
|
||||
new Map([
|
||||
[
|
||||
SettingName.MuteSignInEmails,
|
||||
SettingName.NAMES.MuteSignInEmails,
|
||||
{
|
||||
value: MuteSignInEmailsOption.NotMuted,
|
||||
sensitive: 0,
|
||||
@@ -67,7 +69,7 @@ describe('SettingService', () => {
|
||||
settingsAssociationService.getDefaultSettingsAndValuesForNewVaultAccount = jest.fn().mockReturnValue(
|
||||
new Map([
|
||||
[
|
||||
SettingName.LogSessionUserAgent,
|
||||
SettingName.NAMES.LogSessionUserAgent,
|
||||
{
|
||||
sensitive: false,
|
||||
serverEncryptionVersion: EncryptionVersion.Unencrypted,
|
||||
@@ -107,7 +109,7 @@ describe('SettingService', () => {
|
||||
const result = await createService().createOrReplace({
|
||||
user,
|
||||
props: {
|
||||
name: 'name',
|
||||
name: SettingName.NAMES.MuteFailedBackupsEmails,
|
||||
unencryptedValue: 'value',
|
||||
serverEncryptionVersion: 1,
|
||||
sensitive: false,
|
||||
@@ -117,6 +119,20 @@ describe('SettingService', () => {
|
||||
expect(result.status).toEqual('created')
|
||||
})
|
||||
|
||||
it('should throw error if setting name is not valid', async () => {
|
||||
await expect(
|
||||
createService().createOrReplace({
|
||||
user,
|
||||
props: {
|
||||
name: 'invalid',
|
||||
unencryptedValue: 'value',
|
||||
serverEncryptionVersion: 1,
|
||||
sensitive: false,
|
||||
},
|
||||
}),
|
||||
).rejects.toThrowError('Invalid setting name: invalid')
|
||||
})
|
||||
|
||||
it('should create setting with a given uuid if it does not exist', async () => {
|
||||
settingRepository.findOneByUuid = jest.fn().mockReturnValue(null)
|
||||
|
||||
@@ -124,7 +140,7 @@ describe('SettingService', () => {
|
||||
user,
|
||||
props: {
|
||||
uuid: '1-2-3',
|
||||
name: 'name',
|
||||
name: SettingName.NAMES.MuteFailedBackupsEmails,
|
||||
unencryptedValue: 'value',
|
||||
serverEncryptionVersion: 1,
|
||||
sensitive: false,
|
||||
@@ -174,7 +190,10 @@ describe('SettingService', () => {
|
||||
settingRepository.findLastByNameAndUserUuid = jest.fn().mockReturnValue(setting)
|
||||
|
||||
expect(
|
||||
await createService().findSettingWithDecryptedValue({ userUuid: '1-2-3', settingName: 'test' as SettingName }),
|
||||
await createService().findSettingWithDecryptedValue({
|
||||
userUuid: '1-2-3',
|
||||
settingName: SettingName.create(SettingName.NAMES.LogSessionUserAgent).getValue(),
|
||||
}),
|
||||
).toEqual({
|
||||
serverEncryptionVersion: 1,
|
||||
value: 'decrypted',
|
||||
|
||||
@@ -57,7 +57,7 @@ export class SettingService implements SettingServiceInterface {
|
||||
if (dto.settingUuid !== undefined) {
|
||||
setting = await this.settingRepository.findOneByUuid(dto.settingUuid)
|
||||
} else {
|
||||
setting = await this.settingRepository.findLastByNameAndUserUuid(dto.settingName, dto.userUuid)
|
||||
setting = await this.settingRepository.findLastByNameAndUserUuid(dto.settingName.value, dto.userUuid)
|
||||
}
|
||||
|
||||
if (setting === null) {
|
||||
@@ -72,9 +72,15 @@ export class SettingService implements SettingServiceInterface {
|
||||
async createOrReplace(dto: CreateOrReplaceSettingDto): Promise<CreateOrReplaceSettingResponse> {
|
||||
const { user, props } = dto
|
||||
|
||||
const settingNameOrError = SettingName.create(props.name)
|
||||
if (settingNameOrError.isFailed()) {
|
||||
throw new Error(settingNameOrError.getError())
|
||||
}
|
||||
const settingName = settingNameOrError.getValue()
|
||||
|
||||
const existing = await this.findSettingWithDecryptedValue({
|
||||
userUuid: user.uuid,
|
||||
settingName: props.name as SettingName,
|
||||
settingName,
|
||||
settingUuid: props.uuid,
|
||||
})
|
||||
|
||||
@@ -83,7 +89,7 @@ export class SettingService implements SettingServiceInterface {
|
||||
|
||||
this.logger.debug('[%s] Created setting %s: %O', user.uuid, props.name, setting)
|
||||
|
||||
await this.settingInterpreter.interpretSettingUpdated(setting, user, props.unencryptedValue)
|
||||
await this.settingInterpreter.interpretSettingUpdated(setting.name, user, props.unencryptedValue)
|
||||
|
||||
return {
|
||||
status: 'created',
|
||||
@@ -95,7 +101,7 @@ export class SettingService implements SettingServiceInterface {
|
||||
|
||||
this.logger.debug('[%s] Replaced existing setting %s with: %O', user.uuid, props.name, setting)
|
||||
|
||||
await this.settingInterpreter.interpretSettingUpdated(setting, user, props.unencryptedValue)
|
||||
await this.settingInterpreter.interpretSettingUpdated(setting.name, user, props.unencryptedValue)
|
||||
|
||||
return {
|
||||
status: 'replaced',
|
||||
|
||||
@@ -11,52 +11,68 @@ describe('SettingsAssociationService', () => {
|
||||
const createService = () => new SettingsAssociationService()
|
||||
|
||||
it('should tell if a setting is mutable by the client', () => {
|
||||
expect(createService().isSettingMutableByClient(SettingName.DropboxBackupFrequency)).toBeTruthy()
|
||||
expect(
|
||||
createService().isSettingMutableByClient(SettingName.create(SettingName.NAMES.DropboxBackupFrequency).getValue()),
|
||||
).toBeTruthy()
|
||||
})
|
||||
|
||||
it('should tell if a setting is immutable by the client', () => {
|
||||
expect(createService().isSettingMutableByClient(SettingName.ListedAuthorSecrets)).toBeFalsy()
|
||||
expect(
|
||||
createService().isSettingMutableByClient(SettingName.create(SettingName.NAMES.ListedAuthorSecrets).getValue()),
|
||||
).toBeFalsy()
|
||||
})
|
||||
|
||||
it('should return default encryption version for a setting which enecryption version is not strictly defined', () => {
|
||||
expect(createService().getEncryptionVersionForSetting(SettingName.MfaSecret)).toEqual(EncryptionVersion.Default)
|
||||
expect(
|
||||
createService().getEncryptionVersionForSetting(SettingName.create(SettingName.NAMES.MfaSecret).getValue()),
|
||||
).toEqual(EncryptionVersion.Default)
|
||||
})
|
||||
|
||||
it('should return a defined encryption version for a setting which enecryption version is strictly defined', () => {
|
||||
expect(createService().getEncryptionVersionForSetting(SettingName.EmailBackupFrequency)).toEqual(
|
||||
EncryptionVersion.Unencrypted,
|
||||
)
|
||||
expect(
|
||||
createService().getEncryptionVersionForSetting(
|
||||
SettingName.create(SettingName.NAMES.EmailBackupFrequency).getValue(),
|
||||
),
|
||||
).toEqual(EncryptionVersion.Unencrypted)
|
||||
})
|
||||
|
||||
it('should return default sensitivity for a setting which sensitivity is not strictly defined', () => {
|
||||
expect(createService().getSensitivityForSetting(SettingName.DropboxBackupToken)).toBeTruthy()
|
||||
expect(
|
||||
createService().getSensitivityForSetting(SettingName.create(SettingName.NAMES.DropboxBackupToken).getValue()),
|
||||
).toBeTruthy()
|
||||
})
|
||||
|
||||
it('should return a defined sensitivity for a setting which sensitivity is strictly defined', () => {
|
||||
expect(createService().getSensitivityForSetting(SettingName.DropboxBackupFrequency)).toBeFalsy()
|
||||
expect(
|
||||
createService().getSensitivityForSetting(SettingName.create(SettingName.NAMES.DropboxBackupFrequency).getValue()),
|
||||
).toBeFalsy()
|
||||
})
|
||||
|
||||
it('should return the default set of settings for a newly registered user', () => {
|
||||
const settings = createService().getDefaultSettingsAndValuesForNewUser()
|
||||
const flatSettings = [...(settings as Map<SettingName, SettingDescription>).keys()]
|
||||
expect(flatSettings).toEqual(['MUTE_SIGN_IN_EMAILS', 'MUTE_MARKETING_EMAILS', 'LOG_SESSION_USER_AGENT'])
|
||||
const flatSettings = [...(settings as Map<string, SettingDescription>).keys()]
|
||||
expect(flatSettings).toEqual(['MUTE_MARKETING_EMAILS', 'LOG_SESSION_USER_AGENT'])
|
||||
})
|
||||
|
||||
it('should return the default set of settings for a newly registered vault account', () => {
|
||||
const settings = createService().getDefaultSettingsAndValuesForNewVaultAccount()
|
||||
const flatSettings = [...(settings as Map<SettingName, SettingDescription>).keys()]
|
||||
expect(flatSettings).toEqual(['MUTE_SIGN_IN_EMAILS', 'MUTE_MARKETING_EMAILS', 'LOG_SESSION_USER_AGENT'])
|
||||
const flatSettings = [...(settings as Map<string, SettingDescription>).keys()]
|
||||
expect(flatSettings).toEqual(['MUTE_MARKETING_EMAILS', 'LOG_SESSION_USER_AGENT'])
|
||||
|
||||
expect(settings.get(SettingName.LogSessionUserAgent)?.value).toEqual('disabled')
|
||||
expect(settings.get(SettingName.NAMES.LogSessionUserAgent)?.value).toEqual('disabled')
|
||||
})
|
||||
|
||||
it('should return a permission name associated to a given setting', () => {
|
||||
expect(createService().getPermissionAssociatedWithSetting(SettingName.EmailBackupFrequency)).toEqual(
|
||||
PermissionName.DailyEmailBackup,
|
||||
)
|
||||
expect(
|
||||
createService().getPermissionAssociatedWithSetting(
|
||||
SettingName.create(SettingName.NAMES.EmailBackupFrequency).getValue(),
|
||||
),
|
||||
).toEqual(PermissionName.DailyEmailBackup)
|
||||
})
|
||||
|
||||
it('should not return a permission name if not associated to a given setting', () => {
|
||||
expect(createService().getPermissionAssociatedWithSetting(SettingName.ExtensionKey)).toBeUndefined()
|
||||
expect(
|
||||
createService().getPermissionAssociatedWithSetting(SettingName.create(SettingName.NAMES.ExtensionKey).getValue()),
|
||||
).toBeUndefined()
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
import { PermissionName } from '@standardnotes/features'
|
||||
import {
|
||||
LogSessionUserAgentOption,
|
||||
MuteMarketingEmailsOption,
|
||||
MuteSignInEmailsOption,
|
||||
SettingName,
|
||||
} from '@standardnotes/settings'
|
||||
import { LogSessionUserAgentOption, MuteMarketingEmailsOption, SettingName } from '@standardnotes/settings'
|
||||
import { injectable } from 'inversify'
|
||||
|
||||
import { EncryptionVersion } from '../Encryption/EncryptionVersion'
|
||||
@@ -15,48 +10,44 @@ import { SettingsAssociationServiceInterface } from './SettingsAssociationServic
|
||||
@injectable()
|
||||
export class SettingsAssociationService implements SettingsAssociationServiceInterface {
|
||||
private readonly UNENCRYPTED_SETTINGS = [
|
||||
SettingName.EmailBackupFrequency,
|
||||
SettingName.MuteFailedBackupsEmails,
|
||||
SettingName.MuteFailedCloudBackupsEmails,
|
||||
SettingName.MuteSignInEmails,
|
||||
SettingName.MuteMarketingEmails,
|
||||
SettingName.DropboxBackupFrequency,
|
||||
SettingName.GoogleDriveBackupFrequency,
|
||||
SettingName.OneDriveBackupFrequency,
|
||||
SettingName.LogSessionUserAgent,
|
||||
SettingName.NAMES.EmailBackupFrequency,
|
||||
SettingName.NAMES.MuteFailedBackupsEmails,
|
||||
SettingName.NAMES.MuteFailedCloudBackupsEmails,
|
||||
SettingName.NAMES.MuteSignInEmails,
|
||||
SettingName.NAMES.MuteMarketingEmails,
|
||||
SettingName.NAMES.DropboxBackupFrequency,
|
||||
SettingName.NAMES.GoogleDriveBackupFrequency,
|
||||
SettingName.NAMES.OneDriveBackupFrequency,
|
||||
SettingName.NAMES.LogSessionUserAgent,
|
||||
]
|
||||
|
||||
private readonly UNSENSITIVE_SETTINGS = [
|
||||
SettingName.DropboxBackupFrequency,
|
||||
SettingName.GoogleDriveBackupFrequency,
|
||||
SettingName.OneDriveBackupFrequency,
|
||||
SettingName.EmailBackupFrequency,
|
||||
SettingName.MuteFailedBackupsEmails,
|
||||
SettingName.MuteFailedCloudBackupsEmails,
|
||||
SettingName.MuteSignInEmails,
|
||||
SettingName.MuteMarketingEmails,
|
||||
SettingName.ListedAuthorSecrets,
|
||||
SettingName.LogSessionUserAgent,
|
||||
SettingName.NAMES.DropboxBackupFrequency,
|
||||
SettingName.NAMES.GoogleDriveBackupFrequency,
|
||||
SettingName.NAMES.OneDriveBackupFrequency,
|
||||
SettingName.NAMES.EmailBackupFrequency,
|
||||
SettingName.NAMES.MuteFailedBackupsEmails,
|
||||
SettingName.NAMES.MuteFailedCloudBackupsEmails,
|
||||
SettingName.NAMES.MuteSignInEmails,
|
||||
SettingName.NAMES.MuteMarketingEmails,
|
||||
SettingName.NAMES.ListedAuthorSecrets,
|
||||
SettingName.NAMES.LogSessionUserAgent,
|
||||
]
|
||||
|
||||
private readonly CLIENT_IMMUTABLE_SETTINGS = [SettingName.ListedAuthorSecrets]
|
||||
private readonly CLIENT_IMMUTABLE_SETTINGS = [
|
||||
SettingName.NAMES.ListedAuthorSecrets,
|
||||
SettingName.NAMES.FileUploadBytesLimit,
|
||||
SettingName.NAMES.FileUploadBytesUsed,
|
||||
]
|
||||
|
||||
private readonly permissionsAssociatedWithSettings = new Map<SettingName, PermissionName>([
|
||||
[SettingName.EmailBackupFrequency, PermissionName.DailyEmailBackup],
|
||||
private readonly permissionsAssociatedWithSettings = new Map<string, PermissionName>([
|
||||
[SettingName.NAMES.EmailBackupFrequency, PermissionName.DailyEmailBackup],
|
||||
[SettingName.NAMES.MuteSignInEmails, PermissionName.SignInAlerts],
|
||||
])
|
||||
|
||||
private readonly defaultSettings = new Map<SettingName, SettingDescription>([
|
||||
private readonly defaultSettings = new Map<string, SettingDescription>([
|
||||
[
|
||||
SettingName.MuteSignInEmails,
|
||||
{
|
||||
sensitive: false,
|
||||
serverEncryptionVersion: EncryptionVersion.Unencrypted,
|
||||
value: MuteSignInEmailsOption.NotMuted,
|
||||
replaceable: false,
|
||||
},
|
||||
],
|
||||
[
|
||||
SettingName.MuteMarketingEmails,
|
||||
SettingName.NAMES.MuteMarketingEmails,
|
||||
{
|
||||
sensitive: false,
|
||||
serverEncryptionVersion: EncryptionVersion.Unencrypted,
|
||||
@@ -65,7 +56,7 @@ export class SettingsAssociationService implements SettingsAssociationServiceInt
|
||||
},
|
||||
],
|
||||
[
|
||||
SettingName.LogSessionUserAgent,
|
||||
SettingName.NAMES.LogSessionUserAgent,
|
||||
{
|
||||
sensitive: false,
|
||||
serverEncryptionVersion: EncryptionVersion.Unencrypted,
|
||||
@@ -75,9 +66,9 @@ export class SettingsAssociationService implements SettingsAssociationServiceInt
|
||||
],
|
||||
])
|
||||
|
||||
private readonly vaultAccountDefaultSettingsOverwrites = new Map<SettingName, SettingDescription>([
|
||||
private readonly vaultAccountDefaultSettingsOverwrites = new Map<string, SettingDescription>([
|
||||
[
|
||||
SettingName.LogSessionUserAgent,
|
||||
SettingName.NAMES.LogSessionUserAgent,
|
||||
{
|
||||
sensitive: false,
|
||||
serverEncryptionVersion: EncryptionVersion.Unencrypted,
|
||||
@@ -88,7 +79,7 @@ export class SettingsAssociationService implements SettingsAssociationServiceInt
|
||||
])
|
||||
|
||||
isSettingMutableByClient(settingName: SettingName): boolean {
|
||||
if (this.CLIENT_IMMUTABLE_SETTINGS.includes(settingName)) {
|
||||
if (this.CLIENT_IMMUTABLE_SETTINGS.includes(settingName.value)) {
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -96,7 +87,7 @@ export class SettingsAssociationService implements SettingsAssociationServiceInt
|
||||
}
|
||||
|
||||
getSensitivityForSetting(settingName: SettingName): boolean {
|
||||
if (this.UNSENSITIVE_SETTINGS.includes(settingName)) {
|
||||
if (this.UNSENSITIVE_SETTINGS.includes(settingName.value)) {
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -104,7 +95,7 @@ export class SettingsAssociationService implements SettingsAssociationServiceInt
|
||||
}
|
||||
|
||||
getEncryptionVersionForSetting(settingName: SettingName): EncryptionVersion {
|
||||
if (this.UNENCRYPTED_SETTINGS.includes(settingName)) {
|
||||
if (this.UNENCRYPTED_SETTINGS.includes(settingName.value)) {
|
||||
return EncryptionVersion.Unencrypted
|
||||
}
|
||||
|
||||
@@ -112,18 +103,18 @@ export class SettingsAssociationService implements SettingsAssociationServiceInt
|
||||
}
|
||||
|
||||
getPermissionAssociatedWithSetting(settingName: SettingName): PermissionName | undefined {
|
||||
if (!this.permissionsAssociatedWithSettings.has(settingName)) {
|
||||
if (!this.permissionsAssociatedWithSettings.has(settingName.value)) {
|
||||
return undefined
|
||||
}
|
||||
|
||||
return this.permissionsAssociatedWithSettings.get(settingName)
|
||||
return this.permissionsAssociatedWithSettings.get(settingName.value)
|
||||
}
|
||||
|
||||
getDefaultSettingsAndValuesForNewUser(): Map<SettingName, SettingDescription> {
|
||||
getDefaultSettingsAndValuesForNewUser(): Map<string, SettingDescription> {
|
||||
return this.defaultSettings
|
||||
}
|
||||
|
||||
getDefaultSettingsAndValuesForNewVaultAccount(): Map<SettingName, SettingDescription> {
|
||||
getDefaultSettingsAndValuesForNewVaultAccount(): Map<string, SettingDescription> {
|
||||
const defaultVaultSettings = new Map(this.defaultSettings)
|
||||
|
||||
for (const vaultAccountDefaultSettingOverwriteKey of this.vaultAccountDefaultSettingsOverwrites.keys()) {
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
import { PermissionName } from '@standardnotes/features'
|
||||
import { SettingName, SubscriptionSettingName } from '@standardnotes/settings'
|
||||
import { SettingName } from '@standardnotes/settings'
|
||||
|
||||
import { EncryptionVersion } from '../Encryption/EncryptionVersion'
|
||||
import { SettingDescription } from './SettingDescription'
|
||||
|
||||
export interface SettingsAssociationServiceInterface {
|
||||
getDefaultSettingsAndValuesForNewUser(): Map<SettingName, SettingDescription>
|
||||
getDefaultSettingsAndValuesForNewVaultAccount(): Map<SettingName, SettingDescription>
|
||||
getDefaultSettingsAndValuesForNewUser(): Map<string, SettingDescription>
|
||||
getDefaultSettingsAndValuesForNewVaultAccount(): Map<string, SettingDescription>
|
||||
getPermissionAssociatedWithSetting(settingName: SettingName): PermissionName | undefined
|
||||
getEncryptionVersionForSetting(settingName: SettingName): EncryptionVersion
|
||||
getSensitivityForSetting(settingName: SettingName): boolean
|
||||
isSettingMutableByClient(settingName: SettingName | SubscriptionSettingName): boolean
|
||||
isSettingMutableByClient(settingName: SettingName): boolean
|
||||
}
|
||||
|
||||
@@ -3,5 +3,6 @@ import { SubscriptionSetting } from './SubscriptionSetting'
|
||||
export interface SubscriptionSettingRepositoryInterface {
|
||||
findOneByUuid(uuid: string): Promise<SubscriptionSetting | null>
|
||||
findLastByNameAndUserSubscriptionUuid(name: string, userSubscriptionUuid: string): Promise<SubscriptionSetting | null>
|
||||
findAllBySubscriptionUuid(userSubscriptionUuid: string): Promise<SubscriptionSetting[]>
|
||||
save(subscriptionSetting: SubscriptionSetting): Promise<SubscriptionSetting>
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'reflect-metadata'
|
||||
|
||||
import { SubscriptionSettingName } from '@standardnotes/settings'
|
||||
import { Logger } from 'winston'
|
||||
import { EncryptionVersion } from '../Encryption/EncryptionVersion'
|
||||
|
||||
@@ -14,6 +13,8 @@ import { User } from '../User/User'
|
||||
import { SettingFactoryInterface } from './SettingFactoryInterface'
|
||||
import { SubscriptionSettingsAssociationServiceInterface } from './SubscriptionSettingsAssociationServiceInterface'
|
||||
import { UserSubscriptionRepositoryInterface } from '../Subscription/UserSubscriptionRepositoryInterface'
|
||||
import { SettingName } from '@standardnotes/settings'
|
||||
import { SettingInterpreterInterface } from './SettingInterpreterInterface'
|
||||
|
||||
describe('SubscriptionSettingService', () => {
|
||||
let setting: SubscriptionSetting
|
||||
@@ -22,6 +23,7 @@ describe('SubscriptionSettingService', () => {
|
||||
let factory: SettingFactoryInterface
|
||||
let subscriptionSettingRepository: SubscriptionSettingRepositoryInterface
|
||||
let subscriptionSettingsAssociationService: SubscriptionSettingsAssociationServiceInterface
|
||||
let settingInterpreter: SettingInterpreterInterface
|
||||
let settingDecrypter: SettingDecrypterInterface
|
||||
let userSubscriptionRepository: UserSubscriptionRepositoryInterface
|
||||
let logger: Logger
|
||||
@@ -31,6 +33,7 @@ describe('SubscriptionSettingService', () => {
|
||||
factory,
|
||||
subscriptionSettingRepository,
|
||||
subscriptionSettingsAssociationService,
|
||||
settingInterpreter,
|
||||
settingDecrypter,
|
||||
userSubscriptionRepository,
|
||||
logger,
|
||||
@@ -44,7 +47,9 @@ describe('SubscriptionSettingService', () => {
|
||||
user: Promise.resolve(user),
|
||||
} as jest.Mocked<UserSubscription>
|
||||
|
||||
setting = {} as jest.Mocked<SubscriptionSetting>
|
||||
setting = {
|
||||
name: SettingName.NAMES.FileUploadBytesUsed,
|
||||
} as jest.Mocked<SubscriptionSetting>
|
||||
|
||||
factory = {} as jest.Mocked<SettingFactoryInterface>
|
||||
factory.createSubscriptionSetting = jest.fn().mockReturnValue(setting)
|
||||
@@ -68,7 +73,7 @@ describe('SubscriptionSettingService', () => {
|
||||
subscriptionSettingsAssociationService.getDefaultSettingsAndValuesForSubscriptionName = jest.fn().mockReturnValue(
|
||||
new Map([
|
||||
[
|
||||
SubscriptionSettingName.FileUploadBytesUsed,
|
||||
SettingName.NAMES.FileUploadBytesUsed,
|
||||
{
|
||||
value: '0',
|
||||
sensitive: 0,
|
||||
@@ -79,6 +84,9 @@ describe('SubscriptionSettingService', () => {
|
||||
]),
|
||||
)
|
||||
|
||||
settingInterpreter = {} as jest.Mocked<SettingInterpreterInterface>
|
||||
settingInterpreter.interpretSettingUpdated = jest.fn()
|
||||
|
||||
settingDecrypter = {} as jest.Mocked<SettingDecrypterInterface>
|
||||
settingDecrypter.decryptSettingValue = jest.fn().mockReturnValue('decrypted')
|
||||
|
||||
@@ -98,11 +106,59 @@ describe('SubscriptionSettingService', () => {
|
||||
expect(subscriptionSettingRepository.save).toHaveBeenCalledWith(setting)
|
||||
})
|
||||
|
||||
it('should throw error if subscription setting is invalid', async () => {
|
||||
subscriptionSettingsAssociationService.getDefaultSettingsAndValuesForSubscriptionName = jest.fn().mockReturnValue(
|
||||
new Map([
|
||||
[
|
||||
'invalid',
|
||||
{
|
||||
value: '0',
|
||||
sensitive: 0,
|
||||
serverEncryptionVersion: EncryptionVersion.Unencrypted,
|
||||
replaceable: true,
|
||||
},
|
||||
],
|
||||
]),
|
||||
)
|
||||
|
||||
await expect(
|
||||
createService().applyDefaultSubscriptionSettingsForSubscription(
|
||||
userSubscription,
|
||||
SubscriptionName.PlusPlan,
|
||||
'1-2-3',
|
||||
),
|
||||
).rejects.toThrow()
|
||||
})
|
||||
|
||||
it('should throw error if setting name is not a subscription setting when applying defaults', async () => {
|
||||
subscriptionSettingsAssociationService.getDefaultSettingsAndValuesForSubscriptionName = jest.fn().mockReturnValue(
|
||||
new Map([
|
||||
[
|
||||
SettingName.NAMES.DropboxBackupFrequency,
|
||||
{
|
||||
value: '0',
|
||||
sensitive: 0,
|
||||
serverEncryptionVersion: EncryptionVersion.Unencrypted,
|
||||
replaceable: false,
|
||||
},
|
||||
],
|
||||
]),
|
||||
)
|
||||
|
||||
await expect(
|
||||
createService().applyDefaultSubscriptionSettingsForSubscription(
|
||||
userSubscription,
|
||||
SubscriptionName.PlusPlan,
|
||||
'1-2-3',
|
||||
),
|
||||
).rejects.toThrow()
|
||||
})
|
||||
|
||||
it('should reassign existing default settings for a subscription if it is not replaceable', async () => {
|
||||
subscriptionSettingsAssociationService.getDefaultSettingsAndValuesForSubscriptionName = jest.fn().mockReturnValue(
|
||||
new Map([
|
||||
[
|
||||
SubscriptionSettingName.FileUploadBytesUsed,
|
||||
SettingName.NAMES.FileUploadBytesUsed,
|
||||
{
|
||||
value: '0',
|
||||
sensitive: 0,
|
||||
@@ -127,7 +183,7 @@ describe('SubscriptionSettingService', () => {
|
||||
subscriptionSettingsAssociationService.getDefaultSettingsAndValuesForSubscriptionName = jest.fn().mockReturnValue(
|
||||
new Map([
|
||||
[
|
||||
SubscriptionSettingName.FileUploadBytesUsed,
|
||||
SettingName.NAMES.FileUploadBytesUsed,
|
||||
{
|
||||
value: '0',
|
||||
sensitive: 0,
|
||||
@@ -152,7 +208,7 @@ describe('SubscriptionSettingService', () => {
|
||||
subscriptionSettingsAssociationService.getDefaultSettingsAndValuesForSubscriptionName = jest.fn().mockReturnValue(
|
||||
new Map([
|
||||
[
|
||||
SubscriptionSettingName.FileUploadBytesUsed,
|
||||
SettingName.NAMES.FileUploadBytesUsed,
|
||||
{
|
||||
value: '0',
|
||||
sensitive: 0,
|
||||
@@ -196,7 +252,7 @@ describe('SubscriptionSettingService', () => {
|
||||
const result = await createService().createOrReplace({
|
||||
userSubscription,
|
||||
props: {
|
||||
name: 'name',
|
||||
name: SettingName.NAMES.FileUploadBytesLimit,
|
||||
unencryptedValue: 'value',
|
||||
serverEncryptionVersion: 1,
|
||||
sensitive: false,
|
||||
@@ -206,6 +262,34 @@ describe('SubscriptionSettingService', () => {
|
||||
expect(result.status).toEqual('created')
|
||||
})
|
||||
|
||||
it('should throw error if the setting name is not valid', async () => {
|
||||
await expect(
|
||||
createService().createOrReplace({
|
||||
userSubscription,
|
||||
props: {
|
||||
name: 'invalid',
|
||||
unencryptedValue: 'value',
|
||||
serverEncryptionVersion: 1,
|
||||
sensitive: false,
|
||||
},
|
||||
}),
|
||||
).rejects.toThrow()
|
||||
})
|
||||
|
||||
it('should throw error if the setting name is not a subscription setting', async () => {
|
||||
await expect(
|
||||
createService().createOrReplace({
|
||||
userSubscription,
|
||||
props: {
|
||||
name: SettingName.NAMES.DropboxBackupFrequency,
|
||||
unencryptedValue: 'value',
|
||||
serverEncryptionVersion: 1,
|
||||
sensitive: false,
|
||||
},
|
||||
}),
|
||||
).rejects.toThrow()
|
||||
})
|
||||
|
||||
it('should create setting with a given uuid if it does not exist', async () => {
|
||||
subscriptionSettingRepository.findOneByUuid = jest.fn().mockReturnValue(null)
|
||||
|
||||
@@ -213,7 +297,7 @@ describe('SubscriptionSettingService', () => {
|
||||
userSubscription,
|
||||
props: {
|
||||
uuid: '1-2-3',
|
||||
name: 'name',
|
||||
name: SettingName.NAMES.FileUploadBytesLimit,
|
||||
unencryptedValue: 'value',
|
||||
serverEncryptionVersion: 1,
|
||||
sensitive: false,
|
||||
@@ -266,11 +350,21 @@ describe('SubscriptionSettingService', () => {
|
||||
await createService().findSubscriptionSettingWithDecryptedValue({
|
||||
userSubscriptionUuid: '2-3-4',
|
||||
userUuid: '1-2-3',
|
||||
subscriptionSettingName: 'test' as SubscriptionSettingName,
|
||||
subscriptionSettingName: SettingName.create(SettingName.NAMES.FileUploadBytesLimit).getValue(),
|
||||
}),
|
||||
).toEqual({
|
||||
serverEncryptionVersion: 1,
|
||||
value: 'decrypted',
|
||||
})
|
||||
})
|
||||
|
||||
it('should throw error when trying to find and decrypt a setting with invalid subscription setting name', async () => {
|
||||
await expect(
|
||||
createService().findSubscriptionSettingWithDecryptedValue({
|
||||
userSubscriptionUuid: '2-3-4',
|
||||
userUuid: '1-2-3',
|
||||
subscriptionSettingName: SettingName.create(SettingName.NAMES.DropboxBackupFrequency).getValue(),
|
||||
}),
|
||||
).rejects.toThrow()
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { SubscriptionName } from '@standardnotes/common'
|
||||
import { SubscriptionSettingName } from '@standardnotes/settings'
|
||||
import { inject, injectable } from 'inversify'
|
||||
import { Logger } from 'winston'
|
||||
|
||||
@@ -17,6 +16,8 @@ import { SubscriptionSettingRepositoryInterface } from './SubscriptionSettingRep
|
||||
import { SettingFactoryInterface } from './SettingFactoryInterface'
|
||||
import { SubscriptionSettingsAssociationServiceInterface } from './SubscriptionSettingsAssociationServiceInterface'
|
||||
import { UserSubscriptionRepositoryInterface } from '../Subscription/UserSubscriptionRepositoryInterface'
|
||||
import { SettingName } from '@standardnotes/settings'
|
||||
import { SettingInterpreterInterface } from './SettingInterpreterInterface'
|
||||
|
||||
@injectable()
|
||||
export class SubscriptionSettingService implements SubscriptionSettingServiceInterface {
|
||||
@@ -26,6 +27,7 @@ export class SubscriptionSettingService implements SubscriptionSettingServiceInt
|
||||
private subscriptionSettingRepository: SubscriptionSettingRepositoryInterface,
|
||||
@inject(TYPES.SubscriptionSettingsAssociationService)
|
||||
private subscriptionSettingAssociationService: SubscriptionSettingsAssociationServiceInterface,
|
||||
@inject(TYPES.SettingInterpreter) private settingInterpreter: SettingInterpreterInterface,
|
||||
@inject(TYPES.SettingDecrypter) private settingDecrypter: SettingDecrypterInterface,
|
||||
@inject(TYPES.UserSubscriptionRepository) private userSubscriptionRepository: UserSubscriptionRepositoryInterface,
|
||||
@inject(TYPES.Logger) private logger: Logger,
|
||||
@@ -44,8 +46,17 @@ export class SubscriptionSettingService implements SubscriptionSettingServiceInt
|
||||
return
|
||||
}
|
||||
|
||||
for (const settingName of defaultSettingsWithValues.keys()) {
|
||||
const setting = defaultSettingsWithValues.get(settingName) as SettingDescription
|
||||
for (const settingNameString of defaultSettingsWithValues.keys()) {
|
||||
const settingNameOrError = SettingName.create(settingNameString)
|
||||
if (settingNameOrError.isFailed()) {
|
||||
throw new Error(settingNameOrError.getError())
|
||||
}
|
||||
const settingName = settingNameOrError.getValue()
|
||||
if (!settingName.isASubscriptionSetting()) {
|
||||
throw new Error(`Setting ${settingName.value} is not a subscription setting`)
|
||||
}
|
||||
|
||||
const setting = defaultSettingsWithValues.get(settingName.value) as SettingDescription
|
||||
if (!setting.replaceable) {
|
||||
const existingSetting = await this.findPreviousSubscriptionSetting(settingName, userSubscription.uuid, userUuid)
|
||||
if (existingSetting !== null) {
|
||||
@@ -59,7 +70,7 @@ export class SubscriptionSettingService implements SubscriptionSettingServiceInt
|
||||
await this.createOrReplace({
|
||||
userSubscription,
|
||||
props: {
|
||||
name: settingName,
|
||||
name: settingName.value,
|
||||
unencryptedValue: setting.value,
|
||||
serverEncryptionVersion: setting.serverEncryptionVersion,
|
||||
sensitive: setting.sensitive,
|
||||
@@ -71,12 +82,16 @@ export class SubscriptionSettingService implements SubscriptionSettingServiceInt
|
||||
async findSubscriptionSettingWithDecryptedValue(
|
||||
dto: FindSubscriptionSettingDTO,
|
||||
): Promise<SubscriptionSetting | null> {
|
||||
if (!dto.subscriptionSettingName.isASubscriptionSetting()) {
|
||||
throw new Error(`Setting ${dto.subscriptionSettingName.value} is not a subscription setting`)
|
||||
}
|
||||
|
||||
let setting: SubscriptionSetting | null
|
||||
if (dto.settingUuid !== undefined) {
|
||||
setting = await this.subscriptionSettingRepository.findOneByUuid(dto.settingUuid)
|
||||
} else {
|
||||
setting = await this.subscriptionSettingRepository.findLastByNameAndUserSubscriptionUuid(
|
||||
dto.subscriptionSettingName,
|
||||
dto.subscriptionSettingName.value,
|
||||
dto.userSubscriptionUuid,
|
||||
)
|
||||
}
|
||||
@@ -95,10 +110,21 @@ export class SubscriptionSettingService implements SubscriptionSettingServiceInt
|
||||
): Promise<CreateOrReplaceSubscriptionSettingResponse> {
|
||||
const { userSubscription, props } = dto
|
||||
|
||||
const settingNameOrError = SettingName.create(props.name)
|
||||
if (settingNameOrError.isFailed()) {
|
||||
throw new Error(settingNameOrError.getError())
|
||||
}
|
||||
const settingName = settingNameOrError.getValue()
|
||||
|
||||
if (!settingName.isASubscriptionSetting()) {
|
||||
throw new Error(`Setting ${settingName.value} is not a subscription setting`)
|
||||
}
|
||||
|
||||
const user = await userSubscription.user
|
||||
const existing = await this.findSubscriptionSettingWithDecryptedValue({
|
||||
userUuid: (await userSubscription.user).uuid,
|
||||
userUuid: user.uuid,
|
||||
userSubscriptionUuid: userSubscription.uuid,
|
||||
subscriptionSettingName: props.name as SubscriptionSettingName,
|
||||
subscriptionSettingName: settingName,
|
||||
settingUuid: props.uuid,
|
||||
})
|
||||
|
||||
@@ -109,6 +135,8 @@ export class SubscriptionSettingService implements SubscriptionSettingServiceInt
|
||||
|
||||
this.logger.debug('Created subscription setting %s: %O', props.name, subscriptionSetting)
|
||||
|
||||
await this.settingInterpreter.interpretSettingUpdated(settingName.value, user, props.unencryptedValue)
|
||||
|
||||
return {
|
||||
status: 'created',
|
||||
subscriptionSetting,
|
||||
@@ -121,6 +149,8 @@ export class SubscriptionSettingService implements SubscriptionSettingServiceInt
|
||||
|
||||
this.logger.debug('Replaced existing subscription setting %s with: %O', props.name, subscriptionSetting)
|
||||
|
||||
await this.settingInterpreter.interpretSettingUpdated(settingName.value, user, props.unencryptedValue)
|
||||
|
||||
return {
|
||||
status: 'replaced',
|
||||
subscriptionSetting,
|
||||
@@ -128,7 +158,7 @@ export class SubscriptionSettingService implements SubscriptionSettingServiceInt
|
||||
}
|
||||
|
||||
private async findPreviousSubscriptionSetting(
|
||||
settingName: SubscriptionSettingName,
|
||||
settingName: SettingName,
|
||||
currentUserSubscriptionUuid: string,
|
||||
userUuid: string,
|
||||
): Promise<SubscriptionSetting | null> {
|
||||
@@ -142,6 +172,9 @@ export class SubscriptionSettingService implements SubscriptionSettingServiceInt
|
||||
return null
|
||||
}
|
||||
|
||||
return this.subscriptionSettingRepository.findLastByNameAndUserSubscriptionUuid(settingName, lastSubscription.uuid)
|
||||
return this.subscriptionSettingRepository.findLastByNameAndUserSubscriptionUuid(
|
||||
settingName.value,
|
||||
lastSubscription.uuid,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@ import 'reflect-metadata'
|
||||
|
||||
import { SubscriptionName } from '@standardnotes/common'
|
||||
import { RoleName } from '@standardnotes/domain-core'
|
||||
import { SubscriptionSettingName } from '@standardnotes/settings'
|
||||
|
||||
import { SettingName } from '@standardnotes/settings'
|
||||
import { PermissionName } from '@standardnotes/features'
|
||||
|
||||
import { EncryptionVersion } from '../Encryption/EncryptionVersion'
|
||||
import { RoleRepositoryInterface } from '../Role/RoleRepositoryInterface'
|
||||
import { RoleToSubscriptionMapInterface } from '../Role/RoleToSubscriptionMapInterface'
|
||||
@@ -51,14 +51,11 @@ describe('SubscriptionSettingsAssociationService', () => {
|
||||
|
||||
const flatSettings = [
|
||||
...(
|
||||
settings as Map<
|
||||
SubscriptionSettingName,
|
||||
{ value: string; sensitive: boolean; serverEncryptionVersion: EncryptionVersion }
|
||||
>
|
||||
settings as Map<string, { value: string; sensitive: boolean; serverEncryptionVersion: EncryptionVersion }>
|
||||
).keys(),
|
||||
]
|
||||
expect(flatSettings).toEqual(['FILE_UPLOAD_BYTES_USED', 'FILE_UPLOAD_BYTES_LIMIT'])
|
||||
expect(settings?.get(SubscriptionSettingName.FileUploadBytesLimit)).toEqual({
|
||||
expect(flatSettings).toEqual(['FILE_UPLOAD_BYTES_USED', 'MUTE_SIGN_IN_EMAILS', 'FILE_UPLOAD_BYTES_LIMIT'])
|
||||
expect(settings?.get(SettingName.NAMES.FileUploadBytesLimit)).toEqual({
|
||||
sensitive: false,
|
||||
serverEncryptionVersion: 0,
|
||||
value: '107374182400',
|
||||
@@ -79,14 +76,11 @@ describe('SubscriptionSettingsAssociationService', () => {
|
||||
|
||||
const flatSettings = [
|
||||
...(
|
||||
settings as Map<
|
||||
SubscriptionSettingName,
|
||||
{ value: string; sensitive: boolean; serverEncryptionVersion: EncryptionVersion }
|
||||
>
|
||||
settings as Map<string, { value: string; sensitive: boolean; serverEncryptionVersion: EncryptionVersion }>
|
||||
).keys(),
|
||||
]
|
||||
expect(flatSettings).toEqual(['FILE_UPLOAD_BYTES_USED', 'FILE_UPLOAD_BYTES_LIMIT'])
|
||||
expect(settings?.get(SubscriptionSettingName.FileUploadBytesLimit)).toEqual({
|
||||
expect(flatSettings).toEqual(['FILE_UPLOAD_BYTES_USED', 'MUTE_SIGN_IN_EMAILS', 'FILE_UPLOAD_BYTES_LIMIT'])
|
||||
expect(settings?.get(SettingName.NAMES.FileUploadBytesLimit)).toEqual({
|
||||
sensitive: false,
|
||||
serverEncryptionVersion: 0,
|
||||
value: '104857600',
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { SubscriptionName } from '@standardnotes/common'
|
||||
import { PermissionName } from '@standardnotes/features'
|
||||
import { SubscriptionSettingName } from '@standardnotes/settings'
|
||||
import { SettingName } from '@standardnotes/settings'
|
||||
import { inject, injectable } from 'inversify'
|
||||
|
||||
import TYPES from '../../Bootstrap/Types'
|
||||
@@ -19,40 +19,55 @@ export class SubscriptionSettingsAssociationService implements SubscriptionSetti
|
||||
@inject(TYPES.RoleRepository) private roleRepository: RoleRepositoryInterface,
|
||||
) {}
|
||||
|
||||
private readonly settingsToSubscriptionNameMap = new Map<
|
||||
SubscriptionName,
|
||||
Map<SubscriptionSettingName, SettingDescription>
|
||||
>([
|
||||
private readonly settingsToSubscriptionNameMap = new Map<SubscriptionName, Map<string, SettingDescription>>([
|
||||
[
|
||||
SubscriptionName.PlusPlan,
|
||||
new Map([
|
||||
[
|
||||
SubscriptionSettingName.FileUploadBytesUsed,
|
||||
SettingName.NAMES.FileUploadBytesUsed,
|
||||
{ sensitive: false, serverEncryptionVersion: EncryptionVersion.Unencrypted, value: '0', replaceable: false },
|
||||
],
|
||||
[
|
||||
SettingName.NAMES.MuteSignInEmails,
|
||||
{
|
||||
sensitive: false,
|
||||
serverEncryptionVersion: EncryptionVersion.Unencrypted,
|
||||
value: 'not_muted',
|
||||
replaceable: false,
|
||||
},
|
||||
],
|
||||
]),
|
||||
],
|
||||
[
|
||||
SubscriptionName.ProPlan,
|
||||
new Map([
|
||||
[
|
||||
SubscriptionSettingName.FileUploadBytesUsed,
|
||||
SettingName.NAMES.FileUploadBytesUsed,
|
||||
{ sensitive: false, serverEncryptionVersion: EncryptionVersion.Unencrypted, value: '0', replaceable: false },
|
||||
],
|
||||
[
|
||||
SettingName.NAMES.MuteSignInEmails,
|
||||
{
|
||||
sensitive: false,
|
||||
serverEncryptionVersion: EncryptionVersion.Unencrypted,
|
||||
value: 'not_muted',
|
||||
replaceable: false,
|
||||
},
|
||||
],
|
||||
]),
|
||||
],
|
||||
])
|
||||
|
||||
async getDefaultSettingsAndValuesForSubscriptionName(
|
||||
subscriptionName: SubscriptionName,
|
||||
): Promise<Map<SubscriptionSettingName, SettingDescription> | undefined> {
|
||||
): Promise<Map<string, SettingDescription> | undefined> {
|
||||
const defaultSettings = this.settingsToSubscriptionNameMap.get(subscriptionName)
|
||||
|
||||
if (defaultSettings === undefined) {
|
||||
return undefined
|
||||
}
|
||||
|
||||
defaultSettings.set(SubscriptionSettingName.FileUploadBytesLimit, {
|
||||
defaultSettings.set(SettingName.NAMES.FileUploadBytesLimit, {
|
||||
sensitive: false,
|
||||
serverEncryptionVersion: EncryptionVersion.Unencrypted,
|
||||
value: (await this.getFileUploadLimit(subscriptionName)).toString(),
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
import { SubscriptionName } from '@standardnotes/common'
|
||||
import { SubscriptionSettingName } from '@standardnotes/settings'
|
||||
|
||||
import { SettingDescription } from './SettingDescription'
|
||||
|
||||
export interface SubscriptionSettingsAssociationServiceInterface {
|
||||
getDefaultSettingsAndValuesForSubscriptionName(
|
||||
subscriptionName: SubscriptionName,
|
||||
): Promise<Map<SubscriptionSettingName, SettingDescription> | undefined>
|
||||
): Promise<Map<string, SettingDescription> | undefined>
|
||||
getFileUploadLimit(subscriptionName: SubscriptionName): Promise<number>
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import { SessionRepositoryInterface } from '../../Session/SessionRepositoryInterface'
|
||||
|
||||
import { CleanupExpiredSessions } from './CleanupExpiredSessions'
|
||||
|
||||
describe('CleanupExpiredSessions', () => {
|
||||
let sessionsRepository: SessionRepositoryInterface
|
||||
|
||||
const createUseCase = () => new CleanupExpiredSessions(sessionsRepository)
|
||||
|
||||
beforeEach(() => {
|
||||
sessionsRepository = {} as jest.Mocked<SessionRepositoryInterface>
|
||||
sessionsRepository.removeExpiredBefore = jest.fn()
|
||||
})
|
||||
|
||||
it('should remove stale sessions', async () => {
|
||||
await createUseCase().execute({ date: new Date() })
|
||||
|
||||
expect(sessionsRepository.removeExpiredBefore).toHaveBeenCalled()
|
||||
})
|
||||
})
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user