@objectid/oid-provider 1.0.6
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/README.md +67 -0
- package/dist/api.d.ts +30 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +41 -0
- package/dist/api.js.map +1 -0
- package/dist/env.d.ts +28 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +114 -0
- package/dist/env.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/methods/component.d.ts +18 -0
- package/dist/methods/component.d.ts.map +1 -0
- package/dist/methods/component.js +58 -0
- package/dist/methods/component.js.map +1 -0
- package/dist/methods/counter.d.ts +43 -0
- package/dist/methods/counter.d.ts.map +1 -0
- package/dist/methods/counter.js +144 -0
- package/dist/methods/counter.js.map +1 -0
- package/dist/methods/document.d.ts +90 -0
- package/dist/methods/document.d.ts.map +1 -0
- package/dist/methods/document.js +332 -0
- package/dist/methods/document.js.map +1 -0
- package/dist/methods/event.d.ts +26 -0
- package/dist/methods/event.d.ts.map +1 -0
- package/dist/methods/event.js +107 -0
- package/dist/methods/event.js.map +1 -0
- package/dist/methods/index.d.ts +7 -0
- package/dist/methods/index.d.ts.map +1 -0
- package/dist/methods/index.js +7 -0
- package/dist/methods/index.js.map +1 -0
- package/dist/methods/object.d.ts +74 -0
- package/dist/methods/object.d.ts.map +1 -0
- package/dist/methods/object.js +293 -0
- package/dist/methods/object.js.map +1 -0
- package/dist/methods/objectMessages.d.ts +30 -0
- package/dist/methods/objectMessages.d.ts.map +1 -0
- package/dist/methods/objectMessages.js +144 -0
- package/dist/methods/objectMessages.js.map +1 -0
- package/dist/methods.d.ts +2 -0
- package/dist/methods.d.ts.map +1 -0
- package/dist/methods.js +2 -0
- package/dist/methods.js.map +1 -0
- package/dist/oid/caps.d.ts +8 -0
- package/dist/oid/caps.d.ts.map +1 -0
- package/dist/oid/caps.js +61 -0
- package/dist/oid/caps.js.map +1 -0
- package/dist/oid/credit.d.ts +7 -0
- package/dist/oid/credit.d.ts.map +1 -0
- package/dist/oid/credit.js +48 -0
- package/dist/oid/credit.js.map +1 -0
- package/dist/oid/graphql.d.ts +4 -0
- package/dist/oid/graphql.d.ts.map +1 -0
- package/dist/oid/graphql.js +69 -0
- package/dist/oid/graphql.js.map +1 -0
- package/dist/oid/index.d.ts +92 -0
- package/dist/oid/index.d.ts.map +1 -0
- package/dist/oid/index.js +378 -0
- package/dist/oid/index.js.map +1 -0
- package/dist/oid/ownedObjects.d.ts +9 -0
- package/dist/oid/ownedObjects.d.ts.map +1 -0
- package/dist/oid/ownedObjects.js +38 -0
- package/dist/oid/ownedObjects.js.map +1 -0
- package/dist/onchain/config.d.ts +37 -0
- package/dist/onchain/config.d.ts.map +1 -0
- package/dist/onchain/config.js +109 -0
- package/dist/onchain/config.js.map +1 -0
- package/dist/onchain/defaults.d.ts +13 -0
- package/dist/onchain/defaults.d.ts.map +1 -0
- package/dist/onchain/defaults.js +17 -0
- package/dist/onchain/defaults.js.map +1 -0
- package/dist/onchain/getObjects.d.ts +17 -0
- package/dist/onchain/getObjects.d.ts.map +1 -0
- package/dist/onchain/getObjects.js +112 -0
- package/dist/onchain/getObjects.js.map +1 -0
- package/dist/onchain/identity.d.ts +2 -0
- package/dist/onchain/identity.d.ts.map +1 -0
- package/dist/onchain/identity.js +9 -0
- package/dist/onchain/identity.js.map +1 -0
- package/dist/react/ObjectIdProvider.d.ts +53 -0
- package/dist/react/ObjectIdProvider.d.ts.map +1 -0
- package/dist/react/ObjectIdProvider.js +431 -0
- package/dist/react/ObjectIdProvider.js.map +1 -0
- package/dist/react/index.d.ts +4 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +3 -0
- package/dist/react/index.js.map +1 -0
- package/dist/types/documentData.d.ts +25 -0
- package/dist/types/documentData.d.ts.map +1 -0
- package/dist/types/documentData.js +2 -0
- package/dist/types/documentData.js.map +1 -0
- package/dist/types/objectData.d.ts +24 -0
- package/dist/types/objectData.d.ts.map +1 -0
- package/dist/types/objectData.js +2 -0
- package/dist/types/objectData.js.map +1 -0
- package/dist/types/types.d.ts +65 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +2 -0
- package/dist/types/types.js.map +1 -0
- package/dist/utils/geolocation.d.ts +1 -0
- package/dist/utils/geolocation.d.ts.map +1 -0
- package/dist/utils/geolocation.js +2 -0
- package/dist/utils/geolocation.js.map +1 -0
- package/dist/utils/getObject.d.ts +3 -0
- package/dist/utils/getObject.d.ts.map +1 -0
- package/dist/utils/getObject.js +18 -0
- package/dist/utils/getObject.js.map +1 -0
- package/dist/utils/getObjectData.d.ts +4 -0
- package/dist/utils/getObjectData.d.ts.map +1 -0
- package/dist/utils/getObjectData.js +26 -0
- package/dist/utils/getObjectData.js.map +1 -0
- package/dist/utils/graphql.d.ts +3 -0
- package/dist/utils/graphql.d.ts.map +1 -0
- package/dist/utils/graphql.js +35 -0
- package/dist/utils/graphql.js.map +1 -0
- package/dist/utils/tx.d.ts +21 -0
- package/dist/utils/tx.d.ts.map +1 -0
- package/dist/utils/tx.js +125 -0
- package/dist/utils/tx.js.map +1 -0
- package/dist/utils/url.d.ts +10 -0
- package/dist/utils/url.d.ts.map +1 -0
- package/dist/utils/url.js +24 -0
- package/dist/utils/url.js.map +1 -0
- package/dist-cjs/api.js +44 -0
- package/dist-cjs/api.js.map +1 -0
- package/dist-cjs/env.js +118 -0
- package/dist-cjs/env.js.map +1 -0
- package/dist-cjs/index.js +44 -0
- package/dist-cjs/index.js.map +1 -0
- package/dist-cjs/methods/component.js +62 -0
- package/dist-cjs/methods/component.js.map +1 -0
- package/dist-cjs/methods/counter.js +151 -0
- package/dist-cjs/methods/counter.js.map +1 -0
- package/dist-cjs/methods/document.js +348 -0
- package/dist-cjs/methods/document.js.map +1 -0
- package/dist-cjs/methods/event.js +112 -0
- package/dist-cjs/methods/event.js.map +1 -0
- package/dist-cjs/methods/index.js +23 -0
- package/dist-cjs/methods/index.js.map +1 -0
- package/dist-cjs/methods/object.js +305 -0
- package/dist-cjs/methods/object.js.map +1 -0
- package/dist-cjs/methods/objectMessages.js +151 -0
- package/dist-cjs/methods/objectMessages.js.map +1 -0
- package/dist-cjs/methods.js +18 -0
- package/dist-cjs/methods.js.map +1 -0
- package/dist-cjs/oid/caps.js +65 -0
- package/dist-cjs/oid/caps.js.map +1 -0
- package/dist-cjs/oid/credit.js +51 -0
- package/dist-cjs/oid/credit.js.map +1 -0
- package/dist-cjs/oid/graphql.js +73 -0
- package/dist-cjs/oid/graphql.js.map +1 -0
- package/dist-cjs/oid/index.js +381 -0
- package/dist-cjs/oid/index.js.map +1 -0
- package/dist-cjs/oid/ownedObjects.js +41 -0
- package/dist-cjs/oid/ownedObjects.js.map +1 -0
- package/dist-cjs/onchain/config.js +118 -0
- package/dist-cjs/onchain/config.js.map +1 -0
- package/dist-cjs/onchain/defaults.js +20 -0
- package/dist-cjs/onchain/defaults.js.map +1 -0
- package/dist-cjs/onchain/getObjects.js +117 -0
- package/dist-cjs/onchain/getObjects.js.map +1 -0
- package/dist-cjs/onchain/identity.js +10 -0
- package/dist-cjs/onchain/identity.js.map +1 -0
- package/dist-cjs/package.json +3 -0
- package/dist-cjs/react/ObjectIdProvider.js +437 -0
- package/dist-cjs/react/ObjectIdProvider.js.map +1 -0
- package/dist-cjs/react/index.js +10 -0
- package/dist-cjs/react/index.js.map +1 -0
- package/dist-cjs/types/documentData.js +3 -0
- package/dist-cjs/types/documentData.js.map +1 -0
- package/dist-cjs/types/objectData.js +3 -0
- package/dist-cjs/types/objectData.js.map +1 -0
- package/dist-cjs/types/types.js +3 -0
- package/dist-cjs/types/types.js.map +1 -0
- package/dist-cjs/utils/geolocation.js +2 -0
- package/dist-cjs/utils/geolocation.js.map +1 -0
- package/dist-cjs/utils/getObject.js +21 -0
- package/dist-cjs/utils/getObject.js.map +1 -0
- package/dist-cjs/utils/getObjectData.js +29 -0
- package/dist-cjs/utils/getObjectData.js.map +1 -0
- package/dist-cjs/utils/graphql.js +38 -0
- package/dist-cjs/utils/graphql.js.map +1 -0
- package/dist-cjs/utils/tx.js +128 -0
- package/dist-cjs/utils/tx.js.map +1 -0
- package/dist-cjs/utils/url.js +27 -0
- package/dist-cjs/utils/url.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geolocation.js","sourceRoot":"","sources":["../../src/utils/geolocation.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getObject = getObject;
|
|
4
|
+
async function getObject(client, id) {
|
|
5
|
+
if (!id)
|
|
6
|
+
return {};
|
|
7
|
+
const { data } = await client.getObject({
|
|
8
|
+
id,
|
|
9
|
+
options: {
|
|
10
|
+
showType: true,
|
|
11
|
+
showOwner: true,
|
|
12
|
+
showPreviousTransaction: false,
|
|
13
|
+
showDisplay: true,
|
|
14
|
+
showContent: true,
|
|
15
|
+
showBcs: true,
|
|
16
|
+
showStorageRebate: false,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=getObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getObject.js","sourceRoot":"","sources":["../../src/utils/getObject.ts"],"names":[],"mappings":";;AAEA,8BAgBC;AAhBM,KAAK,UAAU,SAAS,CAAC,MAAkB,EAAE,EAAU;IAC5D,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IAEnB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC;QACtC,EAAE;QACF,OAAO,EAAE;YACP,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,uBAAuB,EAAE,KAAK;YAC9B,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,IAAI;YACb,iBAAiB,EAAE,KAAK;SACzB;KACF,CAAC,CAAC;IACH,OAAO,IAAsB,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getObjectData = getObjectData;
|
|
4
|
+
const getObject_1 = require("./getObject");
|
|
5
|
+
const debug = false;
|
|
6
|
+
async function getObjectData(client, network, oid) {
|
|
7
|
+
try {
|
|
8
|
+
const localNetwork = network === "testnet" ? "testnet" : "mainnet";
|
|
9
|
+
const object = (await (0, getObject_1.getObject)(client, oid));
|
|
10
|
+
if (object && object.content?.fields) {
|
|
11
|
+
return {
|
|
12
|
+
fields: object.content.fields,
|
|
13
|
+
type: object.type,
|
|
14
|
+
id: oid,
|
|
15
|
+
network: localNetwork,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
console.warn(`Object ${oid} on network ${localNetwork} found, but content or fields are missing.`);
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
if (debug)
|
|
25
|
+
console.error(`Error fetching or processing object ${oid} on network ${network}:`, error);
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=getObjectData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getObjectData.js","sourceRoot":"","sources":["../../src/utils/getObjectData.ts"],"names":[],"mappings":";;AAMA,sCAqBC;AAzBD,2CAAwC;AAExC,MAAM,KAAK,GAAG,KAAK,CAAC;AAEb,KAAK,UAAU,aAAa,CAAC,MAAkB,EAAE,OAAe,EAAE,GAAW;IAClF,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAEnE,MAAM,MAAM,GAAG,CAAC,MAAM,IAAA,qBAAS,EAAC,MAAM,EAAE,GAAG,CAAC,CAAQ,CAAC;QAErD,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACrC,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;gBAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,EAAE,EAAE,GAAG;gBACP,OAAO,EAAE,YAAY;aACtB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,eAAe,YAAY,4CAA4C,CAAC,CAAC;YACnG,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,uCAAuC,GAAG,eAAe,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;QACrG,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.searchObjectsByType = searchObjectsByType;
|
|
4
|
+
async function searchObjectsByType(type, after, graphqlProvider) {
|
|
5
|
+
const query = `
|
|
6
|
+
query ($type: String!, $after: String) {
|
|
7
|
+
objects(filter: { type: $type }, after: $after) {
|
|
8
|
+
edges {
|
|
9
|
+
cursor
|
|
10
|
+
node {
|
|
11
|
+
address
|
|
12
|
+
asMoveObject {
|
|
13
|
+
contents {
|
|
14
|
+
type { repr }
|
|
15
|
+
data
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
pageInfo { hasNextPage endCursor }
|
|
21
|
+
}
|
|
22
|
+
}`;
|
|
23
|
+
const resp = await fetch(graphqlProvider, {
|
|
24
|
+
method: "POST",
|
|
25
|
+
headers: { "content-type": "application/json" },
|
|
26
|
+
body: JSON.stringify({ query, variables: { type, after } }),
|
|
27
|
+
});
|
|
28
|
+
const json = await resp.json();
|
|
29
|
+
if (!resp.ok)
|
|
30
|
+
throw Object.assign(new Error(`GraphQL HTTP ${resp.status}`), { status: resp.status, json });
|
|
31
|
+
if (json.errors)
|
|
32
|
+
throw Object.assign(new Error("GraphQL errors"), { errors: json.errors });
|
|
33
|
+
const edges = json?.data?.objects?.edges;
|
|
34
|
+
if (!edges)
|
|
35
|
+
throw new Error("No data returned from the GraphQL query.");
|
|
36
|
+
return edges;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=graphql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../src/utils/graphql.ts"],"names":[],"mappings":";;AAEA,kDAqCC;AArCM,KAAK,UAAU,mBAAmB,CACvC,IAAY,EACZ,KAAoB,EACpB,eAAuB;IAEvB,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;IAiBZ,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE;QACxC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;KAC5D,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3G,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAE3F,MAAM,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;IACzC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACxE,OAAO,KAAqB,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.signAndExecute = signAndExecute;
|
|
4
|
+
/**
|
|
5
|
+
* Browser-safe Uint8Array -> base64 encoding (no Buffer).
|
|
6
|
+
*/
|
|
7
|
+
function u8ToB64(u8) {
|
|
8
|
+
let s = "";
|
|
9
|
+
const chunk = 0x8000;
|
|
10
|
+
for (let i = 0; i < u8.length; i += chunk) {
|
|
11
|
+
s += String.fromCharCode(...u8.subarray(i, i + chunk));
|
|
12
|
+
}
|
|
13
|
+
return btoa(s);
|
|
14
|
+
}
|
|
15
|
+
async function postJson(url, token, body) {
|
|
16
|
+
const res = await fetch(url, {
|
|
17
|
+
method: "POST",
|
|
18
|
+
headers: {
|
|
19
|
+
"content-type": "application/json",
|
|
20
|
+
...(token ? { Authorization: `Bearer ${token}` } : {}),
|
|
21
|
+
},
|
|
22
|
+
body: JSON.stringify(body ?? {}),
|
|
23
|
+
});
|
|
24
|
+
const text = await res.text();
|
|
25
|
+
const data = text ? JSON.parse(text) : null;
|
|
26
|
+
if (!res.ok)
|
|
27
|
+
throw Object.assign(new Error(`HTTP ${res.status}`), { status: res.status, data });
|
|
28
|
+
return data;
|
|
29
|
+
}
|
|
30
|
+
async function reserveGas(gasBudget, gasStationUrl, gasStationToken) {
|
|
31
|
+
const resp = await postJson(`${gasStationUrl}/v1/reserve_gas`, gasStationToken, {
|
|
32
|
+
gas_budget: gasBudget,
|
|
33
|
+
reserve_duration_secs: 10,
|
|
34
|
+
});
|
|
35
|
+
return resp?.result;
|
|
36
|
+
}
|
|
37
|
+
async function sponsorSignAndSubmit(reservationId, txBytes, userSig, gasStationUrl, gasStationToken) {
|
|
38
|
+
const resp = await postJson(`${gasStationUrl}/v1/execute_tx`, gasStationToken, {
|
|
39
|
+
reservation_id: reservationId,
|
|
40
|
+
tx_bytes: u8ToB64(txBytes),
|
|
41
|
+
user_sig: userSig,
|
|
42
|
+
});
|
|
43
|
+
return resp?.effects;
|
|
44
|
+
}
|
|
45
|
+
async function attemptWithGasStation(network, client, keyPair, tx, gasBudget, gasStationUrl, gasStationToken) {
|
|
46
|
+
const reserved = await reserveGas(gasBudget, gasStationUrl, gasStationToken);
|
|
47
|
+
tx.setSender(keyPair.toIotaAddress());
|
|
48
|
+
tx.setGasOwner(reserved.sponsor_address);
|
|
49
|
+
tx.setGasPayment(reserved.gas_coins);
|
|
50
|
+
tx.setGasBudget(gasBudget);
|
|
51
|
+
const unsignedTxBytes = await tx.build({ client });
|
|
52
|
+
const signedTx = await keyPair.signTransaction(unsignedTxBytes);
|
|
53
|
+
const userSig = signedTx.signature;
|
|
54
|
+
const effects = await sponsorSignAndSubmit(reserved.reservation_id, unsignedTxBytes, userSig, gasStationUrl, gasStationToken);
|
|
55
|
+
const txEffect = {
|
|
56
|
+
digest: effects.transactionDigest,
|
|
57
|
+
effects,
|
|
58
|
+
};
|
|
59
|
+
const status = txEffect.effects?.status;
|
|
60
|
+
const ok = status?.status === "success";
|
|
61
|
+
return {
|
|
62
|
+
success: !!ok,
|
|
63
|
+
txDigest: txEffect.digest,
|
|
64
|
+
status,
|
|
65
|
+
error: ok ? undefined : status?.error,
|
|
66
|
+
txEffect,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Signs and executes a transaction.
|
|
71
|
+
* - If useGasStation=true, tries gasStation1 then gasStation2 (if provided).
|
|
72
|
+
* - If useGasStation=false, executes directly with user's gas.
|
|
73
|
+
*/
|
|
74
|
+
async function signAndExecute(client, keyPair, tx, opts) {
|
|
75
|
+
let res = { success: false, error: new Error("Unknown error") };
|
|
76
|
+
try {
|
|
77
|
+
if (opts.useGasStation) {
|
|
78
|
+
const gs = opts.gasStation;
|
|
79
|
+
if (!gs?.gasStation1URL || !gs?.gasStation1Token) {
|
|
80
|
+
throw new Error("useGasStation=true but gasStation config is missing.");
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
res = await attemptWithGasStation(opts.network, client, keyPair, tx, opts.gasBudget, gs.gasStation1URL, gs.gasStation1Token);
|
|
84
|
+
}
|
|
85
|
+
catch (e1) {
|
|
86
|
+
if (gs.gasStation2URL && gs.gasStation2Token) {
|
|
87
|
+
res = await attemptWithGasStation(opts.network, client, keyPair, tx, opts.gasBudget, gs.gasStation2URL, gs.gasStation2Token);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
throw e1;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return res;
|
|
94
|
+
}
|
|
95
|
+
// Direct execution (user pays gas)
|
|
96
|
+
const result = await client.signAndExecuteTransaction({
|
|
97
|
+
signer: keyPair,
|
|
98
|
+
transaction: tx,
|
|
99
|
+
});
|
|
100
|
+
const txEffect = await client.waitForTransaction({
|
|
101
|
+
digest: result.digest,
|
|
102
|
+
options: { showEffects: true },
|
|
103
|
+
});
|
|
104
|
+
const status = txEffect.effects?.status;
|
|
105
|
+
const ok = status?.status === "success";
|
|
106
|
+
res = {
|
|
107
|
+
success: !!ok,
|
|
108
|
+
txDigest: txEffect.digest,
|
|
109
|
+
status,
|
|
110
|
+
error: ok ? undefined : status?.error,
|
|
111
|
+
txEffect,
|
|
112
|
+
};
|
|
113
|
+
return res;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
res = { success: false, error };
|
|
117
|
+
return res;
|
|
118
|
+
}
|
|
119
|
+
finally {
|
|
120
|
+
try {
|
|
121
|
+
opts.onExecuted?.(res);
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
// ignore listener errors
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=tx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx.js","sourceRoot":"","sources":["../../src/utils/tx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensureTrailingSlashForOriginOnly = ensureTrailingSlashForOriginOnly;
|
|
4
|
+
/**
|
|
5
|
+
* If `input` is a valid absolute URL and represents only an origin (no path/query/hash),
|
|
6
|
+
* ensure it ends with a trailing slash.
|
|
7
|
+
*
|
|
8
|
+
* Why: some Move modules compare prefixes using std::string::substring with the on-chain
|
|
9
|
+
* linked_domain length. If linked_domain is stored with a trailing slash ("https://x/")
|
|
10
|
+
* but the client passes "https://x", substring(0, linked_len) will abort out-of-bounds.
|
|
11
|
+
*/
|
|
12
|
+
function ensureTrailingSlashForOriginOnly(input) {
|
|
13
|
+
const s = String(input ?? "").trim();
|
|
14
|
+
if (!s)
|
|
15
|
+
return s;
|
|
16
|
+
try {
|
|
17
|
+
const u = new URL(s);
|
|
18
|
+
const isOriginOnly = u.pathname === "/" && !u.search && !u.hash;
|
|
19
|
+
if (isOriginOnly && !s.endsWith("/"))
|
|
20
|
+
return s + "/";
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
// Not a URL; return as-is.
|
|
24
|
+
}
|
|
25
|
+
return s;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/utils/url.ts"],"names":[],"mappings":";;AAQA,4EAaC;AArBD;;;;;;;GAOG;AACH,SAAgB,gCAAgC,CAAC,KAAc;IAC7D,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAEjB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,YAAY,GAAG,CAAC,CAAC,QAAQ,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,GAAG,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@objectid/oid-provider",
|
|
3
|
+
"version": "1.0.6",
|
|
4
|
+
"description": "Client-side ObjectID Provider SDK: executes Move calls directly (no backend).",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist-cjs/index.js",
|
|
8
|
+
"module": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"require": "./dist-cjs/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./react": {
|
|
17
|
+
"types": "./dist/react/index.d.ts",
|
|
18
|
+
"import": "./dist/react/index.js",
|
|
19
|
+
"require": "./dist-cjs/react/index.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"dist-cjs",
|
|
25
|
+
"README.md"
|
|
26
|
+
],
|
|
27
|
+
"sideEffects": false,
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build": "node scripts/build.mjs",
|
|
30
|
+
"prepublishOnly": "npm run build"
|
|
31
|
+
},
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"registry": "https://registry.npmjs.org/",
|
|
34
|
+
"access": "public"
|
|
35
|
+
},
|
|
36
|
+
"peerDependencies": {
|
|
37
|
+
"@iota/identity-wasm": "^1.8.0-beta.2",
|
|
38
|
+
"react": "^18.0.0 || ^19.0.0"
|
|
39
|
+
},
|
|
40
|
+
"peerDependenciesMeta": {
|
|
41
|
+
"react": {
|
|
42
|
+
"optional": true
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@iota/iota-sdk": "^1.0.0",
|
|
47
|
+
"@objectid-io/oid-provider": "^1.0.1",
|
|
48
|
+
"axios": "^1.13.2",
|
|
49
|
+
"open-location-code-typescript": "^1.5.0"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@iota/identity-wasm": "^1.8.0-beta.2",
|
|
53
|
+
"@types/react": "^18.3.5",
|
|
54
|
+
"react": "^18.3.1",
|
|
55
|
+
"typescript": "^5.5.4"
|
|
56
|
+
},
|
|
57
|
+
"repository": {
|
|
58
|
+
"type": "git",
|
|
59
|
+
"url": "git+https://github.com/ObjectID-io/oid-provider.git"
|
|
60
|
+
}
|
|
61
|
+
}
|