casbin / casbin.js

An authorization library that supports access control models like ACL, RBAC, ABAC in Frontend Javascript
https://casbin.org/docs/en/frontend
Apache License 2.0
160 stars 37 forks source link

build: output ESM and UMD #227

Closed nodece closed 2 years ago

nodece commented 2 years ago

Signed-off-by: Zixuan Liu nodeces@gmail.com

Summary

Improve build configuration and add ESM and UMD support that used to browser/node.

// node const { newEnforcer } = require('./dist/casbin')

- **ESM**(`dist/casbin.esm.js` ): It can be used in the browser by `<script type="module">` tag.
- **ESM**(`dist/casbin.mjs)`:It can be used in node with ECMAScript module system.

`$ tree`:

├── CHANGELOG.md ├── LICENSE ├── README.md ├── casbin-logo.png ├── dist │   ├── casbin.esm.js │   ├── casbin.esm.js.map │   ├── casbin.js │   ├── casbin.js.map │   ├── casbin.mjs │   └── casbin.mjs.map ├── es │   ├── cachedEnforcer.d.ts │   ├── cachedEnforcer.js │   ├── config.d.ts │   ├── config.js │   ├── coreEnforcer.d.ts │   ├── coreEnforcer.js │   ├── effect │   │   ├── defaultEffector.d.ts │   │   ├── defaultEffector.js │   │   ├── defaultEffectorStream.d.ts │   │   ├── defaultEffectorStream.js │   │   ├── effector.d.ts │   │   ├── effector.js │   │   ├── effectorStream.d.ts │   │   ├── effectorStream.js │   │   ├── index.d.ts │   │   └── index.js │   ├── enforceContext.d.ts │   ├── enforceContext.js │   ├── enforcer.d.ts │   ├── enforcer.js │   ├── index.d.ts │   ├── index.js │   ├── internalEnforcer.d.ts │   ├── internalEnforcer.js │   ├── log │   │   ├── defaultLogger.d.ts │   │   ├── defaultLogger.js │   │   ├── index.d.ts │   │   ├── index.js │   │   ├── logUtil.d.ts │   │   ├── logUtil.js │   │   ├── logger.d.ts │   │   └── logger.js │   ├── managementEnforcer.d.ts │   ├── managementEnforcer.js │   ├── model │   │   ├── assertion.d.ts │   │   ├── assertion.js │   │   ├── functionMap.d.ts │   │   ├── functionMap.js │   │   ├── index.d.ts │   │   ├── index.js │   │   ├── model.d.ts │   │   └── model.js │   ├── persist │   │   ├── adapter.d.ts │   │   ├── adapter.js │   │   ├── batchAdapter.d.ts │   │   ├── batchAdapter.js │   │   ├── defaultFilteredAdapter.d.ts │   │   ├── defaultFilteredAdapter.js │   │   ├── filteredAdapter.d.ts │   │   ├── filteredAdapter.js │   │   ├── helper.d.ts │   │   ├── helper.js │   │   ├── index.d.ts │   │   ├── index.js │   │   ├── memoryAdapter.d.ts │   │   ├── memoryAdapter.js │   │   ├── updatableAdapter.d.ts │   │   ├── updatableAdapter.js │   │   ├── watcher.d.ts │   │   └── watcher.js │   ├── rbac │   │   ├── defaultRoleManager.d.ts │   │   ├── defaultRoleManager.js │   │   ├── defaultSyncedRoleManager.d.ts │   │   ├── defaultSyncedRoleManager.js │   │   ├── index.d.ts │   │   ├── index.js │   │   ├── internalRoleManager.d.ts │   │   ├── internalRoleManager.js │   │   ├── roleManager.d.ts │   │   └── roleManager.js │   ├── syncedEnforcer.d.ts │   ├── syncedEnforcer.js │   └── util │   ├── builtinOperators.d.ts │   ├── builtinOperators.js │   ├── index.d.ts │   ├── index.js │   ├── ip.d.ts │   ├── ip.js │   ├── util.d.ts │   └── util.js ├── examples │   ├── abac_model.conf │   ├── abac_rule_model.conf │   ├── abac_rule_policy.csv │   ├── basic_inverse_policy.csv │   ├── basic_model.conf │   ├── basic_policy.csv │   ├── basic_with_root_model.conf │   ├── basic_without_resources_model.conf │   ├── basic_without_resources_policy.csv │   ├── basic_without_users_model.conf │   ├── basic_without_users_policy.csv │   ├── error │   │   ├── error_model.conf │   │   └── error_policy.csv │   ├── glob_model.conf │   ├── glob_policy.csv │   ├── in_operator_model.conf │   ├── ipmatch_model.conf │   ├── ipmatch_policy.csv │   ├── issues │   │   ├── node_casbin_150_model.conf │   │   └── node_casbin_150_policy.csv │   ├── keymatch2_model.conf │   ├── keymatch2_policy.csv │   ├── keymatch_custom_model.conf │   ├── keymatch_model.conf │   ├── keymatch_policy.csv │   ├── mulitple_policy.csv │   ├── priority_indeterminate_policy.csv │   ├── priority_model.conf │   ├── priority_model_explicit.conf │   ├── priority_policy.csv │   ├── priority_policy_explicit.csv │   ├── priority_policy_explicit_update.csv │   ├── rbac_g2_model.conf │   ├── rbac_g2_policy.csv │   ├── rbac_model.conf │   ├── rbac_policy.csv │   ├── rbac_with_all_pattern_model.conf │   ├── rbac_with_all_pattern_policy.csv │   ├── rbac_with_deny_model.conf │   ├── rbac_with_deny_policy.csv │   ├── rbac_with_domain_pattern_model.conf │   ├── rbac_with_domain_pattern_policy.csv │   ├── rbac_with_domains_model.conf │   ├── rbac_with_domains_policy.csv │   ├── rbac_with_hierarchy_policy.csv │   ├── rbac_with_hierarchy_with_domains_policy.csv │   ├── rbac_with_not_deny_model.conf │   ├── rbac_with_pattern_model.conf │   ├── rbac_with_pattern_policy.csv │   ├── rbac_with_resource_roles_model.conf │   └── rbac_with_resource_roles_policy.csv ├── jest.config.js ├── lib │   ├── cachedEnforcer.d.ts │   ├── cachedEnforcer.js │   ├── config.d.ts │   ├── config.js │   ├── coreEnforcer.d.ts │   ├── coreEnforcer.js │   ├── effect │   │   ├── defaultEffector.d.ts │   │   ├── defaultEffector.js │   │   ├── defaultEffectorStream.d.ts │   │   ├── defaultEffectorStream.js │   │   ├── effector.d.ts │   │   ├── effector.js │   │   ├── effectorStream.d.ts │   │   ├── effectorStream.js │   │   ├── index.d.ts │   │   └── index.js │   ├── enforceContext.d.ts │   ├── enforceContext.js │   ├── enforcer.d.ts │   ├── enforcer.js │   ├── index.d.ts │   ├── index.js │   ├── internalEnforcer.d.ts │   ├── internalEnforcer.js │   ├── log │   │   ├── defaultLogger.d.ts │   │   ├── defaultLogger.js │   │   ├── index.d.ts │   │   ├── index.js │   │   ├── logUtil.d.ts │   │   ├── logUtil.js │   │   ├── logger.d.ts │   │   └── logger.js │   ├── managementEnforcer.d.ts │   ├── managementEnforcer.js │   ├── model │   │   ├── assertion.d.ts │   │   ├── assertion.js │   │   ├── functionMap.d.ts │   │   ├── functionMap.js │   │   ├── index.d.ts │   │   ├── index.js │   │   ├── model.d.ts │   │   └── model.js │   ├── persist │   │   ├── adapter.d.ts │   │   ├── adapter.js │   │   ├── batchAdapter.d.ts │   │   ├── batchAdapter.js │   │   ├── defaultFilteredAdapter.d.ts │   │   ├── defaultFilteredAdapter.js │   │   ├── filteredAdapter.d.ts │   │   ├── filteredAdapter.js │   │   ├── helper.d.ts │   │   ├── helper.js │   │   ├── index.d.ts │   │   ├── index.js │   │   ├── memoryAdapter.d.ts │   │   ├── memoryAdapter.js │   │   ├── updatableAdapter.d.ts │   │   ├── updatableAdapter.js │   │   ├── watcher.d.ts │   │   └── watcher.js │   ├── rbac │   │   ├── defaultRoleManager.d.ts │   │   ├── defaultRoleManager.js │   │   ├── defaultSyncedRoleManager.d.ts │   │   ├── defaultSyncedRoleManager.js │   │   ├── index.d.ts │   │   ├── index.js │   │   ├── internalRoleManager.d.ts │   │   ├── internalRoleManager.js │   │   ├── roleManager.d.ts │   │   └── roleManager.js │   ├── syncedEnforcer.d.ts │   ├── syncedEnforcer.js │   └── util │   ├── builtinOperators.d.ts │   ├── builtinOperators.js │   ├── index.d.ts │   ├── index.js │   ├── ip.d.ts │   ├── ip.js │   ├── util.d.ts │   └── util.js ├── package.json ├── rollup.config.js ├── src │   ├── cachedEnforcer.ts │   ├── config.ts │   ├── coreEnforcer.ts │   ├── effect │   │   ├── defaultEffector.ts │   │   ├── defaultEffectorStream.ts │   │   ├── effector.ts │   │   ├── effectorStream.ts │   │   └── index.ts │   ├── enforceContext.ts │   ├── enforcer.ts │   ├── index.ts │   ├── internalEnforcer.ts │   ├── log │   │   ├── defaultLogger.ts │   │   ├── index.ts │   │   ├── logUtil.ts │   │   └── logger.ts │   ├── managementEnforcer.ts │   ├── model │   │   ├── assertion.ts │   │   ├── functionMap.ts │   │   ├── index.ts │   │   └── model.ts │   ├── persist │   │   ├── adapter.ts │   │   ├── batchAdapter.ts │   │   ├── defaultFilteredAdapter.ts │   │   ├── filteredAdapter.ts │   │   ├── helper.ts │   │   ├── index.ts │   │   ├── memoryAdapter.ts │   │   ├── updatableAdapter.ts │   │   └── watcher.ts │   ├── rbac │   │   ├── defaultRoleManager.ts │   │   ├── defaultSyncedRoleManager.ts │   │   ├── index.ts │   │   ├── internalRoleManager.ts │   │   └── roleManager.ts │   ├── syncedEnforcer.ts │   └── util │   ├── builtinOperators.ts │   ├── index.ts │   ├── ip.ts │   └── util.ts ├── test │   ├── cachedEnforcer.test.d.ts │   ├── cachedEnforcer.test.js │   ├── cachedEnforcer.test.ts │   ├── config │   │   ├── config.test.d.ts │   │   ├── config.test.js │   │   ├── config.test.ts │   │   └── testini.ini │   ├── enforcer.test.d.ts │   ├── enforcer.test.js │   ├── enforcer.test.ts │   ├── managementAPI.test.d.ts │   ├── managementAPI.test.js │   ├── managementAPI.test.ts │   ├── model │   │   ├── model.test.d.ts │   │   ├── model.test.js │   │   └── model.test.ts │   ├── model.test.d.ts │   ├── model.test.js │   ├── model.test.ts │   ├── persist │   │   ├── helper.test.d.ts │   │   ├── helper.test.js │   │   └── helper.test.ts │   ├── rbac │   │   ├── defaultRoleManager.test.d.ts │   │   ├── defaultRoleManager.test.js │   │   └── defaultRoleManager.test.ts │   ├── rbacAPI.test.d.ts │   ├── rbacAPI.test.js │   ├── rbacAPI.test.ts │   ├── syncedEnforcer.test.d.ts │   ├── syncedEnforcer.test.js │   ├── syncedEnforcer.test.ts │   ├── util.test.d.ts │   ├── util.test.js │   ├── util.test.ts │   ├── utils.d.ts │   ├── utils.js │   └── utils.ts ├── tsconfig.cjs.json ├── tsconfig.esm.json ├── tsconfig.json └── yarn.lock

casbin-bot commented 2 years ago

@Gabriel-403 @Zxilly @kingiw please review

github-actions[bot] commented 2 years ago

:tada: This PR is included in version 1.0.0 :tada:

The release is available on:

Your semantic-release bot :package::rocket: