@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
package/dist/oid/caps.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { getObject as getObjectRpc } from "../utils/getObject";
|
|
2
|
+
export function normalizeHex(s) {
|
|
3
|
+
const t = (s ?? "").trim();
|
|
4
|
+
if (!t)
|
|
5
|
+
return t;
|
|
6
|
+
return t.startsWith("0x") ? t.toLowerCase() : ("0x" + t).toLowerCase();
|
|
7
|
+
}
|
|
8
|
+
function parseDidAliasId(did) {
|
|
9
|
+
const s = (did ?? "").trim();
|
|
10
|
+
if (!s)
|
|
11
|
+
return null;
|
|
12
|
+
// did:iota:testnet:0xabc... OR did:iota:0xabc...
|
|
13
|
+
const parts = s.split(":");
|
|
14
|
+
const last = parts[parts.length - 1];
|
|
15
|
+
if (!last)
|
|
16
|
+
return null;
|
|
17
|
+
if (last.startsWith("0x") || /^[0-9a-fA-F]+$/.test(last))
|
|
18
|
+
return normalizeHex(last);
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Deterministically pick the ControllerCap owned by `address` that matches the provided DID.
|
|
23
|
+
* If multiple caps match, chooses the highest on-chain version (tie-break by objectId).
|
|
24
|
+
*/
|
|
25
|
+
export async function pickCapMatchingDid(client, capIds, did) {
|
|
26
|
+
if (!capIds.length)
|
|
27
|
+
return undefined;
|
|
28
|
+
const identityId = parseDidAliasId(did);
|
|
29
|
+
if (!identityId)
|
|
30
|
+
throw new Error("Invalid DID: missing identity id");
|
|
31
|
+
const matches = [];
|
|
32
|
+
for (const id of capIds) {
|
|
33
|
+
const obj = await getObjectRpc(client, id);
|
|
34
|
+
// Deterministic link: ControllerCap.fields.controller_of == DID identity id (aliasId)
|
|
35
|
+
const direct = obj?.content?.fields?.controller_of;
|
|
36
|
+
const nested = obj?.content?.fields?.access_token?.fields?.value?.fields?.controller_of; // IOTA Identity (optional path)
|
|
37
|
+
const controllerOf = normalizeHex(String(direct ?? nested ?? ""));
|
|
38
|
+
if (controllerOf && controllerOf === identityId) {
|
|
39
|
+
const vRaw = obj?.version;
|
|
40
|
+
let v = 0n;
|
|
41
|
+
try {
|
|
42
|
+
if (typeof vRaw === "string" && vRaw)
|
|
43
|
+
v = BigInt(vRaw);
|
|
44
|
+
else if (typeof vRaw === "number")
|
|
45
|
+
v = BigInt(vRaw);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
v = 0n;
|
|
49
|
+
}
|
|
50
|
+
matches.push({ id, version: v });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (matches.length === 0) {
|
|
54
|
+
// If user owns caps but none match the provided DID, do not guess.
|
|
55
|
+
throw new Error(`ControllerCap for DID not found in owned objects (did=${did})`);
|
|
56
|
+
}
|
|
57
|
+
// If multiple caps match, choose deterministically (highest on-chain version, tie-break by objectId).
|
|
58
|
+
matches.sort((a, b) => (a.version === b.version ? a.id.localeCompare(b.id) : a.version > b.version ? -1 : 1));
|
|
59
|
+
return matches[0].id;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=caps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caps.js","sourceRoot":"","sources":["../../src/oid/caps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IotaObjectData } from "@iota/iota-sdk/client";
|
|
2
|
+
/**
|
|
3
|
+
* Best-effort extraction of a token balance from a Move object.
|
|
4
|
+
* Handles common shapes and falls back to a deep scan for the first numeric string.
|
|
5
|
+
*/
|
|
6
|
+
export declare function extractBalance(obj: IotaObjectData | null): string | null;
|
|
7
|
+
//# sourceMappingURL=credit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credit.d.ts","sourceRoot":"","sources":["../../src/oid/credit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAgCxE"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Best-effort extraction of a token balance from a Move object.
|
|
3
|
+
* Handles common shapes and falls back to a deep scan for the first numeric string.
|
|
4
|
+
*/
|
|
5
|
+
export function extractBalance(obj) {
|
|
6
|
+
if (!obj)
|
|
7
|
+
return null;
|
|
8
|
+
const fields = obj?.content?.fields;
|
|
9
|
+
if (!fields)
|
|
10
|
+
return null;
|
|
11
|
+
// common shapes:
|
|
12
|
+
// balance: "123"
|
|
13
|
+
// balance: { fields: { value: "123" } }
|
|
14
|
+
const b = fields.balance;
|
|
15
|
+
if (typeof b === "string")
|
|
16
|
+
return b;
|
|
17
|
+
if (typeof b === "number")
|
|
18
|
+
return String(b);
|
|
19
|
+
if (b && typeof b === "object") {
|
|
20
|
+
const v = b.fields?.value ?? b.value;
|
|
21
|
+
if (typeof v === "string")
|
|
22
|
+
return v;
|
|
23
|
+
if (typeof v === "number")
|
|
24
|
+
return String(v);
|
|
25
|
+
}
|
|
26
|
+
// fallback: deep search for first numeric-like string
|
|
27
|
+
const stack = [fields];
|
|
28
|
+
const seen = new Set();
|
|
29
|
+
while (stack.length) {
|
|
30
|
+
const v = stack.pop();
|
|
31
|
+
if (v == null)
|
|
32
|
+
continue;
|
|
33
|
+
if (typeof v === "string" && /^[0-9]+$/.test(v))
|
|
34
|
+
return v;
|
|
35
|
+
if (typeof v !== "object")
|
|
36
|
+
continue;
|
|
37
|
+
if (seen.has(v))
|
|
38
|
+
continue;
|
|
39
|
+
seen.add(v);
|
|
40
|
+
if (Array.isArray(v))
|
|
41
|
+
stack.push(...v);
|
|
42
|
+
else
|
|
43
|
+
for (const k of Object.keys(v))
|
|
44
|
+
stack.push(v[k]);
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=credit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credit.js","sourceRoot":"","sources":["../../src/oid/credit.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAA0B;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,MAAM,GAAI,GAAW,EAAE,OAAO,EAAE,MAAM,CAAC;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,iBAAiB;IACjB,iBAAiB;IACjB,wCAAwC;IACxC,MAAM,CAAC,GAAI,MAAc,CAAC,OAAO,CAAC;IAClC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAI,CAAS,CAAC,MAAM,EAAE,KAAK,IAAK,CAAS,CAAC,KAAK,CAAC;QACvD,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QACpC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,sDAAsD;IACtD,MAAM,KAAK,GAAU,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAO,CAAC;IAC5B,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,IAAI;YAAE,SAAS;QACxB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,SAAS;QACpC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACZ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;YAClC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAE,CAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ObjectEdge } from "../types/types";
|
|
2
|
+
export declare function graphqlAllByType(graphqlProvider: string, type: string): Promise<ObjectEdge[]>;
|
|
3
|
+
export declare function graphqlAllByTypeAndOwner(graphqlProvider: string, type: string, owner: string): Promise<ObjectEdge[]>;
|
|
4
|
+
//# sourceMappingURL=graphql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../src/oid/graphql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA4CjD,wBAAsB,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAmBnG;AAED,wBAAsB,wBAAwB,CAC5C,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,EAAE,CAAC,CAmBvB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
async function fetchEdges(graphqlProvider, query, variables) {
|
|
2
|
+
const resp = await fetch(graphqlProvider, {
|
|
3
|
+
method: "POST",
|
|
4
|
+
headers: { "content-type": "application/json" },
|
|
5
|
+
body: JSON.stringify({ query, variables }),
|
|
6
|
+
});
|
|
7
|
+
const json = (await resp.json().catch(() => null));
|
|
8
|
+
if (!resp.ok)
|
|
9
|
+
throw Object.assign(new Error(`GraphQL HTTP ${resp.status}`), { status: resp.status, json });
|
|
10
|
+
if (json?.errors)
|
|
11
|
+
throw Object.assign(new Error("GraphQL errors"), { errors: json.errors });
|
|
12
|
+
const page = json?.data?.objects;
|
|
13
|
+
const pageEdges = page?.edges ?? [];
|
|
14
|
+
const hasNext = !!page?.pageInfo?.hasNextPage;
|
|
15
|
+
const endCursor = (page?.pageInfo?.endCursor ?? null);
|
|
16
|
+
return { edges: pageEdges, endCursor, hasNext };
|
|
17
|
+
}
|
|
18
|
+
async function graphqlAll(graphqlProvider, query, makeVariables) {
|
|
19
|
+
const edges = [];
|
|
20
|
+
let after = null;
|
|
21
|
+
for (;;) {
|
|
22
|
+
const page = await fetchEdges(graphqlProvider, query, makeVariables(after));
|
|
23
|
+
if (page.edges.length)
|
|
24
|
+
edges.push(...page.edges);
|
|
25
|
+
if (!page.hasNext || !page.endCursor)
|
|
26
|
+
break;
|
|
27
|
+
after = page.endCursor;
|
|
28
|
+
}
|
|
29
|
+
return edges;
|
|
30
|
+
}
|
|
31
|
+
export async function graphqlAllByType(graphqlProvider, type) {
|
|
32
|
+
const query = `
|
|
33
|
+
query ($type: String!, $after: String) {
|
|
34
|
+
objects(filter: { type: $type }, first: 50, after: $after) {
|
|
35
|
+
edges {
|
|
36
|
+
cursor
|
|
37
|
+
node {
|
|
38
|
+
address
|
|
39
|
+
asMoveObject {
|
|
40
|
+
contents { type { repr } data }
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
pageInfo { hasNextPage endCursor }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
`;
|
|
48
|
+
return graphqlAll(graphqlProvider, query, (after) => ({ type, after }));
|
|
49
|
+
}
|
|
50
|
+
export async function graphqlAllByTypeAndOwner(graphqlProvider, type, owner) {
|
|
51
|
+
const query = `
|
|
52
|
+
query ($type: String!, $after: String, $owner: IotaAddress) {
|
|
53
|
+
objects(filter: { type: $type, owner: $owner }, first: 50, after: $after) {
|
|
54
|
+
edges {
|
|
55
|
+
cursor
|
|
56
|
+
node {
|
|
57
|
+
address
|
|
58
|
+
asMoveObject {
|
|
59
|
+
contents { type { repr } data }
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
pageInfo { hasNextPage endCursor }
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
`;
|
|
67
|
+
return graphqlAll(graphqlProvider, query, (after) => ({ type, after, owner }));
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=graphql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../src/oid/graphql.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,UAAU,CACvB,eAAuB,EACvB,KAAa,EACb,SAA8B;IAE9B,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,CAAC;KAC3C,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAQ,CAAC;IAC1D,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,EAAE,MAAM;QAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAE5F,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;IACjC,MAAM,SAAS,GAAI,IAAI,EAAE,KAAkC,IAAI,EAAE,CAAC;IAClE,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC;IAC9C,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAkB,CAAC;IAEvE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,eAAuB,EACvB,KAAa,EACb,aAA4D;IAE5D,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,IAAI,KAAK,GAAkB,IAAI,CAAC;IAEhC,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5E,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,MAAM;QAC5C,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;IACzB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,eAAuB,EAAE,IAAY;IAC1E,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;GAeb,CAAC;IAEF,OAAO,UAAU,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,eAAuB,EACvB,IAAY,EACZ,KAAa;IAEb,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;GAeb,CAAC;IAEF,OAAO,UAAU,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { type IotaObjectData } from "@iota/iota-sdk/client";
|
|
2
|
+
import { type ObjectIdApi } from "../api";
|
|
3
|
+
import { type LoadedConfig } from "../onchain/config";
|
|
4
|
+
import type { ObjectEdge, TxExecResult } from "../types/types";
|
|
5
|
+
/**
|
|
6
|
+
* Session state exposed by the high-level OID wrapper.
|
|
7
|
+
* Values are resolved in `oid.connect(...)` and can be changed via `oid.setSession(...)`.
|
|
8
|
+
*/
|
|
9
|
+
export type Network = "testnet" | "mainnet" | (string & {});
|
|
10
|
+
export type OidSession = {
|
|
11
|
+
initialized: boolean;
|
|
12
|
+
network: Network;
|
|
13
|
+
did: string;
|
|
14
|
+
seed: string;
|
|
15
|
+
seedPath?: string;
|
|
16
|
+
address: string;
|
|
17
|
+
graphqlProvider: string;
|
|
18
|
+
/** Active config JSON (effective runtime config) */
|
|
19
|
+
configJson: Record<string, any>;
|
|
20
|
+
/** If config was loaded from an on-chain Config object, its objectId */
|
|
21
|
+
configObjectId?: string;
|
|
22
|
+
/** Last loaded public config */
|
|
23
|
+
publicConfig?: LoadedConfig;
|
|
24
|
+
identityControllerCap?: string;
|
|
25
|
+
oidControllerCap?: string;
|
|
26
|
+
/** True if the user owns an OID ControllerCap matching the provided DID (i.e., identity is linked / DLVC). */
|
|
27
|
+
identityIsLinked: boolean;
|
|
28
|
+
creditTokens: string[];
|
|
29
|
+
activeCreditToken?: string;
|
|
30
|
+
};
|
|
31
|
+
export type ConnectParams = {
|
|
32
|
+
did: string;
|
|
33
|
+
seed: string;
|
|
34
|
+
/**
|
|
35
|
+
* Used ONLY to choose which chain to read the pinned public config from when bootstrapping.
|
|
36
|
+
* The session network is still derived from configJSON.network (see setSession).
|
|
37
|
+
*/
|
|
38
|
+
network?: Network;
|
|
39
|
+
seedPath?: string;
|
|
40
|
+
};
|
|
41
|
+
export type Oid = ObjectIdApi & {
|
|
42
|
+
/** Reset session state (no-op if already disconnected). */
|
|
43
|
+
disconnect: () => void;
|
|
44
|
+
/** Init session (tx signing). */
|
|
45
|
+
connect: (p: ConnectParams) => Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Set the *effective* runtime configuration for the current session.
|
|
48
|
+
* The session network is derived from configJSON.network.
|
|
49
|
+
*/
|
|
50
|
+
setSession: (configJSON: Record<string, any>) => Promise<void>;
|
|
51
|
+
/** Request free credits (testnet only; requires an active session). */
|
|
52
|
+
faucet: () => Promise<string>;
|
|
53
|
+
/** Read ONLY the official allow-list from on-chain public config. Works without session. */
|
|
54
|
+
officialPackages: (network?: string) => Promise<string[]>;
|
|
55
|
+
/**
|
|
56
|
+
* TokenPolicy object id required by Move calls.
|
|
57
|
+
* Alias for: `(await oid.env()).policy`.
|
|
58
|
+
*
|
|
59
|
+
* Requires an active session (connect + setSession already applied by connect).
|
|
60
|
+
*/
|
|
61
|
+
readonly policyToken: Promise<string>;
|
|
62
|
+
/** Session accessors */
|
|
63
|
+
session: {
|
|
64
|
+
readonly network: Network;
|
|
65
|
+
readonly did: string;
|
|
66
|
+
readonly address: string;
|
|
67
|
+
/** True if the user owns an OID ControllerCap matching the provided DID (linked identity / DLVC). */
|
|
68
|
+
readonly identityIsLinked: boolean;
|
|
69
|
+
readonly oidControllerCap?: string;
|
|
70
|
+
readonly identityControllerCap?: string;
|
|
71
|
+
readonly creditTokens: string[];
|
|
72
|
+
creditToken: (id?: string) => string | undefined;
|
|
73
|
+
credit: () => Promise<string | null>;
|
|
74
|
+
onCreditChanged: (cb: (r: TxExecResult) => void) => () => void;
|
|
75
|
+
/**
|
|
76
|
+
* Read-only.
|
|
77
|
+
* - If NO session: returns pinned public default config for requested network (default: testnet).
|
|
78
|
+
* - If session is active:
|
|
79
|
+
* - config() or config(session.network) => returns session config in use
|
|
80
|
+
* - config(other network) => returns pinned public default config for that network
|
|
81
|
+
*/
|
|
82
|
+
config: (network?: string) => Promise<Record<string, any>>;
|
|
83
|
+
/** Session snapshot (requires connect). */
|
|
84
|
+
raw: () => OidSession;
|
|
85
|
+
};
|
|
86
|
+
/** Methods usable without initialization. */
|
|
87
|
+
getObject: (id: string, network: string) => Promise<IotaObjectData | null>;
|
|
88
|
+
getObjectsByType: (type: string, network: string) => Promise<ObjectEdge[]>;
|
|
89
|
+
getObjectsByTypeAndOwner: (type: string, owner: string, network: string) => Promise<ObjectEdge[]>;
|
|
90
|
+
};
|
|
91
|
+
export declare function createOid(): Oid;
|
|
92
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oid/index.ts"],"names":[],"mappings":"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"}
|