aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2024-04-30 01:10:20 -0400
committerbobzel <zzzman@gmail.com>2024-04-30 01:10:20 -0400
commit6de58d7ecbfd14beb7389c6ff56e764b5c00ba25 (patch)
tree57b396b30644ac2fa3ec48fe38bc3efb419ce88d
parente17737982ea2ce84b4bded798ee7bdf730a75715 (diff)
changed acl- and some other field- to acl_ and field_ style
-rw-r--r--report.20231129.000028.55430.0.001.json1343
-rw-r--r--src/client/documents/DocumentTypes.ts1
-rw-r--r--src/client/documents/Documents.ts137
-rw-r--r--src/client/util/CurrentUserUtils.ts4
-rw-r--r--src/client/util/ServerStats.tsx2
-rw-r--r--src/client/util/SharingManager.tsx22
-rw-r--r--src/client/views/DashboardView.tsx2
-rw-r--r--src/client/views/FilterPanel.tsx2
-rw-r--r--src/client/views/PropertiesView.tsx16
-rw-r--r--src/client/views/collections/CollectionCarouselView.tsx2
-rw-r--r--src/client/views/collections/CollectionMenu.tsx12
-rw-r--r--src/client/views/collections/CollectionView.tsx4
-rw-r--r--src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx2
-rw-r--r--src/client/views/linking/LinkMenuItem.tsx3
-rw-r--r--src/client/views/nodes/CollectionFreeFormDocumentView.tsx4
-rw-r--r--src/client/views/nodes/ImageBox.tsx5
-rw-r--r--src/client/views/nodes/KeyValuePair.tsx2
-rw-r--r--src/client/views/nodes/trails/PresBox.tsx2
-rw-r--r--src/fields/Doc.ts12
-rw-r--r--src/fields/util.ts22
-rw-r--r--src/server/authentication/DashUserModel.ts4
-rw-r--r--src/server/authentication/Passport.ts4
22 files changed, 127 insertions, 1480 deletions
diff --git a/report.20231129.000028.55430.0.001.json b/report.20231129.000028.55430.0.001.json
deleted file mode 100644
index a29d550ae..000000000
--- a/report.20231129.000028.55430.0.001.json
+++ /dev/null
@@ -1,1343 +0,0 @@
-
-{
- "header": {
- "reportVersion": 1,
- "event": "Allocation failed - JavaScript heap out of memory",
- "trigger": "FatalError",
- "filename": "report.20231129.000028.55430.0.001.json",
- "dumpEventTime": "2023-11-29T00:00:28Z",
- "dumpEventTimeStamp": "1701234028056",
- "processId": 55430,
- "cwd": "/Users/sarah/Desktop/dash/Dash-Web",
- "commandLine": [
- "/Users/sarah/.nvm/versions/node/v12.16.0/bin/node",
- "--max-old-space-size=2048",
- "/Users/sarah/Desktop/dash/Dash-Web/node_modules/ts-node-dev/lib/wrap.js",
- "/Users/sarah/Desktop/dash/Dash-Web/node_modules/fork-ts-checker-webpack-plugin/lib/service.js"
- ],
- "nodejsVersion": "v12.16.0",
- "wordSize": 64,
- "arch": "x64",
- "platform": "darwin",
- "componentVersions": {
- "node": "12.16.0",
- "v8": "7.8.279.23-node.31",
- "uv": "1.34.0",
- "zlib": "1.2.11",
- "brotli": "1.0.7",
- "ares": "1.15.0",
- "modules": "72",
- "nghttp2": "1.40.0",
- "napi": "5",
- "llhttp": "2.0.4",
- "http_parser": "2.9.3",
- "openssl": "1.1.1d",
- "cldr": "35.1",
- "icu": "64.2",
- "tz": "2019c",
- "unicode": "12.1"
- },
- "release": {
- "name": "node",
- "lts": "Erbium",
- "headersUrl": "https://nodejs.org/download/release/v12.16.0/node-v12.16.0-headers.tar.gz",
- "sourceUrl": "https://nodejs.org/download/release/v12.16.0/node-v12.16.0.tar.gz"
- },
- "osName": "Darwin",
- "osRelease": "22.6.0",
- "osVersion": "Darwin Kernel Version 22.6.0: Wed Jul 5 22:21:56 PDT 2023; root:xnu-8796.141.3~6/RELEASE_X86_64",
- "osMachine": "x86_64",
- "cpus": [
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 19491620,
- "nice": 0,
- "sys": 10530730,
- "idle": 128029940,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 1041080,
- "nice": 0,
- "sys": 832510,
- "idle": 156711500,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 17230140,
- "nice": 0,
- "sys": 7308720,
- "idle": 133550270,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 1101080,
- "nice": 0,
- "sys": 813690,
- "idle": 156678120,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 14246350,
- "nice": 0,
- "sys": 5654800,
- "idle": 138314740,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 1142930,
- "nice": 0,
- "sys": 790770,
- "idle": 156668310,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 12228700,
- "nice": 0,
- "sys": 4533960,
- "idle": 141551990,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 1165420,
- "nice": 0,
- "sys": 773220,
- "idle": 156669740,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 9805920,
- "nice": 0,
- "sys": 3386750,
- "idle": 145216650,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 1177080,
- "nice": 0,
- "sys": 759980,
- "idle": 156674610,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 8806950,
- "nice": 0,
- "sys": 2889820,
- "idle": 146774530,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 1166250,
- "nice": 0,
- "sys": 737790,
- "idle": 156711830,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 7865920,
- "nice": 0,
- "sys": 2438950,
- "idle": 148205800,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 1155370,
- "nice": 0,
- "sys": 719580,
- "idle": 156743860,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 7478040,
- "nice": 0,
- "sys": 2248690,
- "idle": 148810130,
- "irq": 0
- },
- {
- "model": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
- "speed": 2300,
- "user": 1131070,
- "nice": 0,
- "sys": 695000,
- "idle": 156797450,
- "irq": 0
- }
- ],
- "networkInterfaces": [
- {
- "name": "lo0",
- "internal": true,
- "mac": "00:00:00:00:00:00",
- "address": "127.0.0.1",
- "netmask": "255.0.0.0",
- "family": "IPv4"
- },
- {
- "name": "lo0",
- "internal": true,
- "mac": "00:00:00:00:00:00",
- "address": "::1",
- "netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
- "family": "IPv6",
- "scopeid": 0
- },
- {
- "name": "lo0",
- "internal": true,
- "mac": "00:00:00:00:00:00",
- "address": "fe80::1",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 1
- },
- {
- "name": "en5",
- "internal": false,
- "mac": "ac:de:48:00:11:22",
- "address": "fe80::aede:48ff:fe00:1122",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 4
- },
- {
- "name": "en0",
- "internal": false,
- "mac": "88:66:5a:29:28:77",
- "address": "fe80::1467:9dad:c3d1:73a7",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 6
- },
- {
- "name": "en0",
- "internal": false,
- "mac": "88:66:5a:29:28:77",
- "address": "10.38.21.14",
- "netmask": "255.255.192.0",
- "family": "IPv4"
- },
- {
- "name": "en0",
- "internal": false,
- "mac": "88:66:5a:29:28:77",
- "address": "fde6:e673:d766:4b72:1481:e813:77a2:da34",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 0
- },
- {
- "name": "en0",
- "internal": false,
- "mac": "88:66:5a:29:28:77",
- "address": "2620:6e:6000:3100:148e:201a:1a33:145d",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 0
- },
- {
- "name": "en0",
- "internal": false,
- "mac": "88:66:5a:29:28:77",
- "address": "2620:6e:6000:3100:5c7f:8d3f:76ba:694b",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 0
- },
- {
- "name": "awdl0",
- "internal": false,
- "mac": "12:df:77:23:4c:4e",
- "address": "fe80::10df:77ff:fe23:4c4e",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 9
- },
- {
- "name": "llw0",
- "internal": false,
- "mac": "12:df:77:23:4c:4e",
- "address": "fe80::10df:77ff:fe23:4c4e",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 12
- },
- {
- "name": "utun0",
- "internal": false,
- "mac": "00:00:00:00:00:00",
- "address": "fe80::6616:29f1:d83d:2f8d",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 14
- },
- {
- "name": "utun1",
- "internal": false,
- "mac": "00:00:00:00:00:00",
- "address": "fe80::b4dc:ec9a:5d3d:18ab",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 15
- },
- {
- "name": "utun2",
- "internal": false,
- "mac": "00:00:00:00:00:00",
- "address": "fe80::ce81:b1c:bd2c:69e",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 16
- },
- {
- "name": "utun3",
- "internal": false,
- "mac": "00:00:00:00:00:00",
- "address": "fe80::bd9f:d9d8:700d:2011",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 17
- },
- {
- "name": "utun4",
- "internal": false,
- "mac": "00:00:00:00:00:00",
- "address": "fe80::9a49:1de7:e220:2bb",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 18
- },
- {
- "name": "utun5",
- "internal": false,
- "mac": "00:00:00:00:00:00",
- "address": "fe80::93fe:38cf:1393:3191",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 19
- },
- {
- "name": "utun6",
- "internal": false,
- "mac": "00:00:00:00:00:00",
- "address": "fe80::781d:651c:69a7:3d42",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 20
- },
- {
- "name": "utun7",
- "internal": false,
- "mac": "00:00:00:00:00:00",
- "address": "fe80::b39:d094:2a6d:e0c5",
- "netmask": "ffff:ffff:ffff:ffff::",
- "family": "IPv6",
- "scopeid": 21
- }
- ],
- "host": "sarahs-mbp-2.devices.brown.edu"
- },
- "javascriptStack": {
- "message": "No stack.",
- "stack": [
- "Unavailable."
- ]
- },
- "nativeStack": [
- {
- "pc": "0x000000010015c8ca",
- "symbol": "report::TriggerNodeReport(v8::Isolate*, node::Environment*, char const*, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, v8::Local<v8::String>) [/Users/sarah/.nvm/versions/node/v12.16.0/bin/node]"
- },
- {
- "pc": "0x0000000100080f3e",
- "symbol": "node::OnFatalError(char const*, char const*) [/Users/sarah/.nvm/versions/node/v12.16.0/bin/node]"
- },
- {
- "pc": "0x0000000100185467",
- "symbol": "v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/Users/sarah/.nvm/versions/node/v12.16.0/bin/node]"
- },
- {
- "pc": "0x0000000100185403",
- "symbol": "v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/sarah/.nvm/versions/node/v12.16.0/bin/node]"
- },
- {
- "pc": "0x000000010030b5f5",
- "symbol": "v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/sarah/.nvm/versions/node/v12.16.0/bin/node]"
- },
- {
- "pc": "0x000000010030ccc4",
- "symbol": "v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [/Users/sarah/.nvm/versions/node/v12.16.0/bin/node]"
- },
- {
- "pc": "0x0000000100309b37",
- "symbol": "v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/sarah/.nvm/versions/node/v12.16.0/bin/node]"
- },
- {
- "pc": "0x0000000100307afd",
- "symbol": "v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/sarah/.nvm/versions/node/v12.16.0/bin/node]"
- },
- {
- "pc": "0x00000001003132ba",
- "symbol": "v8::internal::Heap::AllocateRawWithLightRetry(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/Users/sarah/.nvm/versions/node/v12.16.0/bin/node]"
- },
- {
- "pc": "0x0000000100313341",
- "symbol": "v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/Users/sarah/.nvm/versions/node/v12.16.0/bin/node]"
- },
- {
- "pc": "0x00000001002e065b",
- "symbol": "v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/Users/sarah/.nvm/versions/node/v12.16.0/bin/node]"
- },
- {
- "pc": "0x0000000100618a18",
- "symbol": "v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/Users/sarah/.nvm/versions/node/v12.16.0/bin/node]"
- },
- {
- "pc": "0x0000000100950c19",
- "symbol": "Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit [/Users/sarah/.nvm/versions/node/v12.16.0/bin/node]"
- }
- ],
- "javascriptHeap": {
- "totalMemory": 2154991616,
- "totalCommittedMemory": 2153815368,
- "usedMemory": 2136222480,
- "availableMemory": 51343040,
- "memoryLimit": 2197815296,
- "heapSpaces": {
- "read_only_space": {
- "memorySize": 262144,
- "committedMemory": 33088,
- "capacity": 32808,
- "used": 32808,
- "available": 0
- },
- "new_space": {
- "memorySize": 8388608,
- "committedMemory": 8388528,
- "capacity": 4189824,
- "used": 69544,
- "available": 4120280
- },
- "old_space": {
- "memorySize": 1946566656,
- "committedMemory": 1946346224,
- "capacity": 1939183704,
- "used": 1938974448,
- "available": 209256
- },
- "code_space": {
- "memorySize": 14323712,
- "committedMemory": 13779552,
- "capacity": 12481792,
- "used": 12481792,
- "available": 0
- },
- "map_space": {
- "memorySize": 1576960,
- "committedMemory": 1394440,
- "capacity": 1280720,
- "used": 1280720,
- "available": 0
- },
- "large_object_space": {
- "memorySize": 183824384,
- "committedMemory": 183824384,
- "capacity": 183380384,
- "used": 183380384,
- "available": 0
- },
- "code_large_object_space": {
- "memorySize": 49152,
- "committedMemory": 49152,
- "capacity": 2784,
- "used": 2784,
- "available": 0
- },
- "new_large_object_space": {
- "memorySize": 0,
- "committedMemory": 0,
- "capacity": 4189824,
- "used": 0,
- "available": 4189824
- }
- }
- },
- "resourceUsage": {
- "userCpuSeconds": 306.691,
- "kernelCpuSeconds": 15.3869,
- "cpuConsumptionPercent": 11.2772,
- "maxRss": 2231285841920,
- "pageFaults": {
- "IORequired": 110,
- "IONotRequired": 2487718
- },
- "fsActivity": {
- "reads": 0,
- "writes": 0
- }
- },
- "libuv": [
- ],
- "environmentVariables": {
- "npm_config_save_dev": "",
- "npm_config_legacy_bundling": "",
- "npm_config_dry_run": "",
- "npm_package_dependencies_request": "^2.88.2",
- "npm_package_dependencies_express_flash": "0.0.2",
- "npm_package_dependencies__fortawesome_fontawesome_svg_core": "^6.3.0",
- "NVM_INC": "/Users/sarah/.nvm/versions/node/v12.16.0/include/node",
- "npm_config_viewer": "man",
- "npm_config_only": "",
- "npm_config_commit_hooks": "true",
- "npm_config_browser": "",
- "npm_package_gitHead": "5754c1c056ec62e17b5d7badddc4a8fc3637e09f",
- "npm_package_dependencies_webpack_dev_middleware": "^5.3.1",
- "npm_package_dependencies_webpack_cli": "^4.10.0",
- "npm_package_devDependencies_prettier": "^2.7.1",
- "npm_package_devDependencies_awesome_typescript_loader": "^5.2.1",
- "npm_package_devDependencies__types_archiver": "^3.1.1",
- "npm_config_also": "",
- "npm_package_dependencies_react_jsx_parser": "^1.29.0",
- "npm_package_dependencies_mongoose": "^5.13.14",
- "npm_package_dependencies_connect_flash": "^0.1.1",
- "npm_package_browser_child_process": "false",
- "npm_config_sign_git_commit": "",
- "npm_config_rollback": "true",
- "npm_package_dependencies_material_ui": "^0.20.2",
- "npm_package_devDependencies__types_sharp": "^0.23.1",
- "npm_package_devDependencies__types_passport_local": "^1.0.34",
- "npm_package_devDependencies__types_dotenv": "^6.1.1",
- "npm_package_devDependencies__types_cookie_parser": "^1.4.2",
- "TERM_PROGRAM": "Apple_Terminal",
- "NODE": "/Users/sarah/.nvm/versions/node/v12.16.0/bin/node",
- "npm_config_usage": "",
- "npm_config_audit": "true",
- "npm_package_dependencies_reveal_js": "^4.3.0",
- "npm_package_dependencies_process": "^0.11.10",
- "npm_package_dependencies_pdfjs": "^2.4.7",
- "npm_package_dependencies_html_to_image": "^0.1.3",
- "npm_package_devDependencies_file_loader": "^3.0.1",
- "npm_package_devDependencies__types_express_flash": "0.0.0",
- "npm_package_scripts_monitor": "cross-env MONITORED=true NODE_OPTIONS=--max_old_space_size=4096 ts-node src/server/index.ts",
- "INIT_CWD": "/Users/sarah/Desktop/dash/Dash-Web",
- "npm_package_dependencies_rehype_raw": "^6.1.1",
- "npm_package_dependencies_react_audio_waveform": "0.0.5",
- "npm_package_dependencies_path_browserify": "^1.0.1",
- "npm_package_dependencies_nodemailer": "^5.1.1",
- "npm_package_dependencies_axios": "^0.19.2",
- "npm_package_devDependencies_typescript": "^4.7.4",
- "NVM_CD_FLAGS": "-q",
- "npm_config_globalignorefile": "/Users/sarah/.nvm/versions/node/v12.16.0/etc/npmignore",
- "npm_package_dependencies_react_grid_layout": "^1.3.4",
- "npm_package_dependencies_prosemirror_find_replace": "^0.9.0",
- "npm_package_dependencies_normalize_css": "^8.0.1",
- "npm_package_devDependencies_mocha": "^5.2.0",
- "npm_package_devDependencies__types_express_session": "^1.17.5",
- "SHELL": "/bin/zsh",
- "TERM": "xterm-256color",
- "npm_config_shell": "/bin/zsh",
- "npm_config_maxsockets": "50",
- "npm_config_init_author_url": "",
- "npm_package_dependencies_prosemirror_dev_tools": "^3.1.0",
- "npm_package_dependencies_p_limit": "^2.2.0",
- "npm_package_dependencies_bson": "^4.6.1",
- "npm_package_dependencies__types_dom_speech_recognition": "0.0.1",
- "npm_package_dependencies__emotion_styled": "^11.11.0",
- "npm_package_devDependencies_style_loader": "^0.23.1",
- "npm_package_devDependencies__types_react_datepicker": "^3.1.8",
- "npm_config_shrinkwrap": "true",
- "npm_config_parseable": "",
- "npm_config_metrics_registry": "https://registry.npmjs.org/",
- "npm_package_dependencies_xregexp": "^4.4.1",
- "npm_package_dependencies_shelljs": "^0.8.5",
- "npm_package_dependencies_bezier_curve": "^1.0.0",
- "npm_package_dependencies__mui_icons_material": "^5.11.16",
- "npm_package_devDependencies_tslint": "^5.20.1",
- "npm_package_devDependencies__types_react_transition_group": "^4.4.5",
- "npm_package_scripts_tsc": "tsc",
- "TMPDIR": "/var/folders/yk/p_39q8jn673c5p8_66mcxm7r0000gn/T/",
- "npm_config_timing": "",
- "npm_config_init_license": "ISC",
- "npm_package_dependencies_socket_io": "^2.5.0",
- "npm_package_dependencies_probe_image_size": "^4.0.0",
- "npm_package_dependencies_canvas": "^2.9.3",
- "npm_package_dependencies__hig_theme_data": "^2.23.1",
- "npm_package_devDependencies__types_react_select": "^3.1.2",
- "npm_package_devDependencies__types_prosemirror_model": "^1.16.1",
- "CONDA_SHLVL": "1",
- "npm_config_if_present": "",
- "npm_package_dependencies_typescript_collections": "^1.3.3",
- "npm_package_dependencies_rimraf": "^3.0.0",
- "npm_package_dependencies_react_autosuggest": "^9.4.3",
- "npm_package_dependencies_flexlayout_react": "^0.3.11",
- "npm_package_dependencies_find_in_files": "^0.5.0",
- "npm_package_devDependencies__types_chai": "^4.3.0",
- "CONDA_PROMPT_MODIFIER": "(base) ",
- "TERM_PROGRAM_VERSION": "447",
- "npm_package_dependencies_prosemirror_inputrules": "^1.1.3",
- "npm_package_dependencies_bcrypt_nodejs": "0.0.3",
- "npm_package_dependencies_async": "^2.6.2",
- "npm_config_sign_git_tag": "",
- "npm_config_init_author_email": "",
- "npm_config_cache_max": "Infinity",
- "npm_package_dependencies_uuid": "^3.4.0",
- "npm_package_dependencies_supercluster": "^7.1.4",
- "npm_package_dependencies_remark_gfm": "^3.0.1",
- "npm_package_dependencies_connect_mongo": "^2.0.3",
- "npm_package_dependencies_browser_assert": "^1.2.1",
- "npm_package_devDependencies_sass_loader": "^7.3.1",
- "npm_package_scripts_start_release_debug": "cross-env RELEASE=true USE_AZURE=true NODE_OPTIONS=--max_old_space_size=4096 ts-node-dev --inspect -- src/server/index.ts",
- "npm_config_preid": "",
- "npm_config_long": "",
- "npm_config_local_address": "",
- "npm_config_git_tag_version": "true",
- "npm_config_cert": "",
- "npm_package_dependencies_js_datepicker": "^4.6.6",
- "npm_package_devDependencies__types_webpack_hot_middleware": "^2.25.6",
- "npm_package_devDependencies__types_mongodb": "^3.6.20",
- "npm_package_devDependencies__types_mocha": "^5.2.6",
- "TERM_SESSION_ID": "4AACD142-8780-44F4-A4FA-BB53E1BF6081",
- "npm_config_registry": "https://registry.npmjs.org/",
- "npm_config_noproxy": "",
- "npm_config_fetch_retries": "2",
- "npm_package_dependencies_react_compound_slider": "^2.5.0",
- "npm_package_dependencies_prosemirror_history": "^1.2.0",
- "npm_package_devDependencies__types_react_color": "^2.17.6",
- "npm_package_devDependencies__types_google_maps_react": "^2.0.5",
- "npm_package_devDependencies__types_color": "^3.0.3",
- "npm_package_dependencies_react_dom": "^18.2.0",
- "npm_package_dependencies_passport_local": "^1.0.0",
- "npm_package_dependencies__octokit_core": "^4.0.4",
- "npm_package_devDependencies__types_async": "^2.4.1",
- "npm_package_scripts_debug": "cross-env NODE_OPTIONS=--max_old_space_size=8192 ts-node-dev --transpile-only --inspect -- src/server/index.ts",
- "npm_package_scripts_oldstart": "cross-env NODE_OPTIONS=--max_old_space_size=4096 ts-node-dev --debug -- src/server/index.ts",
- "npm_config_versions": "",
- "npm_config_message": "%s",
- "npm_config_key": "",
- "npm_package_readmeFilename": "README.md",
- "npm_package_dependencies_react_refresh_typescript": "^2.0.7",
- "npm_package_dependencies_react_dropzone": "^14.2.3",
- "npm_package_dependencies_image_size": "^0.7.5",
- "npm_package_dependencies_html_to_text": "^5.1.1",
- "npm_package_dependencies_express_validator": "^5.3.1",
- "npm_package_devDependencies_eslint_plugin_jsx_a11y": "^6.6.0",
- "npm_package_node_child_process": "empty",
- "npm_package_dependencies_react_resizable_rotatable_draggable": "^0.2.0",
- "npm_package_dependencies_got": "^12.0.1",
- "npm_package_dependencies__types_d3_color": "^2.0.3",
- "npm_package_devDependencies_webpack": "^5.69.1",
- "npm_package_devDependencies__types_nodemailer": "^4.6.6",
- "npm_package_description": "Install Node.js, then, from the project directory, run",
- "NVM_DIR": "/Users/sarah/.nvm",
- "USER": "sarah",
- "npm_package_dependencies__types_d3_scale": "^3.3.2",
- "npm_package_devDependencies_dotenv": "^8.6.0",
- "npm_package_devDependencies__types_react": "^18.0.15",
- "npm_package_devDependencies__types_prosemirror_transform": "^1.1.5",
- "npm_package_devDependencies__types_prosemirror_history": "^1.0.3",
- "npm_package_dependencies_readline": "^1.3.0",
- "npm_package_dependencies__types_supercluster": "^7.1.0",
- "npm_package_dependencies__azure_storage_blob": "^12.14.0",
- "npm_config_globalconfig": "/Users/sarah/.nvm/versions/node/v12.16.0/etc/npmrc",
- "npm_package_dependencies_depcheck": "^0.9.2",
- "npm_package_dependencies__types_web": "0.0.53",
- "CONDA_EXE": "/Users/sarah/miniconda3/bin/conda",
- "npm_config_prefer_online": "",
- "npm_config_logs_max": "10",
- "npm_config_always_auth": "",
- "npm_package_dependencies_react_icons": "^4.3.1",
- "npm_package_dependencies_passport_google_oauth20": "^2.0.0",
- "npm_package_devDependencies_webpack_dev_server": "^3.11.3",
- "npm_package_devDependencies__types_brotli": "^1.3.1",
- "npm_package_dependencies_url_loader": "^1.1.2",
- "npm_package_dependencies_stream_browserify": "^3.0.0",
- "npm_package_dependencies_prosemirror_transform": "^1.3.4",
- "npm_package_dependencies_lodash": "^4.17.21",
- "npm_package_dependencies_i": "^0.3.7",
- "npm_package_devDependencies_tslint_loader": "^3.6.0",
- "SSH_AUTH_SOCK": "/private/tmp/com.apple.launchd.dBaRxB6a53/Listeners",
- "npm_package_dependencies_words_to_numbers": "^1.5.1",
- "npm_package_dependencies_valid_url": "^1.0.9",
- "npm_package_dependencies_styled_components": "^4.4.1",
- "npm_package_dependencies_csv_parser": "^3.0.0",
- "npm_package_dependencies_class_transformer": "^0.2.0",
- "npm_package_devDependencies_eslint": "^8.36.0",
- "npm_package_devDependencies__types_prosemirror_inputrules": "^1.0.4",
- "npm_package_devDependencies__types_express": "^4.17.13",
- "__CF_USER_TEXT_ENCODING": "0x1F5:0x0:0x0",
- "npm_execpath": "/Users/sarah/.nvm/versions/node/v12.16.0/lib/node_modules/npm/bin/npm-cli.js",
- "npm_config_global_style": "",
- "npm_config_cache_lock_retries": "10",
- "npm_package_dependencies_wikijs": "^6.3.3",
- "npm_package_dependencies_bluebird": "^3.7.2",
- "npm_package_devDependencies__types_react_typist": "^2.0.3",
- "npm_config_update_notifier": "true",
- "npm_config_cafile": "",
- "npm_package_dependencies_util": "^0.12.4",
- "npm_package_dependencies_raw_loader": "^1.0.0",
- "npm_package_dependencies_https_browserify": "^1.0.0",
- "npm_package_dependencies_brotli": "^1.3.3",
- "npm_package_dependencies__mui_material": "^5.13.1",
- "npm_package_dependencies__fortawesome_react_fontawesome": "^0.2.0",
- "npm_package_devDependencies__types_passport_google_oauth20": "^2.0.11",
- "npm_package_dependencies_cors": "^2.8.5",
- "npm_package_dependencies_bezier_js": "^4.1.1",
- "npm_package_dependencies__fortawesome_free_brands_svg_icons": "^6.3.0",
- "npm_config_heading": "npm",
- "npm_config_audit_level": "low",
- "npm_package_dependencies_chrome": "^0.1.0",
- "npm_package_dependencies__react_three_fiber": "^6.2.3",
- "npm_package_devDependencies_eslint_plugin_prettier": "^4.2.1",
- "npm_package_devDependencies_copy_webpack_plugin": "^4.6.0",
- "npm_package_devDependencies__types_react_measure": "^2.0.8",
- "npm_package_devDependencies__types_react_dom": "^18.0.6",
- "npm_package_devDependencies__types_mobile_detect": "^1.3.4",
- "_CE_CONDA": "",
- "npm_config_searchlimit": "20",
- "npm_config_read_only": "",
- "npm_config_offline": "",
- "npm_config_fetch_retry_mintimeout": "10000",
- "npm_package_dependencies_react_typist": "^2.0.5",
- "npm_package_dependencies_mobx_react_devtools": "^6.1.1",
- "npm_package_dependencies_md5_file": "^5.0.0",
- "npm_package_dependencies_forever_agent": "^0.6.1",
- "npm_package_devDependencies__types_xregexp": "^4.4.0",
- "npm_package_devDependencies__types_typescript": "^2.0.0",
- "npm_package_devDependencies__types_request": "^2.48.8",
- "npm_package_devDependencies__types_prosemirror_commands": "^1.0.4",
- "npm_config_json": "",
- "npm_config_access": "",
- "npm_config_argv": "{\"remain\":[],\"cooked\":[\"start\"],\"original\":[\"start\"]}",
- "npm_package_dependencies__fortawesome_free_solid_svg_icons": "^6.3.0",
- "npm_package_devDependencies__types_socket_io": "^2.1.13",
- "PATH": "/Users/sarah/.nvm/versions/node/v12.16.0/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/sarah/Desktop/dash/Dash-Web/node_modules/.bin:/Users/sarah/.nvm/versions/node/v12.16.0/bin:/Users/sarah/miniconda3/bin:/Users/sarah/miniconda3/condabin:/Users/sarah/.elan/bin:/Library/Frameworks/Python.framework/Versions/3.9/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin",
- "npm_config_allow_same_version": "",
- "npm_package_dependencies_webrtc_adapter": "^7.7.1",
- "npm_package_dependencies_react_reveal": "^1.2.2",
- "npm_package_dependencies_prosemirror_schema_list": "^1.1.6",
- "npm_package_dependencies__material_ui_core": "^4.12.3",
- "npm_package_devDependencies__types_rimraf": "^2.0.5",
- "npm_package_devDependencies__types_connect_flash": "0.0.34",
- "npm_config_https_proxy": "",
- "npm_config_engine_strict": "",
- "npm_config_description": "true",
- "npm_package_dependencies_pug": "^2.0.4",
- "npm_package_dependencies_prosemirror_keymap": "^1.1.5",
- "npm_package_dependencies_pdfjs_dist": "^2.14.305",
- "npm_package_dependencies_mobile_detect": "^1.4.5",
- "npm_package_dependencies_image_size_stream": "^1.1.0",
- "npm_package_dependencies_golden_layout": "^1.5.9",
- "npm_package_dependencies_child_process": "^1.0.2",
- "npm_package_dependencies__types_d3_axis": "^2.1.3",
- "_": "/Users/sarah/Desktop/dash/Dash-Web/node_modules/.bin/cross-env",
- "LaunchInstanceID": "16109DB5-CDB2-454A-9613-8F6F534702AC",
- "npm_config_userconfig": "/Users/sarah/.npmrc",
- "npm_config_init_module": "/Users/sarah/.npm-init.js",
- "npm_package_dependencies__react_google_maps_api": "^2.7.0",
- "CONDA_PREFIX": "/Users/sarah/miniconda3",
- "__CFBundleIdentifier": "com.apple.Terminal",
- "npm_config_cidr": "",
- "npm_package_dependencies_puppeteer": "^3.3.0",
- "npm_package_dependencies_prosemirror_view": "^1.26.5",
- "npm_package_dependencies_mongodb": "^3.7.3",
- "npm_package_dependencies_google_auth_library": "^4.2.4",
- "npm_package_dependencies_bootstrap": "^4.6.1",
- "npm_package_devDependencies_eslint_config_airbnb": "^19.0.4",
- "PWD": "/Users/sarah/desktop/dash/dash-web",
- "npm_config_user": "501",
- "npm_config_node_version": "12.16.0",
- "npm_package_dependencies_node_sass": "^4.14.1",
- "npm_package_dependencies_howler": "^2.2.3",
- "npm_package_dependencies_expressjs": "^1.0.1",
- "npm_package_dependencies_core_js": "^3.28.0",
- "npm_package_dependencies_browndash_components": "^0.1.36",
- "npm_package_devDependencies_eslint_plugin_react_hooks": "^4.6.0",
- "npm_package_devDependencies__types_lodash": "^4.14.179",
- "JAVA_HOME": "/Library/Java/JavaVirtualMachines/jdk1.8.0_341.jdk/Contents/Home",
- "npm_lifecycle_event": "start",
- "npm_package_dependencies_react_table": "^6.11.5",
- "npm_package_dependencies_react_loading": "^2.0.3",
- "npm_package_dependencies_mobx": "^5.15.7",
- "npm_package_dependencies_babel": "^6.23.0",
- "npm_package_devDependencies_jsdom": "^15.2.1",
- "npm_package_devDependencies_chai": "^4.3.6",
- "npm_config_save": "true",
- "npm_config_ignore_prepublish": "",
- "npm_config_editor": "vi",
- "npm_config_auth_type": "legacy",
- "npm_package_dependencies_npm": "^6.14.18",
- "npm_package_dependencies_node_stream_zip": "^1.15.0",
- "npm_package_dependencies_image_data_uri": "^2.0.1",
- "npm_package_scripts_start_release": "cross-env RELEASE=true USE_AZURE=false NODE_OPTIONS=--max_old_space_size=4096 ts-node-dev -- src/server/index.ts",
- "npm_package_name": "dash",
- "LANG": "en_US.UTF-8",
- "npm_config_tag": "latest",
- "npm_config_script_shell": "",
- "npm_package_dependencies_query_string": "^6.14.1",
- "npm_package_dependencies_mobx_utils": "^5.6.2",
- "npm_package_dependencies_file_saver": "^2.0.5",
- "npm_package_dependencies_body_parser": "^1.19.2",
- "npm_package_dependencies__types_reveal": "^3.3.33",
- "npm_package_devDependencies_eslint_plugin_import": "^2.26.0",
- "npm_package_devDependencies__types_prosemirror_view": "^1.23.1",
- "npm_config_progress": "true",
- "npm_config_global": "",
- "npm_config_before": "",
- "npm_package_dependencies_xoauth2": "^1.2.0",
- "npm_package_dependencies_standard_http_error": "^2.0.1",
- "npm_package_dependencies_react_loader_spinner": "^5.3.4",
- "npm_package_dependencies_http_browserify": "^1.7.0",
- "npm_package_dependencies__types_d3_selection": "^2.0.1",
- "npm_package_dependencies__hig_flyout": "^1.3.1",
- "npm_package_devDependencies_fork_ts_checker_webpack_plugin": "^1.6.0",
- "npm_package_scripts_build": "cross-env NODE_OPTIONS=--max_old_space_size=8192 webpack --env production",
- "npm_package_scripts_start": "cross-env NODE_OPTIONS=--max_old_space_size=4096 ts-node-dev --debug --transpile-only -- src/server/index.ts",
- "npm_config_searchstaleness": "900",
- "npm_config_optional": "true",
- "npm_config_ham_it_up": "",
- "npm_package_dependencies_sharp": "^0.23.4",
- "npm_package_dependencies_rc_switch": "^1.9.2",
- "npm_package_dependencies_googlephotos": "^0.2.5",
- "npm_package_dependencies_exifr": "^7.1.3",
- "npm_package_dependencies__types_google_maps": "^3.2.3",
- "npm_package_dependencies__types_bezier_js": "^4.1.0",
- "npm_package_dependencies__ffmpeg_core": "0.10.0",
- "npm_package_devDependencies_ts_loader": "^5.3.3",
- "npm_package_devDependencies__types_bcrypt_nodejs": "0.0.30",
- "XPC_FLAGS": "0x0",
- "npm_config_save_prod": "",
- "npm_config_force": "",
- "npm_config_bin_links": "true",
- "npm_package_devDependencies__types_youtube": "0.0.39",
- "npm_config_searchopts": "",
- "npm_package_dependencies_react_beautiful_dnd": "^13.1.0",
- "npm_package_dependencies_jszip": "^3.7.1",
- "npm_package_dependencies_csv_stringify": "^6.3.0",
- "npm_package_devDependencies__types_react_icons": "^3.0.0",
- "npm_config_node_gyp": "/Users/sarah/.nvm/versions/node/v12.16.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js",
- "npm_config_depth": "Infinity",
- "npm_package_dependencies_google_maps_react": "^2.0.6",
- "npm_package_dependencies_express_session": "^1.17.2",
- "npm_package_devDependencies_eslint_plugin_node": "^11.1.0",
- "npm_package_devDependencies_eslint_config_prettier": "^8.5.0",
- "npm_package_main": "index.js",
- "npm_config_sso_poll_frequency": "500",
- "npm_config_rebuild_bundle": "true",
- "npm_package_dependencies_chart_js": "^3.8.0",
- "npm_package_dependencies__emotion_react": "^11.11.0",
- "npm_package_devDependencies__types_prosemirror_menu": "^1.0.6",
- "npm_package_devDependencies__types_prosemirror_keymap": "^1.0.4",
- "npm_package_devDependencies__types_pdfjs_dist": "^2.10.378",
- "npm_package_devDependencies__types_exif": "^0.6.3",
- "npm_package_version": "1.0.0",
- "_CE_M": "",
- "XPC_SERVICE_NAME": "0",
- "npm_config_unicode": "true",
- "npm_package_dependencies_typescript_language_server": "^0.4.0",
- "npm_package_dependencies_prosemirror_model": "^1.18.1",
- "npm_package_dependencies__ffmpeg_ffmpeg": "0.10.0",
- "SHLVL": "2",
- "HOME": "/Users/sarah",
- "npm_config_fetch_retry_maxtimeout": "60000",
- "npm_package_dependencies_request_promise": "^4.2.6",
- "npm_package_dependencies_react_markdown": "^8.0.3",
- "npm_package_dependencies__hig_theme_context": "^2.1.3",
- "npm_package_devDependencies__types_react_autosuggest": "^9.3.14",
- "npm_package_devDependencies__types_mongoose": "^5.11.97",
- "npm_package_devDependencies__types_d3": "^7.4.0",
- "npm_package_devDependencies__types_animejs": "^2.0.2",
- "npm_package_scripts_test": "mocha -r ts-node/register test/**/*.ts",
- "npm_config_tag_version_prefix": "v",
- "npm_config_strict_ssl": "true",
- "npm_config_sso_type": "oauth",
- "npm_config_scripts_prepend_node_path": "warn-only",
- "npm_config_save_prefix": "^",
- "npm_config_loglevel": "notice",
- "npm_config_ca": "",
- "npm_package_dependencies_three": "^0.127.0",
- "npm_package_dependencies_openai": "^3.2.1",
- "npm_package_dependencies_mobx_react": "^5.4.4",
- "npm_package_dependencies_google_translate_api_browser": "^3.0.1",
- "npm_package_dependencies_cookie_parser": "^1.4.6",
- "npm_package_dependencies_adm_zip": "^0.4.16",
- "npm_package_devDependencies_eslint_config_node": "^4.1.0",
- "npm_config_save_exact": "",
- "npm_config_group": "20",
- "npm_config_fetch_retry_factor": "10",
- "npm_config_dev": "",
- "npm_package_devDependencies_webpack_hot_middleware": "^2.25.1",
- "npm_package_devDependencies_cross_env": "^5.2.1",
- "npm_config_version": "",
- "npm_config_prefer_offline": "",
- "npm_config_cache_lock_stale": "60000",
- "npm_package_devDependencies__types_prosemirror_state": "^1.2.8",
- "npm_package_devDependencies__types_body_parser": "^1.19.2",
- "npm_config_otp": "",
- "npm_config_cache_min": "10",
- "npm_package_dependencies_react_color": "^2.19.3",
- "npm_package_dependencies_d3": "^7.6.1",
- "npm_package_devDependencies_ts_node": "^10.9.1",
- "npm_package_devDependencies__types_react_grid_layout": "^1.3.2",
- "npm_config_searchexclude": "",
- "npm_config_cache": "/Users/sarah/.npm",
- "npm_package_dependencies_tough_cookie": "^4.0.0",
- "npm_package_dependencies_googleapis": "^40.0.0",
- "npm_package_devDependencies__types_valid_url": "^1.0.3",
- "npm_package_devDependencies__types_passport": "^1.0.9",
- "npm_package_devDependencies__types_adm_zip": "^0.4.34",
- "CONDA_PYTHON_EXE": "/Users/sarah/miniconda3/bin/python",
- "LOGNAME": "sarah",
- "npm_lifecycle_script": "cross-env NODE_OPTIONS=--max_old_space_size=4096 ts-node-dev --debug --transpile-only -- src/server/index.ts",
- "npm_config_color": "true",
- "npm_package_dependencies_solr_node": "^1.2.1",
- "npm_package_dependencies_react_transition_group": "^4.4.2",
- "npm_package_dependencies_iink_js": "^1.5.4",
- "npm_package_dependencies_html_webpack_plugin": "^5.5.0",
- "npm_config_proxy": "",
- "npm_config_package_lock": "true",
- "npm_package_dependencies_prosemirror_state": "^1.4.1",
- "npm_package_dependencies_nodemon": "^1.19.4",
- "npm_package_dependencies_function_plot": "^1.22.8",
- "npm_package_dependencies_equation_editor_react": "github:bobzel/equation-editor-react#useLocally",
- "npm_package_devDependencies__types_socket_io_parser": "^3.0.0",
- "CLASSPATH": "/Users/sarah/Downloads/cs15/*:.",
- "npm_config_package_lock_only": "",
- "npm_config_fund": "true",
- "npm_package_dependencies_react": "^18.2.0",
- "npm_package_dependencies_bingmaps_react": "^1.2.10",
- "npm_package_devDependencies_scss_loader": "0.0.1",
- "npm_package_devDependencies__types_cookie_session": "^2.0.44",
- "npm_config_save_optional": "",
- "npm_package_dependencies_textarea_caret": "^3.1.0",
- "npm_package_dependencies_react_measure": "^2.5.2",
- "npm_package_dependencies_exif": "^0.6.0",
- "NVM_BIN": "/Users/sarah/.nvm/versions/node/v12.16.0/bin",
- "CONDA_DEFAULT_ENV": "base",
- "npm_config_ignore_scripts": "",
- "npm_config_user_agent": "npm/6.14.7 node/v12.16.0 darwin x64",
- "npm_package_dependencies_react_resizable": "^1.11.1",
- "npm_package_dependencies_prosemirror_commands": "^1.2.1",
- "npm_package_dependencies_memorystream": "^0.3.1",
- "npm_package_dependencies_formidable": "1.2.1",
- "npm_package_devDependencies__types_uuid": "^3.4.10",
- "npm_config_cache_lock_wait": "10000",
- "npm_package_dependencies_socket_io_client": "^2.5.0",
- "npm_package_dependencies_recharts": "^2.1.12",
- "npm_package_dependencies_react_chartjs_2": "^4.3.0",
- "npm_package_dependencies_fluent_ffmpeg": "^2.1.2",
- "npm_package_dependencies__types_cors": "^2.8.12",
- "npm_package_devDependencies__types_node": "^10.17.60",
- "npm_package_devDependencies__types_file_saver": "^2.0.5",
- "npm_config_production": "",
- "npm_package_dependencies_jsonschema": "^1.4.0",
- "npm_package_dependencies_ffmpeg": "0.0.4",
- "npm_package_dependencies_cookie_session": "^2.0.0",
- "npm_package_dependencies_color": "^3.2.1",
- "npm_package_devDependencies__types_webpack": "^4.41.32",
- "npm_package_devDependencies__types_request_promise": "^4.1.48",
- "npm_package_devDependencies__types_prosemirror_schema_list": "^1.0.3",
- "npm_config_send_metrics": "",
- "npm_config_save_bundle": "",
- "npm_package_dependencies_web_request": "^1.0.7",
- "npm_package_dependencies_react_datepicker": "^3.8.0",
- "npm_package_dependencies_express": "^4.17.3",
- "npm_package_dependencies_D": "^1.0.0",
- "npm_package_dependencies__types_formidable": "1.0.31",
- "npm_package_devDependencies__types_rc_switch": "^1.9.2",
- "npm_package_devDependencies__types_prosemirror_dev_tools": "^2.1.0",
- "npm_package_devDependencies__types_jquery": "^3.5.14",
- "npm_config_umask": "0022",
- "npm_config_node_options": "",
- "npm_config_init_version": "1.0.0",
- "npm_package_dependencies_https": "^1.0.0",
- "npm_package_dependencies_array_batcher": "^1.2.3",
- "npm_package_dependencies__fortawesome_free_regular_svg_icons": "^6.3.0",
- "npm_package_devDependencies__types_shelljs": "^0.8.11",
- "npm_package_devDependencies__types_libxmljs": "^0.18.7",
- "npm_package_devDependencies__types_express_validator": "^3.0.0",
- "npm_package_devDependencies__types_bluebird": "^3.5.36",
- "npm_config_init_author_name": "",
- "npm_config_git": "git",
- "npm_config_scope": "",
- "npm_package_dependencies_react_select": "^3.2.0",
- "npm_package_dependencies_pdf_parse": "^1.1.1",
- "npm_package_dependencies_colors": "^1.4.0",
- "npm_package_dependencies_archiver": "^3.1.1",
- "npm_package_devDependencies_css_loader": "^2.1.1",
- "npm_package_devDependencies__types_socket_io_client": "^1.4.36",
- "SECURITYSESSIONID": "186a6",
- "npm_config_unsafe_perm": "true",
- "npm_config_tmp": "/var/folders/yk/p_39q8jn673c5p8_66mcxm7r0000gn/T",
- "npm_config_onload_script": "",
- "npm_package_dependencies_serializr": "^1.5.4",
- "npm_package_dependencies_fit_curve": "^0.1.7",
- "npm_package_dependencies__webscopeio_react_textarea_autocomplete": "^4.9.1",
- "npm_package_dependencies__types_three": "^0.126.2",
- "npm_package_devDependencies_ts_node_dev": "^2.0.0",
- "npm_node_execpath": "/Users/sarah/.nvm/versions/node/v12.16.0/bin/node",
- "npm_config_prefix": "/Users/sarah/.nvm/versions/node/v12.16.0",
- "npm_config_link": "",
- "npm_config_format_package_lock": "true",
- "npm_package_dependencies_passport": "^0.4.0",
- "npm_package_devDependencies_eslint_plugin_react": "^7.30.1",
- "npm_package_devDependencies__types_react_table": "^6.8.9",
- "npm_package_devDependencies__types_react_reconciler": "^0.26.4",
- "NODE_OPTIONS": "--max_old_space_size=4096",
- "TS_NODE_DEV": "true",
- "_CLIENT_OPENAI_KEY": "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",
- "VIPSHOME": "/usr/local/Cellar/vips/8.8.1",
- "TYPESCRIPT_PATH": "/Users/sarah/Desktop/dash/Dash-Web/node_modules/typescript/lib/typescript.js",
- "TSCONFIG": "/Users/sarah/Desktop/dash/Dash-Web/tsconfig.json",
- "COMPILER_OPTIONS": "{}",
- "TSLINT": "true",
- "CONTEXT": "/Users/sarah/Desktop/dash/Dash-Web",
- "TSLINTAUTOFIX": "false",
- "ESLINT": "false",
- "ESLINT_OPTIONS": "{}",
- "WATCH": "",
- "WORK_DIVISION": "1",
- "MEMORY_LIMIT": "2048",
- "CHECK_SYNTACTIC_ERRORS": "false",
- "USE_INCREMENTAL_API": "true",
- "VUE": "false"
- },
- "userLimits": {
- "core_file_size_blocks": {
- "soft": 0,
- "hard": "unlimited"
- },
- "data_seg_size_kbytes": {
- "soft": "unlimited",
- "hard": "unlimited"
- },
- "file_size_blocks": {
- "soft": "unlimited",
- "hard": "unlimited"
- },
- "max_locked_memory_bytes": {
- "soft": "unlimited",
- "hard": "unlimited"
- },
- "max_memory_size_kbytes": {
- "soft": "unlimited",
- "hard": "unlimited"
- },
- "open_files": {
- "soft": 1048575,
- "hard": "unlimited"
- },
- "stack_size_bytes": {
- "soft": 8388608,
- "hard": 67104768
- },
- "cpu_time_seconds": {
- "soft": "unlimited",
- "hard": "unlimited"
- },
- "max_user_processes": {
- "soft": 2784,
- "hard": 4176
- },
- "virtual_memory_kbytes": {
- "soft": "unlimited",
- "hard": "unlimited"
- }
- },
- "sharedObjects": [
- "/Users/sarah/.nvm/versions/node/v12.16.0/bin/node",
- "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation",
- "/usr/lib/libobjc.A.dylib",
- "/System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal",
- "/usr/lib/liboah.dylib",
- "/usr/lib/libfakelink.dylib",
- "/usr/lib/libicucore.A.dylib",
- "/usr/lib/libSystem.B.dylib",
- "/System/Library/PrivateFrameworks/SoftLinking.framework/Versions/A/SoftLinking",
- "/usr/lib/libc++abi.dylib",
- "/usr/lib/libc++.1.dylib",
- "/usr/lib/system/libcache.dylib",
- "/usr/lib/system/libcommonCrypto.dylib",
- "/usr/lib/system/libcompiler_rt.dylib",
- "/usr/lib/system/libcopyfile.dylib",
- "/usr/lib/system/libcorecrypto.dylib",
- "/usr/lib/system/libdispatch.dylib",
- "/usr/lib/system/libdyld.dylib",
- "/usr/lib/system/libkeymgr.dylib",
- "/usr/lib/system/libmacho.dylib",
- "/usr/lib/system/libquarantine.dylib",
- "/usr/lib/system/libremovefile.dylib",
- "/usr/lib/system/libsystem_asl.dylib",
- "/usr/lib/system/libsystem_blocks.dylib",
- "/usr/lib/system/libsystem_c.dylib",
- "/usr/lib/system/libsystem_collections.dylib",
- "/usr/lib/system/libsystem_configuration.dylib",
- "/usr/lib/system/libsystem_containermanager.dylib",
- "/usr/lib/system/libsystem_coreservices.dylib",
- "/usr/lib/system/libsystem_darwin.dylib",
- "/usr/lib/system/libsystem_dnssd.dylib",
- "/usr/lib/system/libsystem_featureflags.dylib",
- "/usr/lib/system/libsystem_info.dylib",
- "/usr/lib/system/libsystem_m.dylib",
- "/usr/lib/system/libsystem_malloc.dylib",
- "/usr/lib/system/libsystem_networkextension.dylib",
- "/usr/lib/system/libsystem_notify.dylib",
- "/usr/lib/system/libsystem_sandbox.dylib",
- "/usr/lib/system/libsystem_secinit.dylib",
- "/usr/lib/system/libsystem_kernel.dylib",
- "/usr/lib/system/libsystem_platform.dylib",
- "/usr/lib/system/libsystem_pthread.dylib",
- "/usr/lib/system/libsystem_symptoms.dylib",
- "/usr/lib/system/libsystem_trace.dylib",
- "/usr/lib/system/libunwind.dylib",
- "/usr/lib/system/libxpc.dylib",
- "/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit",
- "/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices",
- "/usr/lib/libDiagnosticMessagesClient.dylib",
- "/usr/lib/libenergytrace.dylib",
- "/usr/lib/libbsm.0.dylib",
- "/usr/lib/libz.1.dylib",
- "/usr/lib/system/libkxld.dylib",
- "/System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork",
- "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents",
- "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore",
- "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata",
- "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices",
- "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit",
- "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE",
- "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices",
- "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices",
- "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList",
- "/System/Library/Frameworks/Security.framework/Versions/A/Security",
- "/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration",
- "/usr/lib/libapple_nghttp2.dylib",
- "/usr/lib/libcompression.dylib",
- "/usr/lib/libnetwork.dylib",
- "/usr/lib/libsqlite3.dylib",
- "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation",
- "/System/Library/Frameworks/Network.framework/Versions/A/Network",
- "/usr/lib/libCoreEntitlements.dylib",
- "/System/Library/PrivateFrameworks/MessageSecurity.framework/Versions/A/MessageSecurity",
- "/System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer",
- "/usr/lib/libMobileGestalt.dylib",
- "/System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression",
- "/usr/lib/libcoretls.dylib",
- "/usr/lib/libcoretls_cfhelpers.dylib",
- "/usr/lib/libpam.2.dylib",
- "/usr/lib/libxar.1.dylib",
- "/System/Library/PrivateFrameworks/CoreAutoLayout.framework/Versions/A/CoreAutoLayout",
- "/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration",
- "/usr/lib/libarchive.2.dylib",
- "/usr/lib/libxml2.2.dylib",
- "/usr/lib/liblangid.dylib",
- "/System/Library/Frameworks/Combine.framework/Versions/A/Combine",
- "/usr/lib/swift/libswiftCore.dylib",
- "/usr/lib/swift/libswiftCoreFoundation.dylib",
- "/usr/lib/swift/libswiftDarwin.dylib",
- "/usr/lib/swift/libswiftDispatch.dylib",
- "/usr/lib/swift/libswiftIOKit.dylib",
- "/usr/lib/swift/libswiftObjectiveC.dylib",
- "/usr/lib/swift/libswiftXPC.dylib",
- "/usr/lib/swift/libswift_Concurrency.dylib",
- "/usr/lib/swift/libswift_StringProcessing.dylib",
- "/usr/lib/swift/libswiftos.dylib",
- "/System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo",
- "/System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/Versions/A/IOMobileFramebuffer",
- "/System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface",
- "/usr/lib/libpcap.A.dylib",
- "/usr/lib/libdns_services.dylib",
- "/usr/lib/liblzma.5.dylib",
- "/usr/lib/libbz2.1.0.dylib",
- "/usr/lib/libiconv.2.dylib",
- "/usr/lib/libcharset.1.dylib",
- "/usr/lib/swift/libswift_RegexParser.dylib",
- "/usr/lib/libheimdal-asn1.dylib",
- "/usr/lib/libCheckFix.dylib",
- "/System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC",
- "/System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP",
- "/System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities",
- "/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate",
- "/usr/lib/libmecab.dylib",
- "/usr/lib/libCRFSuite.dylib",
- "/usr/lib/libgermantok.dylib",
- "/usr/lib/libThaiTokenizer.dylib",
- "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage",
- "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib",
- "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib",
- "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib",
- "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib",
- "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib",
- "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib",
- "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib",
- "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib",
- "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib",
- "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib",
- "/System/Library/PrivateFrameworks/MIL.framework/Versions/A/MIL",
- "/System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory",
- "/System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory",
- "/System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS",
- "/System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation",
- "/usr/lib/libutil.dylib",
- "/System/Library/PrivateFrameworks/InstalledContentLibrary.framework/Versions/A/InstalledContentLibrary",
- "/System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore",
- "/usr/lib/libapp_launch_measurement.dylib",
- "/System/Library/PrivateFrameworks/AppleMobileFileIntegrity.framework/Versions/A/AppleMobileFileIntegrity",
- "/usr/lib/libmis.dylib",
- "/System/Library/PrivateFrameworks/MobileSystemServices.framework/Versions/A/MobileSystemServices",
- "/System/Library/PrivateFrameworks/ConfigProfileHelper.framework/Versions/A/ConfigProfileHelper",
- "/System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics",
- "/System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce",
- "/System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling",
- "/usr/lib/libxslt.1.dylib",
- "/usr/lib/libcmph.dylib",
- "/System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji",
- "/System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData",
- "/System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon",
- "/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement",
- "/usr/lib/libTLE.dylib",
- "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices",
- "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics",
- "/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText",
- "/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO",
- "/System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync",
- "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS",
- "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices",
- "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore",
- "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD",
- "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy",
- "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis",
- "/System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight",
- "/System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib",
- "/System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices",
- "/System/Library/PrivateFrameworks/IOSurfaceAccelerator.framework/Versions/A/IOSurfaceAccelerator",
- "/System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient",
- "/System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay",
- "/System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia",
- "/System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator",
- "/System/Library/Frameworks/Metal.framework/Versions/A/Metal",
- "/System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo",
- "/System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders",
- "/System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport",
- "/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore",
- "/System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox",
- "/System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard",
- "/System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG",
- "/usr/lib/libexpat.1.dylib",
- "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib",
- "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib",
- "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib",
- "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib",
- "/usr/lib/libate.dylib",
- "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib",
- "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib",
- "/System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler",
- "/System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment",
- "/System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay",
- "/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/libllvm-flatbuffers.dylib",
- "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib",
- "/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/libGPUCompilerUtils.dylib",
- "/System/Library/PrivateFrameworks/CMCaptureCore.framework/Versions/A/CMCaptureCore",
- "/usr/lib/libspindump.dylib",
- "/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio",
- "/System/Library/Frameworks/ExtensionFoundation.framework/Versions/A/ExtensionFoundation",
- "/System/Library/PrivateFrameworks/CoreTime.framework/Versions/A/CoreTime",
- "/System/Library/PrivateFrameworks/AppServerSupport.framework/Versions/A/AppServerSupport",
- "/System/Library/PrivateFrameworks/perfdata.framework/Versions/A/perfdata",
- "/System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore",
- "/System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk",
- "/usr/lib/libAudioStatistics.dylib",
- "/System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy",
- "/usr/lib/libSMC.dylib",
- "/System/Library/Frameworks/CoreMIDI.framework/Versions/A/CoreMIDI",
- "/usr/lib/libAudioToolboxUtility.dylib",
- "/System/Library/PrivateFrameworks/OSAServicesClient.framework/Versions/A/OSAServicesClient",
- "/usr/lib/libperfcheck.dylib",
- "/System/Library/PrivateFrameworks/PlugInKit.framework/Versions/A/PlugInKit",
- "/System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices",
- "/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL",
- "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib",
- "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib",
- "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib",
- "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib",
- "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib",
- "/usr/lib/libRosetta.dylib",
- "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib",
- "/System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSCore.framework/Versions/A/MPSCore",
- "/System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSImage.framework/Versions/A/MPSImage",
- "/System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork",
- "/System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix",
- "/System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector",
- "/System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray",
- "/System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSFunctions.framework/Versions/A/MPSFunctions",
- "/System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools",
- "/System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary",
- "/usr/lib/libIOReport.dylib",
- "/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage",
- "/System/Library/PrivateFrameworks/PhotosensitivityProcessing.framework/Versions/A/PhotosensitivityProcessing",
- "/System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL",
- "/System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer",
- "/System/Library/PrivateFrameworks/FontServices.framework/Versions/A/FontServices",
- "/System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers",
- "/System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG",
- "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib",
- "/System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib",
- "/System/Library/PrivateFrameworks/FontServices.framework/libXTFontStaticRegistryData.dylib",
- "/usr/lib/swift/libswiftMetal.dylib",
- "/usr/lib/swift/libswiftsimd.dylib",
- "/System/Library/PrivateFrameworks/VideoToolboxParavirtualizationSupport.framework/Versions/A/VideoToolboxParavirtualizationSupport",
- "/System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA",
- "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI",
- "/usr/lib/libcups.2.dylib",
- "/System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos",
- "/System/Library/Frameworks/GSS.framework/Versions/A/GSS",
- "/usr/lib/libresolv.9.dylib",
- "/System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal",
- "/System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib",
- "/System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth",
- "/System/Library/Frameworks/AVFAudio.framework/Versions/A/AVFAudio",
- "/System/Library/PrivateFrameworks/AXCoreUtilities.framework/Versions/A/AXCoreUtilities",
- "/System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox",
- "/System/Library/PrivateFrameworks/AudioSession.framework/Versions/A/AudioSession",
- "/System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth",
- "/System/Library/PrivateFrameworks/MediaExperience.framework/Versions/A/MediaExperience",
- "/System/Library/PrivateFrameworks/AudioSession.framework/libSessionUtility.dylib",
- "/System/Library/PrivateFrameworks/AudioResourceArbitration.framework/Versions/A/AudioResourceArbitration",
- "/System/Library/PrivateFrameworks/PowerLog.framework/Versions/A/PowerLog",
- "/System/Library/Frameworks/CoreData.framework/Versions/A/CoreData",
- "/System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth",
- "/System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit",
- "/System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils",
- "/System/Library/PrivateFrameworks/CoreUtilsExtras.framework/Versions/A/CoreUtilsExtras",
- "/System/Library/PrivateFrameworks/IO80211.framework/Versions/A/IO80211",
- "/System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag",
- "/Users/sarah/Desktop/dash/Dash-Web/node_modules/fsevents/build/Release/fse.node"
- ]
-} \ No newline at end of file
diff --git a/src/client/documents/DocumentTypes.ts b/src/client/documents/DocumentTypes.ts
index 4e3496608..b4ad9c17d 100644
--- a/src/client/documents/DocumentTypes.ts
+++ b/src/client/documents/DocumentTypes.ts
@@ -33,7 +33,6 @@ export enum DocumentType {
PRES = 'presentation',
PRESELEMENT = 'preselement',
COMPARISON = 'comparison',
- GROUP = 'group',
PUSHPIN = 'pushpin',
MAPROUTE = 'maproute',
CALENDAR = 'calendar',
diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts
index cf397e85a..ddb6f65b6 100644
--- a/src/client/documents/Documents.ts
+++ b/src/client/documents/Documents.ts
@@ -246,8 +246,8 @@ export class DocumentOptions {
_nativeWidth?: NUMt = new NumInfo('native width of document contents (e.g., the pixel width of an image)', false);
_nativeHeight?: NUMt = new NumInfo('native height of document contents (e.g., the pixel height of an image)', false);
- 'acl-Guest'?: STRt = new StrInfo("permissions granted to users logged in as 'guest' (either view, or private)"); // public permissions
- '_acl-Guest'?: string; // public permissions
+ acl_Guest?: STRt = new StrInfo("permissions granted to users logged in as 'guest' (either view, or private)"); // public permissions
+ _acl_Guest?: string; // public permissions
type?: DTYPEt = new DTypeInfo('type of document', true);
type_collection?: COLLt = new CTypeInfo('how collection is rendered'); // sub type of a collection
_type_collection?: COLLt = new CTypeInfo('how collection is rendered'); // sub type of a collection
@@ -535,6 +535,7 @@ export namespace Docs {
{
layout: { view: FormattedTextBox, dataField: 'text' },
options: {
+ acl: '',
_height: 35,
_xMargin: 10,
_yMargin: 10,
@@ -550,21 +551,21 @@ export namespace Docs {
DocumentType.SEARCH,
{
layout: { view: SearchBox, dataField: defaultDataKey },
- options: { _width: 400 },
+ options: { acl: '', _width: 400 },
},
],
[
DocumentType.IMG,
{
layout: { view: ImageBox, dataField: defaultDataKey },
- options: { freeform: '', systemIcon: 'BsFileEarmarkImageFill' },
+ options: { acl: '', freeform: '', systemIcon: 'BsFileEarmarkImageFill' },
},
],
[
DocumentType.WEB,
{
layout: { view: WebBox, dataField: defaultDataKey },
- options: { _height: 300, _layout_fitWidth: true, layout_nativeDimEditable: true, layout_reflowVertical: true, waitForDoubleClickToClick: 'always', systemIcon: 'BsGlobe' },
+ options: { acl: '', _height: 300, _layout_fitWidth: true, layout_nativeDimEditable: true, layout_reflowVertical: true, waitForDoubleClickToClick: 'always', systemIcon: 'BsGlobe' },
},
],
[
@@ -572,6 +573,7 @@ export namespace Docs {
{
layout: { view: CollectionView, dataField: defaultDataKey },
options: {
+ acl: '',
_layout_fitWidth: true,
freeform: '',
_freeform_panX: 0,
@@ -588,42 +590,42 @@ export namespace Docs {
DocumentType.KVP,
{
layout: { view: KeyValueBox, dataField: defaultDataKey },
- options: { _layout_fitWidth: true, _height: 150 },
+ options: { acl: '', _layout_fitWidth: true, _height: 150 },
},
],
[
DocumentType.VID,
{
layout: { view: VideoBox, dataField: defaultDataKey },
- options: { _layout_currentTimecode: 0, systemIcon: 'BsFileEarmarkPlayFill' },
+ options: { acl: '', _layout_currentTimecode: 0, systemIcon: 'BsFileEarmarkPlayFill' },
},
],
[
DocumentType.AUDIO,
{
layout: { view: AudioBox, dataField: defaultDataKey },
- options: { _height: 100, layout_fitWidth: true, layout_reflowHorizontal: true, layout_reflowVertical: true, layout_nativeDimEditable: true, systemIcon: 'BsFillVolumeUpFill' },
+ options: { acl: '', _height: 100, layout_fitWidth: true, layout_reflowHorizontal: true, layout_reflowVertical: true, layout_nativeDimEditable: true, systemIcon: 'BsFillVolumeUpFill' },
},
],
[
DocumentType.REC,
{
layout: { view: VideoBox, dataField: defaultDataKey },
- options: { _height: 100, backgroundColor: 'pink', systemIcon: 'BsFillMicFill' },
+ options: { acl: '', _height: 100, backgroundColor: 'pink', systemIcon: 'BsFillMicFill' },
},
],
[
DocumentType.PDF,
{
layout: { view: PDFBox, dataField: defaultDataKey },
- options: { _layout_curPage: 1, _layout_fitWidth: true, layout_nativeDimEditable: true, layout_reflowVertical: true, systemIcon: 'BsFileEarmarkPdfFill' },
+ options: { acl: '', _layout_curPage: 1, _layout_fitWidth: true, layout_nativeDimEditable: true, layout_reflowVertical: true, systemIcon: 'BsFileEarmarkPdfFill' },
},
],
[
DocumentType.MAP,
{
layout: { view: MapBox, dataField: defaultDataKey },
- options: { map: '', _height: 600, _width: 800, layout_reflowHorizontal: true, layout_reflowVertical: true, layout_nativeDimEditable: true, systemIcon: 'BsFillPinMapFill' },
+ options: { acl: '', map: '', _height: 600, _width: 800, layout_reflowHorizontal: true, layout_reflowVertical: true, layout_nativeDimEditable: true, systemIcon: 'BsFillPinMapFill' },
},
],
[
@@ -631,6 +633,7 @@ export namespace Docs {
{
layout: { view: LinkBox, dataField: 'link' },
options: {
+ acl: '',
childDontRegisterViews: true,
layout_hideLinkAnchors: true,
_height: 1,
@@ -647,88 +650,77 @@ export namespace Docs {
{
data: new List<Doc>(),
layout: { view: EmptyBox, dataField: defaultDataKey },
- options: { title: 'Global Script Database' },
+ options: { acl: '', title: 'Global Script Database' },
},
],
[
DocumentType.SCRIPTING,
{
layout: { view: ScriptingBox, dataField: defaultDataKey },
- options: { systemIcon: 'BsFileEarmarkCodeFill' },
+ options: { acl: '', systemIcon: 'BsFileEarmarkCodeFill' },
},
],
[
DocumentType.LABEL,
{
layout: { view: LabelBox, dataField: 'title' },
- options: { _singleLine: true, layout_nativeDimEditable: true, layout_reflowHorizontal: true, layout_reflowVertical: true },
+ options: { acl: '', _singleLine: true, layout_nativeDimEditable: true, layout_reflowHorizontal: true, layout_reflowVertical: true },
},
],
[
DocumentType.EQUATION,
{
layout: { view: EquationBox, dataField: 'text' },
- options: {
- fontSize: '14px',
- layout_reflowHorizontal: true,
- layout_reflowVertical: true,
- layout_nativeDimEditable: true,
- layout_hideDecorationTitle: true,
- systemIcon: 'BsCalculatorFill',
- }, // systemIcon: 'BsSuperscript' + BsSubscript
+ options: { acl: '', fontSize: '14px', layout_reflowHorizontal: true, layout_reflowVertical: true, layout_nativeDimEditable: true, layout_hideDecorationTitle: true, systemIcon: 'BsCalculatorFill' }, // systemIcon: 'BsSuperscript' + BsSubscript
},
],
[
DocumentType.FUNCPLOT,
{
layout: { view: FunctionPlotBox, dataField: defaultDataKey },
- options: {
- layout_reflowHorizontal: true,
- layout_reflowVertical: true,
- layout_nativeDimEditable: true,
- },
+ options: { acl: '', layout_reflowHorizontal: true, layout_reflowVertical: true, layout_nativeDimEditable: true },
},
],
[
DocumentType.BUTTON,
{
layout: { view: LabelBox, dataField: 'title' },
- options: { layout_nativeDimEditable: true, layout_reflowHorizontal: true, layout_reflowVertical: true },
+ options: { acl: '', layout_nativeDimEditable: true, layout_reflowHorizontal: true, layout_reflowVertical: true },
},
],
[
DocumentType.PRES,
{
layout: { view: PresBox, dataField: defaultDataKey },
- options: { defaultDoubleClick: 'ignore', hideClickBehaviors: true, layout_hideLinkAnchors: true },
+ options: { acl: '', defaultDoubleClick: 'ignore', hideClickBehaviors: true, layout_hideLinkAnchors: true },
},
],
[
DocumentType.FONTICON,
{
layout: { view: FontIconBox, dataField: 'icon' },
- options: { defaultDoubleClick: 'ignore', waitForDoubleClickToClick: 'never', layout_hideContextMenu: true, layout_hideLinkButton: true, _width: 40, _height: 40 },
+ options: { acl: '', defaultDoubleClick: 'ignore', waitForDoubleClickToClick: 'never', layout_hideContextMenu: true, layout_hideLinkButton: true, _width: 40, _height: 40 },
},
],
[
DocumentType.WEBCAM,
{
layout: { view: RecordingBox, dataField: defaultDataKey },
- options: { systemIcon: 'BsFillCameraVideoFill' },
+ options: { acl: '', systemIcon: 'BsFillCameraVideoFill' },
},
],
[
DocumentType.PRESELEMENT,
{
layout: { view: PresElementBox, dataField: defaultDataKey },
- options: { title: 'pres element template', _layout_fitWidth: true, _xMargin: 0, isTemplateDoc: true, isTemplateForField: 'data' },
+ options: { acl: '', title: 'pres element template', _layout_fitWidth: true, _xMargin: 0, isTemplateDoc: true, isTemplateForField: 'data' },
},
],
[
DocumentType.CONFIG,
{
layout: { view: CollectionView, dataField: defaultDataKey },
- options: { config: '', layout_hideLinkButton: true, layout_unrendered: true },
+ options: { acl: '', config: '', layout_hideLinkButton: true, layout_unrendered: true },
},
],
[
@@ -737,6 +729,7 @@ export namespace Docs {
// NOTE: this is unused!! ink fields are filled in directly within the InkDocument() method
layout: { view: InkingStroke, dataField: 'stroke' },
options: {
+ acl: '',
systemIcon: 'BsFillPencilFill', //
layout_nativeDimEditable: true,
layout_reflowVertical: true,
@@ -751,7 +744,7 @@ export namespace Docs {
DocumentType.SCREENSHOT,
{
layout: { view: ScreenshotBox, dataField: defaultDataKey },
- options: { layout_nativeDimEditable: true, systemIcon: 'BsCameraFill' },
+ options: { acl: '', layout_nativeDimEditable: true, systemIcon: 'BsCameraFill' },
},
],
[
@@ -759,35 +752,48 @@ export namespace Docs {
{
data: '',
layout: { view: ComparisonBox, dataField: defaultDataKey },
- options: { backgroundColor: 'gray', dropAction: dropActionType.move, waitForDoubleClickToClick: 'always', layout_reflowHorizontal: true, layout_reflowVertical: true, layout_nativeDimEditable: true, systemIcon: 'BsLayoutSplit' },
+ options: {
+ acl: '',
+ backgroundColor: 'gray',
+ dropAction: dropActionType.move,
+ waitForDoubleClickToClick: 'always',
+ layout_reflowHorizontal: true,
+ layout_reflowVertical: true,
+ layout_nativeDimEditable: true,
+ systemIcon: 'BsLayoutSplit',
+ },
},
],
[
DocumentType.GROUPDB,
{
layout: { view: EmptyBox, dataField: defaultDataKey },
- options: { title: 'Global Group Database' },
- },
- ],
- [
- DocumentType.GROUP,
- {
- layout: { view: EmptyBox, dataField: defaultDataKey },
- options: {},
+ options: { acl: '', title: 'Global Group Database' },
},
],
[
DocumentType.DATAVIZ,
{
layout: { view: DataVizBox, dataField: defaultDataKey },
- options: { dataViz_title: '', dataViz_line: '', dataViz_pie: '', dataViz_histogram: '', dataViz: 'table', _layout_fitWidth: true, layout_reflowHorizontal: true, layout_reflowVertical: true, layout_nativeDimEditable: true },
+ options: {
+ acl: '',
+ dataViz_title: '',
+ dataViz_line: '',
+ dataViz_pie: '',
+ dataViz_histogram: '',
+ dataViz: 'table',
+ _layout_fitWidth: true,
+ layout_reflowHorizontal: true,
+ layout_reflowVertical: true,
+ layout_nativeDimEditable: true,
+ },
},
],
[
DocumentType.LOADING,
{
layout: { view: LoadingBox, dataField: '' },
- options: { _layout_fitWidth: true, _fitHeight: true, layout_nativeDimEditable: true },
+ options: { acl: '', _layout_fitWidth: true, _fitHeight: true, layout_nativeDimEditable: true },
},
],
[
@@ -795,41 +801,28 @@ export namespace Docs {
{
data: '',
layout: { view: PhysicsSimulationBox, dataField: defaultDataKey, _width: 1000, _height: 800 },
- options: {
- _height: 100,
- mass1: '',
- mass2: '',
- layout_nativeDimEditable: true,
- position: '',
- acceleration: '',
- pendulum: '',
- spring: '',
- wedge: '',
- simulation: '',
- review: '',
- systemIcon: 'BsShareFill',
- },
+ options: { acl: '', _height: 100, mass1: '', mass2: '', layout_nativeDimEditable: true, position: '', acceleration: '', pendulum: '', spring: '', wedge: '', simulation: '', review: '', systemIcon: 'BsShareFill' },
},
],
[
DocumentType.PUSHPIN,
{
layout: { view: MapPushpinBox, dataField: defaultDataKey },
- options: {},
+ options: { acl: '' },
},
],
[
DocumentType.MAPROUTE,
{
layout: { view: CollectionView, dataField: defaultDataKey },
- options: {},
+ options: { acl: '' },
},
],
[
DocumentType.CALENDAR,
{
layout: { view: CalendarBox, dataField: defaultDataKey },
- options: {},
+ options: { acl: '' },
},
],
]);
@@ -926,7 +919,7 @@ export namespace Docs {
type,
isBaseProto: true,
_width: 300,
- 'acl-Guest': SharingPermissions.View,
+ acl_Guest: SharingPermissions.View,
...(template.options || {}),
layout: layout.view?.LayoutString(layout.dataField),
data: template.data,
@@ -971,8 +964,8 @@ export namespace Docs {
const viewKeys = ['x', 'y', 'isSystem']; // keys that should be addded to the view document even though they don't begin with an "_"
const { omit: dataProps, extract: viewProps } = OmitKeys(options, viewKeys, '^_');
- // dataProps['acl-Override'] = SharingPermissions.Unset;
- dataProps['acl-Guest'] = options['acl-Guest'] ?? (Doc.defaultAclPrivate ? SharingPermissions.None : SharingPermissions.View);
+ // dataProps.acl_Override = SharingPermissions.Unset;
+ dataProps.acl_Guest = options.acl_Guest ?? (Doc.defaultAclPrivate ? SharingPermissions.None : SharingPermissions.View);
dataProps.isSystem = viewProps.isSystem;
dataProps.isDataDoc = true;
dataProps.author = ClientUtils.CurrentUserEmail();
@@ -996,7 +989,7 @@ export namespace Docs {
if (!noView) {
const viewFirstProps: { [id: string]: any } = { author: ClientUtils.CurrentUserEmail() };
- viewFirstProps['acl-Guest'] = options['_acl-Guest'] ?? (Doc.defaultAclPrivate ? SharingPermissions.None : SharingPermissions.View);
+ viewFirstProps.acl_Guest = options._acl_Guest ?? (Doc.defaultAclPrivate ? SharingPermissions.None : SharingPermissions.View);
let viewDoc: Doc;
// determines whether viewDoc should be created using placeholder Doc or default
if (placeholderDoc) {
@@ -1004,7 +997,7 @@ export namespace Docs {
placeholderDoc._width = options._width !== undefined ? Number(options._width) : undefined;
viewDoc = Doc.assign(placeholderDoc, viewFirstProps, true, true);
Array.from(Object.keys(placeholderDoc))
- .filter(key => key.startsWith('acl'))
+ .filter(key => key.startsWith('acl_'))
.forEach(key => {
dataDoc[key] = viewDoc[key] = placeholderDoc[key];
});
@@ -1157,8 +1150,8 @@ export namespace Docs {
I.rotation = 0;
I.defaultDoubleClick = 'ignore';
I.author_date = new DateField();
- I['acl-Guest'] = Doc.defaultAclPrivate ? SharingPermissions.None : SharingPermissions.View;
- // I['acl-Override'] = SharingPermissions.Unset;
+ I.acl_Guest = Doc.defaultAclPrivate ? SharingPermissions.None : SharingPermissions.View;
+ // I.acl_Override = SharingPermissions.Unset;
I[Initializing] = false;
return ink;
@@ -1335,7 +1328,7 @@ export namespace Docs {
const doc = DockDocument(
configs.map(c => c.doc),
JSON.stringify(layoutConfig),
- ClientUtils.CurrentUserEmail() === 'guest' ? options : { 'acl-Guest': SharingPermissions.View, ...options },
+ ClientUtils.CurrentUserEmail() === 'guest' ? options : { acl_Guest: SharingPermissions.View, ...options },
id
);
configs.forEach(c => {
@@ -1539,8 +1532,8 @@ export namespace DocUtils {
source,
target,
{
- 'acl-Guest': SharingPermissions.Augment,
- '_acl-Guest': SharingPermissions.Augment,
+ acl_Guest: SharingPermissions.Augment,
+ _acl_Guest: SharingPermissions.Augment,
title: ComputedField.MakeFunction('generateLinkTitle(this)') as any,
link_anchor_1_useSmallAnchor: source.useSmallAnchor ? true : undefined,
link_anchor_2_useSmallAnchor: target.useSmallAnchor ? true : undefined,
diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts
index eae5b2d6a..00279e7e1 100644
--- a/src/client/util/CurrentUserUtils.ts
+++ b/src/client/util/CurrentUserUtils.ts
@@ -836,7 +836,7 @@ pie title Minerals in my tap water
linkDocs.author = ClientUtils.CurrentUserEmail();
linkDocs.isSystem = true;
linkDocs.data = new List<Doc>([]);
- linkDocs["acl-Guest"] = SharingPermissions.Augment;
+ linkDocs.acl_Guest = SharingPermissions.Augment;
doc.myLinkDatabase = new PrefetchProxy(linkDocs);
}
}
@@ -857,7 +857,7 @@ pie title Minerals in my tap water
// childContextMenuScripts: new List<ScriptField>([addToDashboards!,]),
// childContextMenuLabels: new List<string>(["Add to Dashboards",]),
// childContextMenuIcons: new List<string>(["user-plus",]),
- "acl-Guest": SharingPermissions.Augment, "_acl-Guest": SharingPermissions.Augment,
+ acl_Guest: SharingPermissions.Augment, _acl_Guest: SharingPermissions.Augment,
childDragAction: dropActionType.embed, isSystem: true, childContentPointerEvents: "none", childLimitHeight: 0, _yMargin: 0, _gridGap: 15, childDontRegisterViews:true,
// NOTE: treeView_HideTitle & _layout_showTitle is for a TreeView's editable title, _layout_showTitle is for DocumentViews title bar
_layout_showTitle: "title", treeView_HideTitle: true, ignoreClick: true, _lockedPosition: true, layout_boxShadow: "0 0", _chromeHidden: true, dontRegisterView: true,
diff --git a/src/client/util/ServerStats.tsx b/src/client/util/ServerStats.tsx
index 891561245..57363663d 100644
--- a/src/client/util/ServerStats.tsx
+++ b/src/client/util/ServerStats.tsx
@@ -14,7 +14,7 @@ export class ServerStats extends React.Component<{}> {
@observable _stats: { [key: string]: any } | undefined = undefined;
// private get linkVisible() {
- // return this.targetDoc ? this.targetDoc["acl-" + PublicKey] !== SharingPermissions.None : false;
+ // return this.targetDoc ? this.targetDoc['acl_' + PublicKey] !== SharingPermissions.None : false;
// }
constructor(props: {}) {
diff --git a/src/client/util/SharingManager.tsx b/src/client/util/SharingManager.tsx
index 5b4ac5aff..19a7948e6 100644
--- a/src/client/util/SharingManager.tsx
+++ b/src/client/util/SharingManager.tsx
@@ -90,7 +90,7 @@ export class SharingManager extends React.Component<{}> {
@observable private myDocAcls: boolean = false; // whether the My Docs checkbox is selected or not
// private get linkVisible() {
- // return this.targetDoc ? this.targetDoc["acl-" + PublicKey] !== SharingPermissions.None : false;
+ // return this.targetDoc ? this.targetDoc['acl_' + PublicKey] !== SharingPermissions.None : false;
// }
constructor(props: {}) {
@@ -172,10 +172,10 @@ export class SharingManager extends React.Component<{}> {
// the list of users shared with
const userListContents = users
- // .filter(({ user }) => (docs.length > 1 ? commonKeys.includes(`acl-${normalizeEmail(user.email)}`) : docs[0]?.author !== user.email))
+ // .filter(({ user }) => (docs.length > 1 ? commonKeys.includes(`acl_${normalizeEmail(user.email)}`) : docs[0]?.author !== user.email))
.filter(({ user }) => docs[0]?.author !== user.email)
.map(({ user, linkDatabase, sharingDoc, userColor }) => {
- const userKey = `acl-${normalizeEmail(user.email)}`;
+ const userKey = `acl_${normalizeEmail(user.email)}`;
const uniform = docs.every(doc => doc?.[DocAcl]?.[userKey] === docs[0]?.[DocAcl]?.[userKey]);
// const permissions = uniform ? StrCast(targetDoc?.[userKey]) : '-multiple-';
let permissions = targetDoc[DocAcl][userKey] ? HierarchyMapping.get(targetDoc[DocAcl][userKey])?.name : StrCast(targetDoc[userKey]);
@@ -204,7 +204,7 @@ export class SharingManager extends React.Component<{}> {
const sameAuthor = docs.every(doc => doc?.author === docs[0]?.author);
// the owner of the doc and the current user are placed at the top of the user list.
- const userKey = `acl-${normalizeEmail(ClientUtils.CurrentUserEmail())}`;
+ const userKey = `acl_${normalizeEmail(ClientUtils.CurrentUserEmail())}`;
const curUserPermission = StrCast(targetDoc[userKey]);
// const curUserPermission = HierarchyMapping.get(effectiveAcls[0])!.name
userListContents.unshift(
@@ -230,10 +230,10 @@ export class SharingManager extends React.Component<{}> {
);
// the list of groups shared with
- const groupListMap: (Doc | { title: string })[] = groups.filter(({ title }) => (docs.length > 1 ? commonKeys.includes(`acl-${normalizeEmail(StrCast(title))}`) : true));
+ const groupListMap: (Doc | { title: string })[] = groups.filter(({ title }) => (docs.length > 1 ? commonKeys.includes(`acl_${normalizeEmail(StrCast(title))}`) : true));
groupListMap.unshift({ title: 'Guest' }); // , { title: "ALL" });
const groupListContents = groupListMap.map(group => {
- const groupKey = `acl-${StrCast(group.title)}`;
+ const groupKey = `acl_${StrCast(group.title)}`;
const uniform = docs.every(doc => doc?.[DocAcl]?.[groupKey] === docs[0]?.[DocAcl]?.[groupKey]);
const permissions = uniform ? StrCast(targetDoc?.[groupKey]) : '-multiple-';
@@ -442,7 +442,7 @@ export class SharingManager extends React.Component<{}> {
setInternalSharing = undoable((recipient: ValidatedUser, permission: string, targetDoc: Doc | undefined) => {
const { user, sharingDoc } = recipient;
const target = targetDoc || this.targetDoc!;
- const acl = `acl-${normalizeEmail(user.email)}`;
+ const acl = `acl_${normalizeEmail(user.email)}`;
const docs = SelectionManager.Views.length < 2 ? [target] : SelectionManager.Views.map(docView => docView.Document);
docs.map(doc => (this.layoutDocAcls || doc.dockingConfig ? doc : Doc.GetProto(doc))).forEach(doc => {
distributeAcls(acl, permission as SharingPermissions, doc, undefined, this.upgradeNested ? true : undefined);
@@ -459,7 +459,7 @@ export class SharingManager extends React.Component<{}> {
*/
setInternalGroupSharing = undoable((group: Doc | { title: string }, permission: string, targetDoc?: Doc) => {
const target = targetDoc || this.targetDoc!;
- const acl = `acl-${normalizeEmail(StrCast(group.title))}`;
+ const acl = `acl_${normalizeEmail(StrCast(group.title))}`;
const docs = SelectionManager.Views.length < 2 ? [target] : SelectionManager.Views.map(docView => docView.Document);
docs.map(doc => (this.layoutDocAcls || doc.dockingConfig ? doc : Doc.GetProto(doc))).forEach(doc => {
@@ -578,7 +578,7 @@ export class SharingManager extends React.Component<{}> {
} else {
docs.forEach(doc => {
if (GetEffectiveAcl(doc) === AclAdmin) {
- distributeAcls(`acl-${shareWith}`, permission, doc, undefined);
+ distributeAcls(`acl_${shareWith}`, permission, doc, undefined);
}
});
}
@@ -618,7 +618,7 @@ export class SharingManager extends React.Component<{}> {
removeGroup = (group: Doc) => {
if (group.docsShared) {
DocListCast(group.docsShared).forEach(doc => {
- const acl = `acl-${StrCast(group.title)}`;
+ const acl = `acl_${StrCast(group.title)}`;
distributeAcls(acl, SharingPermissions.None, doc);
const members: string[] = JSON.parse(StrCast(group.members));
@@ -634,7 +634,7 @@ export class SharingManager extends React.Component<{}> {
// if (!targetDoc) {
// return;
// }
- // targetDoc["acl-" + PublicKey] = permission;
+ // targetDoc['acl_' + PublicKey] = permission;
// }s
/**
diff --git a/src/client/views/DashboardView.tsx b/src/client/views/DashboardView.tsx
index 25415a4f0..c4855d2e7 100644
--- a/src/client/views/DashboardView.tsx
+++ b/src/client/views/DashboardView.tsx
@@ -165,7 +165,7 @@ export class DashboardView extends ObservableReactComponent<{}> {
: this.getDashboards(this.selectedDashboardGroup).map(dashboard => {
const href = ImageCast(dashboard.thumb)?.url?.href;
const shared = Object.keys(dashboard[DocAcl])
- .filter(key => key !== `acl-${normalizeEmail(ClientUtils.CurrentUserEmail())}` && !['acl-Me', 'acl-Guest'].includes(key))
+ .filter(key => key !== `acl_${normalizeEmail(ClientUtils.CurrentUserEmail())}` && !['acl_Me', 'acl_Guest'].includes(key))
.some(key => dashboard[DocAcl][key] !== AclPrivate);
return (
<div
diff --git a/src/client/views/FilterPanel.tsx b/src/client/views/FilterPanel.tsx
index 994107c01..ed9fc8dfb 100644
--- a/src/client/views/FilterPanel.tsx
+++ b/src/client/views/FilterPanel.tsx
@@ -222,7 +222,7 @@ export class FilterPanel extends ObservableReactComponent<filterProps> {
<div className="filterBox-treeView">
<div className="filterBox-select">
<div style={{ width: '100%' }}>
- <FieldsDropdown Document={this.Document} selectFunc={this.facetClick} showPlaceholder placeholder="add a filter" addedFields={['acl-Guest', LinkedTo]} />
+ <FieldsDropdown Document={this.Document} selectFunc={this.facetClick} showPlaceholder placeholder="add a filter" addedFields={['acl_Guest', LinkedTo]} />
</div>
{/* THE FOLLOWING CODE SHOULD BE DEVELOPER FOR BOOLEAN EXPRESSION (AND / OR) */}
{/* <div className="filterBox-select-bool">
diff --git a/src/client/views/PropertiesView.tsx b/src/client/views/PropertiesView.tsx
index 5e1c80f0c..f4ded8367 100644
--- a/src/client/views/PropertiesView.tsx
+++ b/src/client/views/PropertiesView.tsx
@@ -231,7 +231,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
@computed get noviceFields() {
const noviceReqFields = ['author', 'author_date', 'tags', '_layout_curPage'];
- return this.editableFields(key => key.indexOf('modificationDate') !== -1 || (key[0] === key[0].toUpperCase() && !key.startsWith('acl')), noviceReqFields);
+ return this.editableFields(key => key.indexOf('modificationDate') !== -1 || (key[0] === key[0].toUpperCase() && !key.startsWith('acl_')), noviceReqFields);
}
@undoBatch
@@ -473,7 +473,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
SharingManager.Instance.users.forEach(eachUser => {
let userOnDoc = true;
if (seldoc) {
- if (Doc.GetT(seldoc, 'acl-' + normalizeEmail(eachUser.user.email), 'string', true) === '' || Doc.GetT(seldoc, 'acl-' + normalizeEmail(eachUser.user.email), 'string', true) === undefined) {
+ if (Doc.GetT(seldoc, 'acl_' + normalizeEmail(eachUser.user.email), 'string', true) === '' || Doc.GetT(seldoc, 'acl_' + normalizeEmail(eachUser.user.email), 'string', true) === undefined) {
userOnDoc = false;
}
}
@@ -485,7 +485,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
// sorts and then adds each user to the table
usersAdded.sort(this.sortUsers);
usersAdded.forEach(userEmail => {
- const userKey = `acl-${normalizeEmail(userEmail)}`;
+ const userKey = `acl_${normalizeEmail(userEmail)}`;
const aclField = Doc.GetT(this.layoutDocAcls ? target : Doc.GetProto(target), userKey, 'string', true);
const permission = StrCast(aclField);
individualTableEntries.unshift(this.sharingItem(userEmail, showAdmin, permission!, false)); // adds each user
@@ -494,7 +494,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
// adds current user
let userEmail = ClientUtils.CurrentUserEmail();
if (userEmail === 'guest') userEmail = 'Guest';
- const userKey = `acl-${normalizeEmail(userEmail)}`;
+ const userKey = `acl_${normalizeEmail(userEmail)}`;
if (!usersAdded.includes(userEmail) && userEmail !== 'Guest' && userEmail !== target.author) {
let permission;
if (this.layoutDocAcls) {
@@ -514,7 +514,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
groupList.sort(this.sortGroups);
groupList.forEach(group => {
if (group.title !== 'Guest' && this.selectedDoc) {
- const groupKey = 'acl-' + normalizeEmail(StrCast(group.title));
+ const groupKey = 'acl_' + normalizeEmail(StrCast(group.title));
if (this.selectedDoc[groupKey] !== '' && this.selectedDoc[groupKey] !== undefined) {
let permission;
if (this.layoutDocAcls) {
@@ -529,7 +529,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
});
// guest permission
- const guestPermission = StrCast((this.layoutDocAcls ? target : Doc.GetProto(target))['acl-Guest']);
+ const guestPermission = StrCast((this.layoutDocAcls ? target : Doc.GetProto(target)).acl_Guest);
return (
<div>
@@ -1733,8 +1733,8 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
}
if (this.isPres && PresBox.Instance) {
const selectedItem: boolean = PresBox.Instance.selectedArray.size > 0;
- const type = [DocumentType.AUDIO, DocumentType.VID].includes(DocCast(PresBox.Instance.activeItem?.annotationOn)?.type as any as DocumentType)
- ? (DocCast(PresBox.Instance.activeItem?.annotationOn)?.type as any as DocumentType)
+ const type = [DocumentType.AUDIO, DocumentType.VID].find(dt => dt === DocCast(PresBox.Instance.activeItem?.annotationOn)?.type)
+ ? DocCast(PresBox.Instance.activeItem?.annotationOn)?.type
: PresBox.targetRenderedDoc(PresBox.Instance.activeItem)?.type;
return (
<div className="propertiesView" style={{ width: this._props.width }}>
diff --git a/src/client/views/collections/CollectionCarouselView.tsx b/src/client/views/collections/CollectionCarouselView.tsx
index 51352d3e2..fda320077 100644
--- a/src/client/views/collections/CollectionCarouselView.tsx
+++ b/src/client/views/collections/CollectionCarouselView.tsx
@@ -52,7 +52,7 @@ export class CollectionCarouselView extends CollectionSubView() {
};
captionStyleProvider = (doc: Doc | undefined, captionProps: Opt<FieldViewProps>, property: string): any => {
// first look for properties on the document in the carousel, then fallback to properties on the container
- const childValue = doc?.['caption-' + property] ? this._props.styleProvider?.(doc, captionProps, property) : undefined;
+ const childValue = doc?.['caption_' + property] ? this._props.styleProvider?.(doc, captionProps, property) : undefined;
return childValue ?? this._props.styleProvider?.(this.layoutDoc, captionProps, property);
};
panelHeight = () => this._props.PanelHeight() - (StrCast(this.layoutDoc._layout_showCaption) ? 50 : 0);
diff --git a/src/client/views/collections/CollectionMenu.tsx b/src/client/views/collections/CollectionMenu.tsx
index 6dba9e155..f945a7aa4 100644
--- a/src/client/views/collections/CollectionMenu.tsx
+++ b/src/client/views/collections/CollectionMenu.tsx
@@ -53,7 +53,7 @@ export class CollectionMenu extends AntimodeMenu<CollectionMenuProps> {
makeObservable(this);
CollectionMenu.Instance = this;
this._canFade = false; // don't let the inking menu fade away
- this.Pinned = Cast(Doc.UserDoc()['menuCollections-pinned'], 'boolean', true);
+ this.Pinned = Cast(Doc.UserDoc().menuCollections_pinned, 'boolean', true);
this.jumpTo(300, 300);
}
@@ -71,7 +71,7 @@ export class CollectionMenu extends AntimodeMenu<CollectionMenuProps> {
@action
toggleMenuPin = () => {
- Doc.UserDoc()['menuCollections-pinned'] = this.Pinned = !this.Pinned;
+ Doc.UserDoc().menuCollections_pinned = this.Pinned = !this.Pinned;
if (!this.Pinned && this._left < 0) {
this.jumpTo(300, 300);
}
@@ -280,8 +280,8 @@ export class CollectionViewBaseChrome extends React.Component<CollectionViewMenu
_saveFilterCommand = {
params: ['target'],
title: 'save filter',
- script: `this.target._childFilters = compareLists(this['target-childFilters'],this.target._childFilters) ? undefined : copyField(this['target-childFilters']);
- this.target._searchFilterDocs = compareLists(this['target-searchFilterDocs'],this.target._searchFilterDocs) ? undefined: copyField(this['target-searchFilterDocs']);`,
+ script: `this.target._childFilters = compareLists(this.target_childFilters,this.target._childFilters) ? undefined : copyField(this.target_childFilters);
+ this.target._searchFilterDocs = compareLists(this.target_searchFilterDocs,this.target._searchFilterDocs) ? undefined: copyField(this.target_searchFilterDocs);`,
immediate: undoBatch(() => {
this.target._childFilters = undefined;
this.target._searchFilterDocs = undefined;
@@ -289,8 +289,8 @@ export class CollectionViewBaseChrome extends React.Component<CollectionViewMenu
initialize: (button: Doc) => {
const activeDash = Doc.ActiveDashboard;
if (activeDash) {
- button['target-childFilters'] = (Doc.MySearcher._childFilters || activeDash._childFilters) instanceof ObjectField ? ObjectField.MakeCopy((Doc.MySearcher._childFilters || activeDash._childFilters) as any as ObjectField) : undefined;
- button['target-searchFilterDocs'] = activeDash._searchFilterDocs instanceof ObjectField ? ObjectField.MakeCopy(activeDash._searchFilterDocs as any as ObjectField) : undefined;
+ button.target_childFilters = (Doc.MySearcher._childFilters || activeDash._childFilters) instanceof ObjectField ? ObjectField.MakeCopy((Doc.MySearcher._childFilters || activeDash._childFilters) as any as ObjectField) : undefined;
+ button.target_searchFilterDocs = activeDash._searchFilterDocs instanceof ObjectField ? ObjectField.MakeCopy(activeDash._searchFilterDocs as any as ObjectField) : undefined;
}
},
};
diff --git a/src/client/views/collections/CollectionView.tsx b/src/client/views/collections/CollectionView.tsx
index a0d84ab28..d6cbe0dab 100644
--- a/src/client/views/collections/CollectionView.tsx
+++ b/src/client/views/collections/CollectionView.tsx
@@ -70,7 +70,7 @@ export class CollectionView extends ViewBoxAnnotatableComponent<CollectionViewPr
}
get collectionViewType(): CollectionViewType | undefined {
- const viewField = StrCast(this.layoutDoc._type_collection);
+ const viewField = StrCast(this.layoutDoc._type_collection) as any as CollectionViewType;
if (CollectionView._safeMode) {
switch (viewField) {
case CollectionViewType.Freeform:
@@ -79,7 +79,7 @@ export class CollectionView extends ViewBoxAnnotatableComponent<CollectionViewPr
default:
} // prettier-ignore
}
- return viewField as any as CollectionViewType;
+ return viewField;
}
screenToLocalTransform = () => (this._props.renderDepth ? this.ScreenToLocalBoxXf() : this.ScreenToLocalBoxXf().scale(this._props.PanelWidth() / this.bodyPanelWidth()));
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
index 986c1e357..c1a889539 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
@@ -1664,7 +1664,7 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection
doc.x = scr?.[0];
doc.y = scr?.[1];
});
- this._props.addDocTab(childDocs as any as Doc, OpenWhere.inParentFromScreen);
+ this._props.addDocTab(childDocs, OpenWhere.inParentFromScreen);
};
@undoBatch
diff --git a/src/client/views/linking/LinkMenuItem.tsx b/src/client/views/linking/LinkMenuItem.tsx
index 303ff4b98..278d30d6a 100644
--- a/src/client/views/linking/LinkMenuItem.tsx
+++ b/src/client/views/linking/LinkMenuItem.tsx
@@ -1,6 +1,5 @@
/* eslint-disable jsx-a11y/no-static-element-interactions */
/* eslint-disable jsx-a11y/click-events-have-key-events */
-import { IconProp } from '@fortawesome/fontawesome-svg-core';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { Tooltip } from '@mui/material';
import { action, computed, makeObservable, observable } from 'mobx';
@@ -156,7 +155,7 @@ export class LinkMenuItem extends ObservableReactComponent<LinkMenuItemProps> {
@observable _hover = false;
docView = () => this._props.docView;
render() {
- const destinationIcon = Doc.toIcon(this._props.destinationDoc) as any as IconProp;
+ const destinationIcon = Doc.toIcon(this._props.destinationDoc);
const title = StrCast(this._props.destinationDoc.title).length > 18 ? StrCast(this._props.destinationDoc.title).substr(0, 14) + '...' : this._props.destinationDoc.title;
diff --git a/src/client/views/nodes/CollectionFreeFormDocumentView.tsx b/src/client/views/nodes/CollectionFreeFormDocumentView.tsx
index 6a86af6a7..7b1847ae4 100644
--- a/src/client/views/nodes/CollectionFreeFormDocumentView.tsx
+++ b/src/client/views/nodes/CollectionFreeFormDocumentView.tsx
@@ -160,7 +160,7 @@ export class CollectionFreeFormDocumentView extends DocComponent<CollectionFreeF
const timecode = Math.round(time);
Object.keys(vals).forEach(val => {
const findexed = Cast(d[`${val}_indexed`], listSpec('string'), []).slice();
- findexed[timecode] = vals[val] as any as string;
+ findexed[timecode] = vals[val] || '';
d[`${val}_indexed`] = new List<string>(findexed);
});
}
@@ -169,7 +169,7 @@ export class CollectionFreeFormDocumentView extends DocComponent<CollectionFreeF
const timecode = Math.round(time);
Object.keys(vals).forEach(val => {
const findexed = Cast(d[`${val}_indexed`], listSpec('number'), []).slice();
- findexed[timecode] = vals[val] as any as number;
+ findexed[timecode] = vals[val] || 0;
d[`${val}_indexed`] = new List<number>(findexed);
});
}
diff --git a/src/client/views/nodes/ImageBox.tsx b/src/client/views/nodes/ImageBox.tsx
index db28d0a48..6d3d4be06 100644
--- a/src/client/views/nodes/ImageBox.tsx
+++ b/src/client/views/nodes/ImageBox.tsx
@@ -6,11 +6,10 @@ import { observer } from 'mobx-react';
import { extname } from 'path';
import * as React from 'react';
import { ClientUtils, DashColor, returnEmptyString, returnFalse, returnOne, returnZero, setupMoveUpEvents } from '../../../ClientUtils';
-import { Doc, Opt } from '../../../fields/Doc';
+import { Doc, DocListCast, Opt } from '../../../fields/Doc';
import { DocData } from '../../../fields/DocSymbols';
import { Id } from '../../../fields/FieldSymbols';
import { InkTool } from '../../../fields/InkField';
-import { List } from '../../../fields/List';
import { ObjectField } from '../../../fields/ObjectField';
import { Cast, ImageCast, NumCast, StrCast } from '../../../fields/Types';
import { ImageField } from '../../../fields/URLField';
@@ -341,7 +340,7 @@ export class ImageBox extends ViewBoxAnnotatableComponent<FieldViewProps>() impl
@computed get paths() {
const field = Cast(this.dataDoc[this.fieldKey], ImageField, null); // retrieve the primary image URL that is being rendered from the data doc
- const alts = this.dataDoc[this.fieldKey + '_alternates'] as any as List<Doc>; // retrieve alternate documents that may be rendered as alternate images
+ const alts = DocListCast(this.dataDoc[this.fieldKey + '_alternates']); // retrieve alternate documents that may be rendered as alternate images
const defaultUrl = new URL(ClientUtils.prepend('/assets/unknown-file-icon-hi.png'));
const altpaths =
alts
diff --git a/src/client/views/nodes/KeyValuePair.tsx b/src/client/views/nodes/KeyValuePair.tsx
index f96dd2b76..a9aa017a1 100644
--- a/src/client/views/nodes/KeyValuePair.tsx
+++ b/src/client/views/nodes/KeyValuePair.tsx
@@ -101,7 +101,7 @@ export class KeyValuePair extends ObservableReactComponent<KeyValuePairProps> {
</button>
<input className="keyValuePair-td-key-check" type="checkbox" style={hover} onChange={this.handleCheck} ref={this.checkbox} />
<Tooltip title={Object.entries(new DocumentOptions()).find((pair: [string, FInfo]) => pair[0].replace(/^_/, '') === this._props.keyName)?.[1].description ?? ''}>
- <div className="keyValuePair-keyField" style={{ marginLeft: 20 * (this._props.keyName.match(/_/g)?.length || 0), color: keyStyle }}>
+ <div className="keyValuePair-keyField" style={{ marginLeft: 20 * (this._props.keyName.replace(/__/g, '').match(/_/g)?.length || 0), color: keyStyle }}>
{'('.repeat(parenCount)}
{this._props.keyName}
{')'.repeat(parenCount)}
diff --git a/src/client/views/nodes/trails/PresBox.tsx b/src/client/views/nodes/trails/PresBox.tsx
index ed9635bdd..4fe7ec993 100644
--- a/src/client/views/nodes/trails/PresBox.tsx
+++ b/src/client/views/nodes/trails/PresBox.tsx
@@ -1607,7 +1607,7 @@ export class PresBox extends ViewBoxBaseComponent<FieldViewProps>() {
</div>
</Tooltip>
</div>
- {[DocumentType.AUDIO, DocumentType.VID].includes(targetType as any as DocumentType) ? null : (
+ {[DocumentType.AUDIO, DocumentType.VID].find(dt => dt === targetType) ? null : (
<>
<div className="ribbon-doubleButton">
<div className="presBox-subheading">Slide Duration</div>
diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts
index c9aaa5158..9083d6ca3 100644
--- a/src/fields/Doc.ts
+++ b/src/fields/Doc.ts
@@ -156,9 +156,9 @@ export const ReverseHierarchyMap: Map<string, { level: aclLevel; acl: symbol; im
export function updateCachedAcls(doc: Doc) {
if (doc) {
const target = (doc as any)?.__fieldTuples ?? doc;
- const permissions: { [key: string]: symbol } = !target.author || target.author === ClientUtils.CurrentUserEmail() ? { 'acl-Me': AclAdmin } : {};
+ const permissions: { [key: string]: symbol } = !target.author || target.author === ClientUtils.CurrentUserEmail() ? { acl_Me: AclAdmin } : {};
Object.keys(target).forEach(key => {
- key.startsWith('acl') && (permissions[key] = ReverseHierarchyMap.get(StrCast(target[key]))!.acl);
+ key.startsWith('acl_') && (permissions[key] = ReverseHierarchyMap.get(StrCast(target[key]))!.acl);
});
if (Object.keys(permissions).length || doc[DocAcl]?.length) {
runInAction(() => {
@@ -382,7 +382,7 @@ export class Doc extends RefField {
this[UpdatingFromServer] = true;
this[fKey] = value;
this[UpdatingFromServer] = false;
- if (fKey.startsWith('acl')) {
+ if (fKey.startsWith('acl_')) {
updateCachedAcls(this);
}
if (prev === AclPrivate && GetEffectiveAcl(this) !== AclPrivate) {
@@ -390,7 +390,7 @@ export class Doc extends RefField {
}
};
const writeMode = DocServer.getFieldWriteMode(fKey);
- if (fKey.startsWith('acl') || writeMode !== DocServer.WriteMode.Playground) {
+ if (fKey.startsWith('acl_') || writeMode !== DocServer.WriteMode.Playground) {
delete this[CachedUpdates][fKey];
// eslint-disable-next-line no-await-in-loop
await fn();
@@ -832,7 +832,7 @@ export namespace Doc {
newLayoutDoc.rootDocument = targetDoc;
newLayoutDoc.embedContainer = targetDoc;
newLayoutDoc.resolvedDataDoc = dataDoc;
- newLayoutDoc['acl-Guest'] = SharingPermissions.Edit;
+ newLayoutDoc.acl_Guest = SharingPermissions.Edit;
if (dataDoc[templateField] === undefined && (templateLayoutDoc[templateField] as any)?.length) {
dataDoc[templateField] = ObjectField.MakeCopy(templateLayoutDoc[templateField] as List<Doc>);
// ComputedField.MakeFunction(`ObjectField.MakeCopy(templateLayoutDoc["${templateField}"])`, { templateLayoutDoc: Doc.name }, { templateLayoutDoc });
@@ -970,7 +970,7 @@ export namespace Doc {
delegate.proto = doc;
delegate.author = ClientUtils.CurrentUserEmail();
Object.keys(doc)
- .filter(key => key.startsWith('acl'))
+ .filter(key => key.startsWith('acl_'))
.forEach(key => {
delegate[key] = doc[key];
});
diff --git a/src/fields/util.ts b/src/fields/util.ts
index 72b0ef721..9361430cb 100644
--- a/src/fields/util.ts
+++ b/src/fields/util.ts
@@ -107,7 +107,7 @@ const _setterImpl = action((target: any, prop: string | symbol | number, valueIn
if (value === undefined)
(target as Doc|ObjectField)[FieldChanged]?.(undefined, { $unset: { ['fields.' + prop]: '' } });
else (target as Doc|ObjectField)[FieldChanged]?.(undefined, { $set: { ['fields.' + prop]: value instanceof ObjectField ? SerializationHelper.Serialize(value) :value}});
- if (prop === 'author' || prop.toString().startsWith('acl')) updateCachedAcls(target);
+ if (prop === 'author' || prop.toString().startsWith('acl_')) updateCachedAcls(target);
} else {
DocServer.registerDocWithCachedUpdate(receiver, prop as string, curValue);
}
@@ -184,7 +184,7 @@ export function SetCachedGroups(groups: string[]) {
}
function getEffectiveAcl(target: any, user?: string): symbol {
const targetAcls = target[DocAcl];
- if (targetAcls?.['acl-Me'] === AclAdmin || GetCachedGroupByName('Admin')) return AclAdmin;
+ if (targetAcls?.acl_Me === AclAdmin || GetCachedGroupByName('Admin')) return AclAdmin;
const userChecked = user || ClientUtils.CurrentUserEmail(); // if the current user is the author of the document / the current user is a member of the admin group
if (targetAcls && Object.keys(targetAcls).length) {
@@ -210,7 +210,7 @@ function getEffectiveAcl(target: any, user?: string): symbol {
/**
* Recursively distributes the access right for a user across the children of a document and its annotations.
- * @param key the key storing the access right (e.g. acl-groupname)
+ * @param key the key storing the access right (e.g. acl_groupname)
* @param acl the access right being stored (e.g. "Can Edit")
* @param target the document on which this access right is being set
* @param visited list of Doc's already distributed to.
@@ -219,7 +219,7 @@ function getEffectiveAcl(target: any, user?: string): symbol {
*/
// eslint-disable-next-line default-param-last
export function distributeAcls(key: string, acl: SharingPermissions, target: Doc, visited: Doc[] = [], allowUpgrade?: boolean, layoutOnly = false) {
- const selfKey = `acl-${normalizeEmail(ClientUtils.CurrentUserEmail())}`;
+ const selfKey = `acl_${normalizeEmail(ClientUtils.CurrentUserEmail())}`;
if (!target || visited.includes(target) || key === selfKey) return;
visited.push(target);
@@ -268,15 +268,15 @@ export function distributeAcls(key: string, acl: SharingPermissions, target: Doc
* Copies parent's acl fields to the child
*/
export function inheritParentAcls(parent: Doc, child: Doc, layoutOnly: boolean) {
- [...Object.keys(parent), ...(ClientUtils.CurrentUserEmail() !== parent.author ? ['acl-Owner'] : [])]
- .filter(key => key.startsWith('acl'))
+ [...Object.keys(parent), ...(ClientUtils.CurrentUserEmail() !== parent.author ? ['acl_Owner'] : [])]
+ .filter(key => key.startsWith('acl_'))
.forEach(key => {
- // if the default acl mode is private, then don't inherit the acl-guest permission, but set it to private.
- // const permission: string = key === 'acl-guest' && Doc.defaultAclPrivate ? AclPrivate : parent[key];
- const parAcl = ReverseHierarchyMap.get(StrCast(key === 'acl-Owner' ? (Doc.defaultAclPrivate ? SharingPermissions.None : SharingPermissions.Edit) : parent[key]))?.acl;
+ // if the default acl mode is private, then don't inherit the acl_guest permission, but set it to private.
+ // const permission: string = key === 'acl_Guest' && Doc.defaultAclPrivate ? AclPrivate : parent[key];
+ const parAcl = ReverseHierarchyMap.get(StrCast(key === 'acl_Owner' ? (Doc.defaultAclPrivate ? SharingPermissions.None : SharingPermissions.Edit) : parent[key]))?.acl;
if (parAcl) {
const sharePermission = HierarchyMapping.get(parAcl)?.name;
- sharePermission && distributeAcls(key === 'acl-Owner' ? `acl-${normalizeEmail(StrCast(parent.author))}` : key, sharePermission, child, undefined, false, layoutOnly);
+ sharePermission && distributeAcls(key === 'acl_Owner' ? `acl_${normalizeEmail(StrCast(parent.author))}` : key, sharePermission, child, undefined, false, layoutOnly);
}
});
}
@@ -303,7 +303,7 @@ export function setter(target: any, inProp: string | symbol | number, value: any
const effectiveAcl = inProp === 'constructor' || typeof inProp === 'symbol' ? AclAdmin : GetPropAcl(target, prop);
if (effectiveAcl !== AclEdit && effectiveAcl !== AclAugment && effectiveAcl !== AclAdmin) return true;
// if you're trying to change an acl but don't have Admin access / you're trying to change it to something that isn't an acceptable acl, you can't
- if (typeof prop === 'string' && prop.startsWith('acl') && (effectiveAcl !== AclAdmin || ![...Object.values(SharingPermissions), undefined].includes(value))) return true;
+ if (typeof prop === 'string' && prop.startsWith('acl_') && (effectiveAcl !== AclAdmin || ![...Object.values(SharingPermissions), undefined].includes(value))) return true;
if (typeof prop === 'string' && prop !== '__id' && prop !== '__fieldTuples' && prop.startsWith('_')) {
if (!prop.startsWith('__')) prop = prop.substring(1);
diff --git a/src/server/authentication/DashUserModel.ts b/src/server/authentication/DashUserModel.ts
index a288bfeab..bfa6d7bdb 100644
--- a/src/server/authentication/DashUserModel.ts
+++ b/src/server/authentication/DashUserModel.ts
@@ -61,7 +61,7 @@ const userSchema = new mongoose.Schema(
* Password hash middleware.
*/
userSchema.pre('save', function save(next) {
- const user = this as any as DashUserModel;
+ const user = this;
if (!user.isModified('password')) {
return next();
}
@@ -70,7 +70,7 @@ userSchema.pre('save', function save(next) {
return next(err);
}
bcrypt.hash(
- user.password,
+ user.password ?? '',
salt,
() => {},
(cryptErr: mongoose.Error, hash: string) => {
diff --git a/src/server/authentication/Passport.ts b/src/server/authentication/Passport.ts
index a5222e531..ca9e3058e 100644
--- a/src/server/authentication/Passport.ts
+++ b/src/server/authentication/Passport.ts
@@ -18,11 +18,11 @@ passport.deserializeUser<any, any>((id, done) => {
passport.use(
new LocalStrategy({ usernameField: 'email', passReqToCallback: true }, (req, email, password, done) => {
User.findOne({ email: email.toLowerCase() })
- .then((user: any) => {
+ .then((user: DashUserModel) => {
if (!user) {
done(undefined, false, { message: 'Invalid email or password' }); // invalid email
} else {
- (user as any as DashUserModel).comparePassword(password, (error: Error, isMatch: boolean) => {
+ user.comparePassword(password, (error: Error, isMatch: boolean) => {
if (error) return done(error);
if (!isMatch) return done(undefined, false, { message: 'Invalid email or password' }); // invalid password
// valid authentication HERE