@hashgraphonline/standards-sdk 0.1.144 → 0.1.145
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-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/index.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/client/base-client.d.ts +14 -1
- package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
- 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/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 +998 -577
- package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/types.d.ts +20 -1
- package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +2 -2
- 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-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/index.d.ts.map +1 -1
- package/dist/es/services/registry-broker/client/base-client.d.ts +14 -1
- package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
- 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/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 +998 -577
- package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/es/services/registry-broker/types.d.ts +20 -1
- package/dist/es/services/registry-broker/types.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +141 -135
- 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 -166
- 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 +192 -162
- package/dist/es/standards-sdk.es128.js.map +1 -1
- package/dist/es/standards-sdk.es129.js +61 -164
- 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 +102 -85
- package/dist/es/standards-sdk.es130.js.map +1 -1
- package/dist/es/standards-sdk.es131.js +222 -96
- package/dist/es/standards-sdk.es131.js.map +1 -1
- package/dist/es/standards-sdk.es132.js +153 -220
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es133.js +104 -162
- package/dist/es/standards-sdk.es133.js.map +1 -1
- package/dist/es/standards-sdk.es134.js +296 -92
- package/dist/es/standards-sdk.es134.js.map +1 -1
- package/dist/es/standards-sdk.es135.js +432 -294
- package/dist/es/standards-sdk.es135.js.map +1 -1
- package/dist/es/standards-sdk.es136.js +14 -363
- package/dist/es/standards-sdk.es136.js.map +1 -1
- package/dist/es/standards-sdk.es137.js +79 -15
- package/dist/es/standards-sdk.es137.js.map +1 -1
- package/dist/es/standards-sdk.es138.js +79 -59
- package/dist/es/standards-sdk.es138.js.map +1 -1
- package/dist/es/standards-sdk.es139.js +152 -80
- 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 -159
- package/dist/es/standards-sdk.es140.js.map +1 -1
- package/dist/es/standards-sdk.es141.js +86 -7
- package/dist/es/standards-sdk.es141.js.map +1 -1
- package/dist/es/standards-sdk.es142.js +44 -65
- package/dist/es/standards-sdk.es142.js.map +1 -1
- package/dist/es/standards-sdk.es143.js +30 -65
- package/dist/es/standards-sdk.es143.js.map +1 -1
- package/dist/es/standards-sdk.es144.js +34 -28
- package/dist/es/standards-sdk.es144.js.map +1 -1
- package/dist/es/standards-sdk.es145.js +28 -138
- package/dist/es/standards-sdk.es145.js.map +1 -1
- package/dist/es/standards-sdk.es146.js +133 -37
- package/dist/es/standards-sdk.es146.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +34 -12281
- package/dist/es/standards-sdk.es147.js.map +1 -1
- package/dist/es/standards-sdk.es148.js +12284 -12
- package/dist/es/standards-sdk.es148.js.map +1 -1
- package/dist/es/standards-sdk.es149.js +958 -56
- package/dist/es/standards-sdk.es149.js.map +1 -1
- 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 +48 -74
- package/dist/es/standards-sdk.es150.js.map +1 -1
- package/dist/es/standards-sdk.es151.js +72 -160
- package/dist/es/standards-sdk.es151.js.map +1 -1
- package/dist/es/standards-sdk.es152.js +13 -318
- package/dist/es/standards-sdk.es152.js.map +1 -1
- package/dist/es/standards-sdk.es153.js +120 -294
- package/dist/es/standards-sdk.es153.js.map +1 -1
- package/dist/es/standards-sdk.es154.js +191 -322
- package/dist/es/standards-sdk.es154.js.map +1 -1
- package/dist/es/standards-sdk.es155.js +294 -279
- package/dist/es/standards-sdk.es155.js.map +1 -1
- package/dist/es/standards-sdk.es156.js +440 -63
- package/dist/es/standards-sdk.es156.js.map +1 -1
- package/dist/es/standards-sdk.es157.js +331 -871
- package/dist/es/standards-sdk.es157.js.map +1 -1
- package/dist/es/standards-sdk.es158.js +68 -231
- package/dist/es/standards-sdk.es158.js.map +1 -1
- package/dist/es/standards-sdk.es159.js +218 -223
- package/dist/es/standards-sdk.es159.js.map +1 -1
- 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 -944
- 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 +817 -2071
- 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 -1091
- 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 -902
- 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 +273 -195
- 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 -200
- 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 -370
- 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 +8 -7
- 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.es3.js","sources":["../../src/hcs-3/src/index.ts"],"sourcesContent":["import {\n HCSSDK,\n LoadQueueItem,\n HCSConfigMapping,\n HCSConfig,\n LoadType,\n} from './types';\nimport { Logger, ILogger } from '../../utils/logger';\nimport { sleep } from '../../utils/sleep';\n\nexport class HCS implements HCSSDK {\n config: HCSConfig;\n configMapping: HCSConfigMapping;\n LoadedScripts: Record<string, string>;\n LoadedWasm: Record<string, WebAssembly.Instance>;\n LoadedImages: Record<string, string>;\n LoadedVideos: Record<string, string>;\n LoadedAudios: Record<string, HTMLAudioElement>;\n LoadedAudioUrls: Record<string, string>;\n LoadedGLBs: Record<string, string>;\n scriptLoadedEvent: Event;\n loadQueue: LoadQueueItem[];\n isProcessingQueue: boolean;\n private modelViewerLoaded: boolean = false;\n private modelViewerLoading: Promise<void> | null = null;\n private logger: ILogger;\n\n constructor() {\n this.config = {\n cdnUrl: 'https://kiloscribe.com/api/inscription-cdn/',\n network: 'mainnet',\n retryAttempts: 3,\n retryBackoff: 300,\n debug: false,\n showLoadingIndicator: false,\n loadingCallbackName: null,\n };\n this.configMapping = {\n hcsCdnUrl: 'cdnUrl',\n hcsNetwork: 'network',\n hcsRetryAttempts: 'retryAttempts',\n hcsRetryBackoff: 'retryBackoff',\n hcsDebug: 'debug',\n hcsShowLoadingIndicator: 'showLoadingIndicator',\n hcsLoadingCallbackName: 'loadingCallbackName',\n };\n this.LoadedScripts = {};\n this.LoadedWasm = {};\n this.LoadedImages = {};\n this.LoadedVideos = {};\n this.LoadedAudios = {};\n this.LoadedAudioUrls = {};\n this.LoadedGLBs = {};\n this.scriptLoadedEvent = new Event('HCSScriptLoaded');\n this.loadQueue = [] as LoadQueueItem[];\n this.isProcessingQueue = false;\n\n try {\n this.logger = Logger.getInstance({\n module: 'HCS-3',\n level: this.config.debug ? 'debug' : 'error',\n });\n } catch (e) {\n this.logger = this.createFallbackLogger();\n }\n }\n\n private createFallbackLogger(): Logger {\n const fallbackLogger = {\n debug: (...args: any[]) =>\n this.config.debug && console.debug('[HCS-3]', ...args),\n info: (...args: any[]) =>\n this.config.debug && console.info('[HCS-3]', ...args),\n warn: (...args: any[]) => console.warn('[HCS-3]', ...args),\n error: (...args: any[]) => console.error('[HCS-3]', ...args),\n setLogLevel: (level: string) => {\n this.config.debug = level === 'debug';\n },\n } as unknown as Logger;\n\n return fallbackLogger;\n }\n\n log(...args: any[]): void {\n if (args.length === 0) {\n this.logger.debug('');\n } else if (args.length === 1) {\n this.logger.debug(String(args[0]));\n } else {\n const message = String(args[0]);\n const data = args.slice(1);\n this.logger.debug(message, data);\n }\n }\n\n error(...args: any[]): void {\n if (args.length === 0) {\n this.logger.error('');\n } else if (args.length === 1) {\n this.logger.error(String(args[0]));\n } else {\n const message = String(args[0]);\n const data = args.slice(1);\n this.logger.error(message, data);\n }\n }\n\n loadConfigFromHTML(): void {\n const configScript = document.querySelector(\n 'script[data-hcs-config]',\n ) as HTMLScriptElement | null;\n if (configScript) {\n Object.keys(this.configMapping).forEach(dataAttr => {\n if (configScript.dataset[dataAttr]) {\n const configKey =\n this.configMapping[dataAttr as keyof HCSConfigMapping];\n let value: any = configScript.dataset[dataAttr];\n\n if (value === 'true') value = true;\n if (value === 'false') value = false;\n if (!isNaN(Number(value)) && value !== '') value = Number(value);\n\n (this.config as any)[configKey] = value;\n }\n });\n\n this.logger.setLogLevel(this.config.debug ? 'debug' : 'error');\n }\n this.log('Loaded config:', this.config);\n }\n\n updateLoadingStatus(id: string, status: string): void {\n if (this.LoadedScripts[id] === 'loaded') {\n return;\n }\n if (this.config.showLoadingIndicator) {\n console.log('[HCS Loading] ' + id + ' : ' + status);\n }\n this.LoadedScripts[id] = status;\n if (\n this.config.loadingCallbackName &&\n typeof (window as any)[this.config.loadingCallbackName] === 'function'\n ) {\n const callback = (window as any)[this.config.loadingCallbackName];\n if (typeof callback === 'function') {\n callback(id, status);\n }\n }\n }\n\n async fetchWithRetry(\n url: string,\n retries: number = this.config.retryAttempts,\n backoff: number = this.config.retryBackoff,\n ): Promise<Response> {\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error('HTTP error! status: ' + response.status);\n }\n return response;\n } catch (error) {\n if (retries > 0) {\n this.log(\n 'Retrying fetch for ' + url + ' Attempts left: ' + (retries - 1),\n );\n await this.sleep(backoff);\n return this.fetchWithRetry(url, retries - 1, backoff * 2);\n }\n throw error;\n }\n }\n\n sleep(ms: number) {\n return sleep(ms);\n }\n\n isDuplicate(topicId: string): boolean {\n return !!this.LoadedScripts[topicId];\n }\n\n async retrieveHCS1Data(\n topicId: string,\n cdnUrl: string = this.config.cdnUrl,\n network: string = this.config.network,\n ): Promise<Blob> {\n const cleanNetwork = network.replace(/['\"]+/g, '');\n const response = await this.fetchWithRetry(\n cdnUrl + topicId + '?network=' + cleanNetwork,\n );\n return await response.blob();\n }\n\n async loadScript(scriptElement: HTMLElement): Promise<void> {\n const src = scriptElement.getAttribute('data-src');\n const scriptId = scriptElement.getAttribute('data-script-id');\n const topicId = src?.split('/').pop();\n const type = scriptElement.getAttribute('type');\n const isRequired = scriptElement.hasAttribute('data-required');\n const isModule = scriptElement.getAttribute('type') === 'module';\n\n if (this.isDuplicate(topicId || '')) {\n return;\n }\n\n this.updateLoadingStatus(scriptId!, 'loading');\n\n try {\n const cdnUrl =\n scriptElement.getAttribute('data-cdn-url') || this.config.cdnUrl;\n const network =\n scriptElement.getAttribute('data-network') || this.config.network;\n\n const blob = await this.retrieveHCS1Data(topicId!, cdnUrl, network);\n\n if (type === 'wasm') {\n const arrayBuffer = await blob.arrayBuffer();\n const wasmModule = await WebAssembly.compile(arrayBuffer);\n this.LoadedWasm[scriptId!] = await WebAssembly.instantiate(wasmModule, {\n env: {},\n ...(scriptElement.dataset as any),\n });\n this.updateLoadingStatus(scriptId!, 'loaded');\n window.dispatchEvent(this.scriptLoadedEvent);\n this.log('Loaded wasm: ' + scriptId);\n } else {\n const content = await blob.text();\n const script = document.createElement('script');\n script.textContent = content;\n script.className = 'hcs-inline-script';\n if (scriptId) {\n script.setAttribute('data-loaded-script-id', scriptId);\n }\n\n if (isModule) {\n script.type = 'module';\n const moduleBlob = new Blob([content], {\n type: 'application/javascript',\n });\n script.src = URL.createObjectURL(moduleBlob);\n }\n\n document.body.appendChild(script);\n\n this.updateLoadingStatus(scriptId!, 'loaded');\n window.dispatchEvent(this.scriptLoadedEvent);\n this.log('Loaded script: ' + scriptId);\n\n script.onerror = error => {\n this.error('Failed to load ' + type + ': ' + scriptId, error);\n this.updateLoadingStatus(scriptId!, 'failed');\n if (isRequired) {\n throw error;\n }\n };\n }\n } catch (error) {\n this.error('Failed to load ' + type + ': ' + scriptId, error);\n this.updateLoadingStatus(scriptId!, 'failed');\n if (isRequired) {\n throw error;\n }\n }\n }\n\n async loadModuleExports(scriptId: string): Promise<any> {\n const script = document.querySelector(\n 'script[data-loaded-script-id=\"' + scriptId + '\"]',\n );\n if (!script) {\n throw new Error('Module script with id ' + scriptId + ' not found');\n }\n const scriptSrc = script.getAttribute('src');\n if (!scriptSrc) {\n throw new Error('Module script ' + scriptId + ' has no src attribute');\n }\n\n try {\n const importModule = new Function('url', 'return import(url)');\n return await importModule(scriptSrc);\n } catch (error) {\n this.error('Failed to import module', error);\n throw error;\n }\n }\n\n async loadStylesheet(linkElement: HTMLElement): Promise<void> {\n const src = linkElement.getAttribute('data-src');\n const stylesheetId = linkElement.getAttribute('data-script-id');\n const topicId = src?.split('/').pop();\n const isRequired = linkElement.hasAttribute('data-required');\n if (this.isDuplicate(topicId || '')) {\n return;\n }\n\n this.updateLoadingStatus(stylesheetId!, 'loading');\n\n try {\n const cdnUrl =\n linkElement.getAttribute('data-cdn-url') || this.config.cdnUrl;\n const network =\n linkElement.getAttribute('data-network') || this.config.network;\n\n const blob = await this.retrieveHCS1Data(topicId!, cdnUrl, network);\n const cssContent = await blob.text();\n const style = document.createElement('style');\n style.textContent = cssContent;\n document.head.appendChild(style);\n\n this.updateLoadingStatus(stylesheetId!, 'loaded');\n window.dispatchEvent(this.scriptLoadedEvent);\n this.log('Loaded and inlined stylesheet: ' + stylesheetId);\n } catch (error) {\n this.error('Failed to load stylesheet: ' + stylesheetId, error);\n this.updateLoadingStatus(stylesheetId!, 'failed');\n if (isRequired) {\n throw error;\n }\n }\n }\n\n async loadImage(imageElement: HTMLElement): Promise<void> {\n const src = imageElement.getAttribute('data-src');\n const topicId = src?.split('/').pop();\n\n this.log('Loading image: ' + topicId);\n this.updateLoadingStatus('Image: ' + topicId!, 'loaded');\n\n try {\n const cdnUrl =\n imageElement.getAttribute('data-cdn-url') || this.config.cdnUrl;\n const network =\n imageElement.getAttribute('data-network') || this.config.network;\n\n const blob = await this.retrieveHCS1Data(topicId!, cdnUrl, network);\n const objectURL = URL.createObjectURL(blob);\n (imageElement as HTMLImageElement).src = objectURL;\n this.LoadedImages[topicId!] = objectURL;\n this.updateLoadingStatus('Image: ' + topicId!, 'loaded');\n this.log('Loaded image: ' + topicId);\n } catch (error) {\n this.error('Failed to load image: ' + topicId, error);\n this.updateLoadingStatus('Image: ' + topicId!, 'failed');\n }\n }\n\n async loadMedia(\n mediaElement: HTMLElement,\n mediaType: 'video' | 'audio',\n ): Promise<void> {\n const src = mediaElement.getAttribute('data-src');\n const topicId = src?.split('/').pop();\n\n this.log('Loading ' + mediaType + ': ' + topicId);\n this.updateLoadingStatus(mediaType + ': ' + topicId!, 'loading');\n\n try {\n const cdnUrl =\n mediaElement.getAttribute('data-cdn-url') || this.config.cdnUrl;\n const network =\n mediaElement.getAttribute('data-network') || this.config.network;\n\n const blob = await this.retrieveHCS1Data(topicId!, cdnUrl, network);\n const objectURL = URL.createObjectURL(blob);\n (mediaElement as HTMLMediaElement).src = objectURL;\n\n if (mediaType === 'video') {\n this.LoadedVideos[topicId!] = objectURL;\n } else {\n this.LoadedAudioUrls[topicId!] = objectURL;\n }\n\n this.updateLoadingStatus(mediaType + ': ' + topicId!, 'loaded');\n this.log('Loaded ' + mediaType + ': ' + topicId);\n } catch (error) {\n this.error('Failed to load ' + mediaType + ': ' + topicId, error);\n this.updateLoadingStatus(mediaType + ': ' + topicId!, 'failed');\n }\n }\n\n private async loadModelViewer(): Promise<void> {\n if (this.modelViewerLoading) return this.modelViewerLoading;\n if (this.modelViewerLoaded) return Promise.resolve();\n\n this.modelViewerLoading = new Promise<void>(resolve => {\n const modelViewerScript = document.createElement('script');\n modelViewerScript.setAttribute('data-src', 'hcs://1/0.0.7293044');\n modelViewerScript.setAttribute('data-script-id', 'model-viewer');\n modelViewerScript.setAttribute('type', 'module');\n\n window.addEventListener(\n 'HCSScriptLoaded',\n () => {\n this.modelViewerLoaded = true;\n resolve();\n },\n { once: true },\n );\n\n this.loadScript(modelViewerScript);\n });\n\n return this.modelViewerLoading;\n }\n\n async loadGLB(glbElement: HTMLElement): Promise<void> {\n await this.loadModelViewer();\n\n const src = glbElement.getAttribute('data-src');\n const topicId = src?.split('/').pop();\n\n this.log('Loading GLB: ' + topicId);\n this.updateLoadingStatus('GLB: ' + topicId!, 'loading');\n\n try {\n const cdnUrl =\n glbElement.getAttribute('data-cdn-url') || this.config.cdnUrl;\n const network =\n glbElement.getAttribute('data-network') || this.config.network;\n\n let modelViewer: HTMLElement;\n if (glbElement.tagName.toLowerCase() !== 'model-viewer') {\n modelViewer = document.createElement('model-viewer');\n Array.from(glbElement.attributes).forEach(attr => {\n modelViewer.setAttribute(attr.name, attr.value);\n });\n modelViewer.setAttribute('camera-controls', '');\n modelViewer.setAttribute('auto-rotate', '');\n modelViewer.setAttribute('ar', '');\n glbElement.parentNode?.replaceChild(modelViewer, glbElement);\n } else {\n modelViewer = glbElement;\n }\n\n const blob = await this.retrieveHCS1Data(topicId!, cdnUrl, network);\n const objectURL = URL.createObjectURL(blob);\n modelViewer.setAttribute('src', objectURL);\n this.LoadedGLBs[topicId!] = objectURL;\n\n this.updateLoadingStatus('GLB: ' + topicId!, 'loaded');\n this.log('Loaded GLB: ' + topicId);\n } catch (error) {\n this.error('Failed to load GLB: ' + topicId, error);\n this.updateLoadingStatus('GLB: ' + topicId!, 'failed');\n }\n }\n\n async loadResource(\n element: HTMLElement,\n type: LoadType,\n order: number,\n ): Promise<void> {\n return new Promise(resolve => {\n this.loadQueue.push({ element, type, order, resolve });\n this.processQueue();\n });\n }\n\n async processQueue(): Promise<void> {\n if (this.isProcessingQueue) return;\n this.isProcessingQueue = true;\n\n while (this.loadQueue.length > 0) {\n const item = this.loadQueue.shift()!;\n try {\n if (item.type === 'script') {\n await this.loadScript(item.element);\n } else if (item.type === 'image') {\n await this.loadImage(item.element);\n } else if (item.type === 'video' || item.type === 'audio') {\n await this.loadMedia(item.element, item.type as 'video' | 'audio');\n } else if (item.type === 'glb') {\n await this.loadGLB(item.element);\n } else if (item.type === 'css') {\n await this.loadStylesheet(item.element);\n }\n item.resolve();\n } catch (error) {\n this.error('Error processing queue item:', error);\n if (\n item.type === 'script' &&\n item.element.hasAttribute('data-required')\n ) {\n break;\n }\n }\n }\n\n this.isProcessingQueue = false;\n }\n\n private async replaceHCSInStyle(styleContent: string): Promise<string> {\n let newContent = styleContent;\n let startIndex = newContent.indexOf('hcs://');\n\n while (startIndex !== -1) {\n let endIndex = startIndex;\n while (\n endIndex < newContent.length &&\n ![\"'\", '\"', ' ', ')'].includes(newContent[endIndex])\n ) {\n endIndex++;\n }\n\n const hcsUrl = newContent.substring(startIndex, endIndex);\n const topicId = hcsUrl.split('/').pop()!;\n\n try {\n const cdnUrl = this.config.cdnUrl;\n const network = this.config.network;\n\n const blob = await this.retrieveHCS1Data(topicId, cdnUrl, network);\n const objectURL = URL.createObjectURL(blob);\n\n newContent =\n newContent.substring(0, startIndex) +\n objectURL +\n newContent.substring(endIndex);\n\n this.LoadedImages[topicId] = objectURL;\n this.log('Replaced CSS HCS URL: ' + hcsUrl + ' with ' + objectURL);\n } catch (error) {\n this.error('Failed to load CSS image: ' + topicId, error);\n }\n\n startIndex = newContent.indexOf('hcs://', startIndex + 1);\n }\n\n return newContent;\n }\n\n private async processInlineStyles(): Promise<void> {\n const elementsWithStyle = document.querySelectorAll('[style*=\"hcs://\"]');\n this.log(\n 'Found ' +\n elementsWithStyle.length +\n ' elements with HCS style references',\n );\n\n for (const element of Array.from(elementsWithStyle)) {\n const style = element.getAttribute('style');\n if (style) {\n this.log('Processing style: ' + style);\n const newStyle = await this.replaceHCSInStyle(style);\n if (style !== newStyle) {\n element.setAttribute('style', newStyle);\n this.log('Updated style to: ' + newStyle);\n }\n }\n }\n\n const styleTags = document.querySelectorAll('style');\n for (const styleTag of Array.from(styleTags)) {\n if (styleTag.textContent?.includes('hcs://')) {\n const newContent = await this.replaceHCSInStyle(styleTag.textContent);\n if (styleTag.textContent !== newContent) {\n styleTag.textContent = newContent;\n }\n }\n }\n }\n\n async init(): Promise<void> {\n this.loadConfigFromHTML();\n\n return new Promise(resolve => {\n const initializeObserver = async () => {\n const scriptElements = document.querySelectorAll(\n 'script[data-src^=\"hcs://\"]',\n );\n const imageElements = document.querySelectorAll(\n 'img[data-src^=\"hcs://\"], img[src^=\"hcs://\"]',\n );\n const videoElements = document.querySelectorAll(\n 'video[data-src^=\"hcs://\"], video[src^=\"hcs://\"]',\n );\n const audioElements = document.querySelectorAll(\n 'audio[data-src^=\"hcs://\"], audio[src^=\"hcs://\"]',\n );\n const glbElements = document.querySelectorAll(\n 'model-viewer[data-src^=\"hcs://\"]',\n );\n const cssElements = document.querySelectorAll(\n 'link[data-src^=\"hcs://\"]',\n );\n\n document.querySelectorAll('[src^=\"hcs://\"]').forEach(element => {\n const src = element.getAttribute('src');\n if (src) {\n element.setAttribute('data-src', src);\n element.removeAttribute('src');\n }\n });\n\n await this.processInlineStyles();\n\n const loadPromises: Promise<void>[] = [];\n\n [\n { elements: scriptElements, type: 'script' },\n { elements: imageElements, type: 'image' },\n { elements: videoElements, type: 'video' },\n { elements: audioElements, type: 'audio' },\n { elements: glbElements, type: 'glb' },\n { elements: cssElements, type: 'css' },\n ].forEach(({ elements, type }) => {\n elements.forEach(element => {\n const order =\n parseInt(element.getAttribute('data-load-order') || '') ||\n Infinity;\n loadPromises.push(\n this.loadResource(\n element as HTMLElement,\n type as LoadType,\n order,\n ),\n );\n });\n });\n\n await Promise.all(loadPromises);\n\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n mutation.addedNodes.forEach(node => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as HTMLElement;\n\n if (element.getAttribute('style')?.includes('hcs://')) {\n this.processInlineStyles();\n }\n\n if (\n element.tagName.toLowerCase() === 'style' &&\n element.textContent?.includes('hcs://')\n ) {\n this.processInlineStyles();\n }\n\n if (element.getAttribute('src')?.startsWith('hcs://')) {\n const src = element.getAttribute('src')!;\n element.setAttribute('data-src', src);\n element.removeAttribute('src');\n\n const tagName = element.tagName.toLowerCase();\n switch (tagName) {\n case 'img':\n this.loadResource(element, 'image', Infinity);\n break;\n case 'video':\n this.loadResource(element, 'video', Infinity);\n break;\n case 'audio':\n this.loadResource(element, 'audio', Infinity);\n break;\n case 'script':\n this.loadResource(element, 'script', Infinity);\n break;\n }\n }\n\n if (element.matches('script[data-src^=\"hcs://\"]')) {\n this.loadResource(element, 'script', Infinity);\n } else if (element.matches('img[data-src^=\"hcs://\"]')) {\n this.loadResource(element, 'image', Infinity);\n } else if (element.matches('video[data-src^=\"hcs://\"]')) {\n this.loadResource(element, 'video', Infinity);\n } else if (element.matches('audio[data-src^=\"hcs://\"]')) {\n this.loadResource(element, 'audio', Infinity);\n } else if (\n element.matches('model-viewer[data-src^=\"hcs://\"]')\n ) {\n this.loadResource(element, 'glb', Infinity);\n } else if (element.matches('link[data-src^=\"hcs://\"]')) {\n this.loadResource(element, 'css', Infinity);\n }\n\n const childrenWithHCS = element.querySelectorAll(\n '[data-src^=\"hcs://\"], [src^=\"hcs://\"]',\n );\n childrenWithHCS.forEach(child => {\n const childElement = child as HTMLElement;\n const tagName = childElement.tagName.toLowerCase();\n\n const src = childElement.getAttribute('src');\n if (src?.startsWith('hcs://')) {\n childElement.setAttribute('data-src', src);\n childElement.removeAttribute('src');\n }\n\n switch (tagName) {\n case 'script':\n this.loadResource(childElement, 'script', Infinity);\n break;\n case 'img':\n this.loadResource(childElement, 'image', Infinity);\n break;\n case 'video':\n this.loadResource(childElement, 'video', Infinity);\n break;\n case 'audio':\n this.loadResource(childElement, 'audio', Infinity);\n break;\n case 'model-viewer':\n this.loadResource(childElement, 'glb', Infinity);\n break;\n case 'link':\n this.loadResource(childElement, 'css', Infinity);\n break;\n }\n });\n }\n });\n\n if (mutation.type === 'attributes') {\n const element = mutation.target as HTMLElement;\n if (\n mutation.attributeName === 'style' &&\n element.getAttribute('style')?.includes('hcs://')\n ) {\n this.processInlineStyles();\n } else if (mutation.attributeName === 'src') {\n const src = element.getAttribute('src');\n if (src?.startsWith('hcs://')) {\n element.setAttribute('data-src', src);\n element.removeAttribute('src');\n const type = element.tagName.toLowerCase();\n if (['img', 'video', 'audio'].includes(type)) {\n this.loadResource(element, type as LoadType, Infinity);\n }\n }\n }\n }\n });\n });\n\n if (document.body) {\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['style', 'src', 'data-src'],\n });\n } else {\n document.addEventListener('DOMContentLoaded', () => {\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['style', 'src', 'data-src'],\n });\n });\n }\n\n resolve();\n };\n\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', initializeObserver);\n } else {\n initializeObserver();\n }\n });\n }\n\n async preloadImage(topicId: string): Promise<string> {\n this.log('Loading image:' + topicId);\n this.updateLoadingStatus('image: ' + topicId, 'loading');\n const blob = await this.retrieveHCS1Data(topicId);\n const objectURL = URL.createObjectURL(blob);\n this.LoadedImages[topicId!] = objectURL;\n this.updateLoadingStatus('image: ' + topicId, 'loaded');\n return objectURL;\n }\n\n async preloadAudio(topicId: string): Promise<string> {\n const audioElement = document.createElement('audio');\n audioElement.setAttribute('data-topic-id', topicId);\n audioElement.setAttribute('data-src', 'hcs://1/' + topicId);\n document.body.appendChild(audioElement);\n\n await this.loadMedia(audioElement, 'audio');\n\n const cachedAudio = document.querySelector(\n 'audio[data-topic-id=\"' + topicId + '\"]',\n ) as HTMLAudioElement;\n\n if (cachedAudio) {\n this.LoadedAudioUrls[topicId] = cachedAudio.src;\n } else {\n console.error('Failed to preload audio: ' + topicId);\n }\n return this.LoadedAudioUrls[topicId];\n }\n\n async playAudio(topicId: string, volume = 1.0) {\n const audioUrl = this.LoadedAudioUrls[topicId];\n\n if (audioUrl) {\n const audio = new Audio(audioUrl);\n audio.volume = volume;\n this.LoadedAudios[topicId] = audio;\n\n audio.play().catch(error => {\n console.error('Failed to play audio:', error);\n });\n\n audio.addEventListener('ended', () => {\n audio.remove();\n delete this.LoadedAudios[topicId];\n });\n } else {\n console.error('Audio not preloaded: ' + topicId);\n }\n }\n\n async pauseAudio(topicId: string) {\n const audioElement = document.querySelector(\n 'audio[data-topic-id=\"' + topicId + '\"]',\n ) as HTMLAudioElement;\n\n if (audioElement) {\n console.log('found element', audioElement);\n audioElement.pause();\n this.LoadedAudios[topicId]?.pause();\n } else {\n this.LoadedAudios[topicId]?.pause();\n }\n }\n\n async loadAndPlayAudio(topicId: string, autoplay = false, volume = 1.0) {\n let existingAudioElement = document.querySelector(\n 'audio[data-topic-id=\"' + topicId + '\"]',\n ) as HTMLAudioElement;\n\n if (existingAudioElement) {\n existingAudioElement.volume = volume;\n await existingAudioElement.play();\n } else {\n const audioElement = document.createElement('audio');\n audioElement.volume = volume;\n if (autoplay) {\n audioElement.setAttribute('autoplay', 'autoplay');\n }\n audioElement.setAttribute('data-topic-id', topicId);\n audioElement.setAttribute('data-src', 'hcs://1/' + topicId);\n\n document.body.appendChild(audioElement);\n\n await this.loadMedia(audioElement, 'audio');\n\n existingAudioElement = document.querySelector(\n 'audio[data-topic-id=\"' + topicId + '\"]',\n ) as HTMLAudioElement;\n if (!autoplay) {\n await existingAudioElement.play();\n }\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es3.js","sources":["../../src/hcs-6/types.ts"],"sourcesContent":["import { Logger, LogLevel } from '../utils/logger';\nimport { NetworkType } from '../utils/types';\nimport { TransactionReceipt, PrivateKey } from '@hashgraph/sdk';\nimport { z } from 'zod';\nimport { HCS2Operation, HCS2RegistryType } from '../hcs-2/types';\n\n/**\n * HCS-6 specific operation types (extends HCS-2 operations)\n * HCS-6 only supports 'register' operations for non-indexed topics\n */\nexport enum HCS6Operation {\n REGISTER = 'register',\n}\n\n/**\n * HCS-6 registry type (always non-indexed for dynamic hashinals)\n */\nexport enum HCS6RegistryType {\n NON_INDEXED = 1,\n}\n\n/**\n * Base HCS-6 message format (extends HCS-2 with HCS-6 specific constraints)\n */\nexport interface HCS6Message {\n p: 'hcs-6';\n op: HCS6Operation;\n t_id?: string;\n m?: string;\n}\n\n/**\n * Register operation message for HCS-6\n */\nexport interface HCS6RegisterMessage extends HCS6Message {\n op: HCS6Operation.REGISTER;\n t_id: string;\n}\n\n/**\n * Configuration for HCS-6 client\n */\nexport interface HCS6ClientConfig {\n network: NetworkType;\n logLevel?: LogLevel;\n silent?: boolean;\n mirrorNodeUrl?: string;\n logger?: Logger;\n}\n\n/**\n * Response from HCS-6 topic registration\n */\nexport interface HCS6TopicRegistrationResponse {\n success: boolean;\n topicId?: string;\n transactionId?: string;\n error?: string;\n}\n\n/**\n * Response from HCS-6 registry operation\n */\nexport interface HCS6RegistryOperationResponse {\n success: boolean;\n transactionId?: string;\n receipt?: TransactionReceipt;\n error?: string;\n sequenceNumber?: number;\n}\n\n/**\n * HCS-6 registry entry information\n */\nexport interface HCS6RegistryEntry {\n topicId: string;\n sequence: number;\n timestamp: string;\n payer: string;\n message: HCS6Message;\n consensus_timestamp: string;\n registry_type: HCS6RegistryType;\n}\n\n/**\n * HCS-6 topic registry information\n */\nexport interface HCS6TopicRegistry {\n topicId: string;\n registryType: HCS6RegistryType;\n ttl: number;\n entries: HCS6RegistryEntry[];\n latestEntry?: HCS6RegistryEntry;\n}\n\n/**\n * Options for creating a new HCS-6 registry (dynamic hashinal topic)\n */\nexport interface HCS6CreateRegistryOptions {\n ttl?: number;\n submitKey?: string | boolean | PrivateKey;\n}\n\n/**\n * Options for registering a dynamic hashinal update\n */\nexport interface HCS6RegisterEntryOptions {\n targetTopicId: string;\n memo?: string;\n}\n\n/**\n * Options for querying HCS-6 registry entries\n */\nexport interface HCS6QueryRegistryOptions {\n limit?: number;\n order?: 'asc' | 'desc';\n skip?: number;\n}\n\n/**\n * Options for creating a dynamic hashinal with inscription\n */\nexport interface HCS6CreateHashinalOptions {\n metadata: Record<string, unknown>;\n memo?: string;\n ttl?: number;\n inscriptionOptions?: Record<string, unknown>;\n registryTopicId?: string;\n submitKey?: string | PrivateKey;\n}\n\n/**\n * Options for the register method that combines createHashinal and registerEntry\n */\nexport interface HCS6RegisterOptions {\n metadata: Record<string, unknown>;\n data?: {\n base64?: string;\n url?: string;\n mimeType?: string;\n };\n memo?: string;\n ttl?: number;\n inscriptionOptions?: Record<string, unknown>;\n registryTopicId?: string;\n submitKey?: string | PrivateKey;\n}\n\n/**\n * Response from creating a dynamic hashinal\n */\nexport interface HCS6CreateHashinalResponse {\n success: boolean;\n registryTopicId?: string;\n inscriptionTopicId?: string;\n transactionId?: string;\n error?: string;\n}\n\n/**\n * Options for minting an HTS NFT that references an HCS-6 topic via HRL\n */\nexport interface HCS6MintOptions {\n tokenId: string;\n metadataTopicId?: string;\n supplyKey?: string | PrivateKey;\n memo?: string;\n}\n\n/**\n * Options for inscribing content then minting a HCS-6 Hashinal in one flow\n */\nexport interface HCS6InscribeAndMintOptions {\n tokenId: string;\n inscriptionInput:\n | {\n type: 'buffer';\n buffer: Buffer | ArrayBuffer;\n fileName: string;\n mimeType?: string;\n }\n | {\n type: 'url';\n url: string;\n };\n inscriptionOptions?: Record<string, unknown>;\n supplyKey?: string | PrivateKey;\n memo?: string;\n}\n\n/**\n * Response from minting an HTS NFT with HCS-6 HRL metadata\n */\nexport interface HCS6MintResponse {\n success: boolean;\n serialNumber?: number;\n transactionId?: string;\n metadata?: string;\n error?: string;\n}\n\n/**\n * Build an HRL for HCS-6 dynamic hashinals\n */\nexport function buildHcs6Hrl(topicId: string): string {\n return `hcs://6/${topicId}`;\n}\n\n/**\n * Zod schemas for HCS-6 message validation\n */\nexport const hcs6TopicIdSchema = z.string().regex(/^\\d+\\.\\d+\\.\\d+$/, {\n message: \"Topic ID must be in Hedera format (e.g., '0.0.123456')\",\n});\nexport const hcs6BaseMessageSchema = z.object({\n p: z.literal('hcs-6'),\n op: z.enum([HCS6Operation.REGISTER]),\n m: z.string().max(500, 'Memo must not exceed 500 characters').optional(),\n});\nexport const hcs6RegisterMessageSchema = hcs6BaseMessageSchema.extend({\n op: z.literal(HCS6Operation.REGISTER),\n t_id: hcs6TopicIdSchema,\n});\nexport const hcs6MessageSchema = z.discriminatedUnion('op', [\n hcs6RegisterMessageSchema,\n]);\n\n/**\n * Validation function for HCS-6 TTL\n * @param ttl The TTL value to validate\n * @returns True if valid, false otherwise\n */\nexport function validateHCS6TTL(ttl: number): boolean {\n return ttl >= 3600;\n}\n\n/**\n * Validation function for HCS-6 registry memo format\n * @param memo The topic memo to validate\n * @returns True if valid, false otherwise\n */\nexport function validateHCS6RegistryMemo(memo: string): boolean {\n const regex = /^hcs-6:(\\d):(\\d+)$/;\n const match = memo.match(regex);\n\n if (!match) {\n return false;\n }\n\n const registryType = parseInt(match[1]);\n const ttl = parseInt(match[2]);\n if (registryType !== HCS6RegistryType.NON_INDEXED) {\n return false;\n }\n return validateHCS6TTL(ttl);\n}\n\n/**\n * Generate HCS-6 registry memo format\n * @param ttl The time-to-live in seconds\n * @returns The memo string\n */\nexport function generateHCS6RegistryMemo(ttl: number): string {\n if (!validateHCS6TTL(ttl)) {\n throw new Error('TTL must be at least 3600 seconds (1 hour)');\n }\n return `hcs-6:1:${ttl}`;\n}\n"],"names":["HCS6Operation","HCS6RegistryType"],"mappings":";AAUO,IAAK,kCAAAA,mBAAL;AACLA,iBAAA,UAAA,IAAW;AADD,SAAAA;AAAA,GAAA,iBAAA,CAAA,CAAA;AAOL,IAAK,qCAAAC,sBAAL;AACLA,oBAAAA,kBAAA,iBAAc,CAAA,IAAd;AADU,SAAAA;AAAA,GAAA,oBAAA,CAAA,CAAA;AA4LL,SAAS,aAAa,SAAyB;AACpD,SAAO,WAAW,OAAO;AAC3B;AAKO,MAAM,oBAAoB,EAAE,SAAS,MAAM,mBAAmB;AAAA,EACnE,SAAS;AACX,CAAC;AACM,MAAM,wBAAwB,EAAE,OAAO;AAAA,EAC5C,GAAG,EAAE,QAAQ,OAAO;AAAA,EACpB,IAAI,EAAE,KAAK;AAAA,IAAC;AAAA;AAAA,GAAuB;AAAA,EACnC,GAAG,EAAE,OAAA,EAAS,IAAI,KAAK,qCAAqC,EAAE,SAAA;AAChE,CAAC;AACM,MAAM,4BAA4B,sBAAsB,OAAO;AAAA,EACpE,IAAI,EAAE;AAAA,IAAQ;AAAA;AAAA,EAAA;AAAA,EACd,MAAM;AACR,CAAC;AACM,MAAM,oBAAoB,EAAE,mBAAmB,MAAM;AAAA,EAC1D;AACF,CAAC;AAOM,SAAS,gBAAgB,KAAsB;AACpD,SAAO,OAAO;AAChB;AAOO,SAAS,yBAAyB,MAAuB;AAC9D,QAAM,QAAQ;AACd,QAAM,QAAQ,KAAK,MAAM,KAAK;AAE9B,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,SAAS,MAAM,CAAC,CAAC;AACtC,QAAM,MAAM,SAAS,MAAM,CAAC,CAAC;AAC7B,MAAI,iBAAiB,GAA8B;AACjD,WAAO;AAAA,EACT;AACA,SAAO,gBAAgB,GAAG;AAC5B;AAOO,SAAS,yBAAyB,KAAqB;AAC5D,MAAI,CAAC,gBAAgB,GAAG,GAAG;AACzB,UAAM,IAAI,MAAM,4CAA4C;AAAA,EAC9D;AACA,SAAO,WAAW,GAAG;AACvB;"}
|
|
@@ -1,10 +1,347 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { RegistryType } from "./standards-sdk.es29.js";
|
|
2
|
+
import { inscribe, inscribeWithSigner } from "./standards-sdk.es124.js";
|
|
3
|
+
import "./standards-sdk.es148.js";
|
|
4
|
+
class BaseRegistry {
|
|
5
|
+
constructor(networkType, logger, registryType, topicId, client) {
|
|
6
|
+
this.entries = /* @__PURE__ */ new Map();
|
|
7
|
+
this.networkType = networkType;
|
|
8
|
+
this.logger = logger;
|
|
9
|
+
this.registryType = registryType;
|
|
10
|
+
this.topicId = topicId;
|
|
11
|
+
this.client = client;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Retrieve an entry by ID
|
|
15
|
+
*/
|
|
16
|
+
async getEntry(id) {
|
|
17
|
+
const cached = this.entries.get(id);
|
|
18
|
+
if (cached) return cached;
|
|
19
|
+
if (this.topicId && this.client) {
|
|
20
|
+
await this.sync();
|
|
21
|
+
return this.entries.get(id) || null;
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get the latest entry from a specific topic ID (for non-indexed topics)
|
|
27
|
+
*/
|
|
28
|
+
async getLatestEntry(topicId) {
|
|
29
|
+
if (!this.client) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const messages = await this.client.mirrorNode.getTopicMessagesByFilter(
|
|
34
|
+
topicId,
|
|
35
|
+
{
|
|
36
|
+
order: "desc",
|
|
37
|
+
limit: 1
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
if (!messages || messages.length === 0) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const latestMessage = messages[0];
|
|
44
|
+
let data;
|
|
45
|
+
if (latestMessage.raw_content) {
|
|
46
|
+
data = JSON.parse(latestMessage.raw_content);
|
|
47
|
+
} else {
|
|
48
|
+
const msgAny = latestMessage;
|
|
49
|
+
if (msgAny.p === "hcs-12" && msgAny.op) {
|
|
50
|
+
data = {
|
|
51
|
+
p: msgAny.p,
|
|
52
|
+
op: msgAny.op,
|
|
53
|
+
name: msgAny.name,
|
|
54
|
+
version: msgAny.version,
|
|
55
|
+
description: msgAny.description,
|
|
56
|
+
permissions: msgAny.permissions,
|
|
57
|
+
metadata: msgAny.metadata,
|
|
58
|
+
data: msgAny.data,
|
|
59
|
+
category: msgAny.category,
|
|
60
|
+
source: msgAny.source,
|
|
61
|
+
inputs: msgAny.inputs,
|
|
62
|
+
outputs: msgAny.outputs,
|
|
63
|
+
tags: msgAny.tags,
|
|
64
|
+
fields: msgAny.fields,
|
|
65
|
+
styles: msgAny.styles,
|
|
66
|
+
actions: msgAny.actions,
|
|
67
|
+
blocks: msgAny.blocks,
|
|
68
|
+
refs: msgAny.refs
|
|
69
|
+
};
|
|
70
|
+
Object.keys(data).forEach((key) => {
|
|
71
|
+
if (data[key] === void 0) {
|
|
72
|
+
delete data[key];
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
} else {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
id: latestMessage.sequence_number.toString(),
|
|
81
|
+
sequenceNumber: latestMessage.sequence_number,
|
|
82
|
+
timestamp: latestMessage.consensus_timestamp || (/* @__PURE__ */ new Date()).toISOString(),
|
|
83
|
+
submitter: latestMessage.payer || "unknown",
|
|
84
|
+
data
|
|
85
|
+
};
|
|
86
|
+
} catch (error) {
|
|
87
|
+
this.logger.error("Failed to get latest entry", { topicId, error });
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* List all entries with optional filtering
|
|
93
|
+
*/
|
|
94
|
+
async listEntries(filter) {
|
|
95
|
+
if (this.topicId && this.client) {
|
|
96
|
+
await this.sync();
|
|
97
|
+
}
|
|
98
|
+
const entries = Array.from(this.entries.values());
|
|
99
|
+
if (!filter) return entries;
|
|
100
|
+
return entries.filter((entry) => {
|
|
101
|
+
if (filter.submitter && entry.submitter !== filter.submitter) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
if (filter.afterTimestamp && entry.timestamp < filter.afterTimestamp) {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
if (filter.beforeTimestamp && entry.timestamp > filter.beforeTimestamp) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
return true;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Sync entries from the network
|
|
115
|
+
*/
|
|
116
|
+
async sync() {
|
|
117
|
+
if (!this.topicId || !this.client) {
|
|
118
|
+
this.logger.warn("Cannot sync without topic ID and client");
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
this.logger.info("Syncing registry entries", {
|
|
122
|
+
topicId: this.topicId,
|
|
123
|
+
registryType: RegistryType[this.registryType],
|
|
124
|
+
lastSync: this.lastSyncTimestamp
|
|
125
|
+
});
|
|
126
|
+
try {
|
|
127
|
+
const messages = await this.client.mirrorNode.getTopicMessagesByFilter(
|
|
128
|
+
this.topicId,
|
|
129
|
+
{
|
|
130
|
+
startTime: this.lastSyncTimestamp,
|
|
131
|
+
order: "asc",
|
|
132
|
+
limit: 100
|
|
133
|
+
}
|
|
134
|
+
);
|
|
135
|
+
for (const msg of messages) {
|
|
136
|
+
try {
|
|
137
|
+
let data;
|
|
138
|
+
if (msg.raw_content) {
|
|
139
|
+
data = JSON.parse(msg.raw_content);
|
|
140
|
+
} else {
|
|
141
|
+
const msgAny = msg;
|
|
142
|
+
if (msgAny.p === "hcs-12" && msgAny.op) {
|
|
143
|
+
data = {
|
|
144
|
+
p: msgAny.p,
|
|
145
|
+
op: msgAny.op,
|
|
146
|
+
name: msgAny.name,
|
|
147
|
+
version: msgAny.version,
|
|
148
|
+
description: msgAny.description,
|
|
149
|
+
permissions: msgAny.permissions,
|
|
150
|
+
metadata: msgAny.metadata,
|
|
151
|
+
data: msgAny.data,
|
|
152
|
+
category: msgAny.category,
|
|
153
|
+
source: msgAny.source,
|
|
154
|
+
inputs: msgAny.inputs,
|
|
155
|
+
outputs: msgAny.outputs,
|
|
156
|
+
tags: msgAny.tags,
|
|
157
|
+
fields: msgAny.fields,
|
|
158
|
+
styles: msgAny.styles,
|
|
159
|
+
actions: msgAny.actions,
|
|
160
|
+
blocks: msgAny.blocks,
|
|
161
|
+
refs: msgAny.refs,
|
|
162
|
+
t_id: msgAny.t_id,
|
|
163
|
+
hash: msgAny.hash,
|
|
164
|
+
wasm_hash: msgAny.wasm_hash,
|
|
165
|
+
info_t_id: msgAny.info_t_id,
|
|
166
|
+
validation_rules: msgAny.validation_rules,
|
|
167
|
+
js_t_id: msgAny.js_t_id,
|
|
168
|
+
js_hash: msgAny.js_hash,
|
|
169
|
+
interface_version: msgAny.interface_version,
|
|
170
|
+
title: msgAny.title,
|
|
171
|
+
template: msgAny.template,
|
|
172
|
+
author: msgAny.author,
|
|
173
|
+
m: msgAny.m
|
|
174
|
+
};
|
|
175
|
+
Object.keys(data).forEach((key) => {
|
|
176
|
+
if (data[key] === void 0) {
|
|
177
|
+
delete data[key];
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
} else {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (data.p !== "hcs-12") {
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
const entry = {
|
|
188
|
+
id: msg.sequence_number.toString(),
|
|
189
|
+
sequenceNumber: msg.sequence_number,
|
|
190
|
+
timestamp: msg.consensus_timestamp || (/* @__PURE__ */ new Date()).toISOString(),
|
|
191
|
+
submitter: msg.payer || "unknown",
|
|
192
|
+
data
|
|
193
|
+
};
|
|
194
|
+
this.entries.set(entry.id, entry);
|
|
195
|
+
} catch (error) {
|
|
196
|
+
this.logger.warn("Failed to parse registry message", {
|
|
197
|
+
sequenceNumber: msg.sequence_number,
|
|
198
|
+
error
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (messages.length > 0) {
|
|
203
|
+
this.lastSyncTimestamp = messages[messages.length - 1].consensus_timestamp || (/* @__PURE__ */ new Date()).toISOString();
|
|
204
|
+
} else {
|
|
205
|
+
this.lastSyncTimestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
206
|
+
}
|
|
207
|
+
this.logger.info("Registry sync completed", {
|
|
208
|
+
topicId: this.topicId,
|
|
209
|
+
messageCount: messages.length,
|
|
210
|
+
lastSync: this.lastSyncTimestamp
|
|
211
|
+
});
|
|
212
|
+
} catch (error) {
|
|
213
|
+
this.logger.error("Failed to sync registry", { error });
|
|
214
|
+
throw error;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Get the registry topic memo format
|
|
219
|
+
*/
|
|
220
|
+
getTopicMemo() {
|
|
221
|
+
const indexed = 1;
|
|
222
|
+
const ttl = 60;
|
|
223
|
+
const type = this.registryType;
|
|
224
|
+
return `hcs-12:${indexed}:${ttl}:${type}`;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Create a new registry topic
|
|
228
|
+
*/
|
|
229
|
+
async createRegistryTopic() {
|
|
230
|
+
if (!this.client) {
|
|
231
|
+
throw new Error("Client required to create topic");
|
|
232
|
+
}
|
|
233
|
+
const topicId = await this.client.createRegistryTopic(this.registryType);
|
|
234
|
+
this.topicId = topicId;
|
|
235
|
+
return topicId;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get registry configuration
|
|
239
|
+
*/
|
|
240
|
+
getConfig() {
|
|
241
|
+
return {
|
|
242
|
+
type: this.registryType,
|
|
243
|
+
indexed: false,
|
|
244
|
+
ttl: 60,
|
|
245
|
+
topicId: this.topicId,
|
|
246
|
+
memo: this.getTopicMemo()
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Store large content via HCS-1 inscription
|
|
251
|
+
*/
|
|
252
|
+
async inscribeContent(content, mimeType, metadata) {
|
|
253
|
+
if (!this.client) {
|
|
254
|
+
throw new Error("Client required for inscription");
|
|
255
|
+
}
|
|
256
|
+
const buffer = typeof content === "string" ? Buffer.from(content) : content;
|
|
257
|
+
this.logger.info("Inscribing content via HCS-1", {
|
|
258
|
+
size: buffer.length,
|
|
259
|
+
mimeType,
|
|
260
|
+
registryType: RegistryType[this.registryType]
|
|
261
|
+
});
|
|
262
|
+
let response;
|
|
263
|
+
if ("getOperatorAccountId" in this.client) {
|
|
264
|
+
response = await inscribe(
|
|
265
|
+
{
|
|
266
|
+
type: "buffer",
|
|
267
|
+
buffer,
|
|
268
|
+
fileName: mimeType === "application/octet-stream" && metadata?.fileType === "wasm" ? `${metadata?.name || "content"}.wasm` : metadata?.name || "content",
|
|
269
|
+
mimeType
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
accountId: this.client.getOperatorAccountId(),
|
|
273
|
+
privateKey: this.client.getOperatorPrivateKey(),
|
|
274
|
+
network: this.networkType
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
mode: "file",
|
|
278
|
+
metadata,
|
|
279
|
+
waitForConfirmation: true
|
|
280
|
+
}
|
|
281
|
+
);
|
|
282
|
+
} else {
|
|
283
|
+
const { accountId, signer } = await this.client.getAccountAndSigner();
|
|
284
|
+
response = await inscribeWithSigner(
|
|
285
|
+
{
|
|
286
|
+
type: "buffer",
|
|
287
|
+
buffer,
|
|
288
|
+
fileName: mimeType === "application/octet-stream" && metadata?.fileType === "wasm" ? `${metadata?.name || "content"}.wasm` : metadata?.name || "content",
|
|
289
|
+
mimeType
|
|
290
|
+
},
|
|
291
|
+
signer,
|
|
292
|
+
{
|
|
293
|
+
mode: "file",
|
|
294
|
+
metadata,
|
|
295
|
+
waitForConfirmation: true
|
|
296
|
+
}
|
|
297
|
+
);
|
|
298
|
+
}
|
|
299
|
+
if (!response.confirmed) {
|
|
300
|
+
throw new Error("Failed to inscribe content");
|
|
301
|
+
}
|
|
302
|
+
const topicId = response.inscription.topic_id;
|
|
303
|
+
if (!topicId) {
|
|
304
|
+
throw new Error("No topic ID in inscription response");
|
|
305
|
+
}
|
|
306
|
+
this.logger.info("Content inscribed successfully", {
|
|
307
|
+
topicId
|
|
308
|
+
});
|
|
309
|
+
return topicId;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Validate common registration fields
|
|
313
|
+
*/
|
|
314
|
+
validateBaseRegistration(data) {
|
|
315
|
+
if (!data.p || data.p !== "hcs-12") {
|
|
316
|
+
throw new Error("Invalid protocol identifier");
|
|
317
|
+
}
|
|
318
|
+
if (!data.op || data.op !== "register") {
|
|
319
|
+
throw new Error("Invalid operation");
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Clear local cache
|
|
324
|
+
*/
|
|
325
|
+
clearCache() {
|
|
326
|
+
this.entries.clear();
|
|
327
|
+
this.lastSyncTimestamp = void 0;
|
|
328
|
+
this.logger.info("Registry cache cleared", {
|
|
329
|
+
registryType: RegistryType[this.registryType]
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Get registry statistics
|
|
334
|
+
*/
|
|
335
|
+
getStats() {
|
|
336
|
+
return {
|
|
337
|
+
entryCount: this.entries.size,
|
|
338
|
+
lastSync: this.lastSyncTimestamp,
|
|
339
|
+
topicId: this.topicId,
|
|
340
|
+
registryType: RegistryType[this.registryType]
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
}
|
|
7
344
|
export {
|
|
8
|
-
|
|
345
|
+
BaseRegistry
|
|
9
346
|
};
|
|
10
347
|
//# sourceMappingURL=standards-sdk.es30.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es30.js","sources":["../../src/hcs-12/types.ts"],"sourcesContent":["/**\n * HCS-12 HashLinks Type Definitions\n *\n * Complete type definitions for the HCS-12 standard including\n * WASM modules, UI blocks, assemblies, and registries.\n */\n\n/**\n * Core WASM module interface that all HashLink actions must implement\n */\nexport interface WasmInterface {\n /**\n * Returns module metadata in deterministic JSON format\n */\n INFO(): string;\n\n /**\n * Executes actions that modify state or submit transactions\n */\n POST(\n action: string,\n params: string,\n network: 'mainnet' | 'testnet',\n hashLinkMemo: string,\n ): Promise<string>;\n\n /**\n * Retrieves information without modifying state\n */\n GET(\n action: string,\n params: string,\n network: 'mainnet' | 'testnet',\n ): Promise<string>;\n}\n\n/**\n * Module metadata returned by the INFO method\n */\nexport interface ModuleInfo {\n name: string;\n version: string;\n hashlinks_version: string;\n creator: string;\n purpose: string;\n actions: ActionDefinition[];\n capabilities: Capability[];\n plugins: PluginDefinition[];\n}\n\n/**\n * Defines a single action within a module\n */\nexport interface ActionDefinition {\n name: string;\n description: string;\n inputs: ParameterDefinition[];\n outputs: ParameterDefinition[];\n required_capabilities: Capability[];\n}\n\n/**\n * Parameter definition for action inputs/outputs\n */\nexport interface ParameterDefinition {\n name: string;\n param_type:\n | 'string'\n | 'number'\n | 'boolean'\n | 'array'\n | 'object'\n | 'network'\n | 'address'\n | 'bigint';\n description: string;\n required: boolean;\n validation?: ValidationRule;\n}\n\n/**\n * Validation rules that map 1:1 with Zod API\n */\nexport interface ValidationRule {\n type?: string;\n required?: string[];\n properties?: Record<string, ValidationRule>;\n pattern?: string;\n minimum?: number;\n maximum?: number;\n\n regex?: string;\n min?: number;\n max?: number;\n length?: number;\n email?: boolean;\n url?: boolean;\n uuid?: boolean;\n cuid?: boolean;\n cuid2?: boolean;\n ulid?: boolean;\n datetime?: boolean;\n ip?: boolean;\n startsWith?: string;\n endsWith?: string;\n includes?: string;\n\n gt?: number;\n gte?: number;\n lt?: number;\n lte?: number;\n int?: boolean;\n positive?: boolean;\n nonnegative?: boolean;\n negative?: boolean;\n nonpositive?: boolean;\n multipleOf?: number;\n finite?: boolean;\n safe?: boolean;\n\n nonempty?: boolean;\n\n literal?: string | number | boolean;\n enum?: string[];\n nullable?: boolean;\n nullish?: boolean;\n optional?: boolean;\n\n element?: ParameterDefinition;\n shape?: Record<string, ParameterDefinition>;\n strict?: boolean;\n passthrough?: boolean;\n catchall?: ParameterDefinition;\n}\n\n/**\n * Plugin dependency definition\n */\nexport interface PluginDefinition {\n name: string;\n version: string;\n url: string;\n description: string;\n required: boolean;\n}\n\n/**\n * Capability system for permissions and resources\n */\nexport interface Capability {\n type: 'network' | 'transaction' | 'storage' | 'external_api';\n value:\n | NetworkCapability\n | TransactionCapability\n | StorageCapability\n | ExternalApiCapability;\n}\n\nexport interface NetworkCapability {\n networks: Array<'mainnet' | 'testnet'>;\n operations: Array<'query' | 'submit'>;\n}\n\nexport interface TransactionCapability {\n transaction_types: Array<\n 'token_transfer' | 'token_create' | 'token_mint' | 'contract_call'\n >;\n max_fee_hbar?: number;\n}\n\nexport interface StorageCapability {\n storage_types: Array<'hcs' | 'ipfs' | 'arweave'>;\n max_size_bytes?: number;\n}\n\nexport interface ExternalApiCapability {\n allowed_domains: string[];\n rate_limit?: number;\n}\n\n/**\n * WordPress Gutenberg block type definition\n */\nexport interface GutenbergBlockType {\n apiVersion: number;\n name: string;\n title: string;\n category: string;\n icon?: string | BlockIcon;\n description?: string;\n keywords?: string[];\n textdomain?: string;\n attributes: Record<string, AttributeDefinition>;\n provides?: Record<string, any>;\n usesContext?: string[];\n supports: BlockSupports;\n actions?: string[];\n parent?: string | string[];\n}\n\nexport interface BlockIcon {\n src: string;\n background?: string;\n foreground?: string;\n}\n\nexport interface AttributeDefinition {\n type: 'string' | 'number' | 'boolean' | 'array' | 'object';\n default?: any;\n enum?: string[];\n source?: string;\n}\n\nexport interface BlockAttribute {\n type: string;\n label?: string;\n help?: string;\n required?: boolean;\n default?: any;\n enum?: string[];\n source?: string;\n}\n\nexport interface BlockStyle {\n name: string;\n label: string;\n isDefault?: boolean;\n}\n\nexport type BlockCategory =\n | 'common'\n | 'formatting'\n | 'layout'\n | 'widgets'\n | 'embed'\n | 'interactive';\n\nexport interface BlockSupports {\n align?: boolean | string[];\n anchor?: boolean;\n customClassName?: boolean;\n html?: boolean;\n spacing?: {\n margin?: boolean;\n padding?: boolean;\n };\n [key: string]: any;\n}\n\nexport interface BlockSupport extends BlockSupports {}\n\nexport interface ExecutionResult {\n success: boolean;\n data?: any;\n error?: string;\n transactionId?: string;\n executionTime?: number;\n}\n\nexport interface HCS12ValidationError {\n field?: string;\n message: string;\n code?: string;\n}\n\n/**\n * Assembly action reference\n */\nexport interface AssemblyAction {\n t_id: string;\n alias: string;\n config?: any;\n data?: string;\n}\n\n/**\n * Assembly block reference\n */\nexport interface AssemblyBlock {\n block_t_id: string;\n actions?: Record<string, string>;\n attributes?: Record<string, any>;\n children?: string[];\n data?: string;\n}\n\n/**\n * Assembly dependency\n */\nexport interface AssemblyDependency {\n name: string;\n version: string;\n registry?: string;\n}\n\n/**\n * HashLinks directory registration\n */\nexport interface HashLinksRegistration {\n p: 'hcs-12';\n op: 'register';\n t_id: string;\n name: string;\n description?: string;\n tags?: string[];\n category?: string;\n featured?: boolean;\n icon?: string;\n author?: string;\n website?: string;\n}\n\n/**\n * Assembly operations\n */\nexport type AssemblyOperation =\n | 'register'\n | 'add-action'\n | 'add-block'\n | 'update';\n\n/**\n * Base assembly message\n */\nexport interface AssemblyMessage {\n p: 'hcs-12';\n op: AssemblyOperation;\n}\n\n/**\n * Assembly registration message\n */\nexport interface AssemblyRegistration extends AssemblyMessage {\n op: 'register';\n name: string;\n version: string;\n description?: string;\n tags?: string[];\n author?: string;\n}\n\n/**\n * Add action to assembly\n */\nexport interface AssemblyAddAction extends AssemblyMessage {\n op: 'add-action';\n t_id: string;\n alias: string;\n config?: any;\n data?: string;\n}\n\n/**\n * Add block to assembly\n */\nexport interface AssemblyAddBlock extends AssemblyMessage {\n op: 'add-block';\n block_t_id: string;\n actions?: Record<string, string>;\n attributes?: Record<string, any>;\n children?: string[];\n data?: string;\n}\n\n/**\n * Update assembly metadata\n */\nexport interface AssemblyUpdate extends AssemblyMessage {\n op: 'update';\n description?: string;\n tags?: string[];\n}\n\n/**\n * Complete assembly state (built from operations)\n */\nexport interface AssemblyState {\n topicId: string;\n name: string;\n version: string;\n description?: string;\n tags?: string[];\n author?: string;\n\n actions: AssemblyAction[];\n blocks: AssemblyBlock[];\n\n created: string;\n updated: string;\n}\n\n/**\n * Registry message types\n */\nexport interface ActionRegistration {\n p: 'hcs-12';\n op: 'register';\n t_id: string;\n hash: string;\n wasm_hash: string;\n js_t_id?: string;\n js_hash?: string;\n interface_version?: string;\n info_t_id?: string;\n source_verification?: SourceVerification;\n previous_version?: string;\n migration_notes?: string;\n validation_rules?: Record<string, ValidationRule>;\n m?: string;\n}\n\nexport interface BlockDefinition {\n apiVersion: number;\n name: string;\n title: string;\n category: string;\n template_t_id: string;\n icon?: string | BlockIcon;\n description?: string;\n keywords?: string[];\n textdomain?: string;\n attributes: Record<string, AttributeDefinition>;\n provides?: Record<string, any>;\n usesContext?: string[];\n supports: BlockSupports;\n parent?: string | string[];\n}\n\nexport interface AssemblyRegistration {\n p: 'hcs-12';\n op: 'register';\n t_id?: string;\n name: string;\n version: string;\n title?: string;\n category?: string;\n description?: string;\n tags?: string[];\n author?: string;\n license?: string;\n icon?: string;\n keywords?: string[];\n dependencies?: AssemblyDependency[];\n workflow?: AssemblyWorkflowStep[];\n\n actions?: AssemblyAction[];\n\n blocks?: AssemblyBlock[];\n\n layout?: {\n type: 'vertical' | 'horizontal' | 'grid';\n responsive?: boolean;\n containerClass?: string;\n };\n\n source_verification?: {\n source_t_id: string;\n source_hash: string;\n description?: string;\n };\n m?: string;\n}\n\nexport interface AssemblyWorkflowStep {\n id: string;\n type: 'action' | 'block' | 'condition';\n action?: {\n id?: string;\n registryId?: string;\n hash?: string;\n };\n block?: {\n id?: string;\n registryId?: string;\n version?: string;\n name?: string;\n };\n next?: string[];\n}\n\n/**\n * Source verification for transparency\n */\nexport interface SourceVerification {\n source_t_id: string;\n source_hash: string;\n compiler_version: string;\n cargo_version: string;\n target: string;\n profile: string;\n build_flags: string[];\n lockfile_hash: string;\n source_structure: SourceStructure;\n}\n\nexport interface SourceStructure {\n format: 'tar.gz' | 'zip' | 'car';\n root_manifest: string;\n includes_lockfile: boolean;\n workspace_members?: string[];\n}\n\n/**\n * HCS-10 Integration types\n */\nexport interface HashLinkReference {\n parseFromMessage(data: string): string | null;\n formatHashLinkUrl(assemblyId: string): string;\n}\n\n/**\n * Registry types enum\n */\nexport enum RegistryType {\n ACTION = 0,\n ASSEMBLY = 2,\n HASHLINKS = 3,\n}\n\n/**\n * Common registry entry interface\n */\nexport interface AssemblyRegistryEntry {\n id: string;\n sequenceNumber: number;\n timestamp: string;\n submitter: string;\n data: Record<string, any>;\n}\n\n/**\n * Registry configuration\n */\nexport interface RegistryConfig {\n type: RegistryType;\n indexed: boolean;\n ttl: number;\n topicId?: string;\n memo?: string;\n}\n\n/**\n * Security features for HashLinks\n */\nexport interface SecurityFeature {\n type: 'permission' | 'signature' | 'hash' | 'encryption';\n enabled: boolean;\n config?: any;\n}\n\n/**\n * Composition definition for assemblies\n */\nexport interface CompositionDefinition {\n actions: string[];\n blocks: string[];\n mappings: ActionMapping[];\n triggers?: EventTrigger[];\n}\n\n/**\n * Action to block parameter mapping\n */\nexport interface ActionMapping {\n actionId: string;\n blockId: string;\n parameterMappings: Record<string, string>;\n}\n\n/**\n * Event trigger configuration\n */\nexport interface EventTrigger {\n event: string;\n action: string;\n conditions?: Record<string, any>;\n}\n\n/**\n * Layout type for assembly composition\n */\nexport type LayoutType = 'vertical' | 'horizontal' | 'grid' | 'custom';\n\n/**\n * Registry definition\n */\nexport interface RegistryDefinition {\n name: string;\n type: 'action' | 'block' | 'assembly';\n topicId: string;\n config: RegistryConfig;\n}\n\n/**\n * Registry manager interface\n */\nexport interface RegistryManager<T> {\n register(item: T): Promise<string>;\n get(id: string): Promise<T | null>;\n list(filters?: any): Promise<T[]>;\n update(id: string, item: T): Promise<void>;\n}\n\n/**\n * Register payload for actions\n */\nexport interface RegisterPayload {\n action: ActionRegistration;\n topicId: string;\n}\n\n/**\n * Template payload for blocks\n */\nexport interface TemplatePayload {\n block: BlockDefinition;\n template: string;\n}\n\n/**\n * Pattern payload for blocks\n */\nexport interface PatternPayload {\n name: string;\n pattern: any;\n category?: string;\n}\n\n/**\n * Compose payload for assemblies\n */\nexport interface ComposePayload {\n assembly: AssemblyState;\n composition: CompositionDefinition;\n}\n\n/**\n * Full registry definition\n */\nexport interface FullRegistryDefinition extends RegistryDefinition {\n status: 'active' | 'deprecated' | 'disabled';\n created: Date;\n updated: Date;\n}\n"],"names":["RegistryType"],"mappings":"AAigBO,IAAK,iCAAAA,kBAAL;AACLA,gBAAAA,cAAA,YAAS,CAAA,IAAT;AACAA,gBAAAA,cAAA,cAAW,CAAA,IAAX;AACAA,gBAAAA,cAAA,eAAY,CAAA,IAAZ;AAHU,SAAAA;AAAA,GAAA,gBAAA,CAAA,CAAA;"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es30.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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"}
|