https://github.com/morlay/babel-plugin-access-control-autocomplete
https://github.com/morlay/babel-plugin-access-control-autocomplete
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/morlay/babel-plugin-access-control-autocomplete
- Owner: morlay
- Created: 2019-12-13T03:13:44.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T02:55:00.000Z (over 3 years ago)
- Last Synced: 2025-04-16T14:18:51.215Z (about 1 year ago)
- Language: TypeScript
- Size: 673 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## babel-plugin-access-control-autocomplete
[](https://travis-ci.org/morlay/babel-plugin-access-control-autocomplete)
[](https://npmjs.org/package/babel-plugin-access-control-autocomplete)
[](https://david-dm.org/morlay/babel-plugin-access-control-autocomplete)
[](https://npmjs.org/package/babel-plugin-access-control-autocomplete)
Autocomplete AccessControl React HoC.
When added access control for each Component, we may added some component as below:
```typescript jsx
import { mustAllOfPermissions } from "src-core/access";
import { AcComponent2 } from "other";
import { useRequest, useTempDataForRequest } from "some-request";
import { listApp, putApp } from "some-clients"
export const AcComponent = mustAllOfPermissions(AcComponent2, listApp, putApp)(() => {
const [] = useRequest(putApp, {});
const [] = useTempDataForRequest(listApp, {});
return ;
})
```
but it will be boring and easy to make mistake.
with this plugin we could use special named component (`Ac(Every)Component` and `AcSomeComponet`) to autocomplete the `AccessControlComponent`.
the key of access control should be from request method, we could collect them by `use(\w+)?Request` or `useAc(\w+)` hooks or `create(\w+)?Request` HoC.
and `AccessControlComponent` will be composed too.
```typescript jsx
export const AcComponent = () => {
const [] = useRequest(putApp, {});
const [] = useTempDataForRequest(listApp, {});
return ;
}
```
will be transform to
```typescript jsx
export const AcComponent = mustAllOfPermissions(AcComponent2, listApp, putApp)(() => {
const [] = useRequest(putApp, {});
const [] = useTempDataForRequest(listApp, {});
return ;
})
```