@nevermined-io/core-kit 0.0.14 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Instantiable.abstract.js +1 -1
- package/dist/artifacts/generated.d.ts +847 -37
- package/dist/artifacts/generated.d.ts.map +1 -1
- package/dist/artifacts/generated.js +263 -16
- package/dist/contracts/AssetRegistry.d.ts +2 -2
- package/dist/contracts/AssetRegistry.d.ts.map +1 -1
- package/dist/contracts/AssetRegistry.js +2 -2
- package/dist/nevermined/api/PaymentsApi.d.ts.map +1 -1
- package/dist/nevermined/api/PaymentsApi.js +4 -0
- package/dist/utils/helpers.d.ts +9 -7
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +66 -14
- package/package.json +17 -1
|
@@ -25,8 +25,8 @@ export declare class AssetRegistry extends ContractBase {
|
|
|
25
25
|
isTrialPlan?: boolean;
|
|
26
26
|
txParams?: TxParameters;
|
|
27
27
|
}): Promise<TransactionReceipt | UserOperationReceipt>;
|
|
28
|
-
registerAssetAndPlan({
|
|
29
|
-
|
|
28
|
+
registerAssetAndPlan({ didSeed, url, priceConfig, creditsConfig, owner, addFees, txParams, }: {
|
|
29
|
+
didSeed: string;
|
|
30
30
|
url: string;
|
|
31
31
|
priceConfig: PriceConfig;
|
|
32
32
|
creditsConfig: CreditsConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetRegistry.d.ts","sourceRoot":"","sources":["../../src/contracts/AssetRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC/F,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAa,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAS7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,qBAAa,aAAc,SAAQ,YAAY;WAChB,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IAS/E,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMxC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvC,QAAQ,CAAC,EACpB,OAAO,EACP,GAAG,EACH,KAAK,EACL,KAAK,EACL,QAAQ,GACT,EAAE;QACD,OAAO,EAAE,MAAM,CAAA;QACf,GAAG,EAAE,MAAM,CAAA;QACX,KAAK,EAAE,MAAM,EAAE,CAAA;QACf,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;QAC7B,QAAQ,CAAC,EAAE,YAAY,CAAA;KACxB,GAAG,OAAO,CAAC,kBAAkB,GAAG,oBAAoB,CAAC;IAIzC,UAAU,CAAC,EACtB,WAAW,EACX,aAAa,EACb,KAAK,EACL,KAAU,EACV,OAAc,EACd,WAAmB,EACnB,QAAQ,GACT,EAAE;QACD,WAAW,EAAE,WAAW,CAAA;QACxB,aAAa,EAAE,aAAa,CAAA;QAC5B,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,QAAQ,CAAC,EAAE,YAAY,CAAA;KACxB,GAAG,OAAO,CAAC,kBAAkB,GAAG,oBAAoB,CAAC;IAqBzC,oBAAoB,CAAC,EAChC,
|
|
1
|
+
{"version":3,"file":"AssetRegistry.d.ts","sourceRoot":"","sources":["../../src/contracts/AssetRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,9 +36,9 @@ export class AssetRegistry extends ContractBase {
|
|
|
36
36
|
return this.send('createPlan', owner, [_config.priceConfig, _config.creditsConfig, nonce], txParams);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
async registerAssetAndPlan({
|
|
39
|
+
async registerAssetAndPlan({ didSeed, url, priceConfig, creditsConfig, owner, addFees = true, txParams, }) {
|
|
40
40
|
const _config = await this.planConfigPreFilter(priceConfig, creditsConfig, addFees);
|
|
41
|
-
return this.send('registerAssetAndPlan', owner, [didZeroX(
|
|
41
|
+
return this.send('registerAssetAndPlan', owner, [didZeroX(didSeed), url, _config.priceConfig, _config.creditsConfig], txParams);
|
|
42
42
|
}
|
|
43
43
|
async getPlan(planId) {
|
|
44
44
|
const plan = this.contract.read.getPlan([planId]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentsApi.d.ts","sourceRoot":"","sources":["../../../src/nevermined/api/PaymentsApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAoC,MAAM,MAAM,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,IAAI,EAA8B,MAAM,uBAAuB,CAAA;AAQrF,qBAAa,WAAY,SAAQ,YAAY;IAC3C;;;;OAIG;gBACS,MAAM,EAAE,kBAAkB;IAKzB,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB7E,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAChD,aAAa,EAAE,MAAM,CAAA;QACrB,WAAW,EAAE,MAAM,CAAA;QACnB,cAAc,EAAE,MAAM,CAAA;QACtB,WAAW,EAAE,MAAM,CAAA;KACpB,CAAC;IAkCW,gBAAgB,CAC3B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,OAAO,EACrB,IAAI,EAAE,OAAO,GAAG,YAAY,GAC3B,OAAO,CAAC,WAAW,CAAC;IA0BV,kBAAkB,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,OAAO,GAAG,YAAY,GAC3B,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"PaymentsApi.d.ts","sourceRoot":"","sources":["../../../src/nevermined/api/PaymentsApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAoC,MAAM,MAAM,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,IAAI,EAA8B,MAAM,uBAAuB,CAAA;AAQrF,qBAAa,WAAY,SAAQ,YAAY;IAC3C;;;;OAIG;gBACS,MAAM,EAAE,kBAAkB;IAKzB,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB7E,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAChD,aAAa,EAAE,MAAM,CAAA;QACrB,WAAW,EAAE,MAAM,CAAA;QACnB,cAAc,EAAE,MAAM,CAAA;QACtB,WAAW,EAAE,MAAM,CAAA;KACpB,CAAC;IAkCW,gBAAgB,CAC3B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,OAAO,EACrB,IAAI,EAAE,OAAO,GAAG,YAAY,GAC3B,OAAO,CAAC,WAAW,CAAC;IA0BV,kBAAkB,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,OAAO,GAAG,YAAY,GAC3B,OAAO,CAAC,WAAW,CAAC;CAsFxB"}
|
|
@@ -101,6 +101,10 @@ export class PaymentsApi extends Instantiable {
|
|
|
101
101
|
else {
|
|
102
102
|
txHash = await this.nevermined.contracts.fixedPaymentTemplate.createAgreement(planId, from);
|
|
103
103
|
}
|
|
104
|
+
if (!txHash) {
|
|
105
|
+
this.logger.error('Error in PaymentsApi order method: txHash not defined');
|
|
106
|
+
throw new Error('txHash not defined');
|
|
107
|
+
}
|
|
104
108
|
const txReceipt = await this.nevermined.contracts.assetRegistry.getTransactionReceipt(txHash);
|
|
105
109
|
return {
|
|
106
110
|
txHash: txReceipt.transactionHash,
|
package/dist/utils/helpers.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { SearchQuery } from '@nvm-monorepo/commons';
|
|
2
2
|
import { URL } from 'whatwg-url';
|
|
3
|
+
interface ECIES {
|
|
4
|
+
iv: Buffer;
|
|
5
|
+
ephemPublicKey: Buffer;
|
|
6
|
+
ciphertext: Buffer;
|
|
7
|
+
mac: Buffer;
|
|
8
|
+
}
|
|
3
9
|
export declare const buildQuery: (url: string, query?: SearchQuery) => URL;
|
|
4
10
|
export declare const getCircularReplacer: () => (_key: string, value: unknown) => unknown;
|
|
5
11
|
export declare const jsonReplacer: (_key: string, value: unknown) => unknown;
|
|
@@ -10,12 +16,8 @@ export declare function _sleep(ms: number): Promise<unknown>;
|
|
|
10
16
|
export declare function urlSafeBase64Encode(input: Uint8Array): string;
|
|
11
17
|
export declare function urlSafeBase64Decode(input: string): Uint8Array;
|
|
12
18
|
export declare function encryptMessage(message: string, receiverPublicKey: string): Promise<string>;
|
|
19
|
+
export declare function serializeECIES(ecies: ECIES): string;
|
|
20
|
+
export declare function deserializeECIES(serialized: string): ECIES;
|
|
13
21
|
export declare function decryptMessage(encryptedMessage: string, privateKey: string | any): Promise<string>;
|
|
14
|
-
export
|
|
15
|
-
export declare function deserializeECIES(serialized: any): {
|
|
16
|
-
iv: Buffer<ArrayBuffer>;
|
|
17
|
-
ephemPublicKey: Buffer<ArrayBuffer>;
|
|
18
|
-
ciphertext: Buffer<ArrayBuffer>;
|
|
19
|
-
mac: Buffer<ArrayBuffer>;
|
|
20
|
-
};
|
|
22
|
+
export {};
|
|
21
23
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAInD,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAInD,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAIhC,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAA;IACV,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,EAAE,QAAQ,WAAW,QAY1D,CAAA;AAED,eAAO,MAAM,mBAAmB,SAEtB,MAAM,MAAM,EAAE,OAAO,OAAO,YASrC,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,OAAO,OAAO,YAGxD,CAAA;AAED,wBAAgB,eAAe,CAAC,IAAI,SAAM,GAAG,MAAM,CAWlD;AAED,wBAAgB,UAAU,CAAC,MAAM,SAAK,UAMrC;AAED,wBAAgB,eAAe,IAAI,KAAK,MAAM,EAAE,CAE/C;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,oBAEhC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAO7D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAY7D;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,mBAmB9E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,UAoB1C;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAyB1D;AAED,wBAAsB,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG,mBAqBtF"}
|
package/dist/utils/helpers.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { decrypt, encrypt } from '
|
|
1
|
+
import { decrypt, encrypt } from 'eciesjs';
|
|
2
2
|
import { v4 } from 'uuid';
|
|
3
3
|
import { keccak256, toBytes } from 'viem';
|
|
4
4
|
import { URL } from 'whatwg-url';
|
|
@@ -76,18 +76,34 @@ export function urlSafeBase64Decode(input) {
|
|
|
76
76
|
export async function encryptMessage(message, receiverPublicKey) {
|
|
77
77
|
const publicKeyBuffer = Buffer.from(noZeroX(receiverPublicKey), 'hex');
|
|
78
78
|
const messageBuffer = Buffer.from(message);
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
79
|
+
try {
|
|
80
|
+
const ecies = await encrypt(publicKeyBuffer, messageBuffer);
|
|
81
|
+
// Handle both cases: when encrypt returns a Buffer or an ECIES object
|
|
82
|
+
if (Buffer.isBuffer(ecies)) {
|
|
83
|
+
// If it returns a Buffer, we need to handle it differently
|
|
84
|
+
// This might be the case with some versions of eciesjs
|
|
85
|
+
return ecies.toString('base64');
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// If it returns an ECIES object, serialize it
|
|
89
|
+
return serializeECIES(ecies);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
throw new Error(`Encryption failed: ${error}`);
|
|
94
|
+
}
|
|
89
95
|
}
|
|
90
96
|
export function serializeECIES(ecies) {
|
|
97
|
+
// Validate that all required properties exist
|
|
98
|
+
if (!ecies || typeof ecies !== 'object') {
|
|
99
|
+
throw new Error('Invalid ECIES object: must be a valid object');
|
|
100
|
+
}
|
|
101
|
+
const requiredProps = ['iv', 'ephemPublicKey', 'ciphertext', 'mac'];
|
|
102
|
+
for (const prop of requiredProps) {
|
|
103
|
+
if (!ecies[prop]) {
|
|
104
|
+
throw new Error(`Invalid ECIES object: missing required property '${prop}'`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
91
107
|
const serialized = JSON.stringify({
|
|
92
108
|
iv: Buffer.from(ecies.iv).toString('base64'),
|
|
93
109
|
ephemPublicKey: Buffer.from(ecies.ephemPublicKey).toString('base64'),
|
|
@@ -95,11 +111,24 @@ export function serializeECIES(ecies) {
|
|
|
95
111
|
mac: Buffer.from(ecies.mac).toString('base64'),
|
|
96
112
|
});
|
|
97
113
|
return serialized;
|
|
98
|
-
//return Buffer.from(serialized).toString('binary')
|
|
99
114
|
}
|
|
100
115
|
export function deserializeECIES(serialized) {
|
|
101
|
-
|
|
102
|
-
|
|
116
|
+
if (!serialized || typeof serialized !== 'string') {
|
|
117
|
+
throw new Error('Invalid serialized ECIES: must be a valid string');
|
|
118
|
+
}
|
|
119
|
+
let _obj;
|
|
120
|
+
try {
|
|
121
|
+
_obj = JSON.parse(serialized);
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
throw new Error('Invalid serialized ECIES: not a valid JSON string');
|
|
125
|
+
}
|
|
126
|
+
const requiredProps = ['iv', 'ephemPublicKey', 'ciphertext', 'mac'];
|
|
127
|
+
for (const prop of requiredProps) {
|
|
128
|
+
if (!_obj[prop]) {
|
|
129
|
+
throw new Error(`Invalid serialized ECIES: missing required property '${prop}'`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
103
132
|
return {
|
|
104
133
|
iv: Buffer.from(_obj.iv, 'base64'),
|
|
105
134
|
ephemPublicKey: Buffer.from(_obj.ephemPublicKey, 'base64'),
|
|
@@ -107,3 +136,26 @@ export function deserializeECIES(serialized) {
|
|
|
107
136
|
mac: Buffer.from(_obj.mac, 'base64'),
|
|
108
137
|
};
|
|
109
138
|
}
|
|
139
|
+
export async function decryptMessage(encryptedMessage, privateKey) {
|
|
140
|
+
const pk = typeof privateKey === 'string' ? noZeroX(privateKey) : privateKey;
|
|
141
|
+
const privateKeyBuffer = Buffer.from(pk, 'hex');
|
|
142
|
+
// Try to parse as JSON first (ECIES object)
|
|
143
|
+
try {
|
|
144
|
+
const ecies = deserializeECIES(encryptedMessage);
|
|
145
|
+
// For eciesjs, we need to serialize the ECIES object back to a buffer
|
|
146
|
+
const eciesBuffer = Buffer.concat([ecies.iv, ecies.ephemPublicKey, ecies.ciphertext, ecies.mac]);
|
|
147
|
+
const decrypted = await decrypt(privateKeyBuffer, eciesBuffer);
|
|
148
|
+
return decrypted.toString();
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
// If JSON parsing fails, try as base64 Buffer
|
|
152
|
+
try {
|
|
153
|
+
const encryptedBuffer = Buffer.from(encryptedMessage, 'base64');
|
|
154
|
+
const decrypted = await decrypt(privateKeyBuffer, encryptedBuffer);
|
|
155
|
+
return decrypted.toString();
|
|
156
|
+
}
|
|
157
|
+
catch (secondError) {
|
|
158
|
+
throw new Error(`Failed to decrypt message: ${secondError}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nevermined-io/core-kit",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -26,6 +26,22 @@
|
|
|
26
26
|
],
|
|
27
27
|
"nx": {
|
|
28
28
|
"targets": {
|
|
29
|
+
"e2e": {
|
|
30
|
+
"executor": "nx:run-commands",
|
|
31
|
+
"options": {
|
|
32
|
+
"command": "NODE_OPTIONS='--loader ts-node/esm' mocha --config ./tests/integration/.mocharc.json",
|
|
33
|
+
"cwd": "packages/core-kit"
|
|
34
|
+
},
|
|
35
|
+
"dependsOn": [
|
|
36
|
+
"^build",
|
|
37
|
+
{
|
|
38
|
+
"target": "build",
|
|
39
|
+
"projects": [
|
|
40
|
+
"@nvm-monorepo/commons"
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
29
45
|
"e2e:external": {
|
|
30
46
|
"executor": "nx:run-commands",
|
|
31
47
|
"options": {
|