https://github.com/miniscruff/scopie-js
JS implementation of scopie
https://github.com/miniscruff/scopie-js
Last synced: 9 months ago
JSON representation
JS implementation of scopie
- Host: GitHub
- URL: https://github.com/miniscruff/scopie-js
- Owner: miniscruff
- License: mit
- Created: 2024-01-07T23:33:51.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-03-15T09:02:37.000Z (over 2 years ago)
- Last Synced: 2024-03-15T10:24:34.935Z (over 2 years ago)
- Language: JavaScript
- Size: 90.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Scopie
[](https://www.npmjs.com/package/scopie)
[](https://www.npmjs.com/package/scopie)
Javascript implementation of [scopie](https://github.com/miniscruff/scopie).
Generated documentation can be viewed at [DOCS.md](./DOCS.md).
## Example
```js
import { isAllowed } from "scopie";
const users = {
elsa: {
rules: ["allow/blog/create|update"],
},
bella: {
rules: ["allow/blog/create"],
},
]
const blogPosts = {}
function createBlog(username, blogSlug, blogContent) {
const user = users[username]
if (isAllowed(["blog/create"], user.rules)) {
blogPosts[blogSlug] = {
author: user,
content: blogContent,
}
}
}
function updateBlog(username, blogSlug, blogContent) {
const user = users[username]
if (isAllowed(["blog/update"], user.rules)) {
blogPosts[blogSlug] = {
author: user,
content: blogContent,
}
}
}
```
```typescript
import { isAllowed } from "scopie";
type User = {
rules: Array;
};
type BlogPost = {
author: User;
content: string;
}
type UserStore = {
[key: string]: User
}
type BlogStore = {
[key: string]: BlogPost
}
const users: UserStore = {
elsa: {
rules: ["allow/blog/create|update"],
},
bella: {
rules: ["allow/blog/create"],
},
}
const blogPosts: BlogStore = {}
function createBlog(username: string, blogSlug: string, blogContent: string) {
const user = users[username]
if (isAllowed(["blog/create"], user.rules)) {
blogPosts[blogSlug] = {
author: user,
content: blogContent,
}
}
}
function updateBlog(username: string, blogSlug: string, blogContent: string) {
const user = users[username]
if (isAllowed(["blog/update"], user.rules)) {
blogPosts[blogSlug] = {
author: user,
content: blogContent,
}
}
}
```