Closed nodece closed 2 years ago
Signed-off-by: Zixuan Liu nodeces@gmail.com
Improve build configuration and add ESM and UMD support that used to browser/node.
dist/casbin.js
<script>
// browser <script src="./dist/casbin.js"></script> <script> casbin.newEnforcer().then(e=>{}) </script>
// 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
@Gabriel-403 @Zxilly @kingiw please review
:tada: This PR is included in version 1.0.0 :tada:
The release is available on:
Your semantic-release bot :package::rocket:
Signed-off-by: Zixuan Liu nodeces@gmail.com
Summary
Improve build configuration and add ESM and UMD support that used to browser/node.
dist/casbin.js
): It can be used in the browser by<script>
tag, and in node:// node const { newEnforcer } = require('./dist/casbin')
├── 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