UNPKG

@walletpack/core

Version:

> TODO: description

116 lines (102 loc) 3.54 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _Hasher = _interopRequireDefault(require("../util/Hasher")); var _IdGenerator = _interopRequireDefault(require("../util/IdGenerator")); var _StoreService = _interopRequireDefault(require("../services/utility/StoreService")); var _Identity = require("./Identity"); var Permission = /*#__PURE__*/ function () { function Permission() { (0, _classCallCheck2["default"])(this, Permission); this.id = _IdGenerator["default"].numeric(24); // Mandatory this.origin = ''; this.identity = ''; this.accounts = []; // Optional this.contract = null; this.contractHash = null; this.action = null; this.mutableActionFields = []; this.immutableActionFields = []; this.timestamp = 0; this.identityRequirements = []; this.isIdentity = false; this.isIdentityRequirements = false; this.isContractAction = false; } (0, _createClass2["default"])(Permission, [{ key: "clone", value: function clone() { return Permission.fromJson(JSON.parse(JSON.stringify(this))); } }, { key: "checksum", value: function checksum() { return _Hasher["default"].unsaltedQuickHash(this.origin + this.identity + (this.accounts || []).join(',') + this.contract + this.contractHash + this.action + (this.identityRequirements || []).join(',')); } }, { key: "getIdentity", value: function getIdentity() { return _StoreService["default"].get().state.scatter.keychain.findIdentity(this.identity); } }, { key: "getAccounts", value: function getAccounts() { var accounts = _StoreService["default"].get().state.scatter.keychain.accounts; return this.accounts.map(function (unique) { return accounts.find(function (x) { return x.unique() === unique; }); }); } }, { key: "isIdentityPermissionFor", value: function isIdentityPermissionFor(origin) { return this.isIdentity && this.origin === origin; } }, { key: "asIdentityRequirements", value: function asIdentityRequirements() { return _Identity.IdentityRequiredFields.fromPermission(this.identityRequirements); } }], [{ key: "placeholder", value: function placeholder() { return new Permission(); } }, { key: "fromJson", value: function fromJson(json) { return Object.assign(this.placeholder(), json); } }, { key: "fromAction", value: function fromAction(origin, identity, accounts, added) { var base = Permission.fromJson({ origin: origin, identity: identity.id, accounts: accounts.map(function (x) { return x.unique(); }) }); return Object.assign(base, added); } }, { key: "createImmutableFieldsHash", value: function createImmutableFieldsHash(allFields, mutableFields) { return _Hasher["default"].unsaltedQuickHash(Object.keys(allFields).map(function (key) { if (!mutableFields.includes(key)) return allFields[key];else return null; }).filter(function (x) { return x; }).sort().join(',')); } }]); return Permission; }(); exports["default"] = Permission;