First Relase
This commit is contained in:
parent
f2cf7e662c
commit
ee2dd27597
4 changed files with 75 additions and 4 deletions
26
README.md
26
README.md
|
@ -1 +1,27 @@
|
|||
# template-npm-packages
|
||||
|
||||
/!\ We haven't tested it on pure JavaScript and on CommonJS yet.
|
||||
|
||||
## checklist
|
||||
|
||||
```ts
|
||||
import { checkList } from "permission-checker";
|
||||
|
||||
console.log(checkList(["permission1", "permission2.subPermission1"], ["requiredPermission1"]))
|
||||
// permission1 != requiredPermission1 && permission2.subPermission1 != requiredPermission1, checkList = false
|
||||
console.log(checkList(["*"], ["requiredPermission1"]))
|
||||
// * catch all, always true
|
||||
console.log(checkList(["permission1"], ["*"]))
|
||||
// if in the first array there isn't * this is always false
|
||||
|
||||
console.log(checkList(["permission1"], ["permission1.subPermission1"]))
|
||||
// permission1 includes subPermission1, this is true
|
||||
```
|
||||
|
||||
## checksingle
|
||||
|
||||
is the same of checklist but without an array.
|
||||
```ts
|
||||
import { checkSingle } from "permission-checker";
|
||||
console.log(checkSingle("*", "permission1")) // true
|
||||
```
|
||||
|
|
44
index.ts
44
index.ts
|
@ -1,3 +1,36 @@
|
|||
/**
|
||||
* Check if a permission is granted
|
||||
* @param {String} perm - Is the permission that the user have
|
||||
* @param {String} reqPerm - Is the required permissions
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
function checkSingle(perm: string, reqPerm: string) {
|
||||
let answer = false
|
||||
|
||||
if (perm === "*") answer = true;
|
||||
else {
|
||||
let subRP = reqPerm.split('.');
|
||||
let sub = perm.split(".")
|
||||
|
||||
if (subRP.length < sub.length) answer = false;
|
||||
else {
|
||||
let i = 0;
|
||||
for (const rp of subRP) {
|
||||
i = subRP.findIndex((e) => e === rp)
|
||||
console.log(i, rp, sub[i], subRP.length)
|
||||
if (rp != sub[i]) break;
|
||||
else i++;
|
||||
}
|
||||
|
||||
if (i == subRP.length || i == sub.length) answer = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return answer;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if a permission is granted
|
||||
* @param {Array<String>} perm - Is the permission that the user have
|
||||
|
@ -5,15 +38,20 @@
|
|||
* @returns {Boolean}
|
||||
*/
|
||||
function checkList(perm: string[], reqPerm: string[]) {
|
||||
let answer = false, trueL = 0;
|
||||
|
||||
for (const p of perm) {
|
||||
let answer = false, tl = 0, rql = reqPerm.length;
|
||||
|
||||
for (const rp of reqPerm) {
|
||||
for (const p of perm) {
|
||||
if (checkSingle(p, rp)) tl++;
|
||||
}
|
||||
}
|
||||
|
||||
if (rql == tl) answer = true
|
||||
|
||||
return answer;
|
||||
}
|
||||
|
||||
export default {
|
||||
checkList,
|
||||
checkSingle
|
||||
}
|
|
@ -3,11 +3,15 @@
|
|||
"version": "0.0.1",
|
||||
"description": "A permission checker for Node JS",
|
||||
"main": "./build/index.js",
|
||||
"type": "commonjs",
|
||||
"repository": "https://github.com/ThunderNetworkRaD/template-npm-packages",
|
||||
"author": "ThunderNetworkRaD | Killer Boss Original",
|
||||
"license": "Mozilla Public License 2.0",
|
||||
"private": false,
|
||||
"dependencies": {
|
||||
"typescript": "^5.1.3"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "tsc && node ."
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
// "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
|
||||
|
||||
/* Modules */
|
||||
"module": "ESNext" /* Specify what module code is generated. */,
|
||||
"module": "NodeNext" /* Specify what module code is generated. */,
|
||||
"rootDir": "" /* Specify the root folder within your source files. */,
|
||||
"moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */,
|
||||
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
|
||||
|
@ -100,6 +100,9 @@
|
|||
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
|
||||
"skipLibCheck": true /* Skip type checking all .d.ts files. */
|
||||
},
|
||||
"ts-node": {
|
||||
"esm": true // «———— enabling ESM for ts-node
|
||||
},
|
||||
// "include": [],
|
||||
"exclude": ["node_modules", "logs", "build", "d", "test.js", "old", "tsi-*"]
|
||||
}
|
||||
|
|
Reference in a new issue