{"_id":"@canonical/util-debounce","_rev":"25-2707ac8358d4830e02b670fdb57f9983","name":"@canonical/util-debounce","dist-tags":{"latest":"0.0.0-experimental.0"},"versions":{"0.0.0-experimental.0":{"name":"@canonical/util-debounce","version":"0.0.0-experimental.0","author":{"name":"Canonical Webteam","email":"webteam@canonical.com"},"license":"LGPL-3.0","_id":"@canonical/util-debounce@0.0.0-experimental.0","maintainers":[{"name":"jmuzina","email":"jmuzina@pm.me"},{"name":"lukewh","email":"luke@lukewh.com"},{"name":"mtruj","email":"mariapaula.trujillo@canonical.com"},{"name":"edlerd","email":"david.edler@canonical.com"},{"name":"seulkee","email":"seulkeekang@gmail.com"},{"name":"canonical-organization","email":"is-admin@canonical.com"},{"name":"petesfrench","email":"peterfrench94@gmail.com"},{"name":"frankban","email":"frankban@gmail.com"},{"name":"huwshimi","email":"huwshimi@gmail.com"},{"name":"anthonydillon","email":"me@anthonydillon.com"},{"name":"steverydz","email":"steverydz@gmail.com"},{"name":"amylily1011","email":"amy.lily@canonical.com"},{"name":"bartaz","email":"bartek.szopka@canonical.com"},{"name":"jpmartinspt","email":"joao.figueiredo.martins@canonical.com"}],"homepage":"https://github.com/canonical/ds25#readme","bugs":{"url":"https://github.com/canonical/ds25/issues"},"dist":{"shasum":"3dd626c5978b384a87bd165c3f34c5180d7f1e89","tarball":"https://registry.npmjs.org/@canonical/util-debounce/-/util-debounce-0.0.0-experimental.0.tgz","fileCount":6,"integrity":"sha512-Dtp/I9ZNxa9Sk1TVqQMWKQUbabV0QOaPQ/6Z7o+nFYDXIrygp+3zPww481fJudQzTppOxoalwUbAWP0Un0ZnyA==","signatures":[{"sig":"MEUCIGJj5ITQbnogjenm6RK8pONH6Zg5QYbKQ+4MrLEj6uVJAiEAibjnBY41kknqhar+8FfCJpxQwsB+eWWyIJV9PD51oSM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4065},"type":"module","types":"dist/types/index.d.ts","module":"dist/esm/index.js","gitHead":"f158f3af3d11d9d30101e756aa6dc0e7151325a0","scripts":{"lint":"biome lint src/*.{ts,tsx}","build":"tsc","check":"bun run check:biome && bun run check:ts","format":"bun run format:biome","check:ts":"tsc --noEmit","check:fix":"bun run check:biome:fix","check:biome":"biome check src/* *.json","format:biome":"biome format src/*.{ts,tsx}","check:biome:fix":"biome check --write src/* *.json"},"_npmUser":{"name":"jmuzina","email":"jmuzina@pm.me"},"repository":{"url":"git+https://github.com/canonical/ds25.git","type":"git"},"_npmVersion":"10.5.0","description":"Canonical's standard debounce utility","directories":{},"_nodeVersion":"20.11.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.3","@biomejs/biome":"^1.9.2","@canonical/biome-config":"^0.1.0-experimental.0","@canonical/typescript-config-base":"^0.1.0-experimental.0"},"_npmOperationalInternal":{"tmp":"tmp/util-debounce_0.0.0-experimental.0_1731624147868_0.8038554050541802","host":"s3://npm-registry-packages"}}},"time":{"created":"2024-11-14T22:42:27.768Z","modified":"2026-09-09T10:47:08.105Z","0.0.0-experimental.0":"2024-11-14T22:42:28.079Z"},"bugs":{"url":"https://github.com/canonical/ds25/issues"},"author":{"name":"Canonical Webteam","email":"webteam@canonical.com"},"license":"LGPL-3.0","homepage":"https://github.com/canonical/ds25#readme","repository":{"url":"git+https://github.com/canonical/ds25.git","type":"git"},"description":"Canonical's standard debounce utility","maintainers":[{"email":"ilayda.cavusoglupars@canonical.com","name":"ilayda21"},{"email":"frankban@gmail.com","name":"frankban"},{"email":"huw@ikmail.com","name":"huwshimi"},{"email":"me@anthonydillon.com","name":"anthonydillon"},{"email":"steverydz@gmail.com","name":"steverydz"},{"email":"bartek.szopka@canonical.com","name":"bartaz"},{"email":"joao.figueiredo.martins@canonical.com","name":"jpmartinspt"},{"email":"peterfrench94@gmail.com","name":"petesfrench"},{"email":"jmuzina@pm.me","name":"jmuzina"},{"email":"mariapaula.trujillo@canonical.com","name":"mtruj"},{"email":"david.edler@canonical.com","name":"edlerd"},{"email":"ardavan.behnia@canonical.com","name":"abehnia"},{"email":"is-admin@canonical.com","name":"canonical-organization"},{"email":"eduard.manta@canonical.com","name":"edisile-canonical"},{"email":"adam.steciuk@canonical.com","name":"steciuk-canonical"},{"email":"abbie.sims@canonical.com","name":"abbiesims"},{"email":"atakan99saglam@gmail.com","name":"ataku_b"},{"email":"adrian.villa.g@gmail.com","name":"ad.vl"},{"email":"its.muhammad.ali.mughal@gmail.com","name":"engr-ali"},{"email":"urvashi.sharma271099@gmail.com","name":"ninfa_jeon"},{"email":"n.devilliers1999@gmail.com","name":"ndv99"},{"email":"goulin.khoge@canonical.com","name":"goulin-canonical"},{"email":"21112002mj@gmail.com","name":"immortalcodes"},{"email":"alvaro.mateoalvarez@canonical.com","name":"alvaromateo"},{"email":"benjaminaderopo.oni@canonical.com","name":"onibenjo-canonical"}],"readme":"## Debounce Util\n\nEnsures that a function is only executed after a specified delay,\nand if it is triggered multiple times within that delay, only the last\ninvocation will be executed.\n\nThis is particularly useful for scenarios like\nhandling user input (e.g., search queries), where you want to wait until the\nuser has stopped typing before executing a time-consuming operation.\n\nBy using debounce, you can optimize performance and avoid unnecessary function\ncalls when events like user input or window resizing occur in quick succession.\n\n### Example\n\n```ts\nimport debounce from \"@canonical/util-debounce\";\n\nconst fetchData = (query: string) => console.log(`Fetching data for: ${query}`);\n\nconst debouncedFetchData = debounce(fetchData, 500);\n\ndebouncedFetchData(\"query 1\"); // Only the last call will be executed\ndebouncedFetchData(\"query 2\");\ndebouncedFetchData(\"query 3\");\n```\n","readmeFilename":"README.md"}