diff --git a/bun.lock b/bun.lock index 8dc6a3a..cb3cfac 100644 --- a/bun.lock +++ b/bun.lock @@ -145,6 +145,7 @@ "@types/node": "^20.17.23", "ts-node": "10.9.2", "typescript": "5.9.3", + "vitest": "^4.0.18", }, }, }, @@ -899,10 +900,14 @@ "@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="], + "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="], + "@types/chrome": ["@types/chrome@0.1.31", "", { "dependencies": { "@types/filesystem": "*", "@types/har-format": "*" } }, "sha512-8fC9t02LRdqlSQ9bktaiLjP0NKujPNPaCKPfXxfIjZ35A9u831XY0pt0UEf2oup2SjcUEAaIYOB8mzJ51jhjmA=="], "@types/debug": ["@types/debug@4.1.12", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="], + "@types/deep-eql": ["@types/deep-eql@4.0.2", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="], + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], "@types/filesystem": ["@types/filesystem@0.0.36", "", { "dependencies": { "@types/filewriter": "*" } }, "sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA=="], @@ -975,6 +980,20 @@ "@vercel/oidc": ["@vercel/oidc@3.2.0", "", {}, "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug=="], + "@vitest/expect": ["@vitest/expect@4.0.18", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.0.18", "@vitest/utils": "4.0.18", "chai": "^6.2.1", "tinyrainbow": "^3.0.3" } }, "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ=="], + + "@vitest/mocker": ["@vitest/mocker@4.0.18", "", { "dependencies": { "@vitest/spy": "4.0.18", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0-0" }, "optionalPeers": ["msw", "vite"] }, "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ=="], + + "@vitest/pretty-format": ["@vitest/pretty-format@4.0.18", "", { "dependencies": { "tinyrainbow": "^3.0.3" } }, "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw=="], + + "@vitest/runner": ["@vitest/runner@4.0.18", "", { "dependencies": { "@vitest/utils": "4.0.18", "pathe": "^2.0.3" } }, "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw=="], + + "@vitest/snapshot": ["@vitest/snapshot@4.0.18", "", { "dependencies": { "@vitest/pretty-format": "4.0.18", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA=="], + + "@vitest/spy": ["@vitest/spy@4.0.18", "", {}, "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw=="], + + "@vitest/utils": ["@vitest/utils@4.0.18", "", { "dependencies": { "@vitest/pretty-format": "4.0.18", "tinyrainbow": "^3.0.3" } }, "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA=="], + "@webext-core/fake-browser": ["@webext-core/fake-browser@1.3.4", "", { "dependencies": { "lodash.merge": "^4.6.2" } }, "sha512-nZcVWr3JpwpS5E6hKpbAwAMBM/AXZShnfW0F76udW8oLd6Kv0nbW6vFS07md4Na/0ntQonk3hFnlQYGYBAlTrA=="], "@webext-core/isolated-element": ["@webext-core/isolated-element@1.1.4", "", { "dependencies": { "is-potential-custom-element-name": "^1.0.1" } }, "sha512-JXF0F3b9JvSFmgrZ9fiaR1kiRZHXCSvwSctdahzIDmZXk2eq5H1Qev/Xk2wo3FxuwHPbdkcqDqvAowGZKLR9Ew=="], @@ -1035,6 +1054,8 @@ "asap": ["asap@2.0.6", "", {}, "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="], + "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], + "async": ["async@3.2.6", "", {}, "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="], "async-mutex": ["async-mutex@0.5.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA=="], @@ -1129,6 +1150,8 @@ "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], + "chai": ["chai@6.2.2", "", {}, "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg=="], + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], @@ -1369,6 +1392,8 @@ "execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="], + "expect-type": ["expect-type@1.3.0", "", {}, "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA=="], + "expo": ["expo@55.0.0-canary-20251230-fc48ddc", "", { "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "55.0.0-canary-20251230-fc48ddc", "@expo/config": "12.0.14-canary-20251230-fc48ddc", "@expo/config-plugins": "54.0.5-canary-20251230-fc48ddc", "@expo/devtools": "0.1.9-canary-20251230-fc48ddc", "@expo/fingerprint": "0.15.5-canary-20251230-fc48ddc", "@expo/local-build-cache-provider": "0.0.1-canary-20251230-fc48ddc", "@expo/log-box": "0.0.13-canary-20251230-fc48ddc", "@expo/metro": "~54.2.0", "@expo/metro-config": "54.1.0-canary-20251230-fc48ddc", "@expo/vector-icons": "^15.0.2", "@ungap/structured-clone": "^1.3.0", "babel-preset-expo": "54.1.0-canary-20251230-fc48ddc", "expo-asset": "12.0.13-canary-20251230-fc48ddc", "expo-constants": "18.1.0-canary-20251230-fc48ddc", "expo-file-system": "19.0.22-canary-20251230-fc48ddc", "expo-font": "14.1.0-canary-20251230-fc48ddc", "expo-keep-awake": "15.0.9-canary-20251230-fc48ddc", "expo-modules-autolinking": "3.1.0-canary-20251230-fc48ddc", "expo-modules-core": "4.0.0-canary-20251230-fc48ddc", "pretty-format": "^29.7.0", "react-refresh": "^0.14.2", "whatwg-url-without-unicode": "8.0.0-3" }, "peerDependencies": { "@expo/dom-webview": "0.2.9-canary-20251230-fc48ddc", "@expo/metro-runtime": "6.2.0-canary-20251230-fc48ddc", "react": "*", "react-native": "*", "react-native-webview": "*" }, "optionalPeers": ["@expo/dom-webview", "@expo/metro-runtime", "react-native-webview"], "bin": { "expo": "bin/cli", "fingerprint": "bin/fingerprint", "expo-modules-autolinking": "bin/autolinking" } }, "sha512-NPj83TmylfKtcb47CetlJuTWB9bsHEYS6z8dFG0HjwsZJo9xg4LYMLGf0HRImK0TwFmohKkXQHdZ0DM6D3Q1+w=="], "expo-application": ["expo-application@7.0.9-canary-20251230-fc48ddc", "", { "peerDependencies": { "expo": "55.0.0-canary-20251230-fc48ddc" } }, "sha512-QMv5XMHgTV2uq3oNfXGOVaBDEwRzpVkwGALu7WkE9NmJsFgFAnLS5+EXV0gY52AJDL3IYFX2vi8WdW4uWS7PMA=="], @@ -2011,6 +2036,8 @@ "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], + "obug": ["obug@2.1.1", "", {}, "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="], + "ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], "ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="], @@ -2071,13 +2098,13 @@ "path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], - "pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], "perfect-debounce": ["perfect-debounce@2.1.0", "", {}, "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g=="], "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], "pidtree": ["pidtree@0.6.0", "", { "bin": { "pidtree": "bin/pidtree.js" } }, "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g=="], @@ -2311,6 +2338,8 @@ "shellwords": ["shellwords@0.1.1", "", {}, "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww=="], + "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="], + "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], "simple-plist": ["simple-plist@1.3.1", "", { "dependencies": { "bplist-creator": "0.1.0", "bplist-parser": "0.3.1", "plist": "^3.0.5" } }, "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw=="], @@ -2345,6 +2374,8 @@ "stack-utils": ["stack-utils@2.0.6", "", { "dependencies": { "escape-string-regexp": "^2.0.0" } }, "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ=="], + "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="], + "stackframe": ["stackframe@1.3.4", "", {}, "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="], "stacktrace-parser": ["stacktrace-parser@0.1.11", "", { "dependencies": { "type-fest": "^0.7.1" } }, "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg=="], @@ -2353,6 +2384,8 @@ "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], + "std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="], + "stdin-discarder": ["stdin-discarder@0.2.2", "", {}, "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ=="], "stream-buffers": ["stream-buffers@2.2.0", "", {}, "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg=="], @@ -2423,10 +2456,14 @@ "through": ["through@2.3.8", "", {}, "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="], + "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="], + "tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], + "tinyrainbow": ["tinyrainbow@3.0.3", "", {}, "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q=="], + "tmp": ["tmp@0.2.5", "", {}, "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow=="], "tmpl": ["tmpl@1.0.5", "", {}, "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw=="], @@ -2537,6 +2574,8 @@ "vite-node": ["vite-node@3.2.4", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.4.1", "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg=="], + "vitest": ["vitest@4.0.18", "", { "dependencies": { "@vitest/expect": "4.0.18", "@vitest/mocker": "4.0.18", "@vitest/pretty-format": "4.0.18", "@vitest/runner": "4.0.18", "@vitest/snapshot": "4.0.18", "@vitest/spy": "4.0.18", "@vitest/utils": "4.0.18", "es-module-lexer": "^1.7.0", "expect-type": "^1.2.2", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^3.10.0", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.0.3", "vite": "^6.0.0 || ^7.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.0.18", "@vitest/browser-preview": "4.0.18", "@vitest/browser-webdriverio": "4.0.18", "@vitest/ui": "4.0.18", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ=="], + "vlq": ["vlq@1.0.1", "", {}, "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w=="], "walker": ["walker@1.0.8", "", { "dependencies": { "makeerror": "1.0.12" } }, "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ=="], @@ -2565,6 +2604,8 @@ "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], + "widest-line": ["widest-line@5.0.0", "", { "dependencies": { "string-width": "^7.0.0" } }, "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA=="], "winreg": ["winreg@0.0.12", "", {}, "sha512-typ/+JRmi7RqP1NanzFULK36vczznSNN8kWVA9vIqXyv8GhghUlwhGp1Xj3Nms1FsPcNnsQrJOR10N58/nQ9hQ=="], @@ -2625,6 +2666,8 @@ "@aklinker1/rollup-plugin-visualizer/open": ["open@8.4.2", "", { "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", "is-wsl": "^2.2.0" } }, "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="], + "@aklinker1/rollup-plugin-visualizer/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "@aklinker1/rollup-plugin-visualizer/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], "@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], @@ -2855,6 +2898,8 @@ "ansi-align/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "babel-plugin-polyfill-corejs2/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], "babel-plugin-syntax-hermes-parser/hermes-parser": ["hermes-parser@0.29.1", "", { "dependencies": { "hermes-estree": "0.29.1" } }, "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA=="], @@ -2875,6 +2920,8 @@ "c12/ohash": ["ohash@1.1.6", "", {}, "sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg=="], + "c12/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], + "c12/perfect-debounce": ["perfect-debounce@1.0.0", "", {}, "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="], "chrome-launcher/is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], @@ -2949,8 +2996,6 @@ "fx-runner/which": ["which@1.2.4", "", { "dependencies": { "is-absolute": "^0.1.7", "isexe": "^1.1.1" }, "bin": { "which": "./bin/which" } }, "sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA=="], - "giget/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "glob/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="], "global-directory/ini": ["ini@4.1.1", "", {}, "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g=="], @@ -2977,6 +3022,8 @@ "jest-util/ci-info": ["ci-info@3.9.0", "", {}, "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ=="], + "jest-util/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "jest-validate/camelcase": ["camelcase@6.3.0", "", {}, "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="], "jest-worker/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], @@ -3039,7 +3086,7 @@ "micromark/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], - "mlly/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], "mobile/react": ["react@19.2.4", "", {}, "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ=="], @@ -3061,8 +3108,6 @@ "nypm/citty": ["citty@0.2.1", "", {}, "sha512-kEV95lFBhQgtogAPlQfJJ0WGVSokvLr/UEoFPiKKOXF7pl98HfUVUD0ejsuTCld/9xH9vogSywZ5KqHzXrZpqg=="], - "nypm/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "ora/chalk": ["chalk@5.3.0", "", {}, "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w=="], "p-queue/eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="], @@ -3075,8 +3120,6 @@ "path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - "pkg-types/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "plist/@xmldom/xmldom": ["@xmldom/xmldom@0.8.11", "", {}, "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw=="], "plist/xmlbuilder": ["xmlbuilder@15.1.1", "", {}, "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg=="], @@ -3163,36 +3206,20 @@ "test-exclude/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], - "tinyglobby/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], - "unimport/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], - "unimport/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - - "unimport/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], - "unimport/pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], - "unplugin/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], - - "unplugin-utils/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - - "unplugin-utils/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], - "update-notifier/chalk": ["chalk@5.3.0", "", {}, "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w=="], "update-notifier/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], "vite/esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], - "vite/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], - "vite/postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="], "vite-node/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], - "vite-node/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "web-ext-run/@babel/runtime": ["@babel/runtime@7.28.2", "", {}, "sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA=="], "whatwg-url/webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], @@ -3357,6 +3384,8 @@ "@istanbuljs/load-nyc-config/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + "@jest/transform/micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "@react-native/babel-plugin-codegen/@react-native/codegen/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], "@react-native/babel-plugin-codegen/@react-native/codegen/hermes-parser": ["hermes-parser@0.29.1", "", { "dependencies": { "hermes-estree": "0.29.1" } }, "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA=="], @@ -3453,6 +3482,8 @@ "expo/babel-preset-expo/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + "fast-glob/micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "finalhandler/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], "firefox-profile/xml2js/xmlbuilder": ["xmlbuilder@11.0.1", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="], @@ -3467,12 +3498,14 @@ "ioredis/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + "jest-haste-map/micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "jest-message-util/micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "lighthouse-logger/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], "local-pkg/pkg-types/confbox": ["confbox@0.2.4", "", {}, "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ=="], - "local-pkg/pkg-types/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "log-update/slice-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], "log-update/slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@5.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="], @@ -3481,6 +3514,8 @@ "metro-file-map/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + "metro-file-map/micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "metro-symbolicate/metro-source-map/ob1": ["ob1@0.83.3", "", { "dependencies": { "flow-enums-runtime": "^0.0.6" } }, "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA=="], "metro-transform-worker/metro-source-map/ob1": ["ob1@0.83.3", "", { "dependencies": { "flow-enums-runtime": "^0.0.6" } }, "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA=="], @@ -3513,6 +3548,8 @@ "tailwindcss/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + "tailwindcss/micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "terminal-link/ansi-escapes/type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], "test-exclude/minimatch/brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], @@ -3581,8 +3618,6 @@ "wxt/c12/jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], - "wxt/c12/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "wxt/c12/pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], "yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], @@ -3595,6 +3630,8 @@ "@calcom/slack/lint-staged/listr2/cli-truncate": ["cli-truncate@5.2.0", "", { "dependencies": { "slice-ansi": "^8.0.0", "string-width": "^8.2.0" } }, "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw=="], + "@calcom/slack/lint-staged/micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "@eslint/config-array/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], "@eslint/eslintrc/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], @@ -3697,6 +3734,8 @@ "rimraf/glob/minimatch/brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], + "tailwindcss/chokidar/readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "test-exclude/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], "wxt/c12/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], @@ -3729,6 +3768,8 @@ "@react-native/codegen/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "@react-native/community-cli-plugin/metro/metro-file-map/micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "@react-native/dev-middleware/chrome-launcher/lighthouse-logger/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], "c12/giget/tar/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], diff --git a/packages/cli/package.json b/packages/cli/package.json index 5ee70a8..c2155a6 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -29,7 +29,9 @@ "type-check:ci": "yarn generate && tsc --noEmit", "lint": "biome lint .", "lint:fix": "biome lint --write .", - "prepack": "yarn build" + "prepack": "yarn build", + "test": "vitest run", + "test:update": "vitest run --update" }, "dependencies": { "@hey-api/client-fetch": "^0.6.0", @@ -41,6 +43,7 @@ "@hey-api/openapi-ts": "^0.61.0", "@types/node": "^20.17.23", "ts-node": "10.9.2", - "typescript": "5.9.3" + "typescript": "5.9.3", + "vitest": "^4.0.18" } } diff --git a/packages/cli/src/__tests__/__snapshots__/sdk-cli-coverage-audit.test.ts.snap b/packages/cli/src/__tests__/__snapshots__/sdk-cli-coverage-audit.test.ts.snap new file mode 100644 index 0000000..e084827 --- /dev/null +++ b/packages/cli/src/__tests__/__snapshots__/sdk-cli-coverage-audit.test.ts.snap @@ -0,0 +1,888 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`SDK ↔ CLI Coverage Audit > should match the snapshot of CLI-imported SDK functions 1`] = ` +[ + "apiKeysControllerRefresh", + "bookingAttendeesController20240813AddAttendee", + "bookingAttendeesController20240813GetBookingAttendee", + "bookingAttendeesController20240813GetBookingAttendees", + "bookingGuestsController20240813AddGuests", + "bookingLocationController20240813UpdateBookingLocation", + "bookingsController20240813CancelBooking", + "bookingsController20240813ConfirmBooking", + "bookingsController20240813CreateBooking", + "bookingsController20240813DeclineBooking", + "bookingsController20240813GetBooking", + "bookingsController20240813GetBookingBySeatUid", + "bookingsController20240813GetBookingRecordings", + "bookingsController20240813GetBookingReferences", + "bookingsController20240813GetBookingTranscripts", + "bookingsController20240813GetBookings", + "bookingsController20240813GetCalendarLinks", + "bookingsController20240813GetVideoSessions", + "bookingsController20240813MarkNoShow", + "bookingsController20240813ReassignBooking", + "bookingsController20240813ReassignBookingToUser", + "bookingsController20240813RescheduleBooking", + "calendarsControllerCheck", + "calendarsControllerCheckIcsFeed", + "calendarsControllerCreateIcsFeed", + "calendarsControllerDeleteCalendarCredentials", + "calendarsControllerGetBusyTimes", + "calendarsControllerGetCalendars", + "calendarsControllerRedirect", + "calendarsControllerSave", + "calendarsControllerSyncCredentials", + "client", + "conferencingControllerDefault", + "conferencingControllerDisconnect", + "conferencingControllerGetDefault", + "conferencingControllerListInstalledConferencingApps", + "destinationCalendarsControllerUpdateDestinationCalendars", + "eventTypeWebhooksControllerCreateEventTypeWebhook", + "eventTypeWebhooksControllerDeleteAllEventTypeWebhooks", + "eventTypeWebhooksControllerDeleteEventTypeWebhook", + "eventTypeWebhooksControllerGetEventTypeWebhook", + "eventTypeWebhooksControllerGetEventTypeWebhooks", + "eventTypeWebhooksControllerUpdateEventTypeWebhook", + "eventTypesController20240614CreateEventType", + "eventTypesController20240614DeleteEventType", + "eventTypesController20240614GetEventTypeById", + "eventTypesController20240614GetEventTypes", + "eventTypesController20240614UpdateEventType", + "eventTypesPrivateLinksControllerCreatePrivateLink", + "eventTypesPrivateLinksControllerDeletePrivateLink", + "eventTypesPrivateLinksControllerGetPrivateLinks", + "eventTypesPrivateLinksControllerUpdatePrivateLink", + "meControllerGetMe", + "meControllerUpdateMe", + "oAuth2ControllerGetClient", + "oAuth2ControllerToken", + "orgTeamsVerifiedResourcesControllerGetVerifiedEmailById", + "orgTeamsVerifiedResourcesControllerGetVerifiedEmails", + "orgTeamsVerifiedResourcesControllerGetVerifiedPhoneById", + "orgTeamsVerifiedResourcesControllerGetVerifiedPhoneNumbers", + "organizationTeamWorkflowsControllerCreateEventTypeWorkflow", + "organizationTeamWorkflowsControllerCreateFormWorkflow", + "organizationTeamWorkflowsControllerDeleteRoutingFormWorkflow", + "organizationTeamWorkflowsControllerDeleteWorkflow", + "organizationTeamWorkflowsControllerGetRoutingFormWorkflowById", + "organizationTeamWorkflowsControllerGetRoutingFormWorkflows", + "organizationTeamWorkflowsControllerGetWorkflowById", + "organizationTeamWorkflowsControllerGetWorkflows", + "organizationTeamWorkflowsControllerUpdateRoutingFormWorkflow", + "organizationTeamWorkflowsControllerUpdateWorkflow", + "organizationsAttributesControllerCreateOrganizationAttribute", + "organizationsAttributesControllerDeleteOrganizationAttribute", + "organizationsAttributesControllerGetOrganizationAttribute", + "organizationsAttributesControllerGetOrganizationAttributes", + "organizationsAttributesControllerUpdateOrganizationAttribute", + "organizationsAttributesOptionsControllerAssignOrganizationAttributeOptionToUser", + "organizationsAttributesOptionsControllerCreateOrganizationAttributeOption", + "organizationsAttributesOptionsControllerDeleteOrganizationAttributeOption", + "organizationsAttributesOptionsControllerGetOrganizationAttributeAssignedOptions", + "organizationsAttributesOptionsControllerGetOrganizationAttributeAssignedOptionsBySlug", + "organizationsAttributesOptionsControllerGetOrganizationAttributeOptions", + "organizationsAttributesOptionsControllerGetOrganizationAttributeOptionsForUser", + "organizationsAttributesOptionsControllerUnassignOrganizationAttributeOptionFromUser", + "organizationsAttributesOptionsControllerUpdateOrganizationAttributeOption", + "organizationsBookingsControllerGetAllOrgTeamBookings", + "organizationsConferencingControllerConnectTeamApp", + "organizationsConferencingControllerDisconnectTeamApp", + "organizationsConferencingControllerGetTeamOAuthUrl", + "organizationsConferencingControllerListTeamConferencingApps", + "organizationsConferencingControllerSetTeamDefaultApp", + "organizationsDelegationCredentialControllerCreateDelegationCredential", + "organizationsDelegationCredentialControllerUpdateDelegationCredential", + "organizationsEventTypesControllerGetTeamsEventTypes", + "organizationsEventTypesPrivateLinksControllerCreatePrivateLink", + "organizationsEventTypesPrivateLinksControllerDeletePrivateLink", + "organizationsEventTypesPrivateLinksControllerGetPrivateLinks", + "organizationsEventTypesPrivateLinksControllerUpdatePrivateLink", + "organizationsMembershipsControllerCreateMembership", + "organizationsMembershipsControllerDeleteMembership", + "organizationsMembershipsControllerGetAllMemberships", + "organizationsMembershipsControllerGetOrgMembership", + "organizationsMembershipsControllerUpdateMembership", + "organizationsOrganizationsControllerCreateOrganization", + "organizationsOrganizationsControllerDeleteOrganization", + "organizationsOrganizationsControllerGetOrganization", + "organizationsOrganizationsControllerGetOrganizations", + "organizationsOrganizationsControllerUpdateOrganization", + "organizationsRolesControllerCreateRole", + "organizationsRolesControllerDeleteRole", + "organizationsRolesControllerGetAllRoles", + "organizationsRolesControllerGetRole", + "organizationsRolesControllerUpdateRole", + "organizationsRolesPermissionsControllerAddPermissions", + "organizationsRolesPermissionsControllerListPermissions", + "organizationsRolesPermissionsControllerRemovePermissions", + "organizationsRolesPermissionsControllerSetPermissions", + "organizationsRoutingFormsControllerGetOrganizationRoutingForms", + "organizationsRoutingFormsResponsesControllerCreateRoutingFormResponse", + "organizationsRoutingFormsResponsesControllerGetRoutingFormResponses", + "organizationsRoutingFormsResponsesControllerUpdateRoutingFormResponse", + "organizationsSchedulesControllerCreateUserSchedule", + "organizationsSchedulesControllerDeleteUserSchedule", + "organizationsSchedulesControllerGetOrganizationSchedules", + "organizationsSchedulesControllerGetUserSchedule", + "organizationsSchedulesControllerGetUserSchedules", + "organizationsSchedulesControllerUpdateUserSchedule", + "organizationsStripeControllerCheckTeamStripeConnection", + "organizationsStripeControllerGetTeamStripeConnectUrl", + "organizationsStripeControllerSave", + "organizationsTeamsBookingsControllerGetBookingReferences", + "organizationsTeamsControllerGetMyTeams", + "organizationsTeamsRolesControllerCreateRole", + "organizationsTeamsRolesControllerDeleteRole", + "organizationsTeamsRolesControllerGetAllRoles", + "organizationsTeamsRolesControllerGetRole", + "organizationsTeamsRolesControllerUpdateRole", + "organizationsTeamsRolesPermissionsControllerAddPermissions", + "organizationsTeamsRolesPermissionsControllerListPermissions", + "organizationsTeamsRolesPermissionsControllerRemovePermissions", + "organizationsTeamsRolesPermissionsControllerSetPermissions", + "organizationsTeamsRoutingFormsControllerGetTeamRoutingForms", + "organizationsTeamsRoutingFormsResponsesControllerCreateRoutingFormResponse", + "organizationsTeamsRoutingFormsResponsesControllerGetRoutingFormResponses", + "organizationsTeamsRoutingFormsResponsesControllerUpdateRoutingFormResponse", + "organizationsTeamsSchedulesControllerGetTeamSchedules", + "organizationsTeamsSchedulesControllerGetUserSchedules", + "organizationsUsersBookingsControllerGetOrganizationUserBookings", + "organizationsUsersControllerCreateOrganizationUser", + "organizationsUsersControllerDeleteOrganizationUser", + "organizationsUsersControllerGetOrganizationsUsers", + "organizationsUsersControllerUpdateOrganizationUser", + "organizationsUsersOooControllerCreateOrganizationUserOoo", + "organizationsUsersOooControllerDeleteOrganizationUserOoo", + "organizationsUsersOooControllerGetOrganizationUserOoo", + "organizationsUsersOooControllerGetOrganizationUsersOoo", + "organizationsUsersOooControllerUpdateOrganizationUserOoo", + "organizationsWebhooksControllerCreateOrganizationWebhook", + "organizationsWebhooksControllerDeleteWebhook", + "organizationsWebhooksControllerGetAllOrganizationWebhooks", + "organizationsWebhooksControllerGetOrganizationWebhook", + "organizationsWebhooksControllerUpdateOrgWebhook", + "routingFormsControllerCalculateSlotsBasedOnRoutingFormResponse", + "schedulesController20240611CreateSchedule", + "schedulesController20240611DeleteSchedule", + "schedulesController20240611GetDefaultSchedule", + "schedulesController20240611GetSchedule", + "schedulesController20240611GetSchedules", + "schedulesController20240611UpdateSchedule", + "selectedCalendarsControllerAddSelectedCalendar", + "selectedCalendarsControllerDeleteSelectedCalendar", + "slotsController20240904DeleteReservedSlot", + "slotsController20240904GetAvailableSlots", + "slotsController20240904GetReservedSlot", + "slotsController20240904ReserveSlot", + "slotsController20240904UpdateReservedSlot", + "stripeControllerCheck", + "stripeControllerRedirect", + "stripeControllerSave", + "teamsBookingsControllerGetAllTeamBookings", + "teamsControllerCreateTeam", + "teamsControllerDeleteTeam", + "teamsControllerGetTeam", + "teamsControllerGetTeams", + "teamsControllerUpdateTeam", + "teamsEventTypesControllerCreateTeamEventType", + "teamsEventTypesControllerDeleteTeamEventType", + "teamsEventTypesControllerGetTeamEventType", + "teamsEventTypesControllerGetTeamEventTypes", + "teamsEventTypesControllerUpdateTeamEventType", + "teamsEventTypesWebhooksControllerCreateTeamEventTypeWebhook", + "teamsEventTypesWebhooksControllerDeleteAllTeamEventTypeWebhooks", + "teamsEventTypesWebhooksControllerDeleteTeamEventTypeWebhook", + "teamsEventTypesWebhooksControllerGetTeamEventTypeWebhook", + "teamsEventTypesWebhooksControllerGetTeamEventTypeWebhooks", + "teamsEventTypesWebhooksControllerUpdateTeamEventTypeWebhook", + "teamsInviteControllerCreateInvite", + "teamsMembershipsControllerCreateTeamMembership", + "teamsMembershipsControllerDeleteTeamMembership", + "teamsMembershipsControllerGetTeamMembership", + "teamsMembershipsControllerGetTeamMemberships", + "teamsMembershipsControllerUpdateTeamMembership", + "teamsVerifiedResourcesControllerGetVerifiedEmailById", + "teamsVerifiedResourcesControllerGetVerifiedEmails", + "teamsVerifiedResourcesControllerGetVerifiedPhoneById", + "teamsVerifiedResourcesControllerGetVerifiedPhoneNumbers", + "userVerifiedResourcesControllerGetVerifiedEmailById", + "userVerifiedResourcesControllerGetVerifiedEmails", + "userVerifiedResourcesControllerGetVerifiedPhoneById", + "userVerifiedResourcesControllerGetVerifiedPhoneNumbers", + "webhooksControllerCreateWebhook", + "webhooksControllerDeleteWebhook", + "webhooksControllerGetWebhook", + "webhooksControllerGetWebhooks", + "webhooksControllerUpdateWebhook", +] +`; + +exports[`SDK ↔ CLI Coverage Audit > should match the snapshot of SDK imports by file 1`] = ` +{ + "commands/agenda/command.ts": [ + "bookingsController20240813GetBookings", + ], + "commands/api-keys/command.ts": [ + "apiKeysControllerRefresh", + ], + "commands/bookings/command.ts": [ + "bookingAttendeesController20240813AddAttendee", + "bookingAttendeesController20240813GetBookingAttendee", + "bookingAttendeesController20240813GetBookingAttendees", + "bookingGuestsController20240813AddGuests", + "bookingLocationController20240813UpdateBookingLocation", + "bookingsController20240813CancelBooking", + "bookingsController20240813ConfirmBooking", + "bookingsController20240813CreateBooking", + "bookingsController20240813DeclineBooking", + "bookingsController20240813GetBooking", + "bookingsController20240813GetBookingBySeatUid", + "bookingsController20240813GetBookingRecordings", + "bookingsController20240813GetBookingReferences", + "bookingsController20240813GetBookingTranscripts", + "bookingsController20240813GetBookings", + "bookingsController20240813GetCalendarLinks", + "bookingsController20240813GetVideoSessions", + "bookingsController20240813MarkNoShow", + "bookingsController20240813ReassignBooking", + "bookingsController20240813ReassignBookingToUser", + "bookingsController20240813RescheduleBooking", + ], + "commands/calendars/command.ts": [ + "calendarsControllerCheck", + "calendarsControllerCheckIcsFeed", + "calendarsControllerCreateIcsFeed", + "calendarsControllerDeleteCalendarCredentials", + "calendarsControllerGetBusyTimes", + "calendarsControllerGetCalendars", + "calendarsControllerRedirect", + "calendarsControllerSave", + "calendarsControllerSyncCredentials", + ], + "commands/conferencing/command.ts": [ + "conferencingControllerDefault", + "conferencingControllerDisconnect", + "conferencingControllerGetDefault", + "conferencingControllerListInstalledConferencingApps", + ], + "commands/delegation-credentials/command.ts": [ + "organizationsDelegationCredentialControllerCreateDelegationCredential", + "organizationsDelegationCredentialControllerUpdateDelegationCredential", + ], + "commands/destination-calendars/command.ts": [ + "calendarsControllerGetCalendars", + "destinationCalendarsControllerUpdateDestinationCalendars", + ], + "commands/event-type-webhooks/command.ts": [ + "eventTypeWebhooksControllerCreateEventTypeWebhook", + "eventTypeWebhooksControllerDeleteAllEventTypeWebhooks", + "eventTypeWebhooksControllerDeleteEventTypeWebhook", + "eventTypeWebhooksControllerGetEventTypeWebhook", + "eventTypeWebhooksControllerGetEventTypeWebhooks", + "eventTypeWebhooksControllerUpdateEventTypeWebhook", + ], + "commands/event-types/command.ts": [ + "eventTypesController20240614CreateEventType", + "eventTypesController20240614DeleteEventType", + "eventTypesController20240614GetEventTypeById", + "eventTypesController20240614GetEventTypes", + "eventTypesController20240614UpdateEventType", + ], + "commands/managed-orgs/command.ts": [ + "organizationsOrganizationsControllerCreateOrganization", + "organizationsOrganizationsControllerDeleteOrganization", + "organizationsOrganizationsControllerGetOrganization", + "organizationsOrganizationsControllerGetOrganizations", + "organizationsOrganizationsControllerUpdateOrganization", + ], + "commands/me/command.ts": [ + "meControllerGetMe", + "meControllerUpdateMe", + ], + "commands/oauth/command.ts": [ + "oAuth2ControllerGetClient", + "oAuth2ControllerToken", + ], + "commands/ooo/command.ts": [ + "meControllerGetMe", + "organizationsUsersOooControllerCreateOrganizationUserOoo", + "organizationsUsersOooControllerDeleteOrganizationUserOoo", + "organizationsUsersOooControllerGetOrganizationUserOoo", + "organizationsUsersOooControllerUpdateOrganizationUserOoo", + ], + "commands/org-attributes/command.ts": [ + "organizationsAttributesControllerCreateOrganizationAttribute", + "organizationsAttributesControllerDeleteOrganizationAttribute", + "organizationsAttributesControllerGetOrganizationAttribute", + "organizationsAttributesControllerGetOrganizationAttributes", + "organizationsAttributesControllerUpdateOrganizationAttribute", + "organizationsAttributesOptionsControllerAssignOrganizationAttributeOptionToUser", + "organizationsAttributesOptionsControllerCreateOrganizationAttributeOption", + "organizationsAttributesOptionsControllerDeleteOrganizationAttributeOption", + "organizationsAttributesOptionsControllerGetOrganizationAttributeAssignedOptions", + "organizationsAttributesOptionsControllerGetOrganizationAttributeAssignedOptionsBySlug", + "organizationsAttributesOptionsControllerGetOrganizationAttributeOptions", + "organizationsAttributesOptionsControllerGetOrganizationAttributeOptionsForUser", + "organizationsAttributesOptionsControllerUnassignOrganizationAttributeOptionFromUser", + "organizationsAttributesOptionsControllerUpdateOrganizationAttributeOption", + ], + "commands/org-bookings/command.ts": [ + "organizationsBookingsControllerGetAllOrgTeamBookings", + "organizationsUsersBookingsControllerGetOrganizationUserBookings", + ], + "commands/org-memberships/command.ts": [ + "organizationsMembershipsControllerCreateMembership", + "organizationsMembershipsControllerDeleteMembership", + "organizationsMembershipsControllerGetAllMemberships", + "organizationsMembershipsControllerGetOrgMembership", + "organizationsMembershipsControllerUpdateMembership", + ], + "commands/org-overview/command.ts": [ + "organizationsSchedulesControllerGetOrganizationSchedules", + "organizationsUsersOooControllerGetOrganizationUsersOoo", + ], + "commands/org-roles/command.ts": [ + "organizationsRolesControllerCreateRole", + "organizationsRolesControllerDeleteRole", + "organizationsRolesControllerGetAllRoles", + "organizationsRolesControllerGetRole", + "organizationsRolesControllerUpdateRole", + "organizationsRolesPermissionsControllerAddPermissions", + "organizationsRolesPermissionsControllerListPermissions", + "organizationsRolesPermissionsControllerRemovePermissions", + "organizationsRolesPermissionsControllerSetPermissions", + ], + "commands/org-routing-forms/command.ts": [ + "organizationsRoutingFormsControllerGetOrganizationRoutingForms", + "organizationsRoutingFormsResponsesControllerCreateRoutingFormResponse", + "organizationsRoutingFormsResponsesControllerGetRoutingFormResponses", + "organizationsRoutingFormsResponsesControllerUpdateRoutingFormResponse", + ], + "commands/org-team-verified-resources/command.ts": [ + "orgTeamsVerifiedResourcesControllerGetVerifiedEmailById", + "orgTeamsVerifiedResourcesControllerGetVerifiedEmails", + "orgTeamsVerifiedResourcesControllerGetVerifiedPhoneById", + "orgTeamsVerifiedResourcesControllerGetVerifiedPhoneNumbers", + ], + "commands/org-user-ooo/command.ts": [ + "organizationsUsersOooControllerCreateOrganizationUserOoo", + "organizationsUsersOooControllerDeleteOrganizationUserOoo", + "organizationsUsersOooControllerGetOrganizationUserOoo", + "organizationsUsersOooControllerGetOrganizationUsersOoo", + "organizationsUsersOooControllerUpdateOrganizationUserOoo", + ], + "commands/org-user-schedules/command.ts": [ + "organizationsSchedulesControllerCreateUserSchedule", + "organizationsSchedulesControllerDeleteUserSchedule", + "organizationsSchedulesControllerGetUserSchedule", + "organizationsSchedulesControllerGetUserSchedules", + "organizationsSchedulesControllerUpdateUserSchedule", + ], + "commands/org-users/command.ts": [ + "organizationsUsersControllerCreateOrganizationUser", + "organizationsUsersControllerDeleteOrganizationUser", + "organizationsUsersControllerGetOrganizationsUsers", + "organizationsUsersControllerUpdateOrganizationUser", + ], + "commands/org-webhooks/command.ts": [ + "organizationsWebhooksControllerCreateOrganizationWebhook", + "organizationsWebhooksControllerDeleteWebhook", + "organizationsWebhooksControllerGetAllOrganizationWebhooks", + "organizationsWebhooksControllerGetOrganizationWebhook", + "organizationsWebhooksControllerUpdateOrgWebhook", + ], + "commands/private-links/command.ts": [ + "eventTypesPrivateLinksControllerCreatePrivateLink", + "eventTypesPrivateLinksControllerDeletePrivateLink", + "eventTypesPrivateLinksControllerGetPrivateLinks", + "eventTypesPrivateLinksControllerUpdatePrivateLink", + ], + "commands/routing-forms/command.ts": [ + "routingFormsControllerCalculateSlotsBasedOnRoutingFormResponse", + ], + "commands/schedules/command.ts": [ + "schedulesController20240611CreateSchedule", + "schedulesController20240611DeleteSchedule", + "schedulesController20240611GetDefaultSchedule", + "schedulesController20240611GetSchedule", + "schedulesController20240611GetSchedules", + "schedulesController20240611UpdateSchedule", + ], + "commands/selected-calendars/command.ts": [ + "selectedCalendarsControllerAddSelectedCalendar", + "selectedCalendarsControllerDeleteSelectedCalendar", + ], + "commands/slots/command.ts": [ + "slotsController20240904DeleteReservedSlot", + "slotsController20240904GetAvailableSlots", + "slotsController20240904GetReservedSlot", + "slotsController20240904ReserveSlot", + "slotsController20240904UpdateReservedSlot", + ], + "commands/stripe/command.ts": [ + "stripeControllerCheck", + "stripeControllerRedirect", + "stripeControllerSave", + ], + "commands/team-conferencing/command.ts": [ + "organizationsConferencingControllerConnectTeamApp", + "organizationsConferencingControllerDisconnectTeamApp", + "organizationsConferencingControllerGetTeamOAuthUrl", + "organizationsConferencingControllerListTeamConferencingApps", + "organizationsConferencingControllerSetTeamDefaultApp", + ], + "commands/team-event-type-private-links/command.ts": [ + "organizationsEventTypesPrivateLinksControllerCreatePrivateLink", + "organizationsEventTypesPrivateLinksControllerDeletePrivateLink", + "organizationsEventTypesPrivateLinksControllerGetPrivateLinks", + "organizationsEventTypesPrivateLinksControllerUpdatePrivateLink", + ], + "commands/team-event-type-webhooks/command.ts": [ + "teamsEventTypesWebhooksControllerCreateTeamEventTypeWebhook", + "teamsEventTypesWebhooksControllerDeleteAllTeamEventTypeWebhooks", + "teamsEventTypesWebhooksControllerDeleteTeamEventTypeWebhook", + "teamsEventTypesWebhooksControllerGetTeamEventTypeWebhook", + "teamsEventTypesWebhooksControllerGetTeamEventTypeWebhooks", + "teamsEventTypesWebhooksControllerUpdateTeamEventTypeWebhook", + ], + "commands/team-event-types/command.ts": [ + "teamsEventTypesControllerCreateTeamEventType", + "teamsEventTypesControllerDeleteTeamEventType", + "teamsEventTypesControllerGetTeamEventType", + "teamsEventTypesControllerGetTeamEventTypes", + "teamsEventTypesControllerUpdateTeamEventType", + ], + "commands/team-roles/command.ts": [ + "organizationsTeamsRolesControllerCreateRole", + "organizationsTeamsRolesControllerDeleteRole", + "organizationsTeamsRolesControllerGetAllRoles", + "organizationsTeamsRolesControllerGetRole", + "organizationsTeamsRolesControllerUpdateRole", + "organizationsTeamsRolesPermissionsControllerAddPermissions", + "organizationsTeamsRolesPermissionsControllerListPermissions", + "organizationsTeamsRolesPermissionsControllerRemovePermissions", + "organizationsTeamsRolesPermissionsControllerSetPermissions", + ], + "commands/team-routing-forms/command.ts": [ + "organizationsTeamsRoutingFormsControllerGetTeamRoutingForms", + "organizationsTeamsRoutingFormsResponsesControllerCreateRoutingFormResponse", + "organizationsTeamsRoutingFormsResponsesControllerGetRoutingFormResponses", + "organizationsTeamsRoutingFormsResponsesControllerUpdateRoutingFormResponse", + ], + "commands/team-schedules/command.ts": [ + "organizationsTeamsSchedulesControllerGetTeamSchedules", + "organizationsTeamsSchedulesControllerGetUserSchedules", + ], + "commands/team-stripe/command.ts": [ + "organizationsStripeControllerCheckTeamStripeConnection", + "organizationsStripeControllerGetTeamStripeConnectUrl", + "organizationsStripeControllerSave", + ], + "commands/team-verified-resources/command.ts": [ + "teamsVerifiedResourcesControllerGetVerifiedEmailById", + "teamsVerifiedResourcesControllerGetVerifiedEmails", + "teamsVerifiedResourcesControllerGetVerifiedPhoneById", + "teamsVerifiedResourcesControllerGetVerifiedPhoneNumbers", + ], + "commands/team-workflows/command.ts": [ + "organizationTeamWorkflowsControllerCreateEventTypeWorkflow", + "organizationTeamWorkflowsControllerCreateFormWorkflow", + "organizationTeamWorkflowsControllerDeleteRoutingFormWorkflow", + "organizationTeamWorkflowsControllerDeleteWorkflow", + "organizationTeamWorkflowsControllerGetRoutingFormWorkflowById", + "organizationTeamWorkflowsControllerGetRoutingFormWorkflows", + "organizationTeamWorkflowsControllerGetWorkflowById", + "organizationTeamWorkflowsControllerGetWorkflows", + "organizationTeamWorkflowsControllerUpdateRoutingFormWorkflow", + "organizationTeamWorkflowsControllerUpdateWorkflow", + ], + "commands/teams/command.ts": [ + "organizationsEventTypesControllerGetTeamsEventTypes", + "organizationsTeamsBookingsControllerGetBookingReferences", + "organizationsTeamsControllerGetMyTeams", + "teamsBookingsControllerGetAllTeamBookings", + "teamsControllerCreateTeam", + "teamsControllerDeleteTeam", + "teamsControllerGetTeam", + "teamsControllerGetTeams", + "teamsControllerUpdateTeam", + "teamsInviteControllerCreateInvite", + "teamsMembershipsControllerCreateTeamMembership", + "teamsMembershipsControllerDeleteTeamMembership", + "teamsMembershipsControllerGetTeamMembership", + "teamsMembershipsControllerGetTeamMemberships", + "teamsMembershipsControllerUpdateTeamMembership", + ], + "commands/verified-resources/command.ts": [ + "userVerifiedResourcesControllerGetVerifiedEmailById", + "userVerifiedResourcesControllerGetVerifiedEmails", + "userVerifiedResourcesControllerGetVerifiedPhoneById", + "userVerifiedResourcesControllerGetVerifiedPhoneNumbers", + ], + "commands/webhooks/command.ts": [ + "webhooksControllerCreateWebhook", + "webhooksControllerDeleteWebhook", + "webhooksControllerGetWebhook", + "webhooksControllerGetWebhooks", + "webhooksControllerUpdateWebhook", + ], + "shared/auth.ts": [ + "oAuth2ControllerToken", + ], + "shared/client.ts": [ + "client", + ], +} +`; + +exports[`SDK ↔ CLI Coverage Audit > should match the snapshot of all SDK endpoint functions 1`] = ` +[ + "apiKeysControllerRefresh", + "bookingAttendeesController20240813AddAttendee", + "bookingAttendeesController20240813GetBookingAttendee", + "bookingAttendeesController20240813GetBookingAttendees", + "bookingGuestsController20240813AddGuests", + "bookingLocationController20240813UpdateBookingLocation", + "bookingsController20240813CancelBooking", + "bookingsController20240813ConfirmBooking", + "bookingsController20240813CreateBooking", + "bookingsController20240813DeclineBooking", + "bookingsController20240813GetBooking", + "bookingsController20240813GetBookingBySeatUid", + "bookingsController20240813GetBookingRecordings", + "bookingsController20240813GetBookingReferences", + "bookingsController20240813GetBookingTranscripts", + "bookingsController20240813GetBookings", + "bookingsController20240813GetCalendarLinks", + "bookingsController20240813GetVideoSessions", + "bookingsController20240813MarkNoShow", + "bookingsController20240813ReassignBooking", + "bookingsController20240813ReassignBookingToUser", + "bookingsController20240813RescheduleBooking", + "calUnifiedCalendarsControllerGetCalendarEventDetails", + "calUnifiedCalendarsControllerUpdateCalendarEvent", + "calendarsControllerCheck", + "calendarsControllerCheckIcsFeed", + "calendarsControllerCreateIcsFeed", + "calendarsControllerDeleteCalendarCredentials", + "calendarsControllerGetBusyTimes", + "calendarsControllerGetCalendars", + "calendarsControllerRedirect", + "calendarsControllerSave", + "calendarsControllerSyncCredentials", + "conferencingControllerConnect", + "conferencingControllerDefault", + "conferencingControllerDisconnect", + "conferencingControllerGetDefault", + "conferencingControllerListInstalledConferencingApps", + "conferencingControllerRedirect", + "conferencingControllerSave", + "destinationCalendarsControllerUpdateDestinationCalendars", + "eventTypeWebhooksControllerCreateEventTypeWebhook", + "eventTypeWebhooksControllerDeleteAllEventTypeWebhooks", + "eventTypeWebhooksControllerDeleteEventTypeWebhook", + "eventTypeWebhooksControllerGetEventTypeWebhook", + "eventTypeWebhooksControllerGetEventTypeWebhooks", + "eventTypeWebhooksControllerUpdateEventTypeWebhook", + "eventTypesController20240614CreateEventType", + "eventTypesController20240614DeleteEventType", + "eventTypesController20240614GetEventTypeById", + "eventTypesController20240614GetEventTypes", + "eventTypesController20240614UpdateEventType", + "eventTypesPrivateLinksControllerCreatePrivateLink", + "eventTypesPrivateLinksControllerDeletePrivateLink", + "eventTypesPrivateLinksControllerGetPrivateLinks", + "eventTypesPrivateLinksControllerUpdatePrivateLink", + "meControllerGetMe", + "meControllerUpdateMe", + "oAuth2ControllerGetClient", + "oAuth2ControllerToken", + "oAuthClientUsersControllerCreateUser", + "oAuthClientUsersControllerDeleteUser", + "oAuthClientUsersControllerForceRefresh", + "oAuthClientUsersControllerGetManagedUsers", + "oAuthClientUsersControllerGetUserById", + "oAuthClientUsersControllerUpdateUser", + "oAuthClientWebhooksControllerCreateOAuthClientWebhook", + "oAuthClientWebhooksControllerDeleteAllOAuthClientWebhooks", + "oAuthClientWebhooksControllerDeleteOAuthClientWebhook", + "oAuthClientWebhooksControllerGetOAuthClientWebhook", + "oAuthClientWebhooksControllerGetOAuthClientWebhooks", + "oAuthClientWebhooksControllerUpdateOAuthClientWebhook", + "oAuthClientsControllerCreateOAuthClient", + "oAuthClientsControllerDeleteOAuthClient", + "oAuthClientsControllerGetOAuthClientById", + "oAuthClientsControllerGetOAuthClients", + "oAuthClientsControllerUpdateOAuthClient", + "oAuthFlowControllerRefreshTokens", + "orgTeamsVerifiedResourcesControllerGetVerifiedEmailById", + "orgTeamsVerifiedResourcesControllerGetVerifiedEmails", + "orgTeamsVerifiedResourcesControllerGetVerifiedPhoneById", + "orgTeamsVerifiedResourcesControllerGetVerifiedPhoneNumbers", + "orgTeamsVerifiedResourcesControllerRequestEmailVerificationCode", + "orgTeamsVerifiedResourcesControllerRequestPhoneVerificationCode", + "orgTeamsVerifiedResourcesControllerVerifyEmail", + "orgTeamsVerifiedResourcesControllerVerifyPhoneNumber", + "organizationTeamWorkflowsControllerCreateEventTypeWorkflow", + "organizationTeamWorkflowsControllerCreateFormWorkflow", + "organizationTeamWorkflowsControllerDeleteRoutingFormWorkflow", + "organizationTeamWorkflowsControllerDeleteWorkflow", + "organizationTeamWorkflowsControllerGetRoutingFormWorkflowById", + "organizationTeamWorkflowsControllerGetRoutingFormWorkflows", + "organizationTeamWorkflowsControllerGetWorkflowById", + "organizationTeamWorkflowsControllerGetWorkflows", + "organizationTeamWorkflowsControllerUpdateRoutingFormWorkflow", + "organizationTeamWorkflowsControllerUpdateWorkflow", + "organizationsAttributesControllerCreateOrganizationAttribute", + "organizationsAttributesControllerDeleteOrganizationAttribute", + "organizationsAttributesControllerGetOrganizationAttribute", + "organizationsAttributesControllerGetOrganizationAttributes", + "organizationsAttributesControllerUpdateOrganizationAttribute", + "organizationsAttributesOptionsControllerAssignOrganizationAttributeOptionToUser", + "organizationsAttributesOptionsControllerCreateOrganizationAttributeOption", + "organizationsAttributesOptionsControllerDeleteOrganizationAttributeOption", + "organizationsAttributesOptionsControllerGetOrganizationAttributeAssignedOptions", + "organizationsAttributesOptionsControllerGetOrganizationAttributeAssignedOptionsBySlug", + "organizationsAttributesOptionsControllerGetOrganizationAttributeOptions", + "organizationsAttributesOptionsControllerGetOrganizationAttributeOptionsForUser", + "organizationsAttributesOptionsControllerUnassignOrganizationAttributeOptionFromUser", + "organizationsAttributesOptionsControllerUpdateOrganizationAttributeOption", + "organizationsBookingsControllerGetAllOrgTeamBookings", + "organizationsConferencingControllerConnectTeamApp", + "organizationsConferencingControllerDisconnectTeamApp", + "organizationsConferencingControllerGetTeamDefaultApp", + "organizationsConferencingControllerGetTeamOAuthUrl", + "organizationsConferencingControllerListTeamConferencingApps", + "organizationsConferencingControllerSaveTeamOauthCredentials", + "organizationsConferencingControllerSetTeamDefaultApp", + "organizationsDelegationCredentialControllerCreateDelegationCredential", + "organizationsDelegationCredentialControllerUpdateDelegationCredential", + "organizationsEventTypesControllerCreatePhoneCall", + "organizationsEventTypesControllerCreateTeamEventType", + "organizationsEventTypesControllerDeleteTeamEventType", + "organizationsEventTypesControllerGetTeamEventType", + "organizationsEventTypesControllerGetTeamEventTypes", + "organizationsEventTypesControllerGetTeamsEventTypes", + "organizationsEventTypesControllerUpdateTeamEventType", + "organizationsEventTypesPrivateLinksControllerCreatePrivateLink", + "organizationsEventTypesPrivateLinksControllerDeletePrivateLink", + "organizationsEventTypesPrivateLinksControllerGetPrivateLinks", + "organizationsEventTypesPrivateLinksControllerUpdatePrivateLink", + "organizationsMembershipsControllerCreateMembership", + "organizationsMembershipsControllerDeleteMembership", + "organizationsMembershipsControllerGetAllMemberships", + "organizationsMembershipsControllerGetOrgMembership", + "organizationsMembershipsControllerUpdateMembership", + "organizationsOrganizationsControllerCreateOrganization", + "organizationsOrganizationsControllerDeleteOrganization", + "organizationsOrganizationsControllerGetOrganization", + "organizationsOrganizationsControllerGetOrganizations", + "organizationsOrganizationsControllerUpdateOrganization", + "organizationsRolesControllerCreateRole", + "organizationsRolesControllerDeleteRole", + "organizationsRolesControllerGetAllRoles", + "organizationsRolesControllerGetRole", + "organizationsRolesControllerUpdateRole", + "organizationsRolesPermissionsControllerAddPermissions", + "organizationsRolesPermissionsControllerListPermissions", + "organizationsRolesPermissionsControllerRemovePermission", + "organizationsRolesPermissionsControllerRemovePermissions", + "organizationsRolesPermissionsControllerSetPermissions", + "organizationsRoutingFormsControllerGetOrganizationRoutingForms", + "organizationsRoutingFormsResponsesControllerCreateRoutingFormResponse", + "organizationsRoutingFormsResponsesControllerGetRoutingFormResponses", + "organizationsRoutingFormsResponsesControllerUpdateRoutingFormResponse", + "organizationsSchedulesControllerCreateUserSchedule", + "organizationsSchedulesControllerDeleteUserSchedule", + "organizationsSchedulesControllerGetOrganizationSchedules", + "organizationsSchedulesControllerGetUserSchedule", + "organizationsSchedulesControllerGetUserSchedules", + "organizationsSchedulesControllerUpdateUserSchedule", + "organizationsStripeControllerCheckTeamStripeConnection", + "organizationsStripeControllerGetTeamStripeConnectUrl", + "organizationsStripeControllerSave", + "organizationsTeamsBookingsControllerGetAllOrgTeamBookings", + "organizationsTeamsBookingsControllerGetBookingReferences", + "organizationsTeamsControllerCreateTeam", + "organizationsTeamsControllerDeleteTeam", + "organizationsTeamsControllerGetAllTeams", + "organizationsTeamsControllerGetMyTeams", + "organizationsTeamsControllerGetTeam", + "organizationsTeamsControllerUpdateTeam", + "organizationsTeamsInviteControllerCreateInvite", + "organizationsTeamsMembershipsControllerCreateOrgTeamMembership", + "organizationsTeamsMembershipsControllerDeleteOrgTeamMembership", + "organizationsTeamsMembershipsControllerGetAllOrgTeamMemberships", + "organizationsTeamsMembershipsControllerGetOrgTeamMembership", + "organizationsTeamsMembershipsControllerUpdateOrgTeamMembership", + "organizationsTeamsRolesControllerCreateRole", + "organizationsTeamsRolesControllerDeleteRole", + "organizationsTeamsRolesControllerGetAllRoles", + "organizationsTeamsRolesControllerGetRole", + "organizationsTeamsRolesControllerUpdateRole", + "organizationsTeamsRolesPermissionsControllerAddPermissions", + "organizationsTeamsRolesPermissionsControllerListPermissions", + "organizationsTeamsRolesPermissionsControllerRemovePermission", + "organizationsTeamsRolesPermissionsControllerRemovePermissions", + "organizationsTeamsRolesPermissionsControllerSetPermissions", + "organizationsTeamsRoutingFormsControllerGetTeamRoutingForms", + "organizationsTeamsRoutingFormsResponsesControllerCreateRoutingFormResponse", + "organizationsTeamsRoutingFormsResponsesControllerGetRoutingFormResponses", + "organizationsTeamsRoutingFormsResponsesControllerUpdateRoutingFormResponse", + "organizationsTeamsSchedulesControllerGetTeamSchedules", + "organizationsTeamsSchedulesControllerGetUserSchedules", + "organizationsUsersBookingsControllerGetOrganizationUserBookings", + "organizationsUsersControllerCreateOrganizationUser", + "organizationsUsersControllerDeleteOrganizationUser", + "organizationsUsersControllerGetOrganizationsUsers", + "organizationsUsersControllerUpdateOrganizationUser", + "organizationsUsersOooControllerCreateOrganizationUserOoo", + "organizationsUsersOooControllerDeleteOrganizationUserOoo", + "organizationsUsersOooControllerGetOrganizationUserOoo", + "organizationsUsersOooControllerGetOrganizationUsersOoo", + "organizationsUsersOooControllerUpdateOrganizationUserOoo", + "organizationsWebhooksControllerCreateOrganizationWebhook", + "organizationsWebhooksControllerDeleteWebhook", + "organizationsWebhooksControllerGetAllOrganizationWebhooks", + "organizationsWebhooksControllerGetOrganizationWebhook", + "organizationsWebhooksControllerUpdateOrgWebhook", + "routingFormsControllerCalculateSlotsBasedOnRoutingFormResponse", + "schedulesController20240611CreateSchedule", + "schedulesController20240611DeleteSchedule", + "schedulesController20240611GetDefaultSchedule", + "schedulesController20240611GetSchedule", + "schedulesController20240611GetSchedules", + "schedulesController20240611UpdateSchedule", + "selectedCalendarsControllerAddSelectedCalendar", + "selectedCalendarsControllerDeleteSelectedCalendar", + "slotsController20240904DeleteReservedSlot", + "slotsController20240904GetAvailableSlots", + "slotsController20240904GetReservedSlot", + "slotsController20240904ReserveSlot", + "slotsController20240904UpdateReservedSlot", + "stripeControllerCheck", + "stripeControllerRedirect", + "stripeControllerSave", + "teamsBookingsControllerGetAllTeamBookings", + "teamsControllerCreateTeam", + "teamsControllerDeleteTeam", + "teamsControllerGetTeam", + "teamsControllerGetTeams", + "teamsControllerUpdateTeam", + "teamsEventTypesControllerCreatePhoneCall", + "teamsEventTypesControllerCreateTeamEventType", + "teamsEventTypesControllerDeleteTeamEventType", + "teamsEventTypesControllerGetTeamEventType", + "teamsEventTypesControllerGetTeamEventTypes", + "teamsEventTypesControllerUpdateTeamEventType", + "teamsEventTypesWebhooksControllerCreateTeamEventTypeWebhook", + "teamsEventTypesWebhooksControllerDeleteAllTeamEventTypeWebhooks", + "teamsEventTypesWebhooksControllerDeleteTeamEventTypeWebhook", + "teamsEventTypesWebhooksControllerGetTeamEventTypeWebhook", + "teamsEventTypesWebhooksControllerGetTeamEventTypeWebhooks", + "teamsEventTypesWebhooksControllerUpdateTeamEventTypeWebhook", + "teamsInviteControllerCreateInvite", + "teamsMembershipsControllerCreateTeamMembership", + "teamsMembershipsControllerDeleteTeamMembership", + "teamsMembershipsControllerGetTeamMembership", + "teamsMembershipsControllerGetTeamMemberships", + "teamsMembershipsControllerUpdateTeamMembership", + "teamsSchedulesControllerGetTeamSchedules", + "teamsVerifiedResourcesControllerGetVerifiedEmailById", + "teamsVerifiedResourcesControllerGetVerifiedEmails", + "teamsVerifiedResourcesControllerGetVerifiedPhoneById", + "teamsVerifiedResourcesControllerGetVerifiedPhoneNumbers", + "teamsVerifiedResourcesControllerRequestEmailVerificationCode", + "teamsVerifiedResourcesControllerRequestPhoneVerificationCode", + "teamsVerifiedResourcesControllerVerifyEmail", + "teamsVerifiedResourcesControllerVerifyPhoneNumber", + "userVerifiedResourcesControllerGetVerifiedEmailById", + "userVerifiedResourcesControllerGetVerifiedEmails", + "userVerifiedResourcesControllerGetVerifiedPhoneById", + "userVerifiedResourcesControllerGetVerifiedPhoneNumbers", + "userVerifiedResourcesControllerRequestEmailVerificationCode", + "userVerifiedResourcesControllerRequestPhoneVerificationCode", + "userVerifiedResourcesControllerVerifyEmail", + "userVerifiedResourcesControllerVerifyPhoneNumber", + "webhooksControllerCreateWebhook", + "webhooksControllerDeleteWebhook", + "webhooksControllerGetWebhook", + "webhooksControllerGetWebhooks", + "webhooksControllerUpdateWebhook", +] +`; + +exports[`SDK ↔ CLI Coverage Audit > should match the snapshot of unused SDK functions (available but not used by CLI) 1`] = ` +[ + "calUnifiedCalendarsControllerGetCalendarEventDetails", + "calUnifiedCalendarsControllerUpdateCalendarEvent", + "conferencingControllerConnect", + "conferencingControllerRedirect", + "conferencingControllerSave", + "oAuthClientUsersControllerCreateUser", + "oAuthClientUsersControllerDeleteUser", + "oAuthClientUsersControllerForceRefresh", + "oAuthClientUsersControllerGetManagedUsers", + "oAuthClientUsersControllerGetUserById", + "oAuthClientUsersControllerUpdateUser", + "oAuthClientWebhooksControllerCreateOAuthClientWebhook", + "oAuthClientWebhooksControllerDeleteAllOAuthClientWebhooks", + "oAuthClientWebhooksControllerDeleteOAuthClientWebhook", + "oAuthClientWebhooksControllerGetOAuthClientWebhook", + "oAuthClientWebhooksControllerGetOAuthClientWebhooks", + "oAuthClientWebhooksControllerUpdateOAuthClientWebhook", + "oAuthClientsControllerCreateOAuthClient", + "oAuthClientsControllerDeleteOAuthClient", + "oAuthClientsControllerGetOAuthClientById", + "oAuthClientsControllerGetOAuthClients", + "oAuthClientsControllerUpdateOAuthClient", + "oAuthFlowControllerRefreshTokens", + "orgTeamsVerifiedResourcesControllerRequestEmailVerificationCode", + "orgTeamsVerifiedResourcesControllerRequestPhoneVerificationCode", + "orgTeamsVerifiedResourcesControllerVerifyEmail", + "orgTeamsVerifiedResourcesControllerVerifyPhoneNumber", + "organizationsConferencingControllerGetTeamDefaultApp", + "organizationsConferencingControllerSaveTeamOauthCredentials", + "organizationsEventTypesControllerCreatePhoneCall", + "organizationsEventTypesControllerCreateTeamEventType", + "organizationsEventTypesControllerDeleteTeamEventType", + "organizationsEventTypesControllerGetTeamEventType", + "organizationsEventTypesControllerGetTeamEventTypes", + "organizationsEventTypesControllerUpdateTeamEventType", + "organizationsRolesPermissionsControllerRemovePermission", + "organizationsTeamsBookingsControllerGetAllOrgTeamBookings", + "organizationsTeamsControllerCreateTeam", + "organizationsTeamsControllerDeleteTeam", + "organizationsTeamsControllerGetAllTeams", + "organizationsTeamsControllerGetTeam", + "organizationsTeamsControllerUpdateTeam", + "organizationsTeamsInviteControllerCreateInvite", + "organizationsTeamsMembershipsControllerCreateOrgTeamMembership", + "organizationsTeamsMembershipsControllerDeleteOrgTeamMembership", + "organizationsTeamsMembershipsControllerGetAllOrgTeamMemberships", + "organizationsTeamsMembershipsControllerGetOrgTeamMembership", + "organizationsTeamsMembershipsControllerUpdateOrgTeamMembership", + "organizationsTeamsRolesPermissionsControllerRemovePermission", + "teamsEventTypesControllerCreatePhoneCall", + "teamsSchedulesControllerGetTeamSchedules", + "teamsVerifiedResourcesControllerRequestEmailVerificationCode", + "teamsVerifiedResourcesControllerRequestPhoneVerificationCode", + "teamsVerifiedResourcesControllerVerifyEmail", + "teamsVerifiedResourcesControllerVerifyPhoneNumber", + "userVerifiedResourcesControllerRequestEmailVerificationCode", + "userVerifiedResourcesControllerRequestPhoneVerificationCode", + "userVerifiedResourcesControllerVerifyEmail", + "userVerifiedResourcesControllerVerifyPhoneNumber", +] +`; + +exports[`SDK ↔ CLI Coverage Audit > should track coverage metrics 1`] = ` +{ + "coveragePercent": 79, + "importedByCliCount": 214, + "totalSdkFunctions": 272, + "unusedCount": 59, +} +`; diff --git a/packages/cli/src/__tests__/sdk-cli-coverage-audit.test.ts b/packages/cli/src/__tests__/sdk-cli-coverage-audit.test.ts new file mode 100644 index 0000000..b2007a1 --- /dev/null +++ b/packages/cli/src/__tests__/sdk-cli-coverage-audit.test.ts @@ -0,0 +1,132 @@ +import { readFileSync, readdirSync, statSync } from "node:fs"; +import { join, resolve } from "node:path"; +import { describe, expect, it } from "vitest"; + +/** + * Tracks which SDK functions the CLI uses vs what's available. + * Snapshot diffs surface new endpoints, removed endpoints, + * and changes in CLI coverage as openapi.json evolves. + */ + +const SDK_PATH = resolve(__dirname, "../generated/sdk.gen.ts"); +const COMMANDS_DIR = resolve(__dirname, "../commands"); +const SHARED_DIR = resolve(__dirname, "../shared"); + +function getExportedSdkFunctions(): string[] { + const content = readFileSync(SDK_PATH, "utf-8"); + const exportRegex = /^export const (\w+)\s*=/gm; + const functions: string[] = []; + let match: RegExpExecArray | null = null; + + match = exportRegex.exec(content); + while (match !== null) { + const name = match[1]; + // Skip the client export — it's infrastructure, not an endpoint function + if (name !== "client") { + functions.push(name); + } + match = exportRegex.exec(content); + } + + return functions.sort(); +} + +function getAllTsFiles(dir: string): string[] { + const files: string[] = []; + const entries = readdirSync(dir); + + for (const entry of entries) { + const fullPath = join(dir, entry); + const stat = statSync(fullPath); + if (stat.isDirectory()) { + files.push(...getAllTsFiles(fullPath)); + } else if (entry.endsWith(".ts") && !entry.endsWith(".test.ts") && !entry.endsWith(".spec.ts")) { + files.push(fullPath); + } + } + + return files; +} + +function getImportedSdkFunctions(): { functions: Set; byFile: Record } { + const functions = new Set(); + const byFile: Record = {}; + const srcRoot = resolve(__dirname, ".."); + + const dirs = [COMMANDS_DIR, SHARED_DIR]; + + for (const dir of dirs) { + const files = getAllTsFiles(dir); + for (const file of files) { + const content = readFileSync(file, "utf-8"); + + const importRegex = /import\s*\{([^}]+)\}\s*from\s*["'][^"']*generated\/sdk\.gen["']/g; + let importMatch = importRegex.exec(content); + + while (importMatch !== null) { + const importBlock = importMatch[1]; + const identifiers = importBlock.split(",").map((s) => s.trim()).filter(Boolean); + + for (const identifier of identifiers) { + // "originalName as alias" → extract originalName + const originalName = identifier.split(/\s+as\s+/)[0].trim(); + if (originalName) { + functions.add(originalName); + const relPath = file.replace(`${srcRoot}/`, ""); + if (!byFile[relPath]) byFile[relPath] = []; + byFile[relPath].push(originalName); + } + } + + importMatch = importRegex.exec(content); + } + } + } + + return { functions, byFile }; +} + +describe("SDK ↔ CLI Coverage Audit", () => { + const allSdkFunctions = getExportedSdkFunctions(); + const { functions: importedFunctions, byFile: importsByFile } = getImportedSdkFunctions(); + + const unusedFunctions = allSdkFunctions.filter((fn) => !importedFunctions.has(fn)); + // "client" is an infrastructure export, not an endpoint function + const endpointImports = [...importedFunctions].filter((fn) => fn !== "client"); + const importedButMissing = endpointImports.filter((fn) => !allSdkFunctions.includes(fn)); + + it("should match the snapshot of all SDK endpoint functions", () => { + expect(allSdkFunctions).toMatchSnapshot(); + }); + + it("should match the snapshot of CLI-imported SDK functions", () => { + expect([...importedFunctions].sort()).toMatchSnapshot(); + }); + + it("should match the snapshot of unused SDK functions (available but not used by CLI)", () => { + expect(unusedFunctions).toMatchSnapshot(); + }); + + it("should match the snapshot of SDK imports by file", () => { + const sortedImports = Object.fromEntries( + Object.entries(importsByFile) + .sort(([a], [b]) => a.localeCompare(b)) + .map(([file, fns]) => [file, fns.sort()]), + ); + expect(sortedImports).toMatchSnapshot(); + }); + + it("should not have any CLI imports referencing non-existent SDK functions", () => { + expect(importedButMissing).toEqual([]); + }); + + it("should track coverage metrics", () => { + const metrics = { + totalSdkFunctions: allSdkFunctions.length, + importedByCliCount: importedFunctions.size, + unusedCount: unusedFunctions.length, + coveragePercent: Math.round((importedFunctions.size / allSdkFunctions.length) * 100), + }; + expect(metrics).toMatchSnapshot(); + }); +});