@hashgraphonline/standards-sdk 0.1.143 → 0.1.144-feat-solana-register.canary.5001619.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/hcs-10/base-client.d.ts.map +1 -1
- package/dist/cjs/hcs-10/sdk.d.ts +8 -0
- package/dist/cjs/hcs-10/sdk.d.ts.map +1 -1
- package/dist/cjs/hcs-11/client.d.ts +2 -2
- package/dist/cjs/hcs-11/client.d.ts.map +1 -1
- package/dist/cjs/hcs-11/person-builder.d.ts +1 -0
- package/dist/cjs/hcs-11/person-builder.d.ts.map +1 -1
- package/dist/cjs/hcs-11/types.d.ts +1 -0
- package/dist/cjs/hcs-11/types.d.ts.map +1 -1
- package/dist/cjs/hcs-12/rendering/resource-manager.d.ts.map +1 -1
- package/dist/cjs/hcs-12/validation/schemas.d.ts +8 -8
- package/dist/cjs/hcs-14/issuers/hiero.d.ts.map +1 -1
- package/dist/cjs/hcs-15/browser.d.ts +2 -0
- package/dist/cjs/hcs-15/browser.d.ts.map +1 -1
- package/dist/cjs/hcs-15/sdk.d.ts +7 -1
- package/dist/cjs/hcs-15/sdk.d.ts.map +1 -1
- package/dist/cjs/hcs-15/tx.d.ts +4 -0
- package/dist/cjs/hcs-15/tx.d.ts.map +1 -1
- package/dist/cjs/hcs-15/types.d.ts +16 -1
- package/dist/cjs/hcs-15/types.d.ts.map +1 -1
- package/dist/cjs/hcs-16/browser.d.ts +11 -2
- package/dist/cjs/hcs-16/browser.d.ts.map +1 -1
- package/dist/cjs/hcs-16/sdk.d.ts +62 -1
- package/dist/cjs/hcs-16/sdk.d.ts.map +1 -1
- package/dist/cjs/hcs-16/tx.d.ts +21 -3
- package/dist/cjs/hcs-16/tx.d.ts.map +1 -1
- package/dist/cjs/hcs-17/base-client.d.ts +1 -0
- package/dist/cjs/hcs-17/base-client.d.ts.map +1 -1
- package/dist/cjs/hcs-17/sdk.d.ts.map +1 -1
- package/dist/cjs/hcs-17/tx.d.ts +2 -0
- package/dist/cjs/hcs-17/tx.d.ts.map +1 -1
- package/dist/cjs/hcs-17/types.d.ts +4 -0
- package/dist/cjs/hcs-17/types.d.ts.map +1 -1
- package/dist/cjs/hcs-21/types.d.ts +75 -75
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/client/adapters.d.ts +20 -0
- package/dist/cjs/services/registry-broker/client/adapters.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/agents.d.ts +16 -0
- package/dist/cjs/services/registry-broker/client/agents.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/base-client.d.ts +70 -0
- package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/chat-history.d.ts +23 -0
- package/dist/cjs/services/registry-broker/client/chat-history.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/chat.d.ts +33 -0
- package/dist/cjs/services/registry-broker/client/chat.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/credits.d.ts +40 -0
- package/dist/cjs/services/registry-broker/client/credits.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/encrypted-chat-manager.d.ts +35 -0
- package/dist/cjs/services/registry-broker/client/encrypted-chat-manager.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/encryption.d.ts +33 -0
- package/dist/cjs/services/registry-broker/client/encryption.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/errors.d.ts +19 -0
- package/dist/cjs/services/registry-broker/client/errors.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/feedback.d.ts +2 -0
- package/dist/cjs/services/registry-broker/client/feedback.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/ledger-auth.d.ts +10 -0
- package/dist/cjs/services/registry-broker/client/ledger-auth.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/search.d.ts +19 -0
- package/dist/cjs/services/registry-broker/client/search.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/utils.d.ts +21 -0
- package/dist/cjs/services/registry-broker/client/utils.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client.d.ts +2 -205
- package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/private-key-signer.d.ts +1 -0
- package/dist/cjs/services/registry-broker/private-key-signer.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/schemas.d.ts +2509 -816
- package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/types.d.ts +64 -2
- package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +3 -3
- package/dist/cjs/standards-sdk.cjs.map +1 -1
- package/dist/cjs/utils/crypto-abstraction.d.ts.map +1 -1
- package/dist/cjs/utils/crypto-env.d.ts.map +1 -1
- package/dist/cjs/utils/dynamic-import.d.ts +5 -1
- package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
- package/dist/cjs/utils/hash-adapter.d.ts.map +1 -1
- package/dist/es/hcs-10/base-client.d.ts.map +1 -1
- package/dist/es/hcs-10/sdk.d.ts +8 -0
- package/dist/es/hcs-10/sdk.d.ts.map +1 -1
- package/dist/es/hcs-11/client.d.ts +2 -2
- package/dist/es/hcs-11/client.d.ts.map +1 -1
- package/dist/es/hcs-11/person-builder.d.ts +1 -0
- package/dist/es/hcs-11/person-builder.d.ts.map +1 -1
- package/dist/es/hcs-11/types.d.ts +1 -0
- package/dist/es/hcs-11/types.d.ts.map +1 -1
- package/dist/es/hcs-12/rendering/resource-manager.d.ts.map +1 -1
- package/dist/es/hcs-12/validation/schemas.d.ts +8 -8
- package/dist/es/hcs-14/issuers/hiero.d.ts.map +1 -1
- package/dist/es/hcs-15/browser.d.ts +2 -0
- package/dist/es/hcs-15/browser.d.ts.map +1 -1
- package/dist/es/hcs-15/sdk.d.ts +7 -1
- package/dist/es/hcs-15/sdk.d.ts.map +1 -1
- package/dist/es/hcs-15/tx.d.ts +4 -0
- package/dist/es/hcs-15/tx.d.ts.map +1 -1
- package/dist/es/hcs-15/types.d.ts +16 -1
- package/dist/es/hcs-15/types.d.ts.map +1 -1
- package/dist/es/hcs-16/browser.d.ts +11 -2
- package/dist/es/hcs-16/browser.d.ts.map +1 -1
- package/dist/es/hcs-16/sdk.d.ts +62 -1
- package/dist/es/hcs-16/sdk.d.ts.map +1 -1
- package/dist/es/hcs-16/tx.d.ts +21 -3
- package/dist/es/hcs-16/tx.d.ts.map +1 -1
- package/dist/es/hcs-17/base-client.d.ts +1 -0
- package/dist/es/hcs-17/base-client.d.ts.map +1 -1
- package/dist/es/hcs-17/sdk.d.ts.map +1 -1
- package/dist/es/hcs-17/tx.d.ts +2 -0
- package/dist/es/hcs-17/tx.d.ts.map +1 -1
- package/dist/es/hcs-17/types.d.ts +4 -0
- package/dist/es/hcs-17/types.d.ts.map +1 -1
- package/dist/es/hcs-21/types.d.ts +75 -75
- package/dist/es/index.d.ts.map +1 -1
- package/dist/es/services/registry-broker/client/adapters.d.ts +20 -0
- package/dist/es/services/registry-broker/client/adapters.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/agents.d.ts +16 -0
- package/dist/es/services/registry-broker/client/agents.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/base-client.d.ts +70 -0
- package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/chat-history.d.ts +23 -0
- package/dist/es/services/registry-broker/client/chat-history.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/chat.d.ts +33 -0
- package/dist/es/services/registry-broker/client/chat.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/credits.d.ts +40 -0
- package/dist/es/services/registry-broker/client/credits.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/encrypted-chat-manager.d.ts +35 -0
- package/dist/es/services/registry-broker/client/encrypted-chat-manager.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/encryption.d.ts +33 -0
- package/dist/es/services/registry-broker/client/encryption.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/errors.d.ts +19 -0
- package/dist/es/services/registry-broker/client/errors.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/feedback.d.ts +2 -0
- package/dist/es/services/registry-broker/client/feedback.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/ledger-auth.d.ts +10 -0
- package/dist/es/services/registry-broker/client/ledger-auth.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/search.d.ts +19 -0
- package/dist/es/services/registry-broker/client/search.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/utils.d.ts +21 -0
- package/dist/es/services/registry-broker/client/utils.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client.d.ts +2 -205
- package/dist/es/services/registry-broker/client.d.ts.map +1 -1
- package/dist/es/services/registry-broker/private-key-signer.d.ts +1 -0
- package/dist/es/services/registry-broker/private-key-signer.d.ts.map +1 -1
- package/dist/es/services/registry-broker/schemas.d.ts +2509 -816
- package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/es/services/registry-broker/types.d.ts +64 -2
- package/dist/es/services/registry-broker/types.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +148 -133
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es10.js +70 -90
- package/dist/es/standards-sdk.es10.js.map +1 -1
- package/dist/es/standards-sdk.es100.js +229 -26
- package/dist/es/standards-sdk.es100.js.map +1 -1
- package/dist/es/standards-sdk.es101.js +109 -228
- package/dist/es/standards-sdk.es101.js.map +1 -1
- package/dist/es/standards-sdk.es102.js +15 -94
- package/dist/es/standards-sdk.es102.js.map +1 -1
- package/dist/es/standards-sdk.es103.js +80 -30
- package/dist/es/standards-sdk.es103.js.map +1 -1
- package/dist/es/standards-sdk.es104.js +27 -80
- package/dist/es/standards-sdk.es104.js.map +1 -1
- package/dist/es/standards-sdk.es105.js +136 -25
- package/dist/es/standards-sdk.es105.js.map +1 -1
- package/dist/es/standards-sdk.es106.js +27 -140
- package/dist/es/standards-sdk.es106.js.map +1 -1
- package/dist/es/standards-sdk.es107.js +20 -27
- package/dist/es/standards-sdk.es107.js.map +1 -1
- package/dist/es/standards-sdk.es108.js +156 -18
- package/dist/es/standards-sdk.es108.js.map +1 -1
- package/dist/es/standards-sdk.es109.js +198 -148
- package/dist/es/standards-sdk.es109.js.map +1 -1
- package/dist/es/standards-sdk.es11.js +121 -45
- package/dist/es/standards-sdk.es11.js.map +1 -1
- package/dist/es/standards-sdk.es110.js +747 -160
- package/dist/es/standards-sdk.es110.js.map +1 -1
- package/dist/es/standards-sdk.es111.js +9 -786
- package/dist/es/standards-sdk.es111.js.map +1 -1
- package/dist/es/standards-sdk.es112.js +567 -13
- package/dist/es/standards-sdk.es112.js.map +1 -1
- package/dist/es/standards-sdk.es113.js +576 -541
- package/dist/es/standards-sdk.es113.js.map +1 -1
- package/dist/es/standards-sdk.es114.js +12 -601
- package/dist/es/standards-sdk.es114.js.map +1 -1
- package/dist/es/standards-sdk.es115.js +2 -13
- package/dist/es/standards-sdk.es115.js.map +1 -1
- package/dist/es/standards-sdk.es116.js +87 -2
- package/dist/es/standards-sdk.es116.js.map +1 -1
- package/dist/es/standards-sdk.es117.js +37 -80
- package/dist/es/standards-sdk.es117.js.map +1 -1
- package/dist/es/standards-sdk.es118.js +2 -39
- package/dist/es/standards-sdk.es118.js.map +1 -1
- package/dist/es/standards-sdk.es119.js +231 -2
- package/dist/es/standards-sdk.es119.js.map +1 -1
- package/dist/es/standards-sdk.es12.js +60 -159
- package/dist/es/standards-sdk.es12.js.map +1 -1
- package/dist/es/standards-sdk.es120.js +1110 -193
- package/dist/es/standards-sdk.es120.js.map +1 -1
- package/dist/es/standards-sdk.es121.js +225 -1059
- package/dist/es/standards-sdk.es121.js.map +1 -1
- package/dist/es/standards-sdk.es122.js +419 -303
- package/dist/es/standards-sdk.es122.js.map +1 -1
- package/dist/es/standards-sdk.es123.js +351 -418
- package/dist/es/standards-sdk.es123.js.map +1 -1
- package/dist/es/standards-sdk.es124.js +872 -347
- package/dist/es/standards-sdk.es124.js.map +1 -1
- package/dist/es/standards-sdk.es125.js +182 -854
- package/dist/es/standards-sdk.es125.js.map +1 -1
- package/dist/es/standards-sdk.es126.js +1512 -153
- package/dist/es/standards-sdk.es126.js.map +1 -1
- package/dist/es/standards-sdk.es127.js +157 -1547
- package/dist/es/standards-sdk.es127.js.map +1 -1
- package/dist/es/standards-sdk.es128.js +184 -2190
- package/dist/es/standards-sdk.es128.js.map +1 -1
- package/dist/es/standards-sdk.es129.js +100 -63
- package/dist/es/standards-sdk.es129.js.map +1 -1
- package/dist/es/standards-sdk.es13.js +200 -60
- package/dist/es/standards-sdk.es13.js.map +1 -1
- package/dist/es/standards-sdk.es130.js +112 -78
- package/dist/es/standards-sdk.es130.js.map +1 -1
- package/dist/es/standards-sdk.es131.js +232 -144
- package/dist/es/standards-sdk.es131.js.map +1 -1
- package/dist/es/standards-sdk.es132.js +181 -8
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es133.js +118 -82
- package/dist/es/standards-sdk.es133.js.map +1 -1
- package/dist/es/standards-sdk.es134.js +322 -61
- package/dist/es/standards-sdk.es134.js.map +1 -1
- package/dist/es/standards-sdk.es135.js +464 -28
- package/dist/es/standards-sdk.es135.js.map +1 -1
- package/dist/es/standards-sdk.es136.js +14 -135
- package/dist/es/standards-sdk.es136.js.map +1 -1
- package/dist/es/standards-sdk.es137.js +78 -39
- package/dist/es/standards-sdk.es137.js.map +1 -1
- package/dist/es/standards-sdk.es138.js +85 -764
- package/dist/es/standards-sdk.es138.js.map +1 -1
- package/dist/es/standards-sdk.es139.js +135 -12250
- package/dist/es/standards-sdk.es139.js.map +1 -1
- package/dist/es/standards-sdk.es14.js +149 -178
- package/dist/es/standards-sdk.es14.js.map +1 -1
- package/dist/es/standards-sdk.es140.js +7 -56
- package/dist/es/standards-sdk.es140.js.map +1 -1
- package/dist/es/standards-sdk.es141.js +72 -68
- package/dist/es/standards-sdk.es141.js.map +1 -1
- package/dist/es/standards-sdk.es142.js +61 -13
- package/dist/es/standards-sdk.es142.js.map +1 -1
- package/dist/es/standards-sdk.es143.js +30 -172
- package/dist/es/standards-sdk.es143.js.map +1 -1
- package/dist/es/standards-sdk.es144.js +34 -322
- package/dist/es/standards-sdk.es144.js.map +1 -1
- package/dist/es/standards-sdk.es145.js +28 -346
- package/dist/es/standards-sdk.es145.js.map +1 -1
- package/dist/es/standards-sdk.es146.js +112 -427
- package/dist/es/standards-sdk.es146.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +40 -329
- package/dist/es/standards-sdk.es147.js.map +1 -1
- package/dist/es/standards-sdk.es148.js +958 -76
- package/dist/es/standards-sdk.es148.js.map +1 -1
- package/dist/es/standards-sdk.es149.js +12292 -0
- package/dist/es/standards-sdk.es149.js.map +1 -0
- package/dist/es/standards-sdk.es15.js +152 -151
- package/dist/es/standards-sdk.es15.js.map +1 -1
- package/dist/es/standards-sdk.es150.js +59 -0
- package/dist/es/standards-sdk.es150.js.map +1 -0
- package/dist/es/standards-sdk.es151.js +87 -0
- package/dist/es/standards-sdk.es151.js.map +1 -0
- package/dist/es/standards-sdk.es152.js +20 -0
- package/dist/es/standards-sdk.es152.js.map +1 -0
- package/dist/es/standards-sdk.es153.js +175 -0
- package/dist/es/standards-sdk.es153.js.map +1 -0
- package/dist/es/standards-sdk.es154.js +325 -0
- package/dist/es/standards-sdk.es154.js.map +1 -0
- package/dist/es/standards-sdk.es155.js +349 -0
- package/dist/es/standards-sdk.es155.js.map +1 -0
- package/dist/es/standards-sdk.es156.js +456 -0
- package/dist/es/standards-sdk.es156.js.map +1 -0
- package/dist/es/standards-sdk.es157.js +334 -0
- package/dist/es/standards-sdk.es157.js.map +1 -0
- package/dist/es/standards-sdk.es158.js +79 -0
- package/dist/es/standards-sdk.es158.js.map +1 -0
- package/dist/es/standards-sdk.es159.js +242 -0
- package/dist/es/standards-sdk.es159.js.map +1 -0
- package/dist/es/standards-sdk.es16.js +917 -136
- package/dist/es/standards-sdk.es16.js.map +1 -1
- package/dist/es/standards-sdk.es160.js +247 -0
- package/dist/es/standards-sdk.es160.js.map +1 -0
- package/dist/es/standards-sdk.es17.js +23 -938
- package/dist/es/standards-sdk.es17.js.map +1 -1
- package/dist/es/standards-sdk.es18.js +2422 -24
- package/dist/es/standards-sdk.es18.js.map +1 -1
- package/dist/es/standards-sdk.es19.js +826 -2075
- package/dist/es/standards-sdk.es19.js.map +1 -1
- package/dist/es/standards-sdk.es2.js +654 -189
- package/dist/es/standards-sdk.es2.js.map +1 -1
- package/dist/es/standards-sdk.es20.js +205 -1086
- package/dist/es/standards-sdk.es20.js.map +1 -1
- package/dist/es/standards-sdk.es21.js +858 -221
- package/dist/es/standards-sdk.es21.js.map +1 -1
- package/dist/es/standards-sdk.es22.js +179 -903
- package/dist/es/standards-sdk.es22.js.map +1 -1
- package/dist/es/standards-sdk.es23.js +164 -179
- package/dist/es/standards-sdk.es23.js.map +1 -1
- package/dist/es/standards-sdk.es24.js +62 -118
- package/dist/es/standards-sdk.es24.js.map +1 -1
- package/dist/es/standards-sdk.es25.js +377 -52
- package/dist/es/standards-sdk.es25.js.map +1 -1
- package/dist/es/standards-sdk.es26.js +36 -394
- package/dist/es/standards-sdk.es26.js.map +1 -1
- package/dist/es/standards-sdk.es27.js +901 -50
- package/dist/es/standards-sdk.es27.js.map +1 -1
- package/dist/es/standards-sdk.es28.js +134 -897
- package/dist/es/standards-sdk.es28.js.map +1 -1
- package/dist/es/standards-sdk.es29.js +7 -134
- package/dist/es/standards-sdk.es29.js.map +1 -1
- package/dist/es/standards-sdk.es3.js +63 -680
- package/dist/es/standards-sdk.es3.js.map +1 -1
- package/dist/es/standards-sdk.es30.js +344 -7
- package/dist/es/standards-sdk.es30.js.map +1 -1
- package/dist/es/standards-sdk.es31.js +302 -287
- package/dist/es/standards-sdk.es31.js.map +1 -1
- package/dist/es/standards-sdk.es32.js +94 -322
- package/dist/es/standards-sdk.es32.js.map +1 -1
- package/dist/es/standards-sdk.es33.js +458 -101
- package/dist/es/standards-sdk.es33.js.map +1 -1
- package/dist/es/standards-sdk.es34.js +132 -451
- package/dist/es/standards-sdk.es34.js.map +1 -1
- package/dist/es/standards-sdk.es35.js +216 -130
- package/dist/es/standards-sdk.es35.js.map +1 -1
- package/dist/es/standards-sdk.es36.js +274 -191
- package/dist/es/standards-sdk.es36.js.map +1 -1
- package/dist/es/standards-sdk.es37.js +148 -87
- package/dist/es/standards-sdk.es37.js.map +1 -1
- package/dist/es/standards-sdk.es38.js +183 -320
- package/dist/es/standards-sdk.es38.js.map +1 -1
- package/dist/es/standards-sdk.es39.js +238 -161
- package/dist/es/standards-sdk.es39.js.map +1 -1
- package/dist/es/standards-sdk.es4.js +425 -63
- package/dist/es/standards-sdk.es4.js.map +1 -1
- package/dist/es/standards-sdk.es40.js +136 -254
- package/dist/es/standards-sdk.es40.js.map +1 -1
- package/dist/es/standards-sdk.es41.js +225 -176
- package/dist/es/standards-sdk.es41.js.map +1 -1
- package/dist/es/standards-sdk.es42.js +199 -261
- package/dist/es/standards-sdk.es42.js.map +1 -1
- package/dist/es/standards-sdk.es43.js +237 -199
- package/dist/es/standards-sdk.es43.js.map +1 -1
- package/dist/es/standards-sdk.es44.js +209 -201
- package/dist/es/standards-sdk.es44.js.map +1 -1
- package/dist/es/standards-sdk.es45.js +305 -201
- package/dist/es/standards-sdk.es45.js.map +1 -1
- package/dist/es/standards-sdk.es46.js +371 -261
- package/dist/es/standards-sdk.es46.js.map +1 -1
- package/dist/es/standards-sdk.es47.js +316 -371
- package/dist/es/standards-sdk.es47.js.map +1 -1
- package/dist/es/standards-sdk.es48.js +404 -336
- package/dist/es/standards-sdk.es48.js.map +1 -1
- package/dist/es/standards-sdk.es49.js +83 -449
- package/dist/es/standards-sdk.es49.js.map +1 -1
- package/dist/es/standards-sdk.es5.js +232 -354
- package/dist/es/standards-sdk.es5.js.map +1 -1
- package/dist/es/standards-sdk.es50.js +179 -89
- package/dist/es/standards-sdk.es50.js.map +1 -1
- package/dist/es/standards-sdk.es51.js +231 -165
- package/dist/es/standards-sdk.es51.js.map +1 -1
- package/dist/es/standards-sdk.es52.js +25 -262
- package/dist/es/standards-sdk.es52.js.map +1 -1
- package/dist/es/standards-sdk.es53.js +56 -26
- package/dist/es/standards-sdk.es53.js.map +1 -1
- package/dist/es/standards-sdk.es54.js +12 -57
- package/dist/es/standards-sdk.es54.js.map +1 -1
- package/dist/es/standards-sdk.es55.js +49 -12
- package/dist/es/standards-sdk.es55.js.map +1 -1
- package/dist/es/standards-sdk.es56.js +115 -43
- package/dist/es/standards-sdk.es56.js.map +1 -1
- package/dist/es/standards-sdk.es57.js +42 -115
- package/dist/es/standards-sdk.es57.js.map +1 -1
- package/dist/es/standards-sdk.es58.js +52 -43
- package/dist/es/standards-sdk.es58.js.map +1 -1
- package/dist/es/standards-sdk.es59.js +36 -50
- package/dist/es/standards-sdk.es59.js.map +1 -1
- package/dist/es/standards-sdk.es6.js +125 -246
- package/dist/es/standards-sdk.es6.js.map +1 -1
- package/dist/es/standards-sdk.es60.js +207 -39
- package/dist/es/standards-sdk.es60.js.map +1 -1
- package/dist/es/standards-sdk.es61.js +24 -195
- package/dist/es/standards-sdk.es61.js.map +1 -1
- package/dist/es/standards-sdk.es62.js +87 -25
- package/dist/es/standards-sdk.es62.js.map +1 -1
- package/dist/es/standards-sdk.es63.js +3 -51
- package/dist/es/standards-sdk.es63.js.map +1 -1
- package/dist/es/standards-sdk.es64.js +100 -3
- package/dist/es/standards-sdk.es64.js.map +1 -1
- package/dist/es/standards-sdk.es65.js +61 -62
- package/dist/es/standards-sdk.es65.js.map +1 -1
- package/dist/es/standards-sdk.es66.js +17 -98
- package/dist/es/standards-sdk.es66.js.map +1 -1
- package/dist/es/standards-sdk.es67.js +77 -19
- package/dist/es/standards-sdk.es67.js.map +1 -1
- package/dist/es/standards-sdk.es68.js +458 -77
- package/dist/es/standards-sdk.es68.js.map +1 -1
- package/dist/es/standards-sdk.es69.js +106 -240
- package/dist/es/standards-sdk.es69.js.map +1 -1
- package/dist/es/standards-sdk.es7.js +28 -183
- package/dist/es/standards-sdk.es7.js.map +1 -1
- package/dist/es/standards-sdk.es70.js +170 -286
- package/dist/es/standards-sdk.es70.js.map +1 -1
- package/dist/es/standards-sdk.es71.js +71 -207
- package/dist/es/standards-sdk.es71.js.map +1 -1
- package/dist/es/standards-sdk.es72.js +71 -72
- package/dist/es/standards-sdk.es72.js.map +1 -1
- package/dist/es/standards-sdk.es73.js +143 -71
- package/dist/es/standards-sdk.es73.js.map +1 -1
- package/dist/es/standards-sdk.es74.js +62 -136
- package/dist/es/standards-sdk.es74.js.map +1 -1
- package/dist/es/standards-sdk.es75.js +380 -45
- package/dist/es/standards-sdk.es75.js.map +1 -1
- package/dist/es/standards-sdk.es76.js +222 -130
- package/dist/es/standards-sdk.es76.js.map +1 -1
- package/dist/es/standards-sdk.es77.js +320 -444
- package/dist/es/standards-sdk.es77.js.map +1 -1
- package/dist/es/standards-sdk.es78.js +88 -364
- package/dist/es/standards-sdk.es78.js.map +1 -1
- package/dist/es/standards-sdk.es79.js +125 -89
- package/dist/es/standards-sdk.es79.js.map +1 -1
- package/dist/es/standards-sdk.es8.js +80 -29
- package/dist/es/standards-sdk.es8.js.map +1 -1
- package/dist/es/standards-sdk.es80.js +8 -125
- package/dist/es/standards-sdk.es80.js.map +1 -1
- package/dist/es/standards-sdk.es81.js +45 -6
- package/dist/es/standards-sdk.es81.js.map +1 -1
- package/dist/es/standards-sdk.es82.js +98 -44
- package/dist/es/standards-sdk.es82.js.map +1 -1
- package/dist/es/standards-sdk.es83.js +331 -84
- package/dist/es/standards-sdk.es83.js.map +1 -1
- package/dist/es/standards-sdk.es84.js +93 -160
- package/dist/es/standards-sdk.es84.js.map +1 -1
- package/dist/es/standards-sdk.es85.js +55 -275
- package/dist/es/standards-sdk.es85.js.map +1 -1
- package/dist/es/standards-sdk.es86.js +43 -55
- package/dist/es/standards-sdk.es86.js.map +1 -1
- package/dist/es/standards-sdk.es87.js +145 -22
- package/dist/es/standards-sdk.es87.js.map +1 -1
- package/dist/es/standards-sdk.es88.js +34 -47
- package/dist/es/standards-sdk.es88.js.map +1 -1
- package/dist/es/standards-sdk.es89.js +22 -57
- package/dist/es/standards-sdk.es89.js.map +1 -1
- package/dist/es/standards-sdk.es9.js +104 -80
- package/dist/es/standards-sdk.es9.js.map +1 -1
- package/dist/es/standards-sdk.es90.js +23 -28
- package/dist/es/standards-sdk.es90.js.map +1 -1
- package/dist/es/standards-sdk.es91.js +238 -23
- package/dist/es/standards-sdk.es91.js.map +1 -1
- package/dist/es/standards-sdk.es92.js +265 -152
- package/dist/es/standards-sdk.es92.js.map +1 -1
- package/dist/es/standards-sdk.es93.js +95 -68
- package/dist/es/standards-sdk.es93.js.map +1 -1
- package/dist/es/standards-sdk.es94.js +124 -136
- package/dist/es/standards-sdk.es94.js.map +1 -1
- package/dist/es/standards-sdk.es95.js +42 -138
- package/dist/es/standards-sdk.es95.js.map +1 -1
- package/dist/es/standards-sdk.es96.js +259 -42
- package/dist/es/standards-sdk.es96.js.map +1 -1
- package/dist/es/standards-sdk.es97.js +82 -243
- package/dist/es/standards-sdk.es97.js.map +1 -1
- package/dist/es/standards-sdk.es98.js +48 -47
- package/dist/es/standards-sdk.es98.js.map +1 -1
- package/dist/es/standards-sdk.es99.js +29 -100
- package/dist/es/standards-sdk.es99.js.map +1 -1
- package/dist/es/utils/crypto-abstraction.d.ts.map +1 -1
- package/dist/es/utils/crypto-env.d.ts.map +1 -1
- package/dist/es/utils/dynamic-import.d.ts +5 -1
- package/dist/es/utils/dynamic-import.d.ts.map +1 -1
- package/dist/es/utils/hash-adapter.d.ts.map +1 -1
- package/package.json +16 -16
- package/dist/cjs/patches/topic-autorenew-patch.d.ts +0 -2
- package/dist/cjs/patches/topic-autorenew-patch.d.ts.map +0 -1
- package/dist/es/patches/topic-autorenew-patch.d.ts +0 -2
- package/dist/es/patches/topic-autorenew-patch.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es31.js","sources":["../../src/hcs-12/registries/base-registry.ts"],"sourcesContent":["/**\n * Base Registry Abstract Class for HCS-12\n *\n * Provides common functionality for all HCS-12 registry types including\n * action, block, assembly, and hashlinks registries.\n */\n\nimport { ILogger, Logger } from '../../utils/logger';\nimport { NetworkType } from '../../utils/types';\nimport {\n RegistryType,\n AssemblyRegistryEntry,\n RegistryConfig,\n ActionRegistration,\n AssemblyRegistration,\n HashLinksRegistration,\n} from '../types';\nimport { inscribe, inscribeWithSigner } from '../../inscribe';\nimport type { HCS12Client } from '../sdk';\nimport type { HCS12BrowserClient } from '../browser';\n\n/**\n * Abstract base class for all HCS-12 registries\n */\nexport abstract class BaseRegistry {\n protected logger: ILogger;\n protected networkType: NetworkType;\n protected topicId?: string;\n protected registryType: RegistryType;\n protected entries: Map<string, AssemblyRegistryEntry> = new Map();\n protected client?: HCS12Client | HCS12BrowserClient;\n protected lastSyncTimestamp?: string;\n\n constructor(\n networkType: NetworkType,\n logger: ILogger,\n registryType: RegistryType,\n topicId?: string,\n client?: HCS12Client | HCS12BrowserClient,\n ) {\n this.networkType = networkType;\n this.logger = logger;\n this.registryType = registryType;\n this.topicId = topicId;\n this.client = client;\n }\n\n /**\n * Submit a registration to the topic\n */\n abstract register(\n data: ActionRegistration | AssemblyRegistration | HashLinksRegistration,\n ): Promise<string>;\n\n /**\n * Retrieve an entry by ID\n */\n async getEntry(id: string): Promise<AssemblyRegistryEntry | null> {\n const cached = this.entries.get(id);\n if (cached) return cached;\n\n if (this.topicId && this.client) {\n await this.sync();\n return this.entries.get(id) || null;\n }\n\n return null;\n }\n\n /**\n * Get the latest entry from a specific topic ID (for non-indexed topics)\n */\n async getLatestEntry(topicId: string): Promise<AssemblyRegistryEntry | null> {\n if (!this.client) {\n return null;\n }\n\n try {\n const messages = await this.client.mirrorNode.getTopicMessagesByFilter(\n topicId,\n {\n order: 'desc',\n limit: 1,\n },\n );\n\n if (!messages || messages.length === 0) {\n return null;\n }\n\n const latestMessage = messages[0];\n let data: any;\n\n if ((latestMessage as any).raw_content) {\n data = JSON.parse((latestMessage as any).raw_content);\n } else {\n const msgAny = latestMessage as any;\n if (msgAny.p === 'hcs-12' && msgAny.op) {\n data = {\n p: msgAny.p,\n op: msgAny.op,\n name: msgAny.name,\n version: msgAny.version,\n description: msgAny.description,\n permissions: msgAny.permissions,\n metadata: msgAny.metadata,\n data: msgAny.data,\n category: msgAny.category,\n source: msgAny.source,\n inputs: msgAny.inputs,\n outputs: msgAny.outputs,\n tags: msgAny.tags,\n fields: msgAny.fields,\n styles: msgAny.styles,\n actions: msgAny.actions,\n blocks: msgAny.blocks,\n refs: msgAny.refs,\n };\n\n Object.keys(data).forEach(key => {\n if (data[key] === undefined) {\n delete data[key];\n }\n });\n } else {\n return null;\n }\n }\n\n return {\n id: latestMessage.sequence_number.toString(),\n sequenceNumber: latestMessage.sequence_number,\n timestamp:\n latestMessage.consensus_timestamp || new Date().toISOString(),\n submitter: latestMessage.payer || 'unknown',\n data,\n };\n } catch (error) {\n this.logger.error('Failed to get latest entry', { topicId, error });\n return null;\n }\n }\n\n /**\n * List all entries with optional filtering\n */\n async listEntries(filter?: {\n submitter?: string;\n afterTimestamp?: string;\n beforeTimestamp?: string;\n }): Promise<AssemblyRegistryEntry[]> {\n if (this.topicId && this.client) {\n await this.sync();\n }\n\n const entries = Array.from(this.entries.values());\n\n if (!filter) return entries;\n\n return entries.filter(entry => {\n if (filter.submitter && entry.submitter !== filter.submitter) {\n return false;\n }\n if (filter.afterTimestamp && entry.timestamp < filter.afterTimestamp) {\n return false;\n }\n if (filter.beforeTimestamp && entry.timestamp > filter.beforeTimestamp) {\n return false;\n }\n return true;\n });\n }\n\n /**\n * Sync entries from the network\n */\n async sync(): Promise<void> {\n if (!this.topicId || !this.client) {\n this.logger.warn('Cannot sync without topic ID and client');\n return;\n }\n\n this.logger.info('Syncing registry entries', {\n topicId: this.topicId,\n registryType: RegistryType[this.registryType],\n lastSync: this.lastSyncTimestamp,\n });\n\n try {\n const messages = await this.client.mirrorNode.getTopicMessagesByFilter(\n this.topicId,\n {\n startTime: this.lastSyncTimestamp,\n order: 'asc',\n limit: 100,\n },\n );\n\n for (const msg of messages) {\n try {\n let data: any;\n\n if ((msg as any).raw_content) {\n data = JSON.parse((msg as any).raw_content);\n } else {\n const msgAny = msg as any;\n if (msgAny.p === 'hcs-12' && msgAny.op) {\n data = {\n p: msgAny.p,\n op: msgAny.op,\n name: msgAny.name,\n version: msgAny.version,\n description: msgAny.description,\n permissions: msgAny.permissions,\n metadata: msgAny.metadata,\n data: msgAny.data,\n category: msgAny.category,\n source: msgAny.source,\n inputs: msgAny.inputs,\n outputs: msgAny.outputs,\n tags: msgAny.tags,\n fields: msgAny.fields,\n styles: msgAny.styles,\n actions: msgAny.actions,\n blocks: msgAny.blocks,\n refs: msgAny.refs,\n t_id: msgAny.t_id,\n hash: msgAny.hash,\n wasm_hash: msgAny.wasm_hash,\n info_t_id: msgAny.info_t_id,\n validation_rules: msgAny.validation_rules,\n js_t_id: msgAny.js_t_id,\n js_hash: msgAny.js_hash,\n interface_version: msgAny.interface_version,\n title: msgAny.title,\n template: msgAny.template,\n author: msgAny.author,\n m: msgAny.m,\n };\n\n Object.keys(data).forEach(key => {\n if (data[key] === undefined) {\n delete data[key];\n }\n });\n } else {\n continue;\n }\n }\n\n if (data.p !== 'hcs-12') {\n continue;\n }\n\n const entry: AssemblyRegistryEntry = {\n id: msg.sequence_number.toString(),\n sequenceNumber: msg.sequence_number,\n timestamp: msg.consensus_timestamp || new Date().toISOString(),\n submitter: msg.payer || 'unknown',\n data,\n };\n this.entries.set(entry.id, entry);\n } catch (error) {\n this.logger.warn('Failed to parse registry message', {\n sequenceNumber: msg.sequence_number,\n error,\n });\n }\n }\n\n if (messages.length > 0) {\n this.lastSyncTimestamp =\n messages[messages.length - 1].consensus_timestamp ||\n new Date().toISOString();\n } else {\n this.lastSyncTimestamp = new Date().toISOString();\n }\n\n this.logger.info('Registry sync completed', {\n topicId: this.topicId,\n messageCount: messages.length,\n lastSync: this.lastSyncTimestamp,\n });\n } catch (error) {\n this.logger.error('Failed to sync registry', { error });\n throw error;\n }\n }\n\n /**\n * Get the registry topic memo format\n */\n getTopicMemo(): string {\n const indexed = 1;\n const ttl = 60;\n const type = this.registryType;\n return `hcs-12:${indexed}:${ttl}:${type}`;\n }\n\n /**\n * Create a new registry topic\n */\n async createRegistryTopic(): Promise<string> {\n if (!this.client) {\n throw new Error('Client required to create topic');\n }\n\n const topicId = await this.client.createRegistryTopic(this.registryType);\n this.topicId = topicId;\n\n return topicId;\n }\n\n /**\n * Get registry configuration\n */\n getConfig(): RegistryConfig {\n return {\n type: this.registryType,\n indexed: false,\n ttl: 60,\n topicId: this.topicId,\n memo: this.getTopicMemo(),\n };\n }\n\n /**\n * Store large content via HCS-1 inscription\n */\n protected async inscribeContent(\n content: Buffer | string,\n mimeType: string,\n metadata?: Record<string, any>,\n ): Promise<string> {\n if (!this.client) {\n throw new Error('Client required for inscription');\n }\n\n const buffer = typeof content === 'string' ? Buffer.from(content) : content;\n\n this.logger.info('Inscribing content via HCS-1', {\n size: buffer.length,\n mimeType,\n registryType: RegistryType[this.registryType],\n });\n\n let response;\n\n if ('getOperatorAccountId' in this.client) {\n response = await inscribe(\n {\n type: 'buffer',\n buffer,\n fileName:\n mimeType === 'application/octet-stream' &&\n metadata?.fileType === 'wasm'\n ? `${metadata?.name || 'content'}.wasm`\n : metadata?.name || 'content',\n mimeType,\n },\n {\n accountId: this.client.getOperatorAccountId(),\n privateKey: this.client.getOperatorPrivateKey(),\n network: this.networkType as 'mainnet' | 'testnet',\n },\n {\n mode: 'file',\n metadata,\n waitForConfirmation: true,\n },\n );\n } else {\n const { accountId, signer } = await (\n this.client as HCS12BrowserClient\n ).getAccountAndSigner();\n response = await inscribeWithSigner(\n {\n type: 'buffer',\n buffer,\n fileName:\n mimeType === 'application/octet-stream' &&\n metadata?.fileType === 'wasm'\n ? `${metadata?.name || 'content'}.wasm`\n : metadata?.name || 'content',\n mimeType,\n },\n signer,\n {\n mode: 'file',\n metadata,\n waitForConfirmation: true,\n },\n );\n }\n\n if (!response.confirmed) {\n throw new Error('Failed to inscribe content');\n }\n\n const topicId = response.inscription.topic_id;\n if (!topicId) {\n throw new Error('No topic ID in inscription response');\n }\n\n this.logger.info('Content inscribed successfully', {\n topicId,\n });\n return topicId;\n }\n\n /**\n * Validate common registration fields\n */\n protected validateBaseRegistration(\n data: ActionRegistration | AssemblyRegistration | HashLinksRegistration,\n ): void {\n if (!data.p || data.p !== 'hcs-12') {\n throw new Error('Invalid protocol identifier');\n }\n\n if (!data.op || data.op !== 'register') {\n throw new Error('Invalid operation');\n }\n }\n\n /**\n * Clear local cache\n */\n clearCache(): void {\n this.entries.clear();\n this.lastSyncTimestamp = undefined;\n this.logger.info('Registry cache cleared', {\n registryType: RegistryType[this.registryType],\n });\n }\n\n /**\n * Get registry statistics\n */\n getStats(): {\n entryCount: number;\n lastSync?: string;\n topicId?: string;\n registryType: string;\n } {\n return {\n entryCount: this.entries.size,\n lastSync: this.lastSyncTimestamp,\n topicId: this.topicId,\n registryType: RegistryType[this.registryType],\n };\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es31.js","sources":["../../src/hcs-12/registries/action-registry.ts"],"sourcesContent":["/**\n * Action Registry Implementation for HCS-12\n *\n * Manages registration and retrieval of HashLink WASM actions.\n */\n\nimport { ILogger } from '../../utils/logger';\nimport { NetworkType } from '../../utils/types';\nimport {\n RegistryType,\n AssemblyRegistryEntry,\n ActionRegistration,\n ModuleInfo,\n SourceVerification,\n} from '../types';\nimport { BaseRegistry } from './base-registry';\nimport { retrieveInscription } from '../../inscribe';\nimport { getCryptoAdapter } from '../../utils/crypto-abstraction';\nimport { isSSREnvironment } from '../../utils/crypto-env';\nimport type { HCS12Client } from '../sdk';\nimport type { HCS12BrowserClient } from '../browser';\nimport {\n validateActionRegistration,\n safeValidate,\n actionRegistrationSchema,\n} from '../validation/schemas';\nimport { ZodError } from 'zod';\n\n/**\n * Registry for HashLink WASM actions\n */\nexport class ActionRegistry extends BaseRegistry {\n private actionsByHash: Map<string, ActionRegistration> = new Map();\n private cryptoAdapter = getCryptoAdapter();\n\n constructor(\n networkType: NetworkType,\n logger: ILogger,\n topicId?: string,\n client?: HCS12Client | HCS12BrowserClient,\n ) {\n super(networkType, logger, RegistryType.ACTION, topicId, client);\n }\n\n /**\n * Register a WASM module with its binary via HCS-1\n */\n async registerWithWasm(\n wasmBinary: Buffer,\n moduleInfo: ModuleInfo,\n sourceVerification?: SourceVerification,\n ): Promise<ActionRegistration> {\n let wasmHash: string;\n let infoHash: string;\n\n if (isSSREnvironment()) {\n wasmHash = this.createSSRSafeHash(wasmBinary, 'wasm');\n const infoString = JSON.stringify(moduleInfo);\n infoHash = this.createSSRSafeHash(Buffer.from(infoString), 'info');\n } else {\n const wasmHasher = this.cryptoAdapter.createHash('sha256');\n const wasmResult = wasmHasher.update(wasmBinary).digest('hex');\n const wasmHashValue =\n wasmResult instanceof Promise ? await wasmResult : wasmResult;\n wasmHash =\n typeof wasmHashValue === 'string'\n ? wasmHashValue\n : wasmHashValue.toString('hex');\n\n const infoString = JSON.stringify(moduleInfo);\n const infoHasher = this.cryptoAdapter.createHash('sha256');\n const infoResult = infoHasher\n .update(Buffer.from(infoString))\n .digest('hex');\n const infoHashValue =\n infoResult instanceof Promise ? await infoResult : infoResult;\n infoHash =\n typeof infoHashValue === 'string'\n ? infoHashValue\n : infoHashValue.toString('hex');\n }\n\n const wasmTopicId = await this.inscribeContent(\n wasmBinary,\n 'application/octet-stream',\n {\n name: moduleInfo.name,\n version: moduleInfo.version,\n hash: wasmHash,\n fileType: 'wasm',\n },\n );\n\n let infoTopicId: string | undefined;\n const infoString = JSON.stringify(moduleInfo);\n if (Buffer.byteLength(infoString, 'utf8') > 1024) {\n infoTopicId = await this.inscribeContent(infoString, 'application/json', {\n name: `${moduleInfo.name}-info`,\n version: moduleInfo.version,\n });\n }\n\n const registration: ActionRegistration = {\n p: 'hcs-12',\n op: 'register',\n t_id: wasmTopicId,\n hash: infoHash,\n wasm_hash: wasmHash,\n info_t_id: infoTopicId,\n source_verification: sourceVerification,\n m: `${moduleInfo.name} v${moduleInfo.version}`,\n };\n\n const id = await this.register(registration);\n return registration;\n }\n\n /**\n * Register a new WASM action\n */\n async register(registration: ActionRegistration): Promise<string> {\n this.validateRegistration(registration);\n\n if (this.topicId && this.client) {\n this.logger.info('Submitting action registration to HCS', {\n topicId: this.topicId,\n hash: registration.hash,\n wasmHash: registration.wasm_hash,\n });\n\n const result = await this.client.submitMessage(\n this.topicId,\n JSON.stringify(registration),\n );\n\n const sequenceNumber = result.sequenceNumber;\n if (!sequenceNumber) {\n throw new Error('No sequence number returned from submission');\n }\n\n const entry: AssemblyRegistryEntry = {\n id: sequenceNumber.toString(),\n sequenceNumber,\n timestamp: new Date().toISOString(),\n submitter:\n 'getHashConnect' in this.client\n ? (await (this.client as HCS12BrowserClient).getAccountAndSigner())\n .accountId\n : this.client.getOperatorAccountId(),\n data: registration,\n };\n\n this.entries.set(entry.id, entry);\n this.actionsByHash.set(registration.hash, registration);\n\n this.logger.info('Action registered', {\n hash: registration.hash,\n sequenceNumber,\n hasSourceVerification: !!registration.source_verification,\n });\n\n return sequenceNumber.toString();\n } else {\n const sequenceNumber = this.entries.size + 1;\n const entry: AssemblyRegistryEntry = {\n id: sequenceNumber.toString(),\n sequenceNumber,\n timestamp: new Date().toISOString(),\n submitter: 'local',\n data: registration,\n };\n\n this.entries.set(entry.id, entry);\n this.actionsByHash.set(registration.hash, registration);\n\n return sequenceNumber.toString();\n }\n }\n\n /**\n * Retrieve action by hash\n */\n async getAction(hash: string): Promise<ActionRegistration | null> {\n const cached = this.actionsByHash.get(hash);\n if (cached) return cached;\n\n if (this.topicId && this.client) {\n await this.sync();\n return this.actionsByHash.get(hash) || null;\n }\n\n return null;\n }\n\n /**\n * Retrieve action by topic ID\n */\n async getActionByTopicId(\n topicId: string,\n ): Promise<ActionRegistration | null> {\n this.logger.debug('getActionByTopicId called', { topicId });\n console.log('DEBUG: getActionByTopicId called', {\n topicId,\n cacheSize: this.actionsByHash.size,\n cachedTopicIds: Array.from(this.actionsByHash.values()).map(a => a.t_id),\n });\n\n for (const action of this.actionsByHash.values()) {\n if (action.t_id === topicId) {\n this.logger.debug('Action found in cache', { topicId, action });\n console.log('DEBUG: Action found in cache', { topicId, action });\n return action;\n }\n }\n\n if (this.topicId && this.client) {\n this.logger.debug('Action not in cache, syncing...', { topicId });\n console.log('DEBUG: Action not in cache, syncing...');\n await this.sync();\n\n console.log('DEBUG: After sync', {\n cacheSize: this.actionsByHash.size,\n cachedTopicIds: Array.from(this.actionsByHash.values()).map(\n a => a.t_id,\n ),\n });\n\n for (const action of this.actionsByHash.values()) {\n if (action.t_id === topicId) {\n this.logger.debug('Action found after sync', { topicId, action });\n console.log('DEBUG: Action found after sync', { topicId, action });\n return action;\n }\n }\n }\n\n this.logger.warn('Action not found', { topicId });\n console.log('DEBUG: Action not found', { topicId });\n return null;\n }\n\n /**\n * Retrieve action info by hash\n */\n async getActionInfo(hash: string): Promise<ModuleInfo | null> {\n const action = await this.getAction(hash);\n if (!action) return null;\n\n try {\n let infoString: string;\n\n if (action.info_t_id) {\n if (!this.client) {\n this.logger.error('Client not initialized - cannot fetch INFO');\n return null;\n }\n\n let inscription;\n\n if ('getOperatorAccountId' in this.client) {\n inscription = await retrieveInscription(action.info_t_id, {\n accountId: this.client.getOperatorAccountId(),\n privateKey: this.client.getOperatorPrivateKey(),\n network: this.networkType as 'mainnet' | 'testnet',\n });\n } else {\n const { accountId } = await (\n this.client as HCS12BrowserClient\n ).getAccountAndSigner();\n inscription = await retrieveInscription(action.info_t_id, {\n accountId,\n network: this.networkType as 'mainnet' | 'testnet',\n });\n }\n\n if (!inscription.content) {\n this.logger.error('No content in inscription response');\n return null;\n }\n infoString =\n typeof inscription.content === 'string'\n ? inscription.content\n : Buffer.from(inscription.content).toString('utf8');\n } else {\n this.logger.warn('Inline INFO storage not yet implemented');\n return null;\n }\n\n const moduleInfo = JSON.parse(infoString) as ModuleInfo;\n\n let computedHash: string;\n if (isSSREnvironment()) {\n computedHash = this.createSSRSafeHash(Buffer.from(infoString), 'info');\n } else {\n const hasher = this.cryptoAdapter.createHash('sha256');\n const result = hasher.update(Buffer.from(infoString)).digest('hex');\n const hashValue = result instanceof Promise ? await result : result;\n computedHash =\n typeof hashValue === 'string' ? hashValue : hashValue.toString('hex');\n }\n\n if (computedHash !== action.hash) {\n this.logger.error('INFO hash mismatch', {\n expected: action.hash,\n computed: computedHash,\n });\n throw new Error('Module info verification failed');\n }\n\n return moduleInfo;\n } catch (error) {\n this.logger.error('Failed to fetch action INFO', {\n hash,\n error,\n });\n return null;\n }\n }\n\n /**\n * Retrieve action WASM binary\n */\n async getActionWasm(hash: string): Promise<Uint8Array | null> {\n const action = await this.getAction(hash);\n if (!action) return null;\n\n if (!this.client) {\n this.logger.error('Client not initialized - cannot fetch WASM');\n return null;\n }\n\n try {\n let inscription;\n\n if ('getOperatorAccountId' in this.client) {\n inscription = await retrieveInscription(action.t_id, {\n accountId: this.client.getOperatorAccountId(),\n privateKey: this.client.getOperatorPrivateKey(),\n network: this.networkType as 'mainnet' | 'testnet',\n });\n } else {\n const { accountId } = await (\n this.client as HCS12BrowserClient\n ).getAccountAndSigner();\n inscription = await retrieveInscription(action.t_id, {\n accountId,\n network: this.networkType as 'mainnet' | 'testnet',\n });\n }\n\n if (!inscription.content) {\n this.logger.error('No content in inscription response');\n return null;\n }\n\n const wasmBuffer =\n typeof inscription.content === 'string'\n ? Buffer.from(inscription.content, 'base64')\n : Buffer.from(inscription.content);\n\n let computedHash: string;\n if (isSSREnvironment()) {\n computedHash = this.createSSRSafeHash(wasmBuffer, 'wasm');\n } else {\n const hasher = this.cryptoAdapter.createHash('sha256');\n const result = hasher.update(wasmBuffer).digest('hex');\n const hashValue = result instanceof Promise ? await result : result;\n computedHash =\n typeof hashValue === 'string' ? hashValue : hashValue.toString('hex');\n }\n\n if (computedHash !== action.wasm_hash) {\n this.logger.error('WASM hash mismatch', {\n expected: action.wasm_hash,\n computed: computedHash,\n });\n throw new Error('WASM binary verification failed');\n }\n\n return new Uint8Array(wasmBuffer);\n } catch (error) {\n this.logger.error('Failed to fetch WASM from HCS-1', {\n topicId: action.t_id,\n error,\n });\n return null;\n }\n }\n\n /**\n * Search actions by criteria\n */\n async searchActions(criteria: {\n creator?: string;\n capability?: string;\n afterTimestamp?: string;\n beforeTimestamp?: string;\n hasSourceVerification?: boolean;\n }): Promise<ActionRegistration[]> {\n const entries = await this.listEntries({\n submitter: criteria.creator,\n afterTimestamp: criteria.afterTimestamp,\n beforeTimestamp: criteria.beforeTimestamp,\n });\n\n return entries\n .map(entry => entry.data as ActionRegistration)\n .filter(action => {\n if (criteria.hasSourceVerification !== undefined) {\n const hasVerification = !!action.source_verification;\n if (hasVerification !== criteria.hasSourceVerification) return false;\n }\n\n return true;\n });\n }\n\n /**\n * Get actions by version chain\n */\n async getVersionChain(latestHash: string): Promise<ActionRegistration[]> {\n const chain: ActionRegistration[] = [];\n let currentHash: string | undefined = latestHash;\n\n while (currentHash) {\n const action = await this.getAction(currentHash);\n if (!action) break;\n\n chain.push(action);\n\n currentHash = undefined;\n }\n\n return chain;\n }\n\n /**\n * Validate action registration using Zod schema\n */\n private validateRegistration(registration: ActionRegistration): void {\n try {\n validateActionRegistration(registration);\n } catch (error) {\n if (error instanceof ZodError) {\n const firstError = error.errors[0];\n throw new Error(\n `Validation failed: ${firstError.path.join('.')} - ${firstError.message}`,\n );\n }\n throw error;\n }\n }\n\n /**\n * Override sync to handle action-specific processing\n */\n async sync(): Promise<void> {\n await super.sync();\n\n this.actionsByHash.clear();\n for (const entry of this.entries.values()) {\n const action = entry.data as ActionRegistration;\n this.actionsByHash.set(action.hash, action);\n }\n }\n\n /**\n * Override clear cache to also clear action hash index\n */\n clearCache(): void {\n super.clearCache();\n this.actionsByHash.clear();\n }\n\n /**\n * Create SSR-safe hash\n */\n private createSSRSafeHash(data: Buffer, type: string): string {\n let hash = 0;\n\n for (let i = 0; i < Math.min(data.length, 256); i++) {\n hash = ((hash << 5) - hash + data[i]) & 0xffffffff;\n }\n\n return `ssr-${type}-${data.length}-${Math.abs(hash).toString(16).padStart(8, '0')}`;\n }\n}\n"],"names":["infoString"],"mappings":"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"}
|
|
@@ -1,362 +1,134 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class ActionRegistry extends BaseRegistry {
|
|
10
|
-
constructor(networkType, logger, topicId, client) {
|
|
11
|
-
super(networkType, logger, RegistryType.ACTION, topicId, client);
|
|
12
|
-
this.actionsByHash = /* @__PURE__ */ new Map();
|
|
13
|
-
this.cryptoAdapter = getCryptoAdapter();
|
|
1
|
+
import { HRLResolver } from "./standards-sdk.es109.js";
|
|
2
|
+
class BlockLoader {
|
|
3
|
+
constructor(networkType, logger, client) {
|
|
4
|
+
this.blockCache = /* @__PURE__ */ new Map();
|
|
5
|
+
this.templateCache = /* @__PURE__ */ new Map();
|
|
6
|
+
this.networkType = networkType;
|
|
7
|
+
this.logger = logger;
|
|
8
|
+
this.client = client;
|
|
14
9
|
}
|
|
15
10
|
/**
|
|
16
|
-
*
|
|
11
|
+
* Load a block definition from HCS-1
|
|
17
12
|
*/
|
|
18
|
-
async
|
|
19
|
-
|
|
20
|
-
let infoHash;
|
|
21
|
-
if (isSSREnvironment()) {
|
|
22
|
-
wasmHash = this.createSSRSafeHash(wasmBinary, "wasm");
|
|
23
|
-
const infoString2 = JSON.stringify(moduleInfo);
|
|
24
|
-
infoHash = this.createSSRSafeHash(Buffer.from(infoString2), "info");
|
|
25
|
-
} else {
|
|
26
|
-
const wasmHasher = this.cryptoAdapter.createHash("sha256");
|
|
27
|
-
const wasmResult = wasmHasher.update(wasmBinary).digest("hex");
|
|
28
|
-
const wasmHashValue = wasmResult instanceof Promise ? await wasmResult : wasmResult;
|
|
29
|
-
wasmHash = typeof wasmHashValue === "string" ? wasmHashValue : wasmHashValue.toString("hex");
|
|
30
|
-
const infoString2 = JSON.stringify(moduleInfo);
|
|
31
|
-
const infoHasher = this.cryptoAdapter.createHash("sha256");
|
|
32
|
-
const infoResult = infoHasher.update(Buffer.from(infoString2)).digest("hex");
|
|
33
|
-
const infoHashValue = infoResult instanceof Promise ? await infoResult : infoResult;
|
|
34
|
-
infoHash = typeof infoHashValue === "string" ? infoHashValue : infoHashValue.toString("hex");
|
|
35
|
-
}
|
|
36
|
-
const wasmTopicId = await this.inscribeContent(
|
|
37
|
-
wasmBinary,
|
|
38
|
-
"application/octet-stream",
|
|
39
|
-
{
|
|
40
|
-
name: moduleInfo.name,
|
|
41
|
-
version: moduleInfo.version,
|
|
42
|
-
hash: wasmHash,
|
|
43
|
-
fileType: "wasm"
|
|
44
|
-
}
|
|
45
|
-
);
|
|
46
|
-
let infoTopicId;
|
|
47
|
-
const infoString = JSON.stringify(moduleInfo);
|
|
48
|
-
if (Buffer.byteLength(infoString, "utf8") > 1024) {
|
|
49
|
-
infoTopicId = await this.inscribeContent(infoString, "application/json", {
|
|
50
|
-
name: `${moduleInfo.name}-info`,
|
|
51
|
-
version: moduleInfo.version
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
const registration = {
|
|
55
|
-
p: "hcs-12",
|
|
56
|
-
op: "register",
|
|
57
|
-
t_id: wasmTopicId,
|
|
58
|
-
hash: infoHash,
|
|
59
|
-
wasm_hash: wasmHash,
|
|
60
|
-
info_t_id: infoTopicId,
|
|
61
|
-
source_verification: sourceVerification,
|
|
62
|
-
m: `${moduleInfo.name} v${moduleInfo.version}`
|
|
63
|
-
};
|
|
64
|
-
await this.register(registration);
|
|
65
|
-
return registration;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Register a new WASM action
|
|
69
|
-
*/
|
|
70
|
-
async register(registration) {
|
|
71
|
-
this.validateRegistration(registration);
|
|
72
|
-
if (this.topicId && this.client) {
|
|
73
|
-
this.logger.info("Submitting action registration to HCS", {
|
|
74
|
-
topicId: this.topicId,
|
|
75
|
-
hash: registration.hash,
|
|
76
|
-
wasmHash: registration.wasm_hash
|
|
77
|
-
});
|
|
78
|
-
const result = await this.client.submitMessage(
|
|
79
|
-
this.topicId,
|
|
80
|
-
JSON.stringify(registration)
|
|
81
|
-
);
|
|
82
|
-
const sequenceNumber = result.sequenceNumber;
|
|
83
|
-
if (!sequenceNumber) {
|
|
84
|
-
throw new Error("No sequence number returned from submission");
|
|
85
|
-
}
|
|
86
|
-
const entry = {
|
|
87
|
-
id: sequenceNumber.toString(),
|
|
88
|
-
sequenceNumber,
|
|
89
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
90
|
-
submitter: "getHashConnect" in this.client ? (await this.client.getAccountAndSigner()).accountId : this.client.getOperatorAccountId(),
|
|
91
|
-
data: registration
|
|
92
|
-
};
|
|
93
|
-
this.entries.set(entry.id, entry);
|
|
94
|
-
this.actionsByHash.set(registration.hash, registration);
|
|
95
|
-
this.logger.info("Action registered", {
|
|
96
|
-
hash: registration.hash,
|
|
97
|
-
sequenceNumber,
|
|
98
|
-
hasSourceVerification: !!registration.source_verification
|
|
99
|
-
});
|
|
100
|
-
return sequenceNumber.toString();
|
|
101
|
-
} else {
|
|
102
|
-
const sequenceNumber = this.entries.size + 1;
|
|
103
|
-
const entry = {
|
|
104
|
-
id: sequenceNumber.toString(),
|
|
105
|
-
sequenceNumber,
|
|
106
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
107
|
-
submitter: "local",
|
|
108
|
-
data: registration
|
|
109
|
-
};
|
|
110
|
-
this.entries.set(entry.id, entry);
|
|
111
|
-
this.actionsByHash.set(registration.hash, registration);
|
|
112
|
-
return sequenceNumber.toString();
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Retrieve action by hash
|
|
117
|
-
*/
|
|
118
|
-
async getAction(hash) {
|
|
119
|
-
const cached = this.actionsByHash.get(hash);
|
|
13
|
+
async loadBlockDefinition(blockTopicId) {
|
|
14
|
+
const cached = this.blockCache.get(blockTopicId);
|
|
120
15
|
if (cached) return cached;
|
|
121
|
-
if (this.topicId && this.client) {
|
|
122
|
-
await this.sync();
|
|
123
|
-
return this.actionsByHash.get(hash) || null;
|
|
124
|
-
}
|
|
125
|
-
return null;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Retrieve action by topic ID
|
|
129
|
-
*/
|
|
130
|
-
async getActionByTopicId(topicId) {
|
|
131
|
-
this.logger.debug("getActionByTopicId called", { topicId });
|
|
132
|
-
console.log("DEBUG: getActionByTopicId called", {
|
|
133
|
-
topicId,
|
|
134
|
-
cacheSize: this.actionsByHash.size,
|
|
135
|
-
cachedTopicIds: Array.from(this.actionsByHash.values()).map((a) => a.t_id)
|
|
136
|
-
});
|
|
137
|
-
for (const action of this.actionsByHash.values()) {
|
|
138
|
-
if (action.t_id === topicId) {
|
|
139
|
-
this.logger.debug("Action found in cache", { topicId, action });
|
|
140
|
-
console.log("DEBUG: Action found in cache", { topicId, action });
|
|
141
|
-
return action;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
if (this.topicId && this.client) {
|
|
145
|
-
this.logger.debug("Action not in cache, syncing...", { topicId });
|
|
146
|
-
console.log("DEBUG: Action not in cache, syncing...");
|
|
147
|
-
await this.sync();
|
|
148
|
-
console.log("DEBUG: After sync", {
|
|
149
|
-
cacheSize: this.actionsByHash.size,
|
|
150
|
-
cachedTopicIds: Array.from(this.actionsByHash.values()).map(
|
|
151
|
-
(a) => a.t_id
|
|
152
|
-
)
|
|
153
|
-
});
|
|
154
|
-
for (const action of this.actionsByHash.values()) {
|
|
155
|
-
if (action.t_id === topicId) {
|
|
156
|
-
this.logger.debug("Action found after sync", { topicId, action });
|
|
157
|
-
console.log("DEBUG: Action found after sync", { topicId, action });
|
|
158
|
-
return action;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
this.logger.warn("Action not found", { topicId });
|
|
163
|
-
console.log("DEBUG: Action not found", { topicId });
|
|
164
|
-
return null;
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Retrieve action info by hash
|
|
168
|
-
*/
|
|
169
|
-
async getActionInfo(hash) {
|
|
170
|
-
const action = await this.getAction(hash);
|
|
171
|
-
if (!action) return null;
|
|
172
16
|
try {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}
|
|
179
|
-
let inscription;
|
|
180
|
-
if ("getOperatorAccountId" in this.client) {
|
|
181
|
-
inscription = await retrieveInscription(action.info_t_id, {
|
|
182
|
-
accountId: this.client.getOperatorAccountId(),
|
|
183
|
-
privateKey: this.client.getOperatorPrivateKey(),
|
|
184
|
-
network: this.networkType
|
|
185
|
-
});
|
|
186
|
-
} else {
|
|
187
|
-
const { accountId } = await this.client.getAccountAndSigner();
|
|
188
|
-
inscription = await retrieveInscription(action.info_t_id, {
|
|
189
|
-
accountId,
|
|
190
|
-
network: this.networkType
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
if (!inscription.content) {
|
|
194
|
-
this.logger.error("No content in inscription response");
|
|
195
|
-
return null;
|
|
196
|
-
}
|
|
197
|
-
infoString = typeof inscription.content === "string" ? inscription.content : Buffer.from(inscription.content).toString("utf8");
|
|
198
|
-
} else {
|
|
199
|
-
this.logger.warn("Inline INFO storage not yet implemented");
|
|
200
|
-
return null;
|
|
17
|
+
const hrlResolver = new HRLResolver();
|
|
18
|
+
const result = await hrlResolver.resolve(blockTopicId, {
|
|
19
|
+
network: this.networkType
|
|
20
|
+
});
|
|
21
|
+
if (!result.content) {
|
|
22
|
+
throw new Error(`Block definition not found: ${blockTopicId}`);
|
|
201
23
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
computedHash = this.createSSRSafeHash(Buffer.from(infoString), "info");
|
|
24
|
+
let blockDefinition;
|
|
25
|
+
if (typeof result.content === "object" && result.content !== null && !(result.content instanceof ArrayBuffer)) {
|
|
26
|
+
blockDefinition = result.content;
|
|
206
27
|
} else {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
computedHash = typeof hashValue === "string" ? hashValue : hashValue.toString("hex");
|
|
211
|
-
}
|
|
212
|
-
if (computedHash !== action.hash) {
|
|
213
|
-
this.logger.error("INFO hash mismatch", {
|
|
214
|
-
expected: action.hash,
|
|
215
|
-
computed: computedHash
|
|
216
|
-
});
|
|
217
|
-
throw new Error("Module info verification failed");
|
|
28
|
+
blockDefinition = JSON.parse(
|
|
29
|
+
typeof result.content === "string" ? result.content : result.content.toString()
|
|
30
|
+
);
|
|
218
31
|
}
|
|
219
|
-
|
|
32
|
+
this.blockCache.set(blockTopicId, blockDefinition);
|
|
33
|
+
return blockDefinition;
|
|
220
34
|
} catch (error) {
|
|
221
|
-
this.logger.error("Failed to
|
|
222
|
-
|
|
223
|
-
error
|
|
35
|
+
this.logger.error("Failed to load block definition", {
|
|
36
|
+
blockTopicId,
|
|
37
|
+
error: error.message
|
|
224
38
|
});
|
|
225
|
-
|
|
39
|
+
throw new Error(`Failed to load block definition: ${error.message}`);
|
|
226
40
|
}
|
|
227
41
|
}
|
|
228
42
|
/**
|
|
229
|
-
*
|
|
43
|
+
* Load a block template from HCS-1
|
|
230
44
|
*/
|
|
231
|
-
async
|
|
232
|
-
const
|
|
233
|
-
if (
|
|
234
|
-
if (!this.client) {
|
|
235
|
-
this.logger.error("Client not initialized - cannot fetch WASM");
|
|
236
|
-
return null;
|
|
237
|
-
}
|
|
45
|
+
async loadBlockTemplate(templateTopicId) {
|
|
46
|
+
const cached = this.templateCache.get(templateTopicId);
|
|
47
|
+
if (cached) return cached;
|
|
238
48
|
try {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
});
|
|
246
|
-
} else {
|
|
247
|
-
const { accountId } = await this.client.getAccountAndSigner();
|
|
248
|
-
inscription = await retrieveInscription(action.t_id, {
|
|
249
|
-
accountId,
|
|
250
|
-
network: this.networkType
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
if (!inscription.content) {
|
|
254
|
-
this.logger.error("No content in inscription response");
|
|
255
|
-
return null;
|
|
49
|
+
const hrlResolver = new HRLResolver();
|
|
50
|
+
const result = await hrlResolver.resolve(templateTopicId, {
|
|
51
|
+
network: this.networkType
|
|
52
|
+
});
|
|
53
|
+
if (!result.content) {
|
|
54
|
+
throw new Error(`Block template not found: ${templateTopicId}`);
|
|
256
55
|
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
56
|
+
let template;
|
|
57
|
+
if (typeof result.content === "string") {
|
|
58
|
+
template = result.content;
|
|
59
|
+
} else if (typeof result.content === "object" && result.content !== null) {
|
|
60
|
+
template = result.content.text || JSON.stringify(result.content);
|
|
261
61
|
} else {
|
|
262
|
-
|
|
263
|
-
const result = hasher.update(wasmBuffer).digest("hex");
|
|
264
|
-
const hashValue = result instanceof Promise ? await result : result;
|
|
265
|
-
computedHash = typeof hashValue === "string" ? hashValue : hashValue.toString("hex");
|
|
62
|
+
template = result.content.toString();
|
|
266
63
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
expected: action.wasm_hash,
|
|
270
|
-
computed: computedHash
|
|
271
|
-
});
|
|
272
|
-
throw new Error("WASM binary verification failed");
|
|
273
|
-
}
|
|
274
|
-
return new Uint8Array(wasmBuffer);
|
|
64
|
+
this.templateCache.set(templateTopicId, template);
|
|
65
|
+
return template;
|
|
275
66
|
} catch (error) {
|
|
276
|
-
this.logger.error("Failed to
|
|
277
|
-
|
|
278
|
-
error
|
|
67
|
+
this.logger.error("Failed to load block template", {
|
|
68
|
+
templateTopicId,
|
|
69
|
+
error: error.message
|
|
279
70
|
});
|
|
280
|
-
|
|
71
|
+
throw new Error(`Failed to load block template: ${error.message}`);
|
|
281
72
|
}
|
|
282
73
|
}
|
|
283
74
|
/**
|
|
284
|
-
*
|
|
75
|
+
* Load a complete block (definition + template)
|
|
285
76
|
*/
|
|
286
|
-
async
|
|
287
|
-
const
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
beforeTimestamp: criteria.beforeTimestamp
|
|
291
|
-
});
|
|
292
|
-
return entries.map((entry) => entry.data).filter((action) => {
|
|
293
|
-
if (criteria.hasSourceVerification !== void 0) {
|
|
294
|
-
const hasVerification = !!action.source_verification;
|
|
295
|
-
if (hasVerification !== criteria.hasSourceVerification) return false;
|
|
296
|
-
}
|
|
297
|
-
return true;
|
|
298
|
-
});
|
|
77
|
+
async loadBlock(blockTopicId) {
|
|
78
|
+
const definition = await this.loadBlockDefinition(blockTopicId);
|
|
79
|
+
const template = await this.loadBlockTemplate(definition.template_t_id);
|
|
80
|
+
return { definition, template };
|
|
299
81
|
}
|
|
300
82
|
/**
|
|
301
|
-
*
|
|
83
|
+
* Store a block definition and template via HCS-1
|
|
302
84
|
*/
|
|
303
|
-
async
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
while (currentHash) {
|
|
307
|
-
const action = await this.getAction(currentHash);
|
|
308
|
-
if (!action) break;
|
|
309
|
-
chain.push(action);
|
|
310
|
-
currentHash = void 0;
|
|
85
|
+
async storeBlock(template, definition) {
|
|
86
|
+
if (!this.client || !("inscribeFile" in this.client)) {
|
|
87
|
+
throw new Error("Client does not support inscription");
|
|
311
88
|
}
|
|
312
|
-
return chain;
|
|
313
|
-
}
|
|
314
|
-
/**
|
|
315
|
-
* Validate action registration using Zod schema
|
|
316
|
-
*/
|
|
317
|
-
validateRegistration(registration) {
|
|
318
89
|
try {
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
);
|
|
90
|
+
const templateBuffer = Buffer.from(template);
|
|
91
|
+
const templateResult = await this.client.inscribeFile(
|
|
92
|
+
templateBuffer,
|
|
93
|
+
`block-${definition.name}-template.html`
|
|
94
|
+
);
|
|
95
|
+
if (!templateResult?.topic_id) {
|
|
96
|
+
throw new Error("Failed to inscribe block template");
|
|
326
97
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
98
|
+
const fullDefinition = {
|
|
99
|
+
...definition,
|
|
100
|
+
template_t_id: templateResult.topic_id
|
|
101
|
+
};
|
|
102
|
+
const definitionBuffer = Buffer.from(JSON.stringify(fullDefinition));
|
|
103
|
+
const definitionResult = await this.client.inscribeFile(
|
|
104
|
+
definitionBuffer,
|
|
105
|
+
`block-${definition.name}-definition.json`
|
|
106
|
+
);
|
|
107
|
+
if (!definitionResult?.topic_id) {
|
|
108
|
+
throw new Error("Failed to inscribe block definition");
|
|
109
|
+
}
|
|
110
|
+
this.blockCache.set(definitionResult.topic_id, fullDefinition);
|
|
111
|
+
this.templateCache.set(templateResult.topic_id, template);
|
|
112
|
+
return {
|
|
113
|
+
definitionTopicId: definitionResult.topic_id,
|
|
114
|
+
templateTopicId: templateResult.topic_id
|
|
115
|
+
};
|
|
116
|
+
} catch (error) {
|
|
117
|
+
this.logger.error("Failed to store block", {
|
|
118
|
+
error: error.message
|
|
119
|
+
});
|
|
120
|
+
throw new Error(`Failed to store block: ${error.message}`);
|
|
339
121
|
}
|
|
340
122
|
}
|
|
341
123
|
/**
|
|
342
|
-
*
|
|
124
|
+
* Clear all caches
|
|
343
125
|
*/
|
|
344
126
|
clearCache() {
|
|
345
|
-
|
|
346
|
-
this.
|
|
347
|
-
}
|
|
348
|
-
/**
|
|
349
|
-
* Create SSR-safe hash
|
|
350
|
-
*/
|
|
351
|
-
createSSRSafeHash(data, type) {
|
|
352
|
-
let hash = 0;
|
|
353
|
-
for (let i = 0; i < Math.min(data.length, 256); i++) {
|
|
354
|
-
hash = (hash << 5) - hash + data[i] & 4294967295;
|
|
355
|
-
}
|
|
356
|
-
return `ssr-${type}-${data.length}-${Math.abs(hash).toString(16).padStart(8, "0")}`;
|
|
127
|
+
this.blockCache.clear();
|
|
128
|
+
this.templateCache.clear();
|
|
357
129
|
}
|
|
358
130
|
}
|
|
359
131
|
export {
|
|
360
|
-
|
|
132
|
+
BlockLoader
|
|
361
133
|
};
|
|
362
134
|
//# sourceMappingURL=standards-sdk.es32.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es32.js","sources":["../../src/hcs-12/registries/action-registry.ts"],"sourcesContent":["/**\n * Action Registry Implementation for HCS-12\n *\n * Manages registration and retrieval of HashLink WASM actions.\n */\n\nimport { ILogger } from '../../utils/logger';\nimport { NetworkType } from '../../utils/types';\nimport {\n RegistryType,\n AssemblyRegistryEntry,\n ActionRegistration,\n ModuleInfo,\n SourceVerification,\n} from '../types';\nimport { BaseRegistry } from './base-registry';\nimport { retrieveInscription } from '../../inscribe';\nimport { getCryptoAdapter } from '../../utils/crypto-abstraction';\nimport { isSSREnvironment } from '../../utils/crypto-env';\nimport type { HCS12Client } from '../sdk';\nimport type { HCS12BrowserClient } from '../browser';\nimport {\n validateActionRegistration,\n safeValidate,\n actionRegistrationSchema,\n} from '../validation/schemas';\nimport { ZodError } from 'zod';\n\n/**\n * Registry for HashLink WASM actions\n */\nexport class ActionRegistry extends BaseRegistry {\n private actionsByHash: Map<string, ActionRegistration> = new Map();\n private cryptoAdapter = getCryptoAdapter();\n\n constructor(\n networkType: NetworkType,\n logger: ILogger,\n topicId?: string,\n client?: HCS12Client | HCS12BrowserClient,\n ) {\n super(networkType, logger, RegistryType.ACTION, topicId, client);\n }\n\n /**\n * Register a WASM module with its binary via HCS-1\n */\n async registerWithWasm(\n wasmBinary: Buffer,\n moduleInfo: ModuleInfo,\n sourceVerification?: SourceVerification,\n ): Promise<ActionRegistration> {\n let wasmHash: string;\n let infoHash: string;\n\n if (isSSREnvironment()) {\n wasmHash = this.createSSRSafeHash(wasmBinary, 'wasm');\n const infoString = JSON.stringify(moduleInfo);\n infoHash = this.createSSRSafeHash(Buffer.from(infoString), 'info');\n } else {\n const wasmHasher = this.cryptoAdapter.createHash('sha256');\n const wasmResult = wasmHasher.update(wasmBinary).digest('hex');\n const wasmHashValue =\n wasmResult instanceof Promise ? await wasmResult : wasmResult;\n wasmHash =\n typeof wasmHashValue === 'string'\n ? wasmHashValue\n : wasmHashValue.toString('hex');\n\n const infoString = JSON.stringify(moduleInfo);\n const infoHasher = this.cryptoAdapter.createHash('sha256');\n const infoResult = infoHasher\n .update(Buffer.from(infoString))\n .digest('hex');\n const infoHashValue =\n infoResult instanceof Promise ? await infoResult : infoResult;\n infoHash =\n typeof infoHashValue === 'string'\n ? infoHashValue\n : infoHashValue.toString('hex');\n }\n\n const wasmTopicId = await this.inscribeContent(\n wasmBinary,\n 'application/octet-stream',\n {\n name: moduleInfo.name,\n version: moduleInfo.version,\n hash: wasmHash,\n fileType: 'wasm',\n },\n );\n\n let infoTopicId: string | undefined;\n const infoString = JSON.stringify(moduleInfo);\n if (Buffer.byteLength(infoString, 'utf8') > 1024) {\n infoTopicId = await this.inscribeContent(infoString, 'application/json', {\n name: `${moduleInfo.name}-info`,\n version: moduleInfo.version,\n });\n }\n\n const registration: ActionRegistration = {\n p: 'hcs-12',\n op: 'register',\n t_id: wasmTopicId,\n hash: infoHash,\n wasm_hash: wasmHash,\n info_t_id: infoTopicId,\n source_verification: sourceVerification,\n m: `${moduleInfo.name} v${moduleInfo.version}`,\n };\n\n const id = await this.register(registration);\n return registration;\n }\n\n /**\n * Register a new WASM action\n */\n async register(registration: ActionRegistration): Promise<string> {\n this.validateRegistration(registration);\n\n if (this.topicId && this.client) {\n this.logger.info('Submitting action registration to HCS', {\n topicId: this.topicId,\n hash: registration.hash,\n wasmHash: registration.wasm_hash,\n });\n\n const result = await this.client.submitMessage(\n this.topicId,\n JSON.stringify(registration),\n );\n\n const sequenceNumber = result.sequenceNumber;\n if (!sequenceNumber) {\n throw new Error('No sequence number returned from submission');\n }\n\n const entry: AssemblyRegistryEntry = {\n id: sequenceNumber.toString(),\n sequenceNumber,\n timestamp: new Date().toISOString(),\n submitter:\n 'getHashConnect' in this.client\n ? (await (this.client as HCS12BrowserClient).getAccountAndSigner())\n .accountId\n : this.client.getOperatorAccountId(),\n data: registration,\n };\n\n this.entries.set(entry.id, entry);\n this.actionsByHash.set(registration.hash, registration);\n\n this.logger.info('Action registered', {\n hash: registration.hash,\n sequenceNumber,\n hasSourceVerification: !!registration.source_verification,\n });\n\n return sequenceNumber.toString();\n } else {\n const sequenceNumber = this.entries.size + 1;\n const entry: AssemblyRegistryEntry = {\n id: sequenceNumber.toString(),\n sequenceNumber,\n timestamp: new Date().toISOString(),\n submitter: 'local',\n data: registration,\n };\n\n this.entries.set(entry.id, entry);\n this.actionsByHash.set(registration.hash, registration);\n\n return sequenceNumber.toString();\n }\n }\n\n /**\n * Retrieve action by hash\n */\n async getAction(hash: string): Promise<ActionRegistration | null> {\n const cached = this.actionsByHash.get(hash);\n if (cached) return cached;\n\n if (this.topicId && this.client) {\n await this.sync();\n return this.actionsByHash.get(hash) || null;\n }\n\n return null;\n }\n\n /**\n * Retrieve action by topic ID\n */\n async getActionByTopicId(\n topicId: string,\n ): Promise<ActionRegistration | null> {\n this.logger.debug('getActionByTopicId called', { topicId });\n console.log('DEBUG: getActionByTopicId called', {\n topicId,\n cacheSize: this.actionsByHash.size,\n cachedTopicIds: Array.from(this.actionsByHash.values()).map(a => a.t_id),\n });\n\n for (const action of this.actionsByHash.values()) {\n if (action.t_id === topicId) {\n this.logger.debug('Action found in cache', { topicId, action });\n console.log('DEBUG: Action found in cache', { topicId, action });\n return action;\n }\n }\n\n if (this.topicId && this.client) {\n this.logger.debug('Action not in cache, syncing...', { topicId });\n console.log('DEBUG: Action not in cache, syncing...');\n await this.sync();\n\n console.log('DEBUG: After sync', {\n cacheSize: this.actionsByHash.size,\n cachedTopicIds: Array.from(this.actionsByHash.values()).map(\n a => a.t_id,\n ),\n });\n\n for (const action of this.actionsByHash.values()) {\n if (action.t_id === topicId) {\n this.logger.debug('Action found after sync', { topicId, action });\n console.log('DEBUG: Action found after sync', { topicId, action });\n return action;\n }\n }\n }\n\n this.logger.warn('Action not found', { topicId });\n console.log('DEBUG: Action not found', { topicId });\n return null;\n }\n\n /**\n * Retrieve action info by hash\n */\n async getActionInfo(hash: string): Promise<ModuleInfo | null> {\n const action = await this.getAction(hash);\n if (!action) return null;\n\n try {\n let infoString: string;\n\n if (action.info_t_id) {\n if (!this.client) {\n this.logger.error('Client not initialized - cannot fetch INFO');\n return null;\n }\n\n let inscription;\n\n if ('getOperatorAccountId' in this.client) {\n inscription = await retrieveInscription(action.info_t_id, {\n accountId: this.client.getOperatorAccountId(),\n privateKey: this.client.getOperatorPrivateKey(),\n network: this.networkType as 'mainnet' | 'testnet',\n });\n } else {\n const { accountId } = await (\n this.client as HCS12BrowserClient\n ).getAccountAndSigner();\n inscription = await retrieveInscription(action.info_t_id, {\n accountId,\n network: this.networkType as 'mainnet' | 'testnet',\n });\n }\n\n if (!inscription.content) {\n this.logger.error('No content in inscription response');\n return null;\n }\n infoString =\n typeof inscription.content === 'string'\n ? inscription.content\n : Buffer.from(inscription.content).toString('utf8');\n } else {\n this.logger.warn('Inline INFO storage not yet implemented');\n return null;\n }\n\n const moduleInfo = JSON.parse(infoString) as ModuleInfo;\n\n let computedHash: string;\n if (isSSREnvironment()) {\n computedHash = this.createSSRSafeHash(Buffer.from(infoString), 'info');\n } else {\n const hasher = this.cryptoAdapter.createHash('sha256');\n const result = hasher.update(Buffer.from(infoString)).digest('hex');\n const hashValue = result instanceof Promise ? await result : result;\n computedHash =\n typeof hashValue === 'string' ? hashValue : hashValue.toString('hex');\n }\n\n if (computedHash !== action.hash) {\n this.logger.error('INFO hash mismatch', {\n expected: action.hash,\n computed: computedHash,\n });\n throw new Error('Module info verification failed');\n }\n\n return moduleInfo;\n } catch (error) {\n this.logger.error('Failed to fetch action INFO', {\n hash,\n error,\n });\n return null;\n }\n }\n\n /**\n * Retrieve action WASM binary\n */\n async getActionWasm(hash: string): Promise<Uint8Array | null> {\n const action = await this.getAction(hash);\n if (!action) return null;\n\n if (!this.client) {\n this.logger.error('Client not initialized - cannot fetch WASM');\n return null;\n }\n\n try {\n let inscription;\n\n if ('getOperatorAccountId' in this.client) {\n inscription = await retrieveInscription(action.t_id, {\n accountId: this.client.getOperatorAccountId(),\n privateKey: this.client.getOperatorPrivateKey(),\n network: this.networkType as 'mainnet' | 'testnet',\n });\n } else {\n const { accountId } = await (\n this.client as HCS12BrowserClient\n ).getAccountAndSigner();\n inscription = await retrieveInscription(action.t_id, {\n accountId,\n network: this.networkType as 'mainnet' | 'testnet',\n });\n }\n\n if (!inscription.content) {\n this.logger.error('No content in inscription response');\n return null;\n }\n\n const wasmBuffer =\n typeof inscription.content === 'string'\n ? Buffer.from(inscription.content, 'base64')\n : Buffer.from(inscription.content);\n\n let computedHash: string;\n if (isSSREnvironment()) {\n computedHash = this.createSSRSafeHash(wasmBuffer, 'wasm');\n } else {\n const hasher = this.cryptoAdapter.createHash('sha256');\n const result = hasher.update(wasmBuffer).digest('hex');\n const hashValue = result instanceof Promise ? await result : result;\n computedHash =\n typeof hashValue === 'string' ? hashValue : hashValue.toString('hex');\n }\n\n if (computedHash !== action.wasm_hash) {\n this.logger.error('WASM hash mismatch', {\n expected: action.wasm_hash,\n computed: computedHash,\n });\n throw new Error('WASM binary verification failed');\n }\n\n return new Uint8Array(wasmBuffer);\n } catch (error) {\n this.logger.error('Failed to fetch WASM from HCS-1', {\n topicId: action.t_id,\n error,\n });\n return null;\n }\n }\n\n /**\n * Search actions by criteria\n */\n async searchActions(criteria: {\n creator?: string;\n capability?: string;\n afterTimestamp?: string;\n beforeTimestamp?: string;\n hasSourceVerification?: boolean;\n }): Promise<ActionRegistration[]> {\n const entries = await this.listEntries({\n submitter: criteria.creator,\n afterTimestamp: criteria.afterTimestamp,\n beforeTimestamp: criteria.beforeTimestamp,\n });\n\n return entries\n .map(entry => entry.data as ActionRegistration)\n .filter(action => {\n if (criteria.hasSourceVerification !== undefined) {\n const hasVerification = !!action.source_verification;\n if (hasVerification !== criteria.hasSourceVerification) return false;\n }\n\n return true;\n });\n }\n\n /**\n * Get actions by version chain\n */\n async getVersionChain(latestHash: string): Promise<ActionRegistration[]> {\n const chain: ActionRegistration[] = [];\n let currentHash: string | undefined = latestHash;\n\n while (currentHash) {\n const action = await this.getAction(currentHash);\n if (!action) break;\n\n chain.push(action);\n\n currentHash = undefined;\n }\n\n return chain;\n }\n\n /**\n * Validate action registration using Zod schema\n */\n private validateRegistration(registration: ActionRegistration): void {\n try {\n validateActionRegistration(registration);\n } catch (error) {\n if (error instanceof ZodError) {\n const firstError = error.errors[0];\n throw new Error(\n `Validation failed: ${firstError.path.join('.')} - ${firstError.message}`,\n );\n }\n throw error;\n }\n }\n\n /**\n * Override sync to handle action-specific processing\n */\n async sync(): Promise<void> {\n await super.sync();\n\n this.actionsByHash.clear();\n for (const entry of this.entries.values()) {\n const action = entry.data as ActionRegistration;\n this.actionsByHash.set(action.hash, action);\n }\n }\n\n /**\n * Override clear cache to also clear action hash index\n */\n clearCache(): void {\n super.clearCache();\n this.actionsByHash.clear();\n }\n\n /**\n * Create SSR-safe hash\n */\n private createSSRSafeHash(data: Buffer, type: string): string {\n let hash = 0;\n\n for (let i = 0; i < Math.min(data.length, 256); i++) {\n hash = ((hash << 5) - hash + data[i]) & 0xffffffff;\n }\n\n return `ssr-${type}-${data.length}-${Math.abs(hash).toString(16).padStart(8, '0')}`;\n }\n}\n"],"names":["infoString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es32.js","sources":["../../src/hcs-12/registries/block-loader.ts"],"sourcesContent":["/**\n * Block Loader for HCS-12\n *\n * Loads block definitions and templates from HCS-1 storage.\n * Blocks are not stored in a registry but directly via HCS-1.\n */\n\nimport { ILogger, Logger } from '../../utils/logger';\nimport { NetworkType } from '../../utils/types';\nimport { BlockDefinition } from '../types';\nimport type { HCS12Client } from '../sdk';\nimport type { HCS12BrowserClient } from '../browser';\nimport { HRLResolver } from '../../utils/hrl-resolver';\n\n/**\n * Loader for HCS-1 stored block definitions\n */\nexport class BlockLoader {\n private logger: ILogger;\n private networkType: NetworkType;\n private client?: HCS12Client | HCS12BrowserClient;\n private blockCache: Map<string, BlockDefinition> = new Map();\n private templateCache: Map<string, string> = new Map();\n\n constructor(\n networkType: NetworkType,\n logger: ILogger,\n client?: HCS12Client | HCS12BrowserClient,\n ) {\n this.networkType = networkType;\n this.logger = logger;\n this.client = client;\n }\n\n /**\n * Load a block definition from HCS-1\n */\n async loadBlockDefinition(blockTopicId: string): Promise<BlockDefinition> {\n const cached = this.blockCache.get(blockTopicId);\n if (cached) return cached;\n\n try {\n const hrlResolver = new HRLResolver();\n const result = await hrlResolver.resolve(blockTopicId, {\n network: this.networkType,\n });\n\n if (!result.content) {\n throw new Error(`Block definition not found: ${blockTopicId}`);\n }\n\n let blockDefinition: BlockDefinition;\n\n if (\n typeof result.content === 'object' &&\n result.content !== null &&\n !(result.content instanceof ArrayBuffer)\n ) {\n blockDefinition = result.content as BlockDefinition;\n } else {\n blockDefinition = JSON.parse(\n typeof result.content === 'string'\n ? result.content\n : result.content.toString(),\n ) as BlockDefinition;\n }\n this.blockCache.set(blockTopicId, blockDefinition);\n\n return blockDefinition;\n } catch (error) {\n this.logger.error('Failed to load block definition', {\n blockTopicId,\n error: error.message,\n });\n throw new Error(`Failed to load block definition: ${error.message}`);\n }\n }\n\n /**\n * Load a block template from HCS-1\n */\n async loadBlockTemplate(templateTopicId: string): Promise<string> {\n const cached = this.templateCache.get(templateTopicId);\n if (cached) return cached;\n\n try {\n const hrlResolver = new HRLResolver();\n const result = await hrlResolver.resolve(templateTopicId, {\n network: this.networkType,\n });\n\n if (!result.content) {\n throw new Error(`Block template not found: ${templateTopicId}`);\n }\n\n let template: string;\n\n if (typeof result.content === 'string') {\n template = result.content;\n } else if (\n typeof result.content === 'object' &&\n result.content !== null\n ) {\n template =\n (result.content as any).text || JSON.stringify(result.content);\n } else {\n template = result.content.toString();\n }\n\n this.templateCache.set(templateTopicId, template);\n\n return template;\n } catch (error) {\n this.logger.error('Failed to load block template', {\n templateTopicId,\n error: error.message,\n });\n throw new Error(`Failed to load block template: ${error.message}`);\n }\n }\n\n /**\n * Load a complete block (definition + template)\n */\n async loadBlock(blockTopicId: string): Promise<{\n definition: BlockDefinition;\n template: string;\n }> {\n const definition = await this.loadBlockDefinition(blockTopicId);\n const template = await this.loadBlockTemplate(definition.template_t_id);\n\n return { definition, template };\n }\n\n /**\n * Store a block definition and template via HCS-1\n */\n async storeBlock(\n template: string,\n definition: Omit<BlockDefinition, 'template_t_id'>,\n ): Promise<{\n definitionTopicId: string;\n templateTopicId: string;\n }> {\n if (!this.client || !('inscribeFile' in this.client)) {\n throw new Error('Client does not support inscription');\n }\n\n try {\n const templateBuffer = Buffer.from(template);\n const templateResult = await this.client.inscribeFile(\n templateBuffer,\n `block-${definition.name}-template.html`,\n );\n\n if (!templateResult?.topic_id) {\n throw new Error('Failed to inscribe block template');\n }\n\n const fullDefinition: BlockDefinition = {\n ...definition,\n template_t_id: templateResult.topic_id,\n };\n\n const definitionBuffer = Buffer.from(JSON.stringify(fullDefinition));\n const definitionResult = await this.client.inscribeFile(\n definitionBuffer,\n `block-${definition.name}-definition.json`,\n );\n\n if (!definitionResult?.topic_id) {\n throw new Error('Failed to inscribe block definition');\n }\n\n this.blockCache.set(definitionResult.topic_id, fullDefinition);\n this.templateCache.set(templateResult.topic_id, template);\n\n return {\n definitionTopicId: definitionResult.topic_id,\n templateTopicId: templateResult.topic_id,\n };\n } catch (error) {\n this.logger.error('Failed to store block', {\n error: error.message,\n });\n throw new Error(`Failed to store block: ${error.message}`);\n }\n }\n\n /**\n * Clear all caches\n */\n clearCache(): void {\n this.blockCache.clear();\n this.templateCache.clear();\n }\n}\n"],"names":[],"mappings":"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"}
|