@seedprotocol/publish 0.6.10 → 0.7.0

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.
Files changed (78) hide show
  1. package/dist/chainConfig-BJ8C_RRz.js +1455 -0
  2. package/dist/chainConfig-BJ8C_RRz.js.map +1 -0
  3. package/dist/chainConfig-DWynbnb8.js +1455 -0
  4. package/dist/chainConfig-DWynbnb8.js.map +1 -0
  5. package/dist/chainConfig-DmuPBs3D.js +1455 -0
  6. package/dist/chainConfig-DmuPBs3D.js.map +1 -0
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/ensureAutomationSessionKey-BVmh030S.js +84 -0
  9. package/dist/ensureAutomationSessionKey-BVmh030S.js.map +1 -0
  10. package/dist/ensureAutomationSessionKey-CxpJY_uH.js +84 -0
  11. package/dist/ensureAutomationSessionKey-CxpJY_uH.js.map +1 -0
  12. package/dist/ensureAutomationSessionKey-DwRm4YMJ.js +84 -0
  13. package/dist/ensureAutomationSessionKey-DwRm4YMJ.js.map +1 -0
  14. package/dist/ensureModularPublishBootstrap-CmxyX_EN.js +23 -0
  15. package/dist/ensureModularPublishBootstrap-CmxyX_EN.js.map +1 -0
  16. package/dist/ensureModularPublishBootstrap-DRFhp-O2.js +23 -0
  17. package/dist/ensureModularPublishBootstrap-DRFhp-O2.js.map +1 -0
  18. package/dist/ensureModularPublishBootstrap-DegJnYKL.js +23 -0
  19. package/dist/ensureModularPublishBootstrap-DegJnYKL.js.map +1 -0
  20. package/dist/ensureSmartWalletThenPublish-0nKg13WN.js +47 -0
  21. package/dist/ensureSmartWalletThenPublish-0nKg13WN.js.map +1 -0
  22. package/dist/ensureSmartWalletThenPublish-BdqeUL6t.js +47 -0
  23. package/dist/ensureSmartWalletThenPublish-BdqeUL6t.js.map +1 -0
  24. package/dist/ensureSmartWalletThenPublish-BfEndtFo.js +47 -0
  25. package/dist/ensureSmartWalletThenPublish-BfEndtFo.js.map +1 -0
  26. package/dist/index.js +3 -3
  27. package/dist/managedAccountAdmin-ByEX_Eg2.js +28 -0
  28. package/dist/managedAccountAdmin-ByEX_Eg2.js.map +1 -0
  29. package/dist/managedAccountAdmin-DS6nniiu.js +28 -0
  30. package/dist/managedAccountAdmin-DS6nniiu.js.map +1 -0
  31. package/dist/managedAccountAdmin-DwFI-ZfE.js +28 -0
  32. package/dist/managedAccountAdmin-DwFI-ZfE.js.map +1 -0
  33. package/dist/publishAuthorization-C-XYb9Ef.js +4034 -0
  34. package/dist/publishAuthorization-C-XYb9Ef.js.map +1 -0
  35. package/dist/publishAuthorization-CG23g8w2.js +3987 -0
  36. package/dist/publishAuthorization-CG23g8w2.js.map +1 -0
  37. package/dist/publishAuthorization-CvK_coYp.js +4011 -0
  38. package/dist/publishAuthorization-CvK_coYp.js.map +1 -0
  39. package/dist/publishThirdwebClient-BQ_KnMi5.js +18 -0
  40. package/dist/publishThirdwebClient-BQ_KnMi5.js.map +1 -0
  41. package/dist/publishThirdwebClient-BmqsJCjp.js +18 -0
  42. package/dist/publishThirdwebClient-BmqsJCjp.js.map +1 -0
  43. package/dist/publishThirdwebClient-D-K2WEeM.js +18 -0
  44. package/dist/publishThirdwebClient-D-K2WEeM.js.map +1 -0
  45. package/dist/resolveRevokeAccount-9-OzXVdp.js +38 -0
  46. package/dist/resolveRevokeAccount-9-OzXVdp.js.map +1 -0
  47. package/dist/resolveRevokeAccount-CXa5XlOv.js +38 -0
  48. package/dist/resolveRevokeAccount-CXa5XlOv.js.map +1 -0
  49. package/dist/resolveRevokeAccount-QgZ6YZuS.js +38 -0
  50. package/dist/resolveRevokeAccount-QgZ6YZuS.js.map +1 -0
  51. package/dist/services/publish/actors/checking.d.ts.map +1 -1
  52. package/dist/services/publish/actors/createAttestations.d.ts.map +1 -1
  53. package/dist/services/publish/actors/createAttestationsDirectToEas.d.ts.map +1 -1
  54. package/dist/services/publish/actors/multiPublishReceipt.d.ts +58 -0
  55. package/dist/services/publish/actors/multiPublishReceipt.d.ts.map +1 -0
  56. package/dist/services/publish/actors/persistSeedUid.d.ts.map +1 -1
  57. package/dist/services/publish/actors/recordMultiPublishReceipt.d.ts +45 -0
  58. package/dist/services/publish/actors/recordMultiPublishReceipt.d.ts.map +1 -0
  59. package/dist/services/publish/helpers/getPublishUploadData.d.ts.map +1 -1
  60. package/dist/services/publishCost/types.d.ts +3 -1
  61. package/dist/services/publishCost/types.d.ts.map +1 -1
  62. package/dist/services/publishManager/actions/publishDone.d.ts.map +1 -1
  63. package/dist/services/publishManager/actions/stopAll.d.ts.map +1 -1
  64. package/dist/services/publishManager/actions/stopPublish.d.ts.map +1 -1
  65. package/dist/services/publishManager/actors/restoreFromDb.d.ts.map +1 -1
  66. package/dist/services/publishManager/index.d.ts +3 -3
  67. package/dist/services/publishManager/index.d.ts.map +1 -1
  68. package/dist/services/publishManager/publishLocks.d.ts +22 -0
  69. package/dist/services/publishManager/publishLocks.d.ts.map +1 -0
  70. package/dist/services/revoke/revokeAttestations.d.ts.map +1 -1
  71. package/dist/thirdweb.js +6 -6
  72. package/dist/worker-CJRUAOAn.js +69 -0
  73. package/dist/worker-CJRUAOAn.js.map +1 -0
  74. package/dist/worker-FmHZbku5.js +72 -0
  75. package/dist/worker-FmHZbku5.js.map +1 -0
  76. package/dist/worker-qoGuo876.js +69 -0
  77. package/dist/worker-qoGuo876.js.map +1 -0
  78. package/package.json +6 -6
@@ -0,0 +1,18 @@
1
+ import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
+ import { o as t } from "./chainConfig-DmuPBs3D.js";
3
+ import { createThirdwebClient as n } from "thirdweb";
4
+ //#region src/helpers/publishThirdwebClient.ts
5
+ var r = /* @__PURE__ */ e({ getClient: () => o }), i = null, a = null;
6
+ function o() {
7
+ let { thirdwebClientId: e, thirdwebSecretKey: r } = t();
8
+ if (!e && !r) throw Error("@seedprotocol/publish/thirdweb: thirdwebClientId or thirdwebSecretKey is required. Pass one in initPublish / PublishProvider config.");
9
+ let o = `${e ?? ""}\0${r ?? ""}`;
10
+ return (!i || a !== o) && (a = o, i = n(e ? {
11
+ clientId: e,
12
+ ...r ? { secretKey: r } : {}
13
+ } : { secretKey: r })), i;
14
+ }
15
+ //#endregion
16
+ export { r as n, o as t };
17
+
18
+ //# sourceMappingURL=publishThirdwebClient-BQ_KnMi5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishThirdwebClient-BQ_KnMi5.js","names":[],"sources":["../src/helpers/publishThirdwebClient.ts"],"sourcesContent":["import { createThirdwebClient, type ThirdwebClient } from 'thirdweb'\nimport { getPublishConfig } from '../config'\n\nlet _client: ThirdwebClient | null = null\nlet _clientKey: string | null = null\n\n/**\n * Thirdweb client for publish sends and contract calls.\n * Uses `thirdwebSecretKey` when set so server-side RPC is not limited to browser origins.\n * Recreates the client when the client id or secret key changes.\n */\nexport function getClient(): ThirdwebClient {\n const { thirdwebClientId, thirdwebSecretKey } = getPublishConfig()\n if (!thirdwebClientId && !thirdwebSecretKey) {\n throw new Error(\n '@seedprotocol/publish/thirdweb: thirdwebClientId or thirdwebSecretKey is required. Pass one in initPublish / PublishProvider config.',\n )\n }\n const key = `${thirdwebClientId ?? ''}\\0${thirdwebSecretKey ?? ''}`\n if (!_client || _clientKey !== key) {\n _clientKey = key\n _client = thirdwebClientId\n ? createThirdwebClient({\n clientId: thirdwebClientId,\n ...(thirdwebSecretKey ? { secretKey: thirdwebSecretKey } : {}),\n })\n : createThirdwebClient({ secretKey: thirdwebSecretKey! })\n }\n return _client\n}\n\n/** Drop the cached client (tests). */\nexport function resetPublishThirdwebClient(): void {\n _client = null\n _clientKey = null\n}\n"],"mappings":";;;;mDAGI,IAAiC,MACjC,IAA4B;AAOhC,SAAgB,IAA4B;CAC1C,IAAM,EAAE,qBAAkB,yBAAsB,EAAiB;CACjE,IAAI,CAAC,KAAoB,CAAC,GACxB,MAAU,MACR,sIACF;CAEF,IAAM,IAAM,GAAG,KAAoB,GAAG,IAAI,KAAqB;CAU/D,QATI,CAAC,KAAW,MAAe,OAC7B,IAAa,GACb,IACI,EADM,IACe;EACnB,UAAU;EACV,GAAI,IAAoB,EAAE,WAAW,EAAkB,IAAI,CAAC;CAC9D,IACqB,EAAE,WAAW,EAAmB,CAAC,IAErD;AACT"}
@@ -0,0 +1,18 @@
1
+ import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
+ import { o as t } from "./chainConfig-DWynbnb8.js";
3
+ import { createThirdwebClient as n } from "thirdweb";
4
+ //#region src/helpers/publishThirdwebClient.ts
5
+ var r = /* @__PURE__ */ e({ getClient: () => o }), i = null, a = null;
6
+ function o() {
7
+ let { thirdwebClientId: e, thirdwebSecretKey: r } = t();
8
+ if (!e && !r) throw Error("@seedprotocol/publish/thirdweb: thirdwebClientId or thirdwebSecretKey is required. Pass one in initPublish / PublishProvider config.");
9
+ let o = `${e ?? ""}\0${r ?? ""}`;
10
+ return (!i || a !== o) && (a = o, i = n(e ? {
11
+ clientId: e,
12
+ ...r ? { secretKey: r } : {}
13
+ } : { secretKey: r })), i;
14
+ }
15
+ //#endregion
16
+ export { r as n, o as t };
17
+
18
+ //# sourceMappingURL=publishThirdwebClient-BmqsJCjp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishThirdwebClient-BmqsJCjp.js","names":[],"sources":["../src/helpers/publishThirdwebClient.ts"],"sourcesContent":["import { createThirdwebClient, type ThirdwebClient } from 'thirdweb'\nimport { getPublishConfig } from '../config'\n\nlet _client: ThirdwebClient | null = null\nlet _clientKey: string | null = null\n\n/**\n * Thirdweb client for publish sends and contract calls.\n * Uses `thirdwebSecretKey` when set so server-side RPC is not limited to browser origins.\n * Recreates the client when the client id or secret key changes.\n */\nexport function getClient(): ThirdwebClient {\n const { thirdwebClientId, thirdwebSecretKey } = getPublishConfig()\n if (!thirdwebClientId && !thirdwebSecretKey) {\n throw new Error(\n '@seedprotocol/publish/thirdweb: thirdwebClientId or thirdwebSecretKey is required. Pass one in initPublish / PublishProvider config.',\n )\n }\n const key = `${thirdwebClientId ?? ''}\\0${thirdwebSecretKey ?? ''}`\n if (!_client || _clientKey !== key) {\n _clientKey = key\n _client = thirdwebClientId\n ? createThirdwebClient({\n clientId: thirdwebClientId,\n ...(thirdwebSecretKey ? { secretKey: thirdwebSecretKey } : {}),\n })\n : createThirdwebClient({ secretKey: thirdwebSecretKey! })\n }\n return _client\n}\n\n/** Drop the cached client (tests). */\nexport function resetPublishThirdwebClient(): void {\n _client = null\n _clientKey = null\n}\n"],"mappings":";;;;mDAGI,IAAiC,MACjC,IAA4B;AAOhC,SAAgB,IAA4B;CAC1C,IAAM,EAAE,qBAAkB,yBAAsB,EAAiB;CACjE,IAAI,CAAC,KAAoB,CAAC,GACxB,MAAU,MACR,sIACF;CAEF,IAAM,IAAM,GAAG,KAAoB,GAAG,IAAI,KAAqB;CAU/D,QATI,CAAC,KAAW,MAAe,OAC7B,IAAa,GACb,IACI,EADM,IACe;EACnB,UAAU;EACV,GAAI,IAAoB,EAAE,WAAW,EAAkB,IAAI,CAAC;CAC9D,IACqB,EAAE,WAAW,EAAmB,CAAC,IAErD;AACT"}
@@ -0,0 +1,18 @@
1
+ import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
+ import { o as t } from "./chainConfig-BJ8C_RRz.js";
3
+ import { createThirdwebClient as n } from "thirdweb";
4
+ //#region src/helpers/publishThirdwebClient.ts
5
+ var r = /* @__PURE__ */ e({ getClient: () => o }), i = null, a = null;
6
+ function o() {
7
+ let { thirdwebClientId: e, thirdwebSecretKey: r } = t();
8
+ if (!e && !r) throw Error("@seedprotocol/publish/thirdweb: thirdwebClientId or thirdwebSecretKey is required. Pass one in initPublish / PublishProvider config.");
9
+ let o = `${e ?? ""}\0${r ?? ""}`;
10
+ return (!i || a !== o) && (a = o, i = n(e ? {
11
+ clientId: e,
12
+ ...r ? { secretKey: r } : {}
13
+ } : { secretKey: r })), i;
14
+ }
15
+ //#endregion
16
+ export { r as n, o as t };
17
+
18
+ //# sourceMappingURL=publishThirdwebClient-D-K2WEeM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishThirdwebClient-D-K2WEeM.js","names":[],"sources":["../src/helpers/publishThirdwebClient.ts"],"sourcesContent":["import { createThirdwebClient, type ThirdwebClient } from 'thirdweb'\nimport { getPublishConfig } from '../config'\n\nlet _client: ThirdwebClient | null = null\nlet _clientKey: string | null = null\n\n/**\n * Thirdweb client for publish sends and contract calls.\n * Uses `thirdwebSecretKey` when set so server-side RPC is not limited to browser origins.\n * Recreates the client when the client id or secret key changes.\n */\nexport function getClient(): ThirdwebClient {\n const { thirdwebClientId, thirdwebSecretKey } = getPublishConfig()\n if (!thirdwebClientId && !thirdwebSecretKey) {\n throw new Error(\n '@seedprotocol/publish/thirdweb: thirdwebClientId or thirdwebSecretKey is required. Pass one in initPublish / PublishProvider config.',\n )\n }\n const key = `${thirdwebClientId ?? ''}\\0${thirdwebSecretKey ?? ''}`\n if (!_client || _clientKey !== key) {\n _clientKey = key\n _client = thirdwebClientId\n ? createThirdwebClient({\n clientId: thirdwebClientId,\n ...(thirdwebSecretKey ? { secretKey: thirdwebSecretKey } : {}),\n })\n : createThirdwebClient({ secretKey: thirdwebSecretKey! })\n }\n return _client\n}\n\n/** Drop the cached client (tests). */\nexport function resetPublishThirdwebClient(): void {\n _client = null\n _clientKey = null\n}\n"],"mappings":";;;;mDAGI,IAAiC,MACjC,IAA4B;AAOhC,SAAgB,IAA4B;CAC1C,IAAM,EAAE,qBAAkB,yBAAsB,EAAiB;CACjE,IAAI,CAAC,KAAoB,CAAC,GACxB,MAAU,MACR,sIACF;CAEF,IAAM,IAAM,GAAG,KAAoB,GAAG,IAAI,KAAqB;CAU/D,QATI,CAAC,KAAW,MAAe,OAC7B,IAAa,GACb,IACI,EADM,IACe;EACnB,UAAU;EACV,GAAI,IAAoB,EAAE,WAAW,EAAkB,IAAI,CAAC;CAC9D,IACqB,EAAE,WAAW,EAAmB,CAAC,IAErD;AACT"}
@@ -0,0 +1,38 @@
1
+ import { o as e, y as t } from "./chainConfig-DWynbnb8.js";
2
+ import { A as n, F as r, L as i, M as a } from "./publishAuthorization-C-XYb9Ef.js";
3
+ import { t as o } from "./publishThirdwebClient-BmqsJCjp.js";
4
+ import { getGetAdditionalSyncAddresses as s } from "@seedprotocol/sdk";
5
+ //#region src/helpers/resolveRevokeAccount.ts
6
+ async function c(c) {
7
+ let { account: l, attester: u } = c;
8
+ if (!u || l.address.toLowerCase() === u.toLowerCase()) return l;
9
+ let d = s(), f = !1;
10
+ if (d) {
11
+ let e = await d(), t = u.toLowerCase();
12
+ f = !!e?.some((e) => e?.toLowerCase() === t);
13
+ }
14
+ try {
15
+ let e = await r(l.address);
16
+ if (u.toLowerCase() === e.toLowerCase() || f) {
17
+ let r = f ? await n(t()).catch(() => e) : e;
18
+ if (await i(r)) {
19
+ let e = a();
20
+ await e.autoConnect({
21
+ client: o(),
22
+ chain: t()
23
+ });
24
+ let n = e.getAccount();
25
+ if (n) return n;
26
+ }
27
+ }
28
+ } catch {}
29
+ if (f) {
30
+ let { modularAccountModuleContract: t } = e();
31
+ throw t?.trim() ? Error("Revocation not supported for items published via the modular executor. Connect the ManagedAccount that controls the executor module.") : Error("Revocation not supported for items published via the modular executor.");
32
+ }
33
+ return l;
34
+ }
35
+ //#endregion
36
+ export { c as resolveRevokeAccount };
37
+
38
+ //# sourceMappingURL=resolveRevokeAccount-9-OzXVdp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveRevokeAccount-9-OzXVdp.js","names":[],"sources":["../src/helpers/resolveRevokeAccount.ts"],"sourcesContent":["import type { Account } from 'thirdweb/wallets'\nimport { getGetAdditionalSyncAddresses } from '@seedprotocol/sdk'\nimport { getPublishConfig } from '~/config'\nimport {\n getClient,\n getSmartWalletAddressForAdmin,\n isSmartWalletDeployed,\n getManagedAccountWallet,\n getConnectedManagedAccountAddress,\n} from '~/helpers/thirdweb'\nimport { getPublishThirdwebChain } from './thirdwebChain'\n\n/**\n * Resolves which account to use for revoking attestations.\n * When the attester is the user's ManagedAccount (EIP4337) but they're connected\n * with a different wallet (e.g. EOA or modular account), attempts to use the\n * ManagedAccount wallet for the revoke.\n *\n * When the attester is the legacy executor module address, attempts the ManagedAccount\n * wallet if `modularAccountModuleContract` is configured (executor-routed multiRevoke).\n * Throws only when the module was the attester and no ManagedAccount path is available.\n */\nexport async function resolveRevokeAccount(params: {\n account: Account\n attester: string | null\n}): Promise<Account> {\n const { account, attester } = params\n\n if (!attester || account.address.toLowerCase() === attester.toLowerCase()) {\n return account\n }\n\n const additionalGetter = getGetAdditionalSyncAddresses()\n let attesterIsExecutorModule = false\n if (additionalGetter) {\n const additional = await additionalGetter()\n const attesterLower = attester.toLowerCase()\n attesterIsExecutorModule = !!additional?.some(\n (a: string | undefined) => a?.toLowerCase() === attesterLower,\n )\n }\n\n try {\n const derivedManagedAccount = await getSmartWalletAddressForAdmin(account.address)\n const attesterLower = attester.toLowerCase()\n const derivedLower = derivedManagedAccount.toLowerCase()\n\n if (attesterLower === derivedLower || attesterIsExecutorModule) {\n const managedAddress = attesterIsExecutorModule\n ? await getConnectedManagedAccountAddress(getPublishThirdwebChain()).catch(() => derivedManagedAccount)\n : derivedManagedAccount\n const deployed = await isSmartWalletDeployed(managedAddress)\n if (deployed) {\n const managedAccountWallet = getManagedAccountWallet()\n await managedAccountWallet.autoConnect({\n client: getClient(),\n chain: getPublishThirdwebChain(),\n })\n const managedAccount = managedAccountWallet.getAccount()\n if (managedAccount) {\n return managedAccount\n }\n }\n }\n } catch {\n // Fall through\n }\n\n if (attesterIsExecutorModule) {\n const { modularAccountModuleContract } = getPublishConfig()\n if (!modularAccountModuleContract?.trim()) {\n throw new Error(\n 'Revocation not supported for items published via the modular executor.',\n )\n }\n // Module configured but ManagedAccount wallet unavailable\n throw new Error(\n 'Revocation not supported for items published via the modular executor. Connect the ManagedAccount that controls the executor module.',\n )\n }\n\n return account\n}\n"],"mappings":";;;;;AAsBA,eAAsB,EAAqB,GAGtB;CACnB,IAAM,EAAE,YAAS,gBAAa;CAE9B,IAAI,CAAC,KAAY,EAAQ,QAAQ,YAAY,MAAM,EAAS,YAAY,GACtE,OAAO;CAGT,IAAM,IAAmB,EAA8B,GACnD,IAA2B;CAC/B,IAAI,GAAkB;EACpB,IAAM,IAAa,MAAM,EAAiB,GACpC,IAAgB,EAAS,YAAY;EAC3C,IAA2B,CAAC,CAAC,GAAY,MACtC,MAA0B,GAAG,YAAY,MAAM,CAClD;CACF;CAEA,IAAI;EACF,IAAM,IAAwB,MAAM,EAA8B,EAAQ,OAAO;EAIjF,IAHsB,EAAS,YAG3B,MAFiB,EAAsB,YAErB,KAAgB,GAA0B;GAC9D,IAAM,IAAiB,IACnB,MAAM,EAAkC,EAAwB,CAAC,CAAC,CAAC,YAAY,CAAqB,IACpG;GAEJ,IAAI,MADmB,EAAsB,CAAc,GAC7C;IACZ,IAAM,IAAuB,EAAwB;IACrD,MAAM,EAAqB,YAAY;KACrC,QAAQ,EAAU;KAClB,OAAO,EAAwB;IACjC,CAAC;IACD,IAAM,IAAiB,EAAqB,WAAW;IACvD,IAAI,GACF,OAAO;GAEX;EACF;CACF,QAAQ,CAER;CAEA,IAAI,GAA0B;EAC5B,IAAM,EAAE,oCAAiC,EAAiB;EAO1D,MANK,GAA8B,KAAK,IAM9B,MACR,sIACF,IAPY,MACR,wEACF;CAMJ;CAEA,OAAO;AACT"}
@@ -0,0 +1,38 @@
1
+ import { o as e, y as t } from "./chainConfig-DmuPBs3D.js";
2
+ import { A as n, F as r, L as i, M as a } from "./publishAuthorization-CG23g8w2.js";
3
+ import { t as o } from "./publishThirdwebClient-BQ_KnMi5.js";
4
+ import { getGetAdditionalSyncAddresses as s } from "@seedprotocol/sdk";
5
+ //#region src/helpers/resolveRevokeAccount.ts
6
+ async function c(c) {
7
+ let { account: l, attester: u } = c;
8
+ if (!u || l.address.toLowerCase() === u.toLowerCase()) return l;
9
+ let d = s(), f = !1;
10
+ if (d) {
11
+ let e = await d(), t = u.toLowerCase();
12
+ f = !!e?.some((e) => e?.toLowerCase() === t);
13
+ }
14
+ try {
15
+ let e = await r(l.address);
16
+ if (u.toLowerCase() === e.toLowerCase() || f) {
17
+ let r = f ? await n(t()).catch(() => e) : e;
18
+ if (await i(r)) {
19
+ let e = a();
20
+ await e.autoConnect({
21
+ client: o(),
22
+ chain: t()
23
+ });
24
+ let n = e.getAccount();
25
+ if (n) return n;
26
+ }
27
+ }
28
+ } catch {}
29
+ if (f) {
30
+ let { modularAccountModuleContract: t } = e();
31
+ throw t?.trim() ? Error("Revocation not supported for items published via the modular executor. Connect the ManagedAccount that controls the executor module.") : Error("Revocation not supported for items published via the modular executor.");
32
+ }
33
+ return l;
34
+ }
35
+ //#endregion
36
+ export { c as resolveRevokeAccount };
37
+
38
+ //# sourceMappingURL=resolveRevokeAccount-CXa5XlOv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveRevokeAccount-CXa5XlOv.js","names":[],"sources":["../src/helpers/resolveRevokeAccount.ts"],"sourcesContent":["import type { Account } from 'thirdweb/wallets'\nimport { getGetAdditionalSyncAddresses } from '@seedprotocol/sdk'\nimport { getPublishConfig } from '~/config'\nimport {\n getClient,\n getSmartWalletAddressForAdmin,\n isSmartWalletDeployed,\n getManagedAccountWallet,\n getConnectedManagedAccountAddress,\n} from '~/helpers/thirdweb'\nimport { getPublishThirdwebChain } from './thirdwebChain'\n\n/**\n * Resolves which account to use for revoking attestations.\n * When the attester is the user's ManagedAccount (EIP4337) but they're connected\n * with a different wallet (e.g. EOA or modular account), attempts to use the\n * ManagedAccount wallet for the revoke.\n *\n * When the attester is the legacy executor module address, attempts the ManagedAccount\n * wallet if `modularAccountModuleContract` is configured (executor-routed multiRevoke).\n * Throws only when the module was the attester and no ManagedAccount path is available.\n */\nexport async function resolveRevokeAccount(params: {\n account: Account\n attester: string | null\n}): Promise<Account> {\n const { account, attester } = params\n\n if (!attester || account.address.toLowerCase() === attester.toLowerCase()) {\n return account\n }\n\n const additionalGetter = getGetAdditionalSyncAddresses()\n let attesterIsExecutorModule = false\n if (additionalGetter) {\n const additional = await additionalGetter()\n const attesterLower = attester.toLowerCase()\n attesterIsExecutorModule = !!additional?.some(\n (a: string | undefined) => a?.toLowerCase() === attesterLower,\n )\n }\n\n try {\n const derivedManagedAccount = await getSmartWalletAddressForAdmin(account.address)\n const attesterLower = attester.toLowerCase()\n const derivedLower = derivedManagedAccount.toLowerCase()\n\n if (attesterLower === derivedLower || attesterIsExecutorModule) {\n const managedAddress = attesterIsExecutorModule\n ? await getConnectedManagedAccountAddress(getPublishThirdwebChain()).catch(() => derivedManagedAccount)\n : derivedManagedAccount\n const deployed = await isSmartWalletDeployed(managedAddress)\n if (deployed) {\n const managedAccountWallet = getManagedAccountWallet()\n await managedAccountWallet.autoConnect({\n client: getClient(),\n chain: getPublishThirdwebChain(),\n })\n const managedAccount = managedAccountWallet.getAccount()\n if (managedAccount) {\n return managedAccount\n }\n }\n }\n } catch {\n // Fall through\n }\n\n if (attesterIsExecutorModule) {\n const { modularAccountModuleContract } = getPublishConfig()\n if (!modularAccountModuleContract?.trim()) {\n throw new Error(\n 'Revocation not supported for items published via the modular executor.',\n )\n }\n // Module configured but ManagedAccount wallet unavailable\n throw new Error(\n 'Revocation not supported for items published via the modular executor. Connect the ManagedAccount that controls the executor module.',\n )\n }\n\n return account\n}\n"],"mappings":";;;;;AAsBA,eAAsB,EAAqB,GAGtB;CACnB,IAAM,EAAE,YAAS,gBAAa;CAE9B,IAAI,CAAC,KAAY,EAAQ,QAAQ,YAAY,MAAM,EAAS,YAAY,GACtE,OAAO;CAGT,IAAM,IAAmB,EAA8B,GACnD,IAA2B;CAC/B,IAAI,GAAkB;EACpB,IAAM,IAAa,MAAM,EAAiB,GACpC,IAAgB,EAAS,YAAY;EAC3C,IAA2B,CAAC,CAAC,GAAY,MACtC,MAA0B,GAAG,YAAY,MAAM,CAClD;CACF;CAEA,IAAI;EACF,IAAM,IAAwB,MAAM,EAA8B,EAAQ,OAAO;EAIjF,IAHsB,EAAS,YAG3B,MAFiB,EAAsB,YAErB,KAAgB,GAA0B;GAC9D,IAAM,IAAiB,IACnB,MAAM,EAAkC,EAAwB,CAAC,CAAC,CAAC,YAAY,CAAqB,IACpG;GAEJ,IAAI,MADmB,EAAsB,CAAc,GAC7C;IACZ,IAAM,IAAuB,EAAwB;IACrD,MAAM,EAAqB,YAAY;KACrC,QAAQ,EAAU;KAClB,OAAO,EAAwB;IACjC,CAAC;IACD,IAAM,IAAiB,EAAqB,WAAW;IACvD,IAAI,GACF,OAAO;GAEX;EACF;CACF,QAAQ,CAER;CAEA,IAAI,GAA0B;EAC5B,IAAM,EAAE,oCAAiC,EAAiB;EAO1D,MANK,GAA8B,KAAK,IAM9B,MACR,sIACF,IAPY,MACR,wEACF;CAMJ;CAEA,OAAO;AACT"}
@@ -0,0 +1,38 @@
1
+ import { o as e, y as t } from "./chainConfig-BJ8C_RRz.js";
2
+ import { A as n, F as r, L as i, M as a } from "./publishAuthorization-CvK_coYp.js";
3
+ import { t as o } from "./publishThirdwebClient-D-K2WEeM.js";
4
+ import { getGetAdditionalSyncAddresses as s } from "@seedprotocol/sdk";
5
+ //#region src/helpers/resolveRevokeAccount.ts
6
+ async function c(c) {
7
+ let { account: l, attester: u } = c;
8
+ if (!u || l.address.toLowerCase() === u.toLowerCase()) return l;
9
+ let d = s(), f = !1;
10
+ if (d) {
11
+ let e = await d(), t = u.toLowerCase();
12
+ f = !!e?.some((e) => e?.toLowerCase() === t);
13
+ }
14
+ try {
15
+ let e = await r(l.address);
16
+ if (u.toLowerCase() === e.toLowerCase() || f) {
17
+ let r = f ? await n(t()).catch(() => e) : e;
18
+ if (await i(r)) {
19
+ let e = a();
20
+ await e.autoConnect({
21
+ client: o(),
22
+ chain: t()
23
+ });
24
+ let n = e.getAccount();
25
+ if (n) return n;
26
+ }
27
+ }
28
+ } catch {}
29
+ if (f) {
30
+ let { modularAccountModuleContract: t } = e();
31
+ throw t?.trim() ? Error("Revocation not supported for items published via the modular executor. Connect the ManagedAccount that controls the executor module.") : Error("Revocation not supported for items published via the modular executor.");
32
+ }
33
+ return l;
34
+ }
35
+ //#endregion
36
+ export { c as resolveRevokeAccount };
37
+
38
+ //# sourceMappingURL=resolveRevokeAccount-QgZ6YZuS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveRevokeAccount-QgZ6YZuS.js","names":[],"sources":["../src/helpers/resolveRevokeAccount.ts"],"sourcesContent":["import type { Account } from 'thirdweb/wallets'\nimport { getGetAdditionalSyncAddresses } from '@seedprotocol/sdk'\nimport { getPublishConfig } from '~/config'\nimport {\n getClient,\n getSmartWalletAddressForAdmin,\n isSmartWalletDeployed,\n getManagedAccountWallet,\n getConnectedManagedAccountAddress,\n} from '~/helpers/thirdweb'\nimport { getPublishThirdwebChain } from './thirdwebChain'\n\n/**\n * Resolves which account to use for revoking attestations.\n * When the attester is the user's ManagedAccount (EIP4337) but they're connected\n * with a different wallet (e.g. EOA or modular account), attempts to use the\n * ManagedAccount wallet for the revoke.\n *\n * When the attester is the legacy executor module address, attempts the ManagedAccount\n * wallet if `modularAccountModuleContract` is configured (executor-routed multiRevoke).\n * Throws only when the module was the attester and no ManagedAccount path is available.\n */\nexport async function resolveRevokeAccount(params: {\n account: Account\n attester: string | null\n}): Promise<Account> {\n const { account, attester } = params\n\n if (!attester || account.address.toLowerCase() === attester.toLowerCase()) {\n return account\n }\n\n const additionalGetter = getGetAdditionalSyncAddresses()\n let attesterIsExecutorModule = false\n if (additionalGetter) {\n const additional = await additionalGetter()\n const attesterLower = attester.toLowerCase()\n attesterIsExecutorModule = !!additional?.some(\n (a: string | undefined) => a?.toLowerCase() === attesterLower,\n )\n }\n\n try {\n const derivedManagedAccount = await getSmartWalletAddressForAdmin(account.address)\n const attesterLower = attester.toLowerCase()\n const derivedLower = derivedManagedAccount.toLowerCase()\n\n if (attesterLower === derivedLower || attesterIsExecutorModule) {\n const managedAddress = attesterIsExecutorModule\n ? await getConnectedManagedAccountAddress(getPublishThirdwebChain()).catch(() => derivedManagedAccount)\n : derivedManagedAccount\n const deployed = await isSmartWalletDeployed(managedAddress)\n if (deployed) {\n const managedAccountWallet = getManagedAccountWallet()\n await managedAccountWallet.autoConnect({\n client: getClient(),\n chain: getPublishThirdwebChain(),\n })\n const managedAccount = managedAccountWallet.getAccount()\n if (managedAccount) {\n return managedAccount\n }\n }\n }\n } catch {\n // Fall through\n }\n\n if (attesterIsExecutorModule) {\n const { modularAccountModuleContract } = getPublishConfig()\n if (!modularAccountModuleContract?.trim()) {\n throw new Error(\n 'Revocation not supported for items published via the modular executor.',\n )\n }\n // Module configured but ManagedAccount wallet unavailable\n throw new Error(\n 'Revocation not supported for items published via the modular executor. Connect the ManagedAccount that controls the executor module.',\n )\n }\n\n return account\n}\n"],"mappings":";;;;;AAsBA,eAAsB,EAAqB,GAGtB;CACnB,IAAM,EAAE,YAAS,gBAAa;CAE9B,IAAI,CAAC,KAAY,EAAQ,QAAQ,YAAY,MAAM,EAAS,YAAY,GACtE,OAAO;CAGT,IAAM,IAAmB,EAA8B,GACnD,IAA2B;CAC/B,IAAI,GAAkB;EACpB,IAAM,IAAa,MAAM,EAAiB,GACpC,IAAgB,EAAS,YAAY;EAC3C,IAA2B,CAAC,CAAC,GAAY,MACtC,MAA0B,GAAG,YAAY,MAAM,CAClD;CACF;CAEA,IAAI;EACF,IAAM,IAAwB,MAAM,EAA8B,EAAQ,OAAO;EAIjF,IAHsB,EAAS,YAG3B,MAFiB,EAAsB,YAErB,KAAgB,GAA0B;GAC9D,IAAM,IAAiB,IACnB,MAAM,EAAkC,EAAwB,CAAC,CAAC,CAAC,YAAY,CAAqB,IACpG;GAEJ,IAAI,MADmB,EAAsB,CAAc,GAC7C;IACZ,IAAM,IAAuB,EAAwB;IACrD,MAAM,EAAqB,YAAY;KACrC,QAAQ,EAAU;KAClB,OAAO,EAAwB;IACjC,CAAC;IACD,IAAM,IAAiB,EAAqB,WAAW;IACvD,IAAI,GACF,OAAO;GAEX;EACF;CACF,QAAQ,CAER;CAEA,IAAI,GAA0B;EAC5B,IAAM,EAAE,oCAAiC,EAAiB;EAO1D,MANK,GAA8B,KAAK,IAM9B,MACR,sIACF,IAPY,MACR,wEACF;CAMJ;CAEA,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"checking.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/checking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAE3D,KAAK,iBAAiB,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAgB,MAAM,QAAQ,CAAA;AAmBlD,eAAO,MAAM,QAAQ,yGAuGpB,CAAA"}
1
+ {"version":3,"file":"checking.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/checking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAE3D,KAAK,iBAAiB,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAgB,MAAM,QAAQ,CAAA;AAyBlD,eAAO,MAAM,QAAQ,yGAqHpB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"createAttestations.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/createAttestations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AA0D3D,KAAK,mBAAmB,GAAG;IACzB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,wBAAwB,EAAE,MAAM,CAAA;CACjC,CAAA;AAMD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAiChF;AAwID,eAAO,MAAM,kBAAkB;gBAIf,OAAO;oBACH,qBAAqB,CAAC,gBAAgB,CAAC;;aA3MnB,qBAAqB;WAAS,OAAO;gCAmiB5E,CAAA"}
1
+ {"version":3,"file":"createAttestations.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/createAttestations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AA+C3D,KAAK,mBAAmB,GAAG;IACzB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,wBAAwB,EAAE,MAAM,CAAA;CACjC,CAAA;AAMD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAiChF;AAED,eAAO,MAAM,kBAAkB;gBAIf,OAAO;oBACH,qBAAqB,CAAC,gBAAgB,CAAC;;aArEnB,qBAAqB;WAAS,OAAO;gCAyX5E,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"createAttestationsDirectToEas.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/createAttestationsDirectToEas.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAgH3D,eAAO,MAAM,6BAA6B;gBAI1B,OAAO;oBACH,qBAAqB,CAAC,gBAAgB,CAAC;;aA9BnB,qBAAqB;WAAS,OAAO;gCA+T5E,CAAA"}
1
+ {"version":3,"file":"createAttestationsDirectToEas.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/createAttestationsDirectToEas.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAiH3D,eAAO,MAAM,6BAA6B;gBAI1B,OAAO;oBACH,qBAAqB,CAAC,gBAAgB,CAAC;;aA9BnB,qBAAqB;WAAS,OAAO;gCAoV5E,CAAA"}
@@ -0,0 +1,58 @@
1
+ type ReceiptLike = {
2
+ logs?: Array<{
3
+ address?: string;
4
+ data?: string;
5
+ topics?: unknown[];
6
+ }>;
7
+ };
8
+ /** The fields of a normalized multiPublish request this module reads. */
9
+ export type MultiPublishRequestLike = {
10
+ localId?: string;
11
+ seedUid?: string;
12
+ seedSchemaUid?: string;
13
+ versionUid?: string;
14
+ versionSchemaUid?: string;
15
+ listOfAttestations?: Array<{
16
+ schema?: string;
17
+ data?: unknown[];
18
+ _propertyName?: string;
19
+ }>;
20
+ };
21
+ export type AttributedPropertyPair = {
22
+ schemaUid: string;
23
+ attestationUid: string;
24
+ propertyName?: string;
25
+ };
26
+ /** What one request of a multiPublish transaction created. */
27
+ export type RequestAttestations = {
28
+ /** Seed attestation created for the request (only when it had no seed uid). */
29
+ seedUid?: string;
30
+ /** Version attestation created for the request (only when it had no version uid). */
31
+ versionUid?: string;
32
+ propertyPairs: AttributedPropertyPair[];
33
+ };
34
+ /**
35
+ * Splits a multiPublish receipt into what each request created, in request order.
36
+ *
37
+ * None of the contract's events names the request it belongs to, but the contract handles the
38
+ * requests one after another (SeedProtocolExecutor / SeedProtocolExtensionBase `multiPublish`), so
39
+ * each kind of event appears in request order:
40
+ * - CreatedAttestation: the request's seed (when its seedUid was zero), then its version (when its
41
+ * versionUid was zero).
42
+ * - EAS Attested: one per property attestation (EAS also emits one for each seed/version; those are
43
+ * the CreatedAttestation uids and are skipped).
44
+ * - SeedPublished: executor `(seedUid, versionUid)`, only for a request with property attestations;
45
+ * extension `bytes32[]` of the property uids, for every request.
46
+ * Each stream is consumed with its own cursor. When CreatedAttestation carries more events than
47
+ * the seeds and versions created (an older contract that also reported property attestations
48
+ * there), the properties are read from it instead of from EAS Attested.
49
+ */
50
+ export declare function attributeMultiPublishReceipt(params: {
51
+ receipt: ReceiptLike;
52
+ requests: MultiPublishRequestLike[];
53
+ useModularExecutor: boolean;
54
+ easContractAddress: string;
55
+ contractAddressForEvents: string;
56
+ }): RequestAttestations[];
57
+ export {};
58
+ //# sourceMappingURL=multiPublishReceipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiPublishReceipt.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/multiPublishReceipt.ts"],"names":[],"mappings":"AAOA,KAAK,WAAW,GAAG;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAA;CACtE,CAAA;AAED,yEAAyE;AACzE,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC1F,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,8DAA8D;AAC9D,MAAM,MAAM,mBAAmB,GAAG;IAChC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,sBAAsB,EAAE,CAAA;CACxC,CAAA;AAmED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE;IACnD,OAAO,EAAE,WAAW,CAAA;IACpB,QAAQ,EAAE,uBAAuB,EAAE,CAAA;IACnC,kBAAkB,EAAE,OAAO,CAAA;IAC3B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,wBAAwB,EAAE,MAAM,CAAA;CACjC,GAAG,mBAAmB,EAAE,CA0FxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"persistSeedUid.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/persistSeedUid.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,kBAAkB,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvE;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAChD,kBAAkB,EAAE,kBAAkB,EAAE,GACvC,IAAI,CAYN;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE;IACJ,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,sBAAsB,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACxF,EACD,OAAO,EAAE,MAAM,EACf,sBAAsB,CAAC,EAAE,MAAM,GAC9B,OAAO,CAAC,IAAI,CAAC,CAcf"}
1
+ {"version":3,"file":"persistSeedUid.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/persistSeedUid.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,kBAAkB,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvE;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAChD,kBAAkB,EAAE,kBAAkB,EAAE,GACvC,IAAI,CAWN;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE;IACJ,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,sBAAsB,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACxF,EACD,OAAO,EAAE,MAAM,EACf,sBAAsB,CAAC,EAAE,MAAM,GAC9B,OAAO,CAAC,IAAI,CAAC,CAcf"}
@@ -0,0 +1,45 @@
1
+ import { type MultiPublishRequestLike, type RequestAttestations } from './multiPublishReceipt';
2
+ type ReceiptLike = {
3
+ blockNumber?: bigint;
4
+ logs?: Array<{
5
+ address?: string;
6
+ data?: string;
7
+ topics?: unknown[];
8
+ }>;
9
+ };
10
+ /**
11
+ * Records locally what one multiPublish transaction attested, for every request in it (the item
12
+ * being published and the related items published with it), each matched to its own events:
13
+ * - the Version attestation it created (updateVersionUid). A request that carried a version uid (a
14
+ * patch publish) created none: the executor's SeedPublished still reports that existing version,
15
+ * which must not be recorded as a new one.
16
+ * - its property attestation uids, on that version (applyPropertyAttestationUidsFromPublish).
17
+ * - the Seed attestation it created, for related items (the item being published, `rootSeedLocalId`,
18
+ * is left to the caller: createAttestations assigns it to the publishing item and persists it).
19
+ *
20
+ * Returns the requests with the seed and version uids this transaction created filled in.
21
+ */
22
+ export declare function recordMultiPublishReceipt<R extends MultiPublishRequestLike>(params: {
23
+ receipt: ReceiptLike;
24
+ /** The normalized requests, in the order they were sent. */
25
+ requests: R[];
26
+ rootSeedLocalId: string | undefined;
27
+ useModularExecutor: boolean;
28
+ contractAddressForEvents: string;
29
+ publisherAddress: string;
30
+ }): Promise<{
31
+ requests: R[];
32
+ attributed: RequestAttestations[];
33
+ }>;
34
+ /**
35
+ * Records the Seed attestation a publish created for a related item (one published together with the
36
+ * item being published) on that item. Best-effort: the attestation is already on-chain.
37
+ */
38
+ export declare function recordRelatedSeedUid(params: {
39
+ seedLocalId: string;
40
+ seedUid: string;
41
+ publisherAddress: string;
42
+ attestationCreatedAtMs?: number;
43
+ }): Promise<void>;
44
+ export {};
45
+ //# sourceMappingURL=recordMultiPublishReceipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordMultiPublishReceipt.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/recordMultiPublishReceipt.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAA;AAO9B,KAAK,WAAW,GAAG;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAA;CACtE,CAAA;AAKD;;;;;;;;;;;GAWG;AACH,wBAAsB,yBAAyB,CAAC,CAAC,SAAS,uBAAuB,EAAE,MAAM,EAAE;IACzF,OAAO,EAAE,WAAW,CAAA;IACpB,4DAA4D;IAC5D,QAAQ,EAAE,CAAC,EAAE,CAAA;IACb,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,kBAAkB,EAAE,OAAO,CAAA;IAC3B,wBAAwB,EAAE,MAAM,CAAA;IAChC,gBAAgB,EAAE,MAAM,CAAA;CACzB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAAC,UAAU,EAAE,mBAAmB,EAAE,CAAA;CAAE,CAAC,CAgEhE;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB"}
@@ -1 +1 @@
1
- {"version":3,"file":"getPublishUploadData.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/helpers/getPublishUploadData.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAG7E,yGAAyG;AACzG,MAAM,MAAM,2BAA2B,GAAG;IACxC,iBAAiB,CAAC,EAAE,cAAc,EAAE,CAAA;IACpC,4BAA4B,CAAC,EAAE,MAAM,EAAE,CAAA;IACvC,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAA;IACtC,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AA8DD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4FAA4F;IAC5F,IAAI,EAAE,cAAc,EAAE,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAuOD,eAAO,MAAM,oBAAoB,GAC/B,MAAM,KAAK,CAAC,GAAG,CAAC,EAChB,UAAS,iBAAiB,EAAO,EACjC,sBAAsB,aAAa,CAAC,GAAG,CAAC,EACxC,UAAU,2BAA2B,KACpC,OAAO,CAAC,iBAAiB,EAAE,CAwD7B,CAAA"}
1
+ {"version":3,"file":"getPublishUploadData.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/helpers/getPublishUploadData.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAG7E,yGAAyG;AACzG,MAAM,MAAM,2BAA2B,GAAG;IACxC,iBAAiB,CAAC,EAAE,cAAc,EAAE,CAAA;IACpC,4BAA4B,CAAC,EAAE,MAAM,EAAE,CAAA;IACvC,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAA;IACtC,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AA8DD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4FAA4F;IAC5F,IAAI,EAAE,cAAc,EAAE,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AA2OD,eAAO,MAAM,oBAAoB,GAC/B,MAAM,KAAK,CAAC,GAAG,CAAC,EAChB,UAAS,iBAAiB,EAAO,EACjC,sBAAsB,aAAa,CAAC,GAAG,CAAC,EACxC,UAAU,2BAA2B,KACpC,OAAO,CAAC,iBAAiB,EAAE,CA2D7B,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { PublishMode } from '@seedprotocol/sdk';
1
+ import type { PublishMode, UnpublishedRelatedItem } from '@seedprotocol/sdk';
2
2
  export type { PublishMode };
3
3
  export type PublishWorkSummary = {
4
4
  publishMode: PublishMode;
@@ -8,6 +8,8 @@ export type PublishWorkSummary = {
8
8
  attestationCount: number;
9
9
  uploadCount: number;
10
10
  uploadBytes: number;
11
+ /** References to unpublished items; when non-empty the publish fails before sending anything. */
12
+ unpublishedRelatedItems?: UnpublishedRelatedItem[];
11
13
  };
12
14
  export type PublishCostEstimate = {
13
15
  totalUsd: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/publishCost/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,YAAY,EAAE,WAAW,EAAE,CAAA;AAE3B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE;QACH,GAAG,EAAE,MAAM,CAAA;QACX,GAAG,EAAE,MAAM,CAAA;QACX,GAAG,EAAE,MAAM,CAAA;QACX,QAAQ,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAA;QACV,GAAG,EAAE,MAAM,CAAA;QACX,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;QACtB,QAAQ,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,IAAI,EAAE,kBAAkB,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;QACnB,cAAc,EAAE,MAAM,CAAA;KACvB,CAAA;CACF,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/publishCost/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE5E,YAAY,EAAE,WAAW,EAAE,CAAA;AAE3B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,iGAAiG;IACjG,uBAAuB,CAAC,EAAE,sBAAsB,EAAE,CAAA;CACnD,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE;QACH,GAAG,EAAE,MAAM,CAAA;QACX,GAAG,EAAE,MAAM,CAAA;QACX,GAAG,EAAE,MAAM,CAAA;QACX,QAAQ,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAA;QACV,GAAG,EAAE,MAAM,CAAA;QACX,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;QACtB,QAAQ,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,IAAI,EAAE,kBAAkB,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;QACnB,cAAc,EAAE,MAAM,CAAA;KACvB,CAAA;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"publishDone.d.ts","sourceRoot":"","sources":["../../../../src/services/publishManager/actions/publishDone.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,mOAmBtB,CAAA"}
1
+ {"version":3,"file":"publishDone.d.ts","sourceRoot":"","sources":["../../../../src/services/publishManager/actions/publishDone.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,mOAoBtB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"stopAll.d.ts","sourceRoot":"","sources":["../../../../src/services/publishManager/actions/stopAll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,WAAW,EAAE,MAAM,QAAQ,CAAA;AAOhE,eAAO,MAAM,OAAO,kQAclB,CAAA"}
1
+ {"version":3,"file":"stopAll.d.ts","sourceRoot":"","sources":["../../../../src/services/publishManager/actions/stopAll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,WAAW,EAAE,MAAM,QAAQ,CAAA;AAQhE,eAAO,MAAM,OAAO,kQAiBlB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"stopPublish.d.ts","sourceRoot":"","sources":["../../../../src/services/publishManager/actions/stopPublish.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,qTAiCtB,CAAA"}
1
+ {"version":3,"file":"stopPublish.d.ts","sourceRoot":"","sources":["../../../../src/services/publishManager/actions/stopPublish.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,qTAmCtB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"restoreFromDb.d.ts","sourceRoot":"","sources":["../../../../src/services/publishManager/actors/restoreFromDb.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,WAAW,EAAgB,MAAM,QAAQ,CAAA;AAmH/D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE;QACP,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACtC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACpC,CAAA;CACF;AAED,eAAO,MAAM,aAAa,mFA+FzB,CAAA"}
1
+ {"version":3,"file":"restoreFromDb.d.ts","sourceRoot":"","sources":["../../../../src/services/publishManager/actors/restoreFromDb.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,WAAW,EAAgB,MAAM,QAAQ,CAAA;AAoH/D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE;QACP,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACtC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACpC,CAAA;CACF;AAED,eAAO,MAAM,aAAa,mFAiGzB,CAAA"}
@@ -176,10 +176,10 @@ export declare const PublishManager: {
176
176
  ready: () => Promise<void>;
177
177
  /**
178
178
  * Spawn a publish. Resolves with the child actor once it exists.
179
- * Resolves `undefined` when the address is missing or that seed is already in flight.
180
- * This promise means the process started, not that the chain publish finished.
179
+ * Resolves `undefined` when the address is missing or that seed is already in flight, in this
180
+ * tab or another one. This promise means the process started, not that the chain publish finished.
181
181
  */
182
- createPublish: (item: InstanceType<typeof Item>, address: string, account?: import("../../helpers/seedSigner").PublishWallet, options?: import("../../config").CreatePublishOptions) => Promise<import("xstate").ActorRef<any, any, import("xstate").EventObject> | undefined>;
182
+ createPublish: (item: InstanceType<typeof Item>, address: string, account?: import("../../helpers/seedSigner").PublishWallet, options?: import("../../config").CreatePublishOptions) => Promise<import("xstate").ActorRef<any, any> | undefined>;
183
183
  retryAttestations: (seedLocalId: string, account?: import("../../helpers/seedSigner").PublishWallet) => void;
184
184
  stopPublish: (seedLocalId: string) => void;
185
185
  query: (seedLocalId: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/publishManager/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/publishManager/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAsB,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAqB3C,MAAM,WAAW,4BAA4B;IAC3C,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;IAClE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,OAAO,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAA;IACxF,8DAA8D;IAC9D,cAAc,EAAE,mBAAmB,EAAE,CAAA;IACrC,+EAA+E;IAC/E,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;CACnE;AAED,KAAK,mBAAmB,GACpB;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,gBAAgB,EAAE,4BAA4B,CAAC,kBAAkB,CAAC,CAAC;IAAC,aAAa,EAAE,4BAA4B,CAAC,eAAe,CAAC,CAAA;CAAE,GAClK;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,OAAO,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,cAAc,EAAE,oBAAoB,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACxL;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,GACxG;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7G;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GAChF;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAA;AAExB,eAAO,MAAM,qBAAqB;UAZtB,sBAAsB;sBAAoB,4BAA4B,CAAC,kBAAkB,CAAC;mBAAiB,4BAA4B,CAAC,eAAe,CAAC;;UACxJ,gBAAgB;UAAQ,OAAO,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC;aAAW,MAAM;cAAY,OAAO;cAAY,OAAO,cAAc,EAAE,oBAAoB;kBAAgB,MAAM;;UAC9K,kBAAkB;iBAAe,MAAM;sBAAoB,OAAO,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;;UAC9F,sBAAsB;iBAAe,MAAM;qBAAmB,OAAO;yBAAuB,OAAO;;UACnG,mBAAmB;iBAAe,MAAM;yBAAuB,OAAO;;UACtE,cAAc;iBAAe,MAAM;;UACnC,qBAAqB;iBAAe,MAAM;;UAC1C,oBAAoB;iBAAe,MAAM;cAAY,OAAO;;UAC5D,cAAc;iBAAe,MAAM;;UACnC,OAAO;iBAAe,MAAM;;UAC5B,UAAU;;;;;;;;;;;;;;;;+BAyFpB,CAAA;AAiEF,eAAO,MAAM,cAAc;;cApKf,sBAAsB;0BAAoB,4BAA4B,CAAC,kBAAkB,CAAC;uBAAiB,4BAA4B,CAAC,eAAe,CAAC;;cACxJ,gBAAgB;cAAQ,OAAO,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC;iBAAW,MAAM;kBAAY,OAAO;kBAAY,OAAO,cAAc,EAAE,oBAAoB;sBAAgB,MAAM;;cAC9K,kBAAkB;qBAAe,MAAM;0BAAoB,OAAO,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;;cAC9F,sBAAsB;qBAAe,MAAM;yBAAmB,OAAO;6BAAuB,OAAO;;cACnG,mBAAmB;qBAAe,MAAM;6BAAuB,OAAO;;cACtE,cAAc;qBAAe,MAAM;;cACnC,qBAAqB;qBAAe,MAAM;;cAC1C,oBAAoB;qBAAe,MAAM;kBAAY,OAAO;;cAC5D,cAAc;qBAAe,MAAM;;cACnC,OAAO;qBAAe,MAAM;;cAC5B,UAAU;;;;;;;;;;;;;;;;;IA4JpB;;;OAGG;iBACQ,OAAO,CAAC,IAAI,CAAC;IAgBxB;;;;OAIG;0BAEK,YAAY,CAAC,OAAO,IAAI,CAAC,WACtB,MAAM,YACL,OAAO,0BAA0B,EAAE,aAAa,YAChD,OAAO,cAAc,EAAE,oBAAoB,KACpD,OAAO,CAAC,OAAO,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;qCAe1B,MAAM,YAAY,OAAO,0BAA0B,EAAE,aAAa;+BAExE,MAAM;yBACZ,MAAM;;8BAED,MAAM;+BAIL,MAAM,kBAAkB,YAAY,CAAC,OAAO,cAAc,CAAC;mCAEvD,MAAM,qBAAqB,OAAO,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;sCAE3D,MAAM;CACzC,CAAA"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * One tab runs a given seed's publish. Every tab restores `in_progress` publish rows on load, and
3
+ * two tabs resuming the same publish would upload and attest twice. The tab running a publish holds
4
+ * a Web Lock for its seed; the browser releases it when the tab closes or crashes, and the next tab
5
+ * to restore picks the publish up. See docs/MULTI_TAB.md.
6
+ *
7
+ * Where Web Locks are missing (Node, Bun, old browsers) every lock is granted, as before.
8
+ */
9
+ type LockManagerLike = Pick<LockManager, 'request'>;
10
+ export declare function publishLockName(seedLocalId: string): string;
11
+ /**
12
+ * Takes the seed's publish lock if no other tab holds it. Resolves true when this tab holds it
13
+ * (including already), false when another tab is running that publish.
14
+ */
15
+ export declare function tryHoldPublishLock(seedLocalId: string): Promise<boolean>;
16
+ export declare function releasePublishLock(seedLocalId: string): void;
17
+ export declare function releaseAllPublishLocks(): void;
18
+ export declare function isHoldingPublishLock(seedLocalId: string): boolean;
19
+ /** Tests only: swap the lock manager (Bun has no navigator.locks). */
20
+ export declare function setPublishLockManagerForTests(locks: LockManagerLike | undefined): void;
21
+ export {};
22
+ //# sourceMappingURL=publishLocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishLocks.d.ts","sourceRoot":"","sources":["../../../src/services/publishManager/publishLocks.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,KAAK,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;AAQnD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA0B9E;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAE5D;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,sEAAsE;AACtE,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CAGtF"}
@@ -1 +1 @@
1
- {"version":3,"file":"revokeAttestations.d.ts","sourceRoot":"","sources":["../../../src/services/revoke/revokeAttestations.ts"],"names":[],"mappings":"AAkDA;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwGhB"}
1
+ {"version":3,"file":"revokeAttestations.d.ts","sourceRoot":"","sources":["../../../src/services/revoke/revokeAttestations.ts"],"names":[],"mappings":"AAkDA;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+GhB"}
package/dist/thirdweb.js CHANGED
@@ -1,9 +1,9 @@
1
- import { A as e, M as t, a as n, ct as r, dt as i, h as a, lt as o, m as s, mt as c, o as l, p as u, pt as d, s as f, t as p, tt as ee, y as m } from "./chainConfig-DWzoOtkS.js";
2
- import { A as h, B as g, C as _, D as te, E as ne, F as v, G as re, H as ie, I as y, K as ae, L as oe, M as b, N as x, O as se, P as S, R as C, S as w, T as ce, U as le, W as ue, a as de, b as fe, d as pe, f as me, h as T, j as he, k as E, l as D, m as O, nt as k, p as A, tt as j, u as M, x as N, y as P, z as F } from "./publishAuthorization-DgDI4zor.js";
3
- import { t as I } from "./publishThirdwebClient-CO18ST7C.js";
4
- import { t as L } from "./ensureSmartWalletThenPublish-DuOYPJFd.js";
5
- import { t as R } from "./ensureModularPublishBootstrap-BImiIFJe.js";
6
- import { i as z, r as B, t as V } from "./ensureAutomationSessionKey-h3zOmDr5.js";
1
+ import { A as e, M as t, a as n, ct as r, dt as i, h as a, lt as o, m as s, mt as c, o as l, p as u, pt as d, s as f, t as p, tt as ee, y as m } from "./chainConfig-DWynbnb8.js";
2
+ import { A as h, B as g, C as _, D as te, E as ne, F as v, G as re, H as ie, I as y, K as ae, L as oe, M as b, N as x, O as se, P as S, R as C, S as w, T as ce, U as le, W as ue, a as de, b as fe, d as pe, f as me, h as T, j as he, k as E, l as D, m as O, nt as k, p as A, tt as j, u as M, x as N, y as P, z as F } from "./publishAuthorization-C-XYb9Ef.js";
3
+ import { t as I } from "./publishThirdwebClient-BmqsJCjp.js";
4
+ import { t as L } from "./ensureSmartWalletThenPublish-BfEndtFo.js";
5
+ import { t as R } from "./ensureModularPublishBootstrap-DegJnYKL.js";
6
+ import { i as z, r as B, t as V } from "./ensureAutomationSessionKey-CxpJY_uH.js";
7
7
  import { client as H } from "@seedprotocol/sdk";
8
8
  import { deploySmartAccount as ge, getContract as U, sendTransaction as _e } from "thirdweb";
9
9
  import { assessPublishAuthorization as ve, decodePublishAuthorizationData as ye, getPublishAuthorizationFromEas as be } from "@seedprotocol/eas";
@@ -0,0 +1,69 @@
1
+ import { o as e } from "./chainConfig-DmuPBs3D.js";
2
+ import { BaseDb as t, applyArweaveL1TransactionIdLocal as n, arweaveL1FinalizeJobs as r, getArweaveUploadStatus as i, isArweaveL1AnchoringComplete as a, queryArweaveGatewayTransactionWithFallback as o } from "@seedprotocol/sdk";
3
+ import s from "debug";
4
+ import { eq as c } from "drizzle-orm";
5
+ //#region src/services/arweaveL1Finalize/worker.ts
6
+ var l = s("seedProtocol:arweaveL1Finalize:worker"), u = 45e3, d = null;
7
+ function f() {
8
+ d ?? (d = setInterval(() => {
9
+ p();
10
+ }, u), p());
11
+ }
12
+ async function p() {
13
+ let s;
14
+ try {
15
+ s = e();
16
+ } catch {
17
+ return;
18
+ }
19
+ if (!s.useArweaveBundler || !t.isAppDbReady()) return;
20
+ let u = t.getAppDb();
21
+ if (!u) return;
22
+ let d = await u.select().from(r).where(c(r.phase, "pending_l1")).limit(25);
23
+ if (d.length === 0) return;
24
+ let f = s.arweaveUploadVerificationBaseUrl, p = s.arweaveGraphqlUrl;
25
+ for (let e of d) {
26
+ let t = e.dataItemId;
27
+ try {
28
+ let s = e.l1TransactionId;
29
+ if (!s) {
30
+ let n = (await o(p, t))?.bundledInId ?? null;
31
+ n && (s = n, await u.update(r).set({
32
+ l1TransactionId: n,
33
+ bundleId: n,
34
+ updatedAt: Date.now()
35
+ }).where(c(r.id, e.id)));
36
+ }
37
+ let l = await i(f, t), d = l ? JSON.stringify(l) : null;
38
+ if (l && a(l)) {
39
+ let i = s ?? l.bundleId ?? l.turbo?.bundleId ?? e.l1TransactionId ?? null;
40
+ i && await n({
41
+ seedLocalId: e.seedLocalId,
42
+ versionLocalId: e.versionLocalId,
43
+ dataItemId: t,
44
+ l1TransactionId: i
45
+ }), await u.update(r).set({
46
+ phase: "confirmed",
47
+ statusJson: d,
48
+ l1TransactionId: i ?? e.l1TransactionId,
49
+ bundleId: l.bundleId ?? e.bundleId,
50
+ updatedAt: Date.now()
51
+ }).where(c(r.id, e.id));
52
+ continue;
53
+ }
54
+ await u.update(r).set({
55
+ statusJson: d,
56
+ updatedAt: Date.now()
57
+ }).where(c(r.id, e.id));
58
+ } catch (t) {
59
+ l("tick error for job", e.id, t), await u.update(r).set({
60
+ errorMessage: t instanceof Error ? t.message : String(t),
61
+ updatedAt: Date.now()
62
+ }).where(c(r.id, e.id));
63
+ }
64
+ }
65
+ }
66
+ //#endregion
67
+ export { f as startArweaveL1FinalizeWorker };
68
+
69
+ //# sourceMappingURL=worker-CJRUAOAn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-CJRUAOAn.js","names":[],"sources":["../src/services/arweaveL1Finalize/worker.ts"],"sourcesContent":["import {\n applyArweaveL1TransactionIdLocal,\n arweaveL1FinalizeJobs,\n BaseDb,\n getArweaveUploadStatus,\n isArweaveL1AnchoringComplete,\n queryArweaveGatewayTransactionWithFallback,\n} from '@seedprotocol/sdk'\nimport { eq } from 'drizzle-orm'\nimport { getPublishConfig } from '~/config'\nimport debug from 'debug'\n\nconst logger = debug('seedProtocol:arweaveL1Finalize:worker')\n\nconst TICK_MS = 45_000\n\nlet intervalId: ReturnType<typeof setInterval> | null = null\n\nexport function startArweaveL1FinalizeWorker(): void {\n if (intervalId != null) return\n intervalId = setInterval(() => {\n void runArweaveL1FinalizeTick()\n }, TICK_MS)\n void runArweaveL1FinalizeTick()\n}\n\nexport function stopArweaveL1FinalizeWorker(): void {\n if (intervalId != null) {\n clearInterval(intervalId)\n intervalId = null\n }\n}\n\nasync function runArweaveL1FinalizeTick(): Promise<void> {\n let config: ReturnType<typeof getPublishConfig>\n try {\n config = getPublishConfig()\n } catch {\n return\n }\n if (!config.useArweaveBundler) return\n\n // initPublish may start this worker before Seed platformClassesInit configures BaseDb.\n if (!BaseDb.isAppDbReady()) return\n const db = BaseDb.getAppDb()\n if (!db) return\n\n const pending = await db\n .select()\n .from(arweaveL1FinalizeJobs)\n .where(eq(arweaveL1FinalizeJobs.phase, 'pending_l1'))\n .limit(25)\n\n if (pending.length === 0) return\n\n const uploadBase = config.arweaveUploadVerificationBaseUrl\n const graphqlUrl = config.arweaveGraphqlUrl\n\n for (const job of pending) {\n const dataItemId = job.dataItemId\n try {\n let l1TxId = job.l1TransactionId\n\n if (!l1TxId) {\n const gql = await queryArweaveGatewayTransactionWithFallback(graphqlUrl, dataItemId)\n const bundled = gql?.bundledInId ?? null\n if (bundled) {\n l1TxId = bundled\n await db\n .update(arweaveL1FinalizeJobs)\n .set({\n l1TransactionId: bundled,\n bundleId: bundled,\n updatedAt: Date.now(),\n })\n .where(eq(arweaveL1FinalizeJobs.id, job.id!))\n }\n }\n\n const status = await getArweaveUploadStatus(uploadBase, dataItemId)\n const statusStr = status ? JSON.stringify(status) : null\n\n if (status && isArweaveL1AnchoringComplete(status)) {\n const resolvedL1 =\n l1TxId ??\n status.bundleId ??\n status.turbo?.bundleId ??\n job.l1TransactionId ??\n null\n\n if (resolvedL1) {\n await applyArweaveL1TransactionIdLocal({\n seedLocalId: job.seedLocalId,\n versionLocalId: job.versionLocalId,\n dataItemId,\n l1TransactionId: resolvedL1,\n })\n }\n\n await db\n .update(arweaveL1FinalizeJobs)\n .set({\n phase: 'confirmed',\n statusJson: statusStr,\n l1TransactionId: resolvedL1 ?? job.l1TransactionId,\n bundleId: status.bundleId ?? job.bundleId,\n updatedAt: Date.now(),\n })\n .where(eq(arweaveL1FinalizeJobs.id, job.id!))\n continue\n }\n\n await db\n .update(arweaveL1FinalizeJobs)\n .set({\n statusJson: statusStr,\n updatedAt: Date.now(),\n })\n .where(eq(arweaveL1FinalizeJobs.id, job.id!))\n } catch (err) {\n logger('tick error for job', job.id, err)\n await db\n .update(arweaveL1FinalizeJobs)\n .set({\n errorMessage: err instanceof Error ? err.message : String(err),\n updatedAt: Date.now(),\n })\n .where(eq(arweaveL1FinalizeJobs.id, job.id!))\n }\n }\n}\n"],"mappings":";;;;;AAYA,IAAM,IAAS,EAAM,uCAAuC,GAEtD,IAAU,MAEZ,IAAoD;AAExD,SAAgB,IAAqC;CAC/C,MACJ,IAAa,kBAAkB;EAC7B,EAA8B;CAChC,GAAG,CAAO,GACV,EAA8B;AAChC;AASA,eAAe,IAA0C;CACvD,IAAI;CACJ,IAAI;EACF,IAAS,EAAiB;CAC5B,QAAQ;EACN;CACF;CAIA,IAHI,CAAC,EAAO,qBAGR,CAAC,EAAO,aAAa,GAAG;CAC5B,IAAM,IAAK,EAAO,SAAS;CAC3B,IAAI,CAAC,GAAI;CAET,IAAM,IAAU,MAAM,EACnB,OAAO,CAAC,CACR,KAAK,CAAqB,CAAC,CAC3B,MAAM,EAAG,EAAsB,OAAO,YAAY,CAAC,CAAC,CACpD,MAAM,EAAE;CAEX,IAAI,EAAQ,WAAW,GAAG;CAE1B,IAAM,IAAa,EAAO,kCACpB,IAAa,EAAO;CAE1B,KAAK,IAAM,KAAO,GAAS;EACzB,IAAM,IAAa,EAAI;EACvB,IAAI;GACF,IAAI,IAAS,EAAI;GAEjB,IAAI,CAAC,GAAQ;IAEX,IAAM,KAAU,MADE,EAA2C,GAAY,CAAU,EAAA,EAC9D,eAAe;IACpC,AAAI,MACF,IAAS,GACT,MAAM,EACH,OAAO,CAAqB,CAAC,CAC7B,IAAI;KACH,iBAAiB;KACjB,UAAU;KACV,WAAW,KAAK,IAAI;IACtB,CAAC,CAAC,CACD,MAAM,EAAG,EAAsB,IAAI,EAAI,EAAG,CAAC;GAElD;GAEA,IAAM,IAAS,MAAM,EAAuB,GAAY,CAAU,GAC5D,IAAY,IAAS,KAAK,UAAU,CAAM,IAAI;GAEpD,IAAI,KAAU,EAA6B,CAAM,GAAG;IAClD,IAAM,IACJ,KACA,EAAO,YACP,EAAO,OAAO,YACd,EAAI,mBACJ;IAWF,AATI,KACF,MAAM,EAAiC;KACrC,aAAa,EAAI;KACjB,gBAAgB,EAAI;KACpB;KACA,iBAAiB;IACnB,CAAC,GAGH,MAAM,EACH,OAAO,CAAqB,CAAC,CAC7B,IAAI;KACH,OAAO;KACP,YAAY;KACZ,iBAAiB,KAAc,EAAI;KACnC,UAAU,EAAO,YAAY,EAAI;KACjC,WAAW,KAAK,IAAI;IACtB,CAAC,CAAC,CACD,MAAM,EAAG,EAAsB,IAAI,EAAI,EAAG,CAAC;IAC9C;GACF;GAEA,MAAM,EACH,OAAO,CAAqB,CAAC,CAC7B,IAAI;IACH,YAAY;IACZ,WAAW,KAAK,IAAI;GACtB,CAAC,CAAC,CACD,MAAM,EAAG,EAAsB,IAAI,EAAI,EAAG,CAAC;EAChD,SAAS,GAAK;GAEZ,AADA,EAAO,sBAAsB,EAAI,IAAI,CAAG,GACxC,MAAM,EACH,OAAO,CAAqB,CAAC,CAC7B,IAAI;IACH,cAAc,aAAe,QAAQ,EAAI,UAAU,OAAO,CAAG;IAC7D,WAAW,KAAK,IAAI;GACtB,CAAC,CAAC,CACD,MAAM,EAAG,EAAsB,IAAI,EAAI,EAAG,CAAC;EAChD;CACF;AACF"}