@cranium/access
Advanced tools
Comparing version 1.0.57 to 2.0.2
@@ -6,2 +6,18 @@ # Change Log | ||
## [2.0.2](https://github.com/alexgul4enko/bones/compare/v1.0.57...v2.0.2) (2022-11-24) | ||
**Note:** Version bump only for package @cranium/access | ||
## [2.0.1](https://github.com/alexgul4enko/bones/compare/v1.0.57...v2.0.1) (2022-11-24) | ||
**Note:** Version bump only for package @cranium/access | ||
## [1.0.57](https://github.com/alexgul4enko/bones/compare/v1.0.55...v1.0.57) (2021-03-17) | ||
@@ -8,0 +24,0 @@ |
@@ -6,36 +6,24 @@ "use strict"; | ||
}); | ||
exports.AccessProvider = AccessProvider; | ||
exports.composeAccess = composeAccess; | ||
exports.composeAccess = exports.CheckAccess = exports.AccessProvider = void 0; | ||
exports.hasPermission = hasPermission; | ||
exports.useHasAccess = useHasAccess; | ||
exports.usePermissions = usePermissions; | ||
exports.hasPermission = hasPermission; | ||
exports.CheckAccess = CheckAccess; | ||
exports.F_PUBLIC = void 0; | ||
var _propTypes = _interopRequireDefault(require("prop-types")); | ||
var _react = require("react"); | ||
var _jsxRuntime = require("react/jsx-runtime"); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var _excluded = ["children", "acessLevels"]; | ||
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } | ||
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | ||
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | ||
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } | ||
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } | ||
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } | ||
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } | ||
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } | ||
var F_PUBLIC = undefined; | ||
exports.F_PUBLIC = F_PUBLIC; | ||
var AcessContext = (0, _react.createContext)('access'); | ||
AccessProvider.propTypes = { | ||
children: _propTypes.default.node.isRequired, | ||
acessLevels: _propTypes.default.func.isRequired | ||
}; | ||
function AccessProvider(_ref) { | ||
var AcessContext = (0, _react.createContext)(new Set()); | ||
var AccessProvider = function AccessProvider(_ref) { | ||
var children = _ref.children, | ||
acessLevels = _ref.acessLevels, | ||
props = _objectWithoutProperties(_ref, ["children", "acessLevels"]); | ||
acessLevels = _ref.acessLevels, | ||
props = _objectWithoutProperties(_ref, _excluded); | ||
var permissions = (0, _react.useMemo)(function () { | ||
return acessLevels(props); | ||
return typeof acessLevels === 'function' ? acessLevels(props) : new Set(); | ||
}, [acessLevels, props]); | ||
@@ -46,41 +34,56 @@ return (0, _jsxRuntime.jsx)(AcessContext.Provider, { | ||
}); | ||
} | ||
function composeAccess() { | ||
var calculateLeveles = Array.prototype.slice.call(arguments); | ||
}; | ||
exports.AccessProvider = AccessProvider; | ||
var composeAccess = function composeAccess() { | ||
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { | ||
args[_key] = arguments[_key]; | ||
} | ||
return function (props) { | ||
return new Set(calculateLeveles.map(function (rule) { | ||
return rule(props); | ||
}).filter(Boolean)); | ||
return new Set(args.reduce(function (res, rule) { | ||
if (typeof rule !== 'function') { | ||
return res; | ||
} | ||
var rules = rule(props); | ||
if (Array.isArray(rules)) { | ||
return [].concat(_toConsumableArray(res), _toConsumableArray(rules)); | ||
} | ||
return [].concat(_toConsumableArray(res), [rules]); | ||
}, []).filter(Boolean)); | ||
}; | ||
} | ||
}; | ||
exports.composeAccess = composeAccess; | ||
function usePermissions() { | ||
return (0, _react.useContext)(AcessContext); | ||
} | ||
function hasPermission(levels) { | ||
if (!levels) { | ||
function useHasAccess(access, operator) { | ||
if (!access) { | ||
return true; | ||
} | ||
var userPermissions = (0, _react.useContext)(AcessContext); | ||
return (0, _react.useMemo)(function () { | ||
if (Array.isArray(levels)) { | ||
return levels.some(function (level) { | ||
if (Array.isArray(access)) { | ||
var operation = operator === 'SOME' ? 'some' : 'every'; | ||
return access[operation](function (level) { | ||
return userPermissions.has(level); | ||
}); | ||
} | ||
return userPermissions.has(levels); | ||
}, [userPermissions, levels]); | ||
return userPermissions.has(access); | ||
}, [userPermissions, access]); | ||
} | ||
function CheckAccess(_ref2) { | ||
var level = _ref2.level, | ||
_ref2$fallback = _ref2.fallback, | ||
fallback = _ref2$fallback === void 0 ? null : _ref2$fallback, | ||
children = _ref2.children; | ||
return hasPermission(level) ? children : fallback; | ||
function hasPermission(access, operator) { | ||
return useHasAccess(access, operator); | ||
} | ||
var CheckAccess = function CheckAccess(_ref2) { | ||
var access = _ref2.access, | ||
operator = _ref2.operator, | ||
_ref2$fallback = _ref2.fallback, | ||
fallback = _ref2$fallback === void 0 ? null : _ref2$fallback, | ||
children = _ref2.children; | ||
return useHasAccess(access, operator) ? (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, { | ||
children: children | ||
}) : (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, { | ||
children: fallback | ||
}); | ||
}; | ||
exports.CheckAccess = CheckAccess; | ||
//# sourceMappingURL=access.js.map |
@@ -1,17 +0,1 @@ | ||
declare module '@cranium/access' { | ||
import { FC, ReactNode } from 'react' | ||
interface CheckAccessProps = { | ||
level: string | Array<string> | ||
fallback?: ReactNode | ||
} | ||
export const composeAccess = <R>( | ||
fn1: (...args: any[]):string, | ||
...fns: Array<(a: R) => R> | ||
) | ||
export const AccessProvider:FC<any> | ||
export const CheckAccess:FC<CheckAccessProps, any> | ||
export function hasPermission(params:string|string[]):boolean | ||
export function usePermissions():Set<string> | ||
} | ||
export * from './access'; |
@@ -6,40 +6,13 @@ "use strict"; | ||
}); | ||
Object.defineProperty(exports, "AccessProvider", { | ||
enumerable: true, | ||
get: function get() { | ||
return _access.AccessProvider; | ||
} | ||
var _access = require("./access"); | ||
Object.keys(_access).forEach(function (key) { | ||
if (key === "default" || key === "__esModule") return; | ||
if (key in exports && exports[key] === _access[key]) return; | ||
Object.defineProperty(exports, key, { | ||
enumerable: true, | ||
get: function get() { | ||
return _access[key]; | ||
} | ||
}); | ||
}); | ||
Object.defineProperty(exports, "F_PUBLIC", { | ||
enumerable: true, | ||
get: function get() { | ||
return _access.F_PUBLIC; | ||
} | ||
}); | ||
Object.defineProperty(exports, "composeAccess", { | ||
enumerable: true, | ||
get: function get() { | ||
return _access.composeAccess; | ||
} | ||
}); | ||
Object.defineProperty(exports, "usePermissions", { | ||
enumerable: true, | ||
get: function get() { | ||
return _access.usePermissions; | ||
} | ||
}); | ||
Object.defineProperty(exports, "hasPermission", { | ||
enumerable: true, | ||
get: function get() { | ||
return _access.hasPermission; | ||
} | ||
}); | ||
Object.defineProperty(exports, "CheckAccess", { | ||
enumerable: true, | ||
get: function get() { | ||
return _access.CheckAccess; | ||
} | ||
}); | ||
var _access = require("./access"); | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@cranium/access", | ||
"version": "1.0.57", | ||
"version": "2.0.2", | ||
"description": "React access manager", | ||
@@ -13,2 +13,3 @@ "author": "Sasha <aleksandr.gulchenko@gmail.com>", | ||
"main": "dist/index.js", | ||
"types": "dist/index.d.ts", | ||
"directories": { | ||
@@ -29,3 +30,5 @@ "lib": "lib" | ||
"test": "echo \"Error: run tests from root\" && exit 1", | ||
"build": "BABEL_ENV=build babel lib --out-dir dist --source-maps --copy-files --extensions .js --delete-dir-on-start --config-file ../../babel.config.js --no-comments", | ||
"compile-js": "BABEL_ENV=build babel lib --out-dir dist --source-maps --copy-files --extensions .js,.ts,.tsx --delete-dir-on-start --config-file ../../babel.config.js --no-comments", | ||
"compile-ts": "tsc", | ||
"build": "npm run compile-js && npm run compile-ts", | ||
"prerelease": "yarn build", | ||
@@ -37,9 +40,3 @@ "release": "lerna publish" | ||
}, | ||
"peerDependencies": { | ||
"react": "^17.0.1" | ||
}, | ||
"devDependencies": { | ||
"prop-types": "^15.7.2" | ||
}, | ||
"gitHead": "889f95e9301b3cb7b8faf328ad13aa4370c08aa4" | ||
"gitHead": "90f67aad4839ae4a475bbb32d41d35a543b21257" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
13680
0
0
0
127