@seedprotocol/sdk 0.5.2 → 0.5.3

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 (124) hide show
  1. package/dist/{BasePathResolver-BDgc7c4T.js → BasePathResolver-DWY_hb8w.js} +2 -2
  2. package/dist/{BasePathResolver-BDgc7c4T.js.map → BasePathResolver-DWY_hb8w.js.map} +1 -1
  3. package/dist/{ModelProperty-BBXBvgvy.js → ModelProperty-DGJf78CS.js} +21 -21
  4. package/dist/{ModelProperty-BBXBvgvy.js.map → ModelProperty-DGJf78CS.js.map} +1 -1
  5. package/dist/{Schema-xAt7jWlW.js → Schema-Drmce3q-.js} +39 -39
  6. package/dist/{Schema-xAt7jWlW.js.map → Schema-Drmce3q-.js.map} +1 -1
  7. package/dist/{SchemaValidationService-CLzAdBm-.js → SchemaValidationService-a_sfnpDV.js} +5 -5
  8. package/dist/{SchemaValidationService-CLzAdBm-.js.map → SchemaValidationService-a_sfnpDV.js.map} +1 -1
  9. package/dist/{backfillMetadataPropertyIds-DBVaIs7O.js → backfillMetadataPropertyIds-CZcOi-cK.js} +3 -3
  10. package/dist/{backfillMetadataPropertyIds-DBVaIs7O.js.map → backfillMetadataPropertyIds-CZcOi-cK.js.map} +1 -1
  11. package/dist/cjs/{ModelProperty-Dgd4tGrB.js → ModelProperty-BA26rMV8.js} +17 -17
  12. package/dist/cjs/{ModelProperty-Dgd4tGrB.js.map → ModelProperty-BA26rMV8.js.map} +1 -1
  13. package/dist/cjs/{Schema-dkd-eo3B.js → Schema-Hgwq3L34.js} +20 -20
  14. package/dist/cjs/{Schema-dkd-eo3B.js.map → Schema-Hgwq3L34.js.map} +1 -1
  15. package/dist/cjs/{SchemaValidationService-BMnjcVWV.js → SchemaValidationService-DVmOGZao.js} +2 -2
  16. package/dist/cjs/{SchemaValidationService-BMnjcVWV.js.map → SchemaValidationService-DVmOGZao.js.map} +1 -1
  17. package/dist/cjs/{backfillMetadataPropertyIds-ClLuj3s6.js → backfillMetadataPropertyIds-BWJI4eCj.js} +2 -2
  18. package/dist/cjs/{backfillMetadataPropertyIds-ClLuj3s6.js.map → backfillMetadataPropertyIds-BWJI4eCj.js.map} +1 -1
  19. package/dist/cjs/{eas-nWAzbl_F.js → eas-BJ8FtbU9.js} +3 -3
  20. package/dist/cjs/{eas-nWAzbl_F.js.map → eas-BJ8FtbU9.js.map} +1 -1
  21. package/dist/cjs/{getItem-B08FgglK.js → getItem-DdBKeEEU.js} +2 -2
  22. package/dist/cjs/{getItem-B08FgglK.js.map → getItem-DdBKeEEU.js.map} +1 -1
  23. package/dist/cjs/{getPublishPayload-B_G_6qkE.js → getPublishPayload-DSBLjMKl.js} +11 -11
  24. package/dist/cjs/{getPublishPayload-B_G_6qkE.js.map → getPublishPayload-DSBLjMKl.js.map} +1 -1
  25. package/dist/cjs/{getPublishUploads-Dt-DS-lo.js → getPublishUploads-DMKnK2_R.js} +4 -4
  26. package/dist/cjs/{getPublishUploads-Dt-DS-lo.js.map → getPublishUploads-DMKnK2_R.js.map} +1 -1
  27. package/dist/cjs/{getSegmentedItemProperties-BDGbeDW7.js → getSegmentedItemProperties-D0ZzTmvi.js} +3 -3
  28. package/dist/cjs/{getSegmentedItemProperties-BDGbeDW7.js.map → getSegmentedItemProperties-D0ZzTmvi.js.map} +1 -1
  29. package/dist/cjs/{index-CRBI6dSD.js → index-BD1b6zAi.js} +498 -40
  30. package/dist/cjs/index-BD1b6zAi.js.map +1 -0
  31. package/dist/cjs/{index-Dx19j60c.js → index-DQggpLqI.js} +3 -3
  32. package/dist/cjs/index-DQggpLqI.js.map +1 -0
  33. package/dist/cjs/index.browser-BSf8HpnU.js.map +1 -1
  34. package/dist/cjs/{property-628qAHpN.js → property-D4IB0zBz.js} +4 -4
  35. package/dist/cjs/{property-628qAHpN.js.map → property-D4IB0zBz.js.map} +1 -1
  36. package/dist/cjs/{syncDbWithEas-DOBtMPw-.js → syncDbWithEas-BYvFJc7N.js} +6 -6
  37. package/dist/cjs/{syncDbWithEas-DOBtMPw-.js.map → syncDbWithEas-BYvFJc7N.js.map} +1 -1
  38. package/dist/{configurePlatform-Ce6NIKRP.js → configurePlatform-CXQCT7N8.js} +3 -3
  39. package/dist/{configurePlatform-Ce6NIKRP.js.map → configurePlatform-CXQCT7N8.js.map} +1 -1
  40. package/dist/{constants-slkc9uq0.js → constants-B7aNfB_1.js} +3 -3
  41. package/dist/{constants-slkc9uq0.js.map → constants-B7aNfB_1.js.map} +1 -1
  42. package/dist/constants-DMHTYMgJ.js.map +1 -1
  43. package/dist/{db-CSmK0c3e.js → db-Bad8QKfZ.js} +18 -18
  44. package/dist/{db-CSmK0c3e.js.map → db-Bad8QKfZ.js.map} +1 -1
  45. package/dist/{eas-rx1grht5.js → eas-BB9hVW68.js} +6 -6
  46. package/dist/{eas-rx1grht5.js.map → eas-BB9hVW68.js.map} +1 -1
  47. package/dist/{getItem-hPBJU5JF.js → getItem-Cina46nb.js} +5 -5
  48. package/dist/{getItem-hPBJU5JF.js.map → getItem-Cina46nb.js.map} +1 -1
  49. package/dist/{getPublishPayload-5ugovGK5.js → getPublishPayload-BEO52UOv.js} +16 -16
  50. package/dist/{getPublishPayload-5ugovGK5.js.map → getPublishPayload-BEO52UOv.js.map} +1 -1
  51. package/dist/{getPublishUploads-CdWeci-s.js → getPublishUploads-CJjfqJi9.js} +7 -7
  52. package/dist/{getPublishUploads-CdWeci-s.js.map → getPublishUploads-CJjfqJi9.js.map} +1 -1
  53. package/dist/{getSegmentedItemProperties-DV2LHElJ.js → getSegmentedItemProperties-CbzFDgFr.js} +5 -5
  54. package/dist/{getSegmentedItemProperties-DV2LHElJ.js.map → getSegmentedItemProperties-CbzFDgFr.js.map} +1 -1
  55. package/dist/{index-ClwdGWfr.js → index-B4In0GEO.js} +428 -64
  56. package/dist/index-B4In0GEO.js.map +1 -0
  57. package/dist/index-DNOCl06b.js +28 -0
  58. package/dist/index-DNOCl06b.js.map +1 -0
  59. package/dist/{index-QMrBK-L3.js → index-DrEkRiuK.js} +2 -2
  60. package/dist/index-DrEkRiuK.js.map +1 -0
  61. package/dist/{index.node-CrXwRoiB.js → index.node-CnP9s4cV.js} +4 -4
  62. package/dist/{index.node-CrXwRoiB.js.map → index.node-CnP9s4cV.js.map} +1 -1
  63. package/dist/main.cjs +1 -1
  64. package/dist/main.js +19 -20
  65. package/dist/main.js.map +1 -1
  66. package/dist/node.js +10 -10
  67. package/dist/node.js.map +1 -1
  68. package/dist/platform.browser.js +4 -4
  69. package/dist/platform.browser.js.map +1 -1
  70. package/dist/platform.node.js +3 -3
  71. package/dist/{property-CKhOxRNt.js → property-DIN1zQ_c.js} +8 -8
  72. package/dist/{property-CKhOxRNt.js.map → property-DIN1zQ_c.js.map} +1 -1
  73. package/dist/src/Item/Item.d.ts +5 -0
  74. package/dist/src/Item/Item.d.ts.map +1 -1
  75. package/dist/src/Item/service/itemMachineSingle.d.ts +2 -2
  76. package/dist/src/Item/service/itemMachineSingle.d.ts.map +1 -1
  77. package/dist/src/ItemProperty/ItemProperty.d.ts +1 -1
  78. package/dist/src/ItemProperty/service/propertyMachine.d.ts +2 -2
  79. package/dist/src/ItemProperty/service/propertyMachine.d.ts.map +1 -1
  80. package/dist/src/Model/service/modelMachine.d.ts +10 -18
  81. package/dist/src/Model/service/modelMachine.d.ts.map +1 -1
  82. package/dist/src/ModelProperty/service/modelPropertyMachine.d.ts +5 -13
  83. package/dist/src/ModelProperty/service/modelPropertyMachine.d.ts.map +1 -1
  84. package/dist/src/Schema/service/addModelsMachine.d.ts +8 -8
  85. package/dist/src/Schema/service/addModelsMachine.d.ts.map +1 -1
  86. package/dist/src/Schema/service/schemaMachine.d.ts +22 -30
  87. package/dist/src/Schema/service/schemaMachine.d.ts.map +1 -1
  88. package/dist/src/client/ClientManager.d.ts +16 -6
  89. package/dist/src/client/ClientManager.d.ts.map +1 -1
  90. package/dist/src/client/clientManagerMachine.d.ts +2 -2
  91. package/dist/src/client/clientManagerMachine.d.ts.map +1 -1
  92. package/dist/src/client/events.d.ts +7 -0
  93. package/dist/src/client/events.d.ts.map +1 -1
  94. package/dist/src/db/write/removeLocalCopiesForAddresses.d.ts +20 -0
  95. package/dist/src/db/write/removeLocalCopiesForAddresses.d.ts.map +1 -0
  96. package/dist/src/events/item/easSyncManager.d.ts +2 -2
  97. package/dist/src/events/item/easSyncManager.d.ts.map +1 -1
  98. package/dist/src/helpers/file/download/index.d.ts +2 -2
  99. package/dist/src/helpers/file/download/index.d.ts.map +1 -1
  100. package/dist/src/helpers/file/fetchAll/index.d.ts +2 -2
  101. package/dist/src/helpers/file/fetchAll/index.d.ts.map +1 -1
  102. package/dist/src/helpers/ownership.d.ts +7 -0
  103. package/dist/src/helpers/ownership.d.ts.map +1 -1
  104. package/dist/src/index.d.ts +2 -2
  105. package/dist/src/index.d.ts.map +1 -1
  106. package/dist/src/services/publish/publishMachine.d.ts +1 -1
  107. package/dist/src/services/publish/publishMachine.d.ts.map +1 -1
  108. package/dist/src/services/write/writeProcessMachine.d.ts +2 -6
  109. package/dist/src/services/write/writeProcessMachine.d.ts.map +1 -1
  110. package/dist/{syncDbWithEas-GsaXzTIY.js → syncDbWithEas-ceVUuWSZ.js} +13 -13
  111. package/dist/{syncDbWithEas-GsaXzTIY.js.map → syncDbWithEas-ceVUuWSZ.js.map} +1 -1
  112. package/dist/{updateSeedRevokedAt-Ba0OhDQj.js → updateSeedRevokedAt-CtRjZiyh.js} +2 -2
  113. package/dist/{updateSeedRevokedAt-Ba0OhDQj.js.map → updateSeedRevokedAt-CtRjZiyh.js.map} +1 -1
  114. package/package.json +23 -6
  115. package/dist/cjs/index-CRBI6dSD.js.map +0 -1
  116. package/dist/cjs/index-Dx19j60c.js.map +0 -1
  117. package/dist/cjs/ownership-3Tc1-Yrc.js +0 -105
  118. package/dist/cjs/ownership-3Tc1-Yrc.js.map +0 -1
  119. package/dist/index-CcH2e0Zr.js +0 -23
  120. package/dist/index-CcH2e0Zr.js.map +0 -1
  121. package/dist/index-ClwdGWfr.js.map +0 -1
  122. package/dist/index-QMrBK-L3.js.map +0 -1
  123. package/dist/ownership-58i0iyD9.js +0 -106
  124. package/dist/ownership-58i0iyD9.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-QMrBK-L3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,106 +0,0 @@
1
- import { B as BaseDb, s as seeds } from './BasePathResolver-BDgc7c4T.js';
2
- import { eq, or } from 'drizzle-orm';
3
- import { getOwnedAddressesFromDb } from './db-CSmK0c3e.js';
4
- import { g as getGetAdditionalSyncAddresses } from './index-ClwdGWfr.js';
5
- import 'drizzle-orm/sqlite-core';
6
- import 'drizzle-orm/casing';
7
- import 'lodash-es';
8
- import 'debug';
9
- import 'xstate';
10
- import './constants-slkc9uq0.js';
11
- import '@seedprotocol/arweave';
12
- import '@seedprotocol/eas';
13
- import 'pluralize';
14
- import '@sinclair/typebox';
15
- import 'nanoid';
16
- import 'nanoid-dictionary';
17
- import '@seedprotocol/query';
18
- import './constants-DMHTYMgJ.js';
19
- import 'rxjs';
20
- import 'js-sha3';
21
-
22
- const READ_ONLY_ERROR = 'Item is read-only: you do not own this item';
23
- async function getSeedRowForItem(item) {
24
- const appDb = BaseDb.getAppDb();
25
- if (!appDb)
26
- return null;
27
- const conditions = [];
28
- if (item.seedLocalId)
29
- conditions.push(eq(seeds.localId, item.seedLocalId));
30
- if (item.seedUid)
31
- conditions.push(eq(seeds.uid, item.seedUid));
32
- if (conditions.length === 0)
33
- return null;
34
- const seedRows = await appDb
35
- .select({
36
- publisher: seeds.publisher,
37
- attestationRaw: seeds.attestationRaw,
38
- uid: seeds.uid,
39
- })
40
- .from(seeds)
41
- .where(conditions.length === 1 ? conditions[0] : or(...conditions))
42
- .limit(1);
43
- if (!seedRows || seedRows.length === 0)
44
- return null;
45
- return seedRows[0];
46
- }
47
- function getPublisherFromRow(row) {
48
- if (row.publisher)
49
- return row.publisher;
50
- if (row.attestationRaw) {
51
- try {
52
- const parsed = JSON.parse(row.attestationRaw);
53
- return parsed.attester ?? null;
54
- }
55
- catch {
56
- return null;
57
- }
58
- }
59
- return null;
60
- }
61
- /**
62
- * Checks if the current user owns the item (publisher is in owned addresses).
63
- * Locally created items (no publisher, no attestationRaw) are considered owned.
64
- * Includes getAdditionalSyncAddresses (e.g. `modularAccountModuleContract` when configured)
65
- * so ownership aligns with EAS sync when the publisher/attester matches those addresses.
66
- */
67
- async function isItemOwned(item) {
68
- const row = await getSeedRowForItem(item);
69
- if (!row)
70
- return false;
71
- const publisher = getPublisherFromRow(row);
72
- if (!publisher) {
73
- if (!row.uid && !row.attestationRaw) {
74
- return true;
75
- }
76
- return false;
77
- }
78
- let addressesToCheck = await getOwnedAddressesFromDb();
79
- const additionalGetter = getGetAdditionalSyncAddresses();
80
- if (additionalGetter) {
81
- const additional = await additionalGetter();
82
- if (additional?.length) {
83
- const seen = new Set(addressesToCheck.map((a) => a.toLowerCase()));
84
- for (const addr of additional) {
85
- if (addr && !seen.has(addr.toLowerCase())) {
86
- seen.add(addr.toLowerCase());
87
- addressesToCheck = [...addressesToCheck, addr];
88
- }
89
- }
90
- }
91
- }
92
- const ownedSet = new Set(addressesToCheck.map((a) => a.toLowerCase()));
93
- return ownedSet.has(publisher.toLowerCase());
94
- }
95
- /**
96
- * Throws if the item is not owned. Use before write operations (publish, save, destroy).
97
- */
98
- async function assertItemOwned(item) {
99
- const owned = await isItemOwned(item);
100
- if (!owned) {
101
- throw new Error(READ_ONLY_ERROR);
102
- }
103
- }
104
-
105
- export { assertItemOwned, isItemOwned };
106
- //# sourceMappingURL=ownership-58i0iyD9.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ownership-58i0iyD9.js","sources":["../../src/helpers/ownership.ts"],"sourcesContent":["import type { IItem } from '@/interfaces/IItem'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { seeds } from '@/seedSchema'\nimport { eq, or } from 'drizzle-orm'\nimport { getOwnedAddressesFromDb } from '@/helpers/db'\nimport { getGetAdditionalSyncAddresses } from '@/helpers/publishConfig'\n\nconst READ_ONLY_ERROR = 'Item is read-only: you do not own this item'\n\ntype ItemLike = { seedLocalId?: string; seedUid?: string }\n\ntype SeedRow = { publisher: string | null; attestationRaw: string | null; uid: string | null }\n\nasync function getSeedRowForItem(item: ItemLike): Promise<SeedRow | null> {\n const appDb = BaseDb.getAppDb()\n if (!appDb) return null\n\n const conditions = []\n if (item.seedLocalId) conditions.push(eq(seeds.localId, item.seedLocalId))\n if (item.seedUid) conditions.push(eq(seeds.uid, item.seedUid))\n if (conditions.length === 0) return null\n\n const seedRows = await appDb\n .select({\n publisher: seeds.publisher,\n attestationRaw: seeds.attestationRaw,\n uid: seeds.uid,\n })\n .from(seeds)\n .where(conditions.length === 1 ? conditions[0] : (or(...conditions) as any))\n .limit(1)\n\n if (!seedRows || seedRows.length === 0) return null\n return seedRows[0]\n}\n\nfunction getPublisherFromRow(row: SeedRow): string | null {\n if (row.publisher) return row.publisher\n if (row.attestationRaw) {\n try {\n const parsed = JSON.parse(row.attestationRaw) as { attester?: string }\n return parsed.attester ?? null\n } catch {\n return null\n }\n }\n return null\n}\n\n/**\n * Checks if the current user owns the item (publisher is in owned addresses).\n * Locally created items (no publisher, no attestationRaw) are considered owned.\n * Includes getAdditionalSyncAddresses (e.g. `modularAccountModuleContract` when configured)\n * so ownership aligns with EAS sync when the publisher/attester matches those addresses.\n */\nexport async function isItemOwned(item: ItemLike | IItem<any>): Promise<boolean> {\n const row = await getSeedRowForItem(item)\n if (!row) return false\n\n const publisher = getPublisherFromRow(row)\n if (!publisher) {\n if (!row.uid && !row.attestationRaw) {\n return true\n }\n return false\n }\n\n let addressesToCheck = await getOwnedAddressesFromDb()\n const additionalGetter = getGetAdditionalSyncAddresses()\n if (additionalGetter) {\n const additional = await additionalGetter()\n if (additional?.length) {\n const seen = new Set(addressesToCheck.map((a) => a.toLowerCase()))\n for (const addr of additional) {\n if (addr && !seen.has(addr.toLowerCase())) {\n seen.add(addr.toLowerCase())\n addressesToCheck = [...addressesToCheck, addr]\n }\n }\n }\n }\n\n const ownedSet = new Set(addressesToCheck.map((a) => a.toLowerCase()))\n return ownedSet.has(publisher.toLowerCase())\n}\n\n/**\n * Throws if the item is not owned. Use before write operations (publish, save, destroy).\n */\nexport async function assertItemOwned(item: ItemLike | IItem<any>): Promise<void> {\n const owned = await isItemOwned(item)\n if (!owned) {\n throw new Error(READ_ONLY_ERROR)\n }\n}\n"],"names":[],"mappings":"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"}