@civic/sol-did-client
Version:
A powerful DID-method on Solana
101 lines • 4.07 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDefaultRawDidSolDataAccount = exports.DidAccountSizeHelper = void 0;
const types_1 = require("./lib/types");
const utils_1 = require("./lib/utils");
const bn_js_1 = __importDefault(require("bn.js"));
class DidAccountSizeHelper {
constructor(didAccount) {
this.didAccount = didAccount;
}
static getServiceSize(service) {
if (!service) {
return 0;
}
return (4 +
(0, utils_1.getBinarySize)(service.fragment) + // String: fragment binary size
4 +
(0, utils_1.getBinarySize)(service.serviceType) +
4 +
(0, utils_1.getBinarySize)(service.serviceEndpoint));
}
static getVerificationMethodSize(verificationMethod) {
if (!verificationMethod) {
return 0;
}
return (4 +
(0, utils_1.getBinarySize)(verificationMethod.fragment) + // String: fragment binary size
2 + // flags
1 + // method
4 +
verificationMethod.keyData.length); // keyData Vector<u8>
}
static getVerificationMethodDefaultSize() {
return (4 +
7 + // String: "default"
2 + // flags
1 + // method
4 +
32); // Vec<u8>[32] ed25519 pubkey
}
getDidAccountSize() {
return (1 + // version
1 + // bump
8 + // nonce
DidAccountSizeHelper.getVerificationMethodDefaultSize() + // initial_authority
4 +
this.didAccount.verificationMethods.reduce((acc, cur) => acc + DidAccountSizeHelper.getVerificationMethodSize(cur), 0) + // verification_methods
// + 4 + self.verification_methods.iter().fold(0, | accum, item| { accum + item.size() }) // verification_methods
4 +
this.didAccount.services.reduce((acc, cur) => acc + DidAccountSizeHelper.getServiceSize(cur), 0) + // services
// + 4 + self.services.iter().fold(0, | accum, item| { accum + item.size() }) // services
4 +
this.didAccount.nativeControllers.length * 32 + // native_controllers
// + 4 + self.native_controllers.len() * 32 // native_controllers
4 +
this.didAccount.otherControllers.reduce((acc, cur) => acc + 4 + (0, utils_1.getBinarySize)(cur), 0)); // other_controllers
//+ 4 + self.other_controllers.iter().fold(0, | accum, item| { accum + 4 + item.len() })
}
getTotalNativeAccountSize() {
return (8 + // anchor discriminator
this.getDidAccountSize());
}
static getTotalInitialNativeAccountSize() {
return (8 + // anchor discriminator
this.getInitialDidAccountSize());
}
static getInitialDidAccountSize() {
return (1 + // version
1 + // bump
8 + // nonce
DidAccountSizeHelper.getVerificationMethodDefaultSize() + // initial_authority
4 + // verification_methods
4 + // services
4 + // native_controllers
4); // other_controllers
}
static fromAccount(didAccount) {
return new DidAccountSizeHelper(didAccount);
}
}
exports.DidAccountSizeHelper = DidAccountSizeHelper;
const getDefaultRawDidSolDataAccount = (authority) => ({
version: 0,
bump: 0,
nonce: new bn_js_1.default(0),
initialVerificationMethod: {
fragment: 'default',
flags: types_1.BitwiseVerificationMethodFlag.CapabilityInvocation,
methodType: types_1.VerificationMethodType.Ed25519VerificationKey2018,
keyData: authority.toBuffer(),
},
verificationMethods: [],
services: [],
nativeControllers: [],
otherControllers: [],
});
exports.getDefaultRawDidSolDataAccount = getDefaultRawDidSolDataAccount;
//# sourceMappingURL=DidAccountSizeHelper.js.map