{"id":13810553,"url":"https://github.com/mblarsen/browser-acl","last_synced_at":"2026-01-26T17:56:05.669Z","repository":{"id":41274830,"uuid":"107490746","full_name":"mblarsen/browser-acl","owner":"mblarsen","description":"Simple acceess control (ACL) library for the browser inspired by Laravel's guards and policies.","archived":false,"fork":false,"pushed_at":"2023-01-08T23:15:33.000Z","size":1312,"stargazers_count":35,"open_issues_count":4,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-14T12:45:10.793Z","etag":null,"topics":["acl","authorization","browser","user-management","users","ux"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mblarsen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["mblarsen"]}},"created_at":"2017-10-19T02:54:57.000Z","updated_at":"2025-02-11T21:33:39.000Z","dependencies_parsed_at":"2023-02-08T08:00:42.859Z","dependency_job_id":null,"html_url":"https://github.com/mblarsen/browser-acl","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/mblarsen/browser-acl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mblarsen%2Fbrowser-acl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mblarsen%2Fbrowser-acl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mblarsen%2Fbrowser-acl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mblarsen%2Fbrowser-acl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mblarsen","download_url":"https://codeload.github.com/mblarsen/browser-acl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mblarsen%2Fbrowser-acl/sbom","scorecard":{"id":631046,"data":{"date":"2025-08-11","repo":{"name":"github.com/mblarsen/browser-acl","commit":"c64bb137146c19d00ff479ad08687780265e32b5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/node.js.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":3,"reason":"dependency not pinned by hash detected -- score normalized to 3","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node.js.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/mblarsen/browser-acl/node.js.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node.js.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/mblarsen/browser-acl/node.js.yml/master?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"15 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-ghr5-ch3p-vcr6","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-3rfm-jhwj-7488","Warn: Project is vulnerable to: GHSA-hhq3-ff78-jv3g","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-21T07:54:59.796Z","repository_id":41274830,"created_at":"2025-08-21T07:54:59.796Z","updated_at":"2025-08-21T07:54:59.796Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28784037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acl","authorization","browser","user-management","users","ux"],"created_at":"2024-08-04T02:01:00.032Z","updated_at":"2026-01-26T17:56:05.651Z","avatar_url":"https://github.com/mblarsen.png","language":"TypeScript","readme":"# browser-acl 🔒\n\n[![build status](http://img.shields.io/travis/mblarsen/browser-acl.svg)](http://travis-ci.org/mblarsen/browser-acl)\n[![codebeat badge](https://codebeat.co/badges/c3b557c1-c111-4dbb-bd0a-9c6a30a3b247)](https://codebeat.co/projects/github-com-mblarsen-browser-acl-master)\n[![Known Vulnerabilities](https://snyk.io/test/github/mblarsen/browser-acl/badge.svg)](https://snyk.io/test/github/mblarsen/browser-acl)\n[![Monthly downloads](https://img.shields.io/npm/dm/browser-acl.svg)](https://www.npmjs.com/package/browser-acl)\n[![NPM version](http://img.shields.io/npm/v/browser-acl.svg)](https://www.npmjs.com/package/browser-acl)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/mblarsen/browser-acl/blob/master/LICENSE)\n\n\u003e Simple access control (ACL) library for the browser inspired by Laravel's guards and policies.\n\nGo to [vue-browser-acl](https://github.com/mblarsen/vue-browser-acl) for the official Vue package.\n\n![example](example.png)\n\n[![Contact me on Codementor](https://www.codementor.io/m-badges/mblarsen/im-a-cm-g.svg)](https://www.codementor.io/@mblarsen?refer=badge)\n\n## Install\n\n```\nnpm i browser-acl\n```\n\n## Setup\n\n```javascript\nimport Acl from 'browser-acl'\nconst acl = new Acl()\n\nacl.rule('view', Post)\nacl.rule('moderate', Post, (user) =\u003e user.isModerator())\nacl.rule(['edit', 'delete'], Post, (user, post) =\u003e post.userId === user.id)\nacl.rule('purgeInactive', (user) =\u003e user.isAdmin)\n```\n\n[![Try browser-acl on RunKit](https://badge.runkitcdn.com/browser-acl.svg)](https://npm.runkit.com/browser-acl)\n\nPolicies (rules through objects or classes) are also supported:\n\n```javascript\n// using an object\nacl.policy({\n  view: true,\n  edit: (user, post) =\u003e post.userId === user.id),\n}, Post)\n\n// using a class\nacl.policy(OrganizationPolicy, Organization)\n```\n\nNote: policies takes precedence over rules.\n\n## Usage\n\n```javascript\n// true if user owns post\nacl.can(user, 'edit', post)\n\n// true if user owns at least posts\nacl.some(user, 'edit', posts)\n\n// true if user owns all posts\nacl.every(user, 'edit', posts)\n```\n\nYou can add mixins to your user class:\n\n```javascript\nacl.mixin(User) // class not instance\n\nuser.can('edit', post)\nuser.can.some('edit', posts)\nuser.can.every('edit', posts)\n```\n\n### Verb object mapping\n\n\u003e The process of mapping a verb object to rules\n\nA **verb object** is an item, an object, an instance of a class.\n\nThe default verb object mapper makes use of [\"poor-man's reflection\"](https://github.com/mblarsen/browser-acl/blob/f52cc8e704681cb33d4867e7a217e990444baa6a/index.js#L248-L298), that uses the\nname of the verb object's constructor to group the rules.\n\n```javascript\nclass Post {}\nconst post = new Post()\npost.constructor.name // The verb object is: Post\n```\n\n**Warning: When using webpack or similar this method can break if you are not careful.**\n\nSince code minifiers will rename functions you have to make sure you only rely\non the function to set up your rules and asking for permission.\n\n```diff\nacl.rule('edit', 'Post', ...)\nacl.can(user, 'edit', 'Post')  👍 works as expected\nacl.can(user, 'edit', Post)    👎 'Post' isn't the name as you'd expect\nacl.can(user, 'edit', post)    👎 same story here\n```\n\nIf your build process minifies your code (specifically mangling of function and class\nnames), this will break in line 3 since the constructor of post will likely not be `Post`\nbut rather a single letter or a name prefixed with `__WEBPACK_IMPORTED_MODULE`.\n\n```diff\n- acl.rule('edit', 'Post', ...)\n+ acl.rule('edit', Post, ...)\n  acl.can(user, 'edit', 'Post')  👍 works as expected\n  acl.can(user, 'edit', Post)    👍 and so does this\n  acl.can(user, 'edit', post)    👍 this too, but see below\n```\n\nPassing the class or function, `Post` and whatever that name is after\nminification, is used to register the rules. As long as the same import is used\nthroughout your code base it will work and you don't need to explicitly\nregister a model.\n\n#### Best practice\n\n```diff\n+ acl.register(Post, 'Post')\n  acl.can(user, 'edit', 'Post')  👍 works as expected\n  acl.can(user, 'edit', Post)    👍 and so does this\n  acl.can(user, 'edit', post)    👍 this too\n```\n\nIf you are using _plain objects_ you may want to override the `verbObjectMapper` with\na custom implementation.\n\n```javascript\nacl.verbObjectMapper = verbObject =\u003e typeof verbObject === 'string'\n  ? verbObject\n  : verbObject.type\n\nconst post = { type: 'post', id: 1, title: 'My first post' }\nacl.can(user, 'edit', post) 👍\n```\n\nSee more [verbObjectMapper](#verbObjectmapper)\n\n## Additional Parameters and Global Rules\n\nYou can define global rules by omitting the verb object when defining rules.\n\n```javascript\nacl.rule('purgeInactive', (user) =\u003e user.admin)\nacl.can(user, 'purgeInactive')\n```\n\nAlso you can pass additional parameters to the handler like this:\n\n```javascript\nacl.rule('edit', Post, (user, post, verb, additionalParameter) =\u003e true)\nacl.can(user, 'edit', post, additionalParameter)\n```\n\nHowever, you cannot combine the two without explicitly stating that you are\ndefining a global rule. You do this by importing the special `GlobalRule`\nverb object.\n\n```javascript\nimport { GlobalRule } from 'browser-acl'\nacl.rule('purgeInactive', GlobalRule, (user) =\u003e user.admin)\nacl.can(user, 'purgeInactive', GlobalRule, additionalParameter)\n```\n\nNote: When defining the rule you can omit it, but is is required for `can`.\nThis is only in the case when you need to pass additional parameters.\n\n# API\n\n\u003c!-- Generated by documentation.js. Update this documentation by updating the source code. --\u003e\n\n### Table of Contents\n\n- [Acl][1]\n  - [rule][2]\n  - [policy][3]\n  - [register][4]\n  - [can][5]\n  - [some][6]\n  - [every][7]\n  - [mixin][8]\n  - [verbObjectMapper][9]\n  - [reset][10]\n  - [removeRules][11]\n  - [removePolicy][12]\n  - [removeAll][13]\n\n## Acl\n\nSimple ACL library for the browser inspired by Laravel's guards and policies.\n\n**Parameters**\n\n- `$0` **[Object][14]** (optional, default `{}`)\n  - `$0.strict` (optional, default `false`)\n- `options` **[Object][14]**\n- `null` **[Boolean][15]** {strict=false}={} Errors out on unknown verbs when true\n\n### rule\n\nYou add rules by providing a verb, a verb object and an optional\ntest (that otherwise defaults to true).\n\nIf the test is a function it will be evaluated with the params:\nuser, verb object, and verbObjectName. The test value is ultimately evaluated\nfor truthiness.\n\nExamples:\n\n```javascript\nacl.rule('create', Post)\nacl.rule('edit', Post, (user, post) =\u003e post.userId === user.id)\nacl.rule(\n  'edit',\n  Post,\n  (user, post, verb, additionalParameter, secondAdditionalParameter) =\u003e true,\n)\nacl.rule('delete', Post, false) // deleting disabled\nacl.rule('purgeInactive', (user) =\u003e user.isAdmin) // global rule\n```\n\n**Parameters**\n\n- `verbs` **([Array][16]\u0026lt;[string][17]\u003e | [string][17])**\n- `verbObject` **([Function][18] \\| [Object][14] \\| [string][17])** ?\n- `test` **([Boolean][15] \\| [Function][18])** =true (optional, default `true`)\n\nReturns **[Acl][19]**\n\n### policy\n\nYou can group related rules into policies for a verb object. The policies\nproperties are verbs and they can plain values or functions.\n\nIf the policy is a function it will be new'ed up before use.\n\n```javascript\nclass Post {\n  constructor() {\n    this.view = true // no need for a functon\n    this.delete = false // not really necessary since an abscent\n    // verb has the same result\n  }\n  beforeAll(verb, user, ...theRest) {\n    if (user.isAdmin) {\n      return true\n    }\n    // return nothing (undefined) to pass it on to the other rules\n  }\n  edit(user, post, verb, additionalParameter, secondAdditionalParameter) {\n    return post.id === user.id\n  }\n}\n```\n\nPolicies are useful for grouping rules and adding more complex logic.\n\n**Parameters**\n\n- `policy` **[Object][14]** A policy with properties that are verbs\n- `verbObject` **([Function][18] \\| [Object][14] \\| [string][17])**\n\nReturns **[Acl][19]**\n\n### register\n\nExplicitly map a class or constructor function to a name.\n\nYou would want to do this in case your code is heavily\nminified in which case the default mapper cannot use the\nsimple \"reflection\" to resolve the verb object name.\n\nNote: If you override the verbObjectMapper this is not used,\nbud it can be used manually through `this.registry`.\n\n**Parameters**\n\n- `klass` **[Function][18]** A class or constructor function\n- `verbObjectName` **[string][17]**\n\n### can\n\nPerforms a test if a user can perform action on verb object.\n\nThe action is a verb and the verb object can be anything the\nverbObjectMapper can map to a verb object name.\n\nE.g. if you can to test if a user can delete a post you would\npass the actual post. Where as if you are testing us a user\ncan create a post you would pass the class function or a\nstring.\n\n```javascript\nacl.can(user, 'create', Post)\nacl.can(user, 'edit', post)\nacl.can(user, 'edit', post, additionalParameter, secondAdditionalParameter)\n```\n\nNote that these are also available on the user if you've used\nthe mixin:\n\n```javascript\nuser.can('create', Post)\nuser.can('edit', post)\n```\n\n**Parameters**\n\n- `user` **[Object][14]**\n- `verb` **[string][17]**\n- `verbObject` **([Function][18] \\| [Object][14] \\| [string][17])**\n- `args` **...any** Any other param is passed into rule\n\nReturns **any** Boolean\n\n### some\n\nLike can but verb object is an array where only some has to be\ntrue for the rule to match.\n\nNote the verb objects do not need to be of the same kind.\n\n**Parameters**\n\n- `user` **[Object][14]**\n- `verb`\n- `verbObjects` **[Array][16]\u0026lt;([Function][18] \\| [Object][14] \\| [string][17])\u003e**\n- `args` **...any** Any other param is passed into rule\n\nReturns **any** Boolean\n\n### every\n\nLike can but verb object is an array where all has to be\ntrue for the rule to match.\n\nNote the verb objects do not need to be of the same kind.\n\n**Parameters**\n\n- `user` **[Object][14]**\n- `verb`\n- `verbObjects` **[Array][16]\u0026lt;([Function][18] \\| [Object][14] \\| [string][17])\u003e**\n- `args` **...any** Any other param is passed into rule\n\nReturns **any** Boolean\n\n### mixin\n\nMix in augments your user class with a `can` function object. This\nis optional and you can always call `can` directly on your\nAcl instance.\n\n    user.can()\n    user.can.some()\n    user.can.every()\n\n**Parameters**\n\n- `User` **[Function][18]** A user class or contructor function\n\n### verbObjectMapper\n\nRules are grouped by verb objects and this default mapper tries to\nmap any non falsy input to a verb object name.\n\nThis is important when you want to try a verb against a rule\npassing in an instance of a class.\n\n- strings becomes verb objects\n- function's names are used for verb object\n- object's constructor name is used for verb object\n\nOverride this function if your models do not match this approach.\n\nE.g. say that you are using plain data objects with a type property\nto indicate the type of the object.\n\n```javascript\nacl.verbObjectMapper = (s) =\u003e (typeof s === 'string' ? s : s.type)\n```\n\n`can` will now use this function when you pass in your objects.\n\n```javascript\nacl.rule('edit', 'book', (user, book) =\u003e user.id === book.authorId)\nconst thing = { title: 'The Silmarillion', authorId: 1, type: 'book' }\nacl.can(user, 'edit', thing)\n```\n\nIn the example above the 'thing' will follow the rules for 'book'. The\nuser can edit the book if they are the author.\n\nSee [register()][4] for how to manually map\nclasses to verb object name.\n\n**Parameters**\n\n- `verbObject` **([Function][18] \\| [Object][14] \\| [string][17])**\n\nReturns **[string][17]** A verb object\n\n### reset\n\nRemoves all rules, policies, and registrations\n\nReturns **[Acl][19]**\n\n### removeRules\n\nRemove rules for verb object\n\nOptionally limit to a single verb.\n\n**Parameters**\n\n- `verbObject` **([Object][14] \\| [Function][18] \\| [String][17])**\n- `verb` **[String][17]?** an optional verb (optional, default `null`)\n\nReturns **[Acl][19]**\n\n### removePolicy\n\nRemove policy for verb object\n\n**Parameters**\n\n- `verbObject` **([Object][14] \\| [Function][18] \\| [String][17])**\n\nReturns **[Acl][19]**\n\n### removeAll\n\nConvenience method for removing all rules and policies for a verb object\n\n**Parameters**\n\n- `verbObject` **([Object][14] \\| [Function][18] \\| [String][17])**\n\nReturns **[Acl][19]**\n\n[1]: #acl\n[2]: #rule\n[3]: #policy\n[4]: #register\n[5]: #can\n[6]: #some\n[7]: #every\n[8]: #mixin\n[9]: #verbObjectmapper\n[10]: #reset\n[11]: #removerules\n[12]: #removepolicy\n[13]: #removeall\n[14]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object\n[15]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean\n[16]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array\n[17]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String\n[18]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function\n[19]: #acl\n","funding_links":["https://github.com/sponsors/mblarsen"],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmblarsen%2Fbrowser-acl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmblarsen%2Fbrowser-acl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmblarsen%2Fbrowser-acl/lists"}