Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blob module for Cheqd, improvements for DIDDocument and misc tweaks #459

Merged
merged 12 commits into from
Oct 21, 2024
Merged
Prev Previous commit
Next Next commit
Make withDidNonce non-async function
olegnn committed Oct 18, 2024
commit 37ad9d7f6166e35e40d38c0a78735ff2bbe00fe2
62 changes: 29 additions & 33 deletions packages/dock-blockchain-modules/src/common/builders.js
Original file line number Diff line number Diff line change
@@ -30,31 +30,26 @@ export const createDIDMethodWithPolicyTx = (fnName) => {
const [didKeypair] = args.slice(root.payload[fnName].length - 2);
const { did: signer } = ensureInstanceOf(didKeypair, DidKeypair);

const signStateChange = async (maybeDidNonce) => {
const handlePayload = (maybeDidNonce) => {
// eslint-disable-next-line no-param-reassign
args[root.payload[fnName].length - 1] ??= maybeDidNonce.inc();

const { data, nonce } = root.payload[fnName].apply(this.root, args);
return root.payload[fnName].apply(this.root, args);
};

const sig = await DockDidOrDidMethodKey.from(signer).signStateChange(
root.apiProvider,
root.constructor.MethodNameOverrides?.[fnName]
?? fnNameToMethodName(fnName),
{ data, nonce },
didKeypair,
);
const { data, nonce } = args[root.payload[fnName].length - 1] == null
? await root.apiProvider.withDidNonce(didKeypair.did, handlePayload)
: handlePayload();

return await root.rawTx[fnName](data, [{ sig, nonce }]);
};
const sig = await DockDidOrDidMethodKey.from(signer).signStateChange(
root.apiProvider,
root.constructor.MethodNameOverrides?.[fnName]
?? fnNameToMethodName(fnName),
{ data, nonce },
didKeypair,
);

if (args[root.payload[fnName].length - 1] == null) {
return await root.apiProvider.withDidNonce(
didKeypair.did,
signStateChange,
);
} else {
return await signStateChange();
}
return await root.rawTx[fnName](data, [{ sig, nonce }]);
},
};

@@ -72,25 +67,26 @@ export const createDIDMethodTx = (fnName) => {
const [didKeypair] = args.slice(root.payload[fnName].length - 2);
ensureInstanceOf(didKeypair, DidKeypair);

const changeState = async (maybeDidNonce) => {
// eslint-disable-next-line
const handlePayload = (maybeDidNonce) => {
// eslint-disable-next-line no-param-reassign
args[root.payload[fnName].length - 1] ??= maybeDidNonce.inc();

return await DockDidOrDidMethodKey.from(didKeypair.did).changeState(
root.apiProvider,
root.rawTx[fnName],
root.constructor.MethodNameOverrides?.[fnName]
?? fnNameToMethodName(fnName),
root.payload[fnName].apply(this.root, args),
didKeypair,
);
return root.payload[fnName].apply(this.root, args);
};

if (args[root.payload[fnName].length - 1] == null) {
return await root.apiProvider.withDidNonce(didKeypair.did, changeState);
} else {
return await changeState();
}
const payload = args[root.payload[fnName].length - 1] == null
? await root.apiProvider.withDidNonce(didKeypair.did, handlePayload)
: handlePayload();

return await DockDidOrDidMethodKey.from(didKeypair.did).changeState(
root.apiProvider,
root.rawTx[fnName],
root.constructor.MethodNameOverrides?.[fnName]
?? fnNameToMethodName(fnName),
payload,
didKeypair,
);
},
};

Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ class DockApiProvider extends ApiProvider {
if (typeof this.dock.withDidNonce === 'function') {
return await this.dock.withDidNonce(did, fn);
} else {
return await fn(await new DockDIDModuleInternal(this).nonce(did));
return fn(await new DockDIDModuleInternal(this).nonce(did));
}
}

42 changes: 20 additions & 22 deletions packages/dock-blockchain-modules/src/trust-registry/module.js
Original file line number Diff line number Diff line change
@@ -43,28 +43,26 @@ export default class DockTrustRegistryModule extends injectDock(
}

async createRegistryTx(id, info, schemas, didKeypair) {
return await this.dockOnly.apiProvider.withDidNonce(
didKeypair.did,
async (nonce) => {
const init = await this.dockOnly.initOrUpdateTx(
info.convener,
id,
info.name,
info.govFramework,
didKeypair,
nonce.inc(),
);

const setSchemas = await this.dockOnly.setSchemasMetadataTx(
didKeypair.did,
id,
{ Set: schemas },
didKeypair,
nonce.inc(),
);

return await this.dockOnly.apiProvider.batchAll([init, setSchemas]);
},
return await this.dockOnly.apiProvider.batchAll(
await Promise.all(
this.dockOnly.apiProvider.withDidNonce(didKeypair.did, (nonce) => [
this.dockOnly.initOrUpdateTx(
info.convener,
id,
info.name,
info.govFramework,
didKeypair,
nonce.inc(),
),
this.dockOnly.setSchemasMetadataTx(
didKeypair.did,
id,
{ Set: schemas },
didKeypair,
nonce.inc(),
),
]),
),
);
}


Unchanged files with check annotations Beta

export class DidKeyValueWithRef extends withFrom(
TypedStruct,
function (value, from) {

Check warning on line 229 in packages/credential-sdk/src/types/did/document.js

GitHub Actions / lint

Unexpected unnamed function

Check warning on line 229 in packages/credential-sdk/src/types/did/document.js

GitHub Actions / lint

Unexpected unnamed function
if (typeof value === 'string') {
const [ref, key] = value.split('=');
// eslint-disable-next-line no-use-before-define