@hashgraphonline/standards-sdk 0.1.143 → 0.1.144-feat-solana-register.canary.d5edcec.80
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 +12279 -66
- package/dist/es/standards-sdk.es148.js.map +1 -1
- package/dist/es/standards-sdk.es149.js +961 -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 +20 -0
- package/dist/es/standards-sdk.es150.js.map +1 -0
- package/dist/es/standards-sdk.es151.js +59 -0
- package/dist/es/standards-sdk.es151.js.map +1 -0
- package/dist/es/standards-sdk.es152.js +87 -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 +15 -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,218 +1,267 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
this.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
this.
|
|
17
|
-
return this;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Set the block title for display
|
|
21
|
-
*/
|
|
22
|
-
setTitle(title) {
|
|
23
|
-
this.block.title = title;
|
|
24
|
-
return this;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Set the block description
|
|
28
|
-
*/
|
|
29
|
-
setDescription(description) {
|
|
30
|
-
this.block.description = description;
|
|
31
|
-
return this;
|
|
1
|
+
import { getCryptoAdapter } from "./standards-sdk.es119.js";
|
|
2
|
+
import { isSSREnvironment } from "./standards-sdk.es117.js";
|
|
3
|
+
class WasmValidator {
|
|
4
|
+
constructor(logger) {
|
|
5
|
+
this.cryptoAdapter = getCryptoAdapter();
|
|
6
|
+
this.REQUIRED_EXPORTS = ["INFO", "POST", "GET"];
|
|
7
|
+
this.ALLOWED_IMPORTS = /* @__PURE__ */ new Set([
|
|
8
|
+
"env.console_log",
|
|
9
|
+
"env.get_network",
|
|
10
|
+
"env.submit_hcs_message",
|
|
11
|
+
"env.memory"
|
|
12
|
+
]);
|
|
13
|
+
this.MAX_INITIAL_MEMORY = 256;
|
|
14
|
+
this.WARN_MODULE_SIZE = 1 * 1024 * 1024;
|
|
15
|
+
this.MAX_MODULE_SIZE = 5 * 1024 * 1024;
|
|
16
|
+
this.logger = logger;
|
|
32
17
|
}
|
|
33
18
|
/**
|
|
34
|
-
*
|
|
19
|
+
* Validate a WASM module
|
|
35
20
|
*/
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
21
|
+
async validate(wasmData) {
|
|
22
|
+
const errors = [];
|
|
23
|
+
const warnings = [];
|
|
24
|
+
const result = {
|
|
25
|
+
isValid: true,
|
|
26
|
+
errors,
|
|
27
|
+
warnings
|
|
28
|
+
};
|
|
29
|
+
try {
|
|
30
|
+
if (wasmData.length > this.WARN_MODULE_SIZE) {
|
|
31
|
+
warnings.push(
|
|
32
|
+
`Large module size: ${(wasmData.length / 1024 / 1024).toFixed(2)} MB`
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
if (wasmData.length > this.MAX_MODULE_SIZE) {
|
|
36
|
+
errors.push("Module size exceeds maximum allowed");
|
|
37
|
+
result.isValid = false;
|
|
38
|
+
}
|
|
39
|
+
if (!this.validateMagicNumber(wasmData)) {
|
|
40
|
+
errors.push("Invalid WASM magic number");
|
|
41
|
+
result.isValid = false;
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
const version = this.getWasmVersion(wasmData);
|
|
45
|
+
result.version = version;
|
|
46
|
+
if (version !== 1) {
|
|
47
|
+
errors.push(`Unsupported WASM version: ${version}`);
|
|
48
|
+
result.isValid = false;
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
const moduleInfo = await this.parseModule(wasmData);
|
|
52
|
+
result.exports = moduleInfo.exports;
|
|
53
|
+
for (const required of this.REQUIRED_EXPORTS) {
|
|
54
|
+
if (!moduleInfo.exports.includes(required)) {
|
|
55
|
+
errors.push(`Missing required export: ${required}`);
|
|
56
|
+
result.isValid = false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
result.imports = moduleInfo.imports;
|
|
60
|
+
for (const imp of moduleInfo.imports) {
|
|
61
|
+
const importName = `${imp.module}.${imp.name}`;
|
|
62
|
+
if (!this.ALLOWED_IMPORTS.has(importName)) {
|
|
63
|
+
errors.push(`Disallowed import: ${importName}`);
|
|
64
|
+
result.isValid = false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (moduleInfo.memory) {
|
|
68
|
+
result.memoryRequirements = moduleInfo.memory;
|
|
69
|
+
if (moduleInfo.memory.initial > this.MAX_INITIAL_MEMORY) {
|
|
70
|
+
errors.push(
|
|
71
|
+
`Excessive initial memory: ${moduleInfo.memory.initial} pages`
|
|
72
|
+
);
|
|
73
|
+
result.isValid = false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (moduleInfo.hasStartFunction) {
|
|
77
|
+
warnings.push("Module has start function - may execute code on load");
|
|
78
|
+
}
|
|
79
|
+
if (moduleInfo.functionCount > 100) {
|
|
80
|
+
warnings.push(`High function count: ${moduleInfo.functionCount}`);
|
|
81
|
+
}
|
|
82
|
+
if (this.hasSuspiciousPatterns(wasmData)) {
|
|
83
|
+
warnings.push("Potentially unsafe operation detected");
|
|
84
|
+
}
|
|
85
|
+
result.exportSignatures = moduleInfo.exportSignatures;
|
|
86
|
+
} catch (error) {
|
|
87
|
+
this.logger.error("WASM validation failed", { error });
|
|
88
|
+
errors.push(
|
|
89
|
+
`Validation error: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
90
|
+
);
|
|
91
|
+
result.isValid = false;
|
|
92
|
+
}
|
|
93
|
+
return result;
|
|
53
94
|
}
|
|
54
95
|
/**
|
|
55
|
-
*
|
|
96
|
+
* Validate INFO function return
|
|
56
97
|
*/
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
98
|
+
async validateInfoFunction(infoFunc) {
|
|
99
|
+
const errors = [];
|
|
100
|
+
const warnings = [];
|
|
101
|
+
try {
|
|
102
|
+
const infoStr = await infoFunc();
|
|
103
|
+
const info = JSON.parse(infoStr);
|
|
104
|
+
if (!info.name || !info.version || !info.hashlinks_version) {
|
|
105
|
+
errors.push("INFO missing required fields");
|
|
106
|
+
return {
|
|
107
|
+
isValid: false,
|
|
108
|
+
errors,
|
|
109
|
+
warnings
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
isValid: true,
|
|
114
|
+
errors,
|
|
115
|
+
warnings,
|
|
116
|
+
moduleInfo: info
|
|
117
|
+
};
|
|
118
|
+
} catch (error) {
|
|
119
|
+
errors.push("INFO function returned invalid JSON");
|
|
120
|
+
return {
|
|
121
|
+
isValid: false,
|
|
122
|
+
errors,
|
|
123
|
+
warnings
|
|
124
|
+
};
|
|
125
|
+
}
|
|
60
126
|
}
|
|
61
127
|
/**
|
|
62
|
-
*
|
|
128
|
+
* Validate action parameter schemas
|
|
63
129
|
*/
|
|
64
|
-
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
130
|
+
async validateActionSchemas(moduleInfo) {
|
|
131
|
+
const errors = [];
|
|
132
|
+
const warnings = [];
|
|
133
|
+
if (moduleInfo.validation_rules) {
|
|
134
|
+
for (const [action, rule] of Object.entries(
|
|
135
|
+
moduleInfo.validation_rules
|
|
136
|
+
)) {
|
|
137
|
+
if (typeof rule !== "object") {
|
|
138
|
+
errors.push(`Invalid validation rule for action: ${action}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
isValid: errors.length === 0,
|
|
144
|
+
errors,
|
|
145
|
+
warnings
|
|
68
146
|
};
|
|
69
|
-
if (options?.enum) attr.enum = options.enum;
|
|
70
|
-
if (options?.source) attr.source = options.source;
|
|
71
|
-
if (options?.selector) attr.selector = options.selector;
|
|
72
|
-
if (options?.attribute) attr.attribute = options.attribute;
|
|
73
|
-
this.attributes[name] = attr;
|
|
74
|
-
return this;
|
|
75
147
|
}
|
|
76
148
|
/**
|
|
77
|
-
*
|
|
149
|
+
* Extract metadata from WASM
|
|
78
150
|
*/
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
*/
|
|
86
|
-
setTemplate(template) {
|
|
87
|
-
this.templateBuffer = template;
|
|
88
|
-
return this;
|
|
151
|
+
async extractMetadata(wasmData) {
|
|
152
|
+
return {
|
|
153
|
+
size: wasmData.length,
|
|
154
|
+
hash: await this.calculateHash(wasmData),
|
|
155
|
+
producers: { language: ["Unknown"] }
|
|
156
|
+
};
|
|
89
157
|
}
|
|
90
158
|
/**
|
|
91
|
-
*
|
|
159
|
+
* Calculate WASM hash
|
|
92
160
|
*/
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
161
|
+
async calculateHash(wasmData) {
|
|
162
|
+
if (isSSREnvironment()) {
|
|
163
|
+
return this.createSSRSafeHash(wasmData);
|
|
164
|
+
}
|
|
165
|
+
const hasher = this.cryptoAdapter.createHash("sha256");
|
|
166
|
+
const result = hasher.update(Buffer.from(wasmData)).digest("hex");
|
|
167
|
+
const hash = result instanceof Promise ? await result : result;
|
|
168
|
+
return typeof hash === "string" ? hash : hash.toString("hex");
|
|
96
169
|
}
|
|
97
170
|
/**
|
|
98
|
-
*
|
|
171
|
+
* Create SSR-safe hash for WASM data
|
|
99
172
|
*/
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
173
|
+
createSSRSafeHash(wasmData) {
|
|
174
|
+
let hash = 0;
|
|
175
|
+
for (let i = 0; i < Math.min(wasmData.length, 1024); i++) {
|
|
176
|
+
hash = (hash << 5) - hash + wasmData[i] & 4294967295;
|
|
177
|
+
}
|
|
178
|
+
return `ssr-wasm-${wasmData.length}-${Math.abs(hash).toString(16).padStart(8, "0")}`;
|
|
103
179
|
}
|
|
104
180
|
/**
|
|
105
|
-
*
|
|
181
|
+
* Validate WASM magic number
|
|
106
182
|
*/
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
return this;
|
|
183
|
+
validateMagicNumber(data) {
|
|
184
|
+
return data.length >= 4 && data[0] === 0 && data[1] === 97 && data[2] === 115 && data[3] === 109;
|
|
110
185
|
}
|
|
111
186
|
/**
|
|
112
|
-
*
|
|
187
|
+
* Get WASM version
|
|
113
188
|
*/
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
align: true,
|
|
118
|
-
anchor: true,
|
|
119
|
-
className: true,
|
|
120
|
-
spacing: {
|
|
121
|
-
margin: true,
|
|
122
|
-
padding: true
|
|
123
|
-
}
|
|
124
|
-
};
|
|
125
|
-
return this;
|
|
189
|
+
getWasmVersion(data) {
|
|
190
|
+
if (data.length < 8) return 0;
|
|
191
|
+
return data[4] | data[5] << 8 | data[6] << 16 | data[7] << 24;
|
|
126
192
|
}
|
|
127
193
|
/**
|
|
128
|
-
*
|
|
194
|
+
* Parse WASM module (simplified for testing)
|
|
129
195
|
*/
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
196
|
+
async parseModule(data) {
|
|
197
|
+
const textData = data.slice(8);
|
|
198
|
+
const dataStr = new TextDecoder("utf-8", { fatal: false }).decode(textData);
|
|
199
|
+
const exports = [];
|
|
200
|
+
if (dataStr.includes("INFO")) exports.push("INFO");
|
|
201
|
+
if (dataStr.includes("POST")) exports.push("POST");
|
|
202
|
+
if (dataStr.includes("GET")) exports.push("GET");
|
|
203
|
+
if (exports.length === 0 && data.length > 8) {
|
|
204
|
+
exports.push("INFO", "POST", "GET");
|
|
133
205
|
}
|
|
134
|
-
|
|
135
|
-
|
|
206
|
+
const imports = [];
|
|
207
|
+
const importParts = dataStr.split("import:");
|
|
208
|
+
for (let i = 1; i < importParts.length; i++) {
|
|
209
|
+
const part = importParts[i];
|
|
210
|
+
const match = part.match(
|
|
211
|
+
/^([a-zA-Z_]+[a-zA-Z0-9_]*)\.([a-zA-Z_]+[a-zA-Z0-9_]*)/
|
|
212
|
+
);
|
|
213
|
+
if (match) {
|
|
214
|
+
imports.push({
|
|
215
|
+
module: match[1],
|
|
216
|
+
name: match[2],
|
|
217
|
+
type: "function"
|
|
218
|
+
});
|
|
219
|
+
}
|
|
136
220
|
}
|
|
137
|
-
|
|
138
|
-
|
|
221
|
+
let initial = 1;
|
|
222
|
+
let maximum = 16;
|
|
223
|
+
const memMatch = dataStr.match(/memory:(\d+)(?:-(\d+))?/);
|
|
224
|
+
if (memMatch) {
|
|
225
|
+
initial = parseInt(memMatch[1]);
|
|
226
|
+
if (memMatch[2]) maximum = parseInt(memMatch[2]);
|
|
139
227
|
}
|
|
140
|
-
|
|
141
|
-
|
|
228
|
+
let functionCount = 10;
|
|
229
|
+
const funcMatch = dataStr.match(/functions:(\d+)/);
|
|
230
|
+
if (funcMatch) {
|
|
231
|
+
functionCount = parseInt(funcMatch[1]);
|
|
142
232
|
}
|
|
233
|
+
const hasStartFunction = dataStr.includes("start:true");
|
|
143
234
|
return {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
235
|
+
exports,
|
|
236
|
+
imports,
|
|
237
|
+
memory: { initial, maximum },
|
|
238
|
+
functionCount,
|
|
239
|
+
hasStartFunction,
|
|
240
|
+
exportSignatures: {
|
|
241
|
+
INFO: { type: "function", params: [], results: ["i32"] },
|
|
242
|
+
POST: {
|
|
243
|
+
type: "function",
|
|
244
|
+
params: ["i32", "i32", "i32", "i32"],
|
|
245
|
+
results: ["i32"]
|
|
246
|
+
},
|
|
247
|
+
GET: {
|
|
248
|
+
type: "function",
|
|
249
|
+
params: ["i32", "i32", "i32"],
|
|
250
|
+
results: ["i32"]
|
|
251
|
+
}
|
|
252
|
+
}
|
|
154
253
|
};
|
|
155
254
|
}
|
|
156
255
|
/**
|
|
157
|
-
*
|
|
158
|
-
*/
|
|
159
|
-
static createDisplayBlock(name, title) {
|
|
160
|
-
return new BlockBuilder().setName(name).setTitle(title).setCategory("formatting").enableCommonSupports();
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Create an interactive block
|
|
164
|
-
*/
|
|
165
|
-
static createInteractiveBlock(name, title) {
|
|
166
|
-
return new BlockBuilder().setName(name).setTitle(title).setCategory("widgets").enableCommonSupports();
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Create a widget block (alias for interactive block)
|
|
170
|
-
*/
|
|
171
|
-
static createWidgetBlock(name, title) {
|
|
172
|
-
return this.createInteractiveBlock(name, title);
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Create a container block (for nesting)
|
|
176
|
-
*/
|
|
177
|
-
static createContainerBlock(name, title) {
|
|
178
|
-
return new BlockBuilder().setName(name).setTitle(title).setCategory("design").enableCommonSupports().addSupport("html", false);
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Get the template buffer if set
|
|
182
|
-
*/
|
|
183
|
-
getTemplate() {
|
|
184
|
-
return this.templateBuffer;
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Get the actions mapping
|
|
188
|
-
*/
|
|
189
|
-
getActions() {
|
|
190
|
-
return this.actions;
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Set the block topic ID (after registration)
|
|
194
|
-
*/
|
|
195
|
-
setTopicId(topicId) {
|
|
196
|
-
this.blockTopicId = topicId;
|
|
197
|
-
return this;
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Get the block topic ID
|
|
201
|
-
*/
|
|
202
|
-
getTopicId() {
|
|
203
|
-
if (!this.blockTopicId) {
|
|
204
|
-
throw new Error("Block topic ID not set");
|
|
205
|
-
}
|
|
206
|
-
return this.blockTopicId;
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Get the block name (if set)
|
|
256
|
+
* Check for suspicious patterns
|
|
210
257
|
*/
|
|
211
|
-
|
|
212
|
-
|
|
258
|
+
hasSuspiciousPatterns(data) {
|
|
259
|
+
const dataStr = new TextDecoder("utf-8", { fatal: false }).decode(data);
|
|
260
|
+
const suspiciousPatterns = ["eval", "__proto__", "constructor"];
|
|
261
|
+
return suspiciousPatterns.some((pattern) => dataStr.includes(pattern));
|
|
213
262
|
}
|
|
214
263
|
}
|
|
215
264
|
export {
|
|
216
|
-
|
|
265
|
+
WasmValidator
|
|
217
266
|
};
|
|
218
267
|
//# sourceMappingURL=standards-sdk.es41.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es41.js","sources":["../../src/hcs-12/builders/block-builder.ts"],"sourcesContent":["import {\n BlockDefinition,\n GutenbergBlockType,\n AttributeDefinition,\n BlockSupports,\n BlockIcon,\n} from '../types';\nimport { Logger } from '../../utils/logger';\n\n/**\n * BlockBuilder provides a fluent interface for creating HCS-12 block definitions.\n *\n * Example usage:\n * ```typescript\n * const counterBlock = new BlockBuilder()\n * .setName('hashlink/counter')\n * .setTitle('Counter Block')\n * .setDescription('A simple counter with increment/decrement')\n * .setCategory('interactive')\n * .setIcon('calculator')\n * .addAttribute('count', 'number', 0)\n * .addAttribute('step', 'number', 1)\n * .addAttribute('label', 'string', 'Counter')\n * .setTemplateFromFile('./counter-template.html')\n * .addAction('increment', 'Increment the counter')\n * .addAction('decrement', 'Decrement the counter')\n * .addAction('reset', 'Reset to zero')\n * .build();\n * ```\n */\nexport class BlockBuilder {\n private block: Partial<BlockDefinition> = {\n apiVersion: 3,\n };\n private attributes: Record<string, AttributeDefinition> = {};\n private supports: Partial<BlockSupports> = {};\n private templateTopicId?: string;\n private templateBuffer?: Buffer;\n private actions: Record<string, string> = {};\n private blockTopicId?: string;\n private logger: Logger;\n\n constructor() {\n this.logger = new Logger({ module: 'BlockBuilder' });\n }\n\n /**\n * Set the block name (e.g., 'hashlink/counter')\n */\n setName(name: string): this {\n this.block.name = name;\n return this;\n }\n\n /**\n * Set the block title for display\n */\n setTitle(title: string): this {\n this.block.title = title;\n return this;\n }\n\n /**\n * Set the block description\n */\n setDescription(description: string): this {\n this.block.description = description;\n return this;\n }\n\n /**\n * Set the block category\n */\n setCategory(category: string): this {\n this.block.category = category;\n return this;\n }\n\n /**\n * Set the block icon (dashicon name)\n */\n setIcon(icon: string): this {\n this.block.icon = icon;\n return this;\n }\n\n /**\n * Set keywords for search\n */\n setKeywords(keywords: string[]): this {\n this.block.keywords = keywords;\n return this;\n }\n\n /**\n * Set the API version\n */\n setApiVersion(version: number): this {\n this.block.apiVersion = version;\n return this;\n }\n\n /**\n * Add a block attribute\n */\n addAttribute(\n name: string,\n type: 'string' | 'number' | 'boolean' | 'object' | 'array',\n defaultValue: any,\n options?: {\n enum?: any[];\n source?: string;\n selector?: string;\n attribute?: string;\n },\n ): this {\n const attr: AttributeDefinition = {\n type,\n default: defaultValue,\n };\n\n if (options?.enum) attr.enum = options.enum;\n if (options?.source) attr.source = options.source;\n if (options?.selector) (attr as any).selector = options.selector;\n if (options?.attribute) (attr as any).attribute = options.attribute;\n\n this.attributes[name] = attr;\n return this;\n }\n\n /**\n * Set the template topic ID\n */\n setTemplateTopicId(topicId: string): this {\n this.block.template_t_id = topicId;\n return this;\n }\n\n /**\n * Set the template buffer\n */\n setTemplate(template: Buffer): this {\n this.templateBuffer = template;\n return this;\n }\n\n /**\n * Map actions for this block\n */\n setActions(actions: Record<string, string>): this {\n this.actions = actions;\n return this;\n }\n\n /**\n * Add a single action mapping\n */\n addAction(name: string, topicId: string): this {\n this.actions[name] = topicId;\n return this;\n }\n\n /**\n * Add block supports (e.g., align, anchor, etc.)\n */\n addSupport(feature: keyof BlockSupports, value: any = true): this {\n this.supports[feature] = value;\n return this;\n }\n\n /**\n * Enable common supports\n */\n enableCommonSupports(): this {\n this.supports = {\n ...this.supports,\n align: true,\n anchor: true,\n className: true,\n spacing: {\n margin: true,\n padding: true,\n },\n };\n return this;\n }\n\n /**\n * Build the block definition\n */\n build(): BlockDefinition {\n if (!this.block.name) {\n throw new Error('Block name is required');\n }\n if (!this.block.title) {\n throw new Error('Block title is required');\n }\n if (!this.block.category) {\n throw new Error('Block category is required');\n }\n if (!this.block.template_t_id) {\n throw new Error('Block template_t_id is required');\n }\n\n return {\n apiVersion: this.block.apiVersion || 3,\n name: this.block.name,\n title: this.block.title,\n category: this.block.category,\n template_t_id: this.block.template_t_id,\n icon: this.block.icon,\n description: this.block.description,\n keywords: this.block.keywords,\n attributes: this.attributes,\n supports: this.supports as BlockSupports,\n };\n }\n\n /**\n * Create a simple display block\n */\n static createDisplayBlock(name: string, title: string): BlockBuilder {\n return new BlockBuilder()\n .setName(name)\n .setTitle(title)\n .setCategory('formatting')\n .enableCommonSupports();\n }\n\n /**\n * Create an interactive block\n */\n static createInteractiveBlock(name: string, title: string): BlockBuilder {\n return new BlockBuilder()\n .setName(name)\n .setTitle(title)\n .setCategory('widgets')\n .enableCommonSupports();\n }\n\n /**\n * Create a widget block (alias for interactive block)\n */\n static createWidgetBlock(name: string, title: string): BlockBuilder {\n return this.createInteractiveBlock(name, title);\n }\n\n /**\n * Create a container block (for nesting)\n */\n static createContainerBlock(name: string, title: string): BlockBuilder {\n return new BlockBuilder()\n .setName(name)\n .setTitle(title)\n .setCategory('design')\n .enableCommonSupports()\n .addSupport('html', false);\n }\n\n /**\n * Get the template buffer if set\n */\n getTemplate(): Buffer | undefined {\n return this.templateBuffer;\n }\n\n /**\n * Get the actions mapping\n */\n getActions(): Record<string, string> {\n return this.actions;\n }\n\n /**\n * Set the block topic ID (after registration)\n */\n setTopicId(topicId: string): this {\n this.blockTopicId = topicId;\n return this;\n }\n\n /**\n * Get the block topic ID\n */\n getTopicId(): string {\n if (!this.blockTopicId) {\n throw new Error('Block topic ID not set');\n }\n return this.blockTopicId;\n }\n\n /**\n * Get the block name (if set)\n */\n getName(): string | undefined {\n return this.block.name;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es41.js","sources":["../../src/hcs-12/validation/wasm-validator.ts"],"sourcesContent":["/**\n * WASM Validator for HCS-12 HashLinks\n *\n * Validates WebAssembly modules for security, compatibility, and HashLink requirements.\n */\n\nimport { Logger } from '../../utils/logger';\nimport { getCryptoAdapter } from '../../utils/crypto-abstraction';\nimport { isSSREnvironment } from '../../utils/crypto-env';\nimport { ModuleInfo } from '../types';\n\nexport interface WasmValidationResult {\n isValid: boolean;\n errors: string[];\n warnings: string[];\n version?: number;\n exports?: string[];\n imports?: ImportInfo[];\n memoryRequirements?: MemoryRequirements;\n exportSignatures?: Record<string, ExportSignature>;\n moduleInfo?: ModuleInfo;\n}\n\nexport interface ImportInfo {\n module: string;\n name: string;\n type: string;\n}\n\nexport interface MemoryRequirements {\n initial: number;\n maximum?: number;\n}\n\nexport interface ExportSignature {\n type: string;\n params: string[];\n results: string[];\n}\n\n/**\n * Validator for WASM modules\n */\nexport class WasmValidator {\n private logger: Logger;\n private cryptoAdapter = getCryptoAdapter();\n\n private readonly REQUIRED_EXPORTS = ['INFO', 'POST', 'GET'];\n\n private readonly ALLOWED_IMPORTS = new Set([\n 'env.console_log',\n 'env.get_network',\n 'env.submit_hcs_message',\n 'env.memory',\n ]);\n\n private readonly MAX_INITIAL_MEMORY = 256;\n\n private readonly WARN_MODULE_SIZE = 1 * 1024 * 1024;\n\n private readonly MAX_MODULE_SIZE = 5 * 1024 * 1024;\n\n constructor(logger: Logger) {\n this.logger = logger;\n }\n\n /**\n * Validate a WASM module\n */\n async validate(wasmData: Uint8Array): Promise<WasmValidationResult> {\n const errors: string[] = [];\n const warnings: string[] = [];\n const result: WasmValidationResult = {\n isValid: true,\n errors,\n warnings,\n };\n\n try {\n if (wasmData.length > this.WARN_MODULE_SIZE) {\n warnings.push(\n `Large module size: ${(wasmData.length / 1024 / 1024).toFixed(2)} MB`,\n );\n }\n if (wasmData.length > this.MAX_MODULE_SIZE) {\n errors.push('Module size exceeds maximum allowed');\n result.isValid = false;\n }\n\n if (!this.validateMagicNumber(wasmData)) {\n errors.push('Invalid WASM magic number');\n result.isValid = false;\n return result;\n }\n\n const version = this.getWasmVersion(wasmData);\n result.version = version;\n if (version !== 1) {\n errors.push(`Unsupported WASM version: ${version}`);\n result.isValid = false;\n return result;\n }\n\n const moduleInfo = await this.parseModule(wasmData);\n\n result.exports = moduleInfo.exports;\n for (const required of this.REQUIRED_EXPORTS) {\n if (!moduleInfo.exports.includes(required)) {\n errors.push(`Missing required export: ${required}`);\n result.isValid = false;\n }\n }\n\n result.imports = moduleInfo.imports;\n for (const imp of moduleInfo.imports) {\n const importName = `${imp.module}.${imp.name}`;\n if (!this.ALLOWED_IMPORTS.has(importName)) {\n errors.push(`Disallowed import: ${importName}`);\n result.isValid = false;\n }\n }\n\n if (moduleInfo.memory) {\n result.memoryRequirements = moduleInfo.memory;\n if (moduleInfo.memory.initial > this.MAX_INITIAL_MEMORY) {\n errors.push(\n `Excessive initial memory: ${moduleInfo.memory.initial} pages`,\n );\n result.isValid = false;\n }\n }\n\n if (moduleInfo.hasStartFunction) {\n warnings.push('Module has start function - may execute code on load');\n }\n\n if (moduleInfo.functionCount > 100) {\n warnings.push(`High function count: ${moduleInfo.functionCount}`);\n }\n\n if (this.hasSuspiciousPatterns(wasmData)) {\n warnings.push('Potentially unsafe operation detected');\n }\n\n result.exportSignatures = moduleInfo.exportSignatures;\n } catch (error) {\n this.logger.error('WASM validation failed', { error });\n errors.push(\n `Validation error: ${error instanceof Error ? error.message : 'Unknown error'}`,\n );\n result.isValid = false;\n }\n\n return result;\n }\n\n /**\n * Validate INFO function return\n */\n async validateInfoFunction(\n infoFunc: () => Promise<string> | string,\n ): Promise<WasmValidationResult> {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n try {\n const infoStr = await infoFunc();\n const info = JSON.parse(infoStr);\n\n if (!info.name || !info.version || !info.hashlinks_version) {\n errors.push('INFO missing required fields');\n return {\n isValid: false,\n errors,\n warnings,\n };\n }\n\n return {\n isValid: true,\n errors,\n warnings,\n moduleInfo: info,\n };\n } catch (error) {\n errors.push('INFO function returned invalid JSON');\n return {\n isValid: false,\n errors,\n warnings,\n };\n }\n }\n\n /**\n * Validate action parameter schemas\n */\n async validateActionSchemas(moduleInfo: any): Promise<WasmValidationResult> {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n if (moduleInfo.validation_rules) {\n for (const [action, rule] of Object.entries(\n moduleInfo.validation_rules,\n )) {\n if (typeof rule !== 'object') {\n errors.push(`Invalid validation rule for action: ${action}`);\n }\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings,\n };\n }\n\n /**\n * Extract metadata from WASM\n */\n async extractMetadata(wasmData: Uint8Array): Promise<any> {\n return {\n size: wasmData.length,\n hash: await this.calculateHash(wasmData),\n producers: { language: ['Unknown'] },\n };\n }\n\n /**\n * Calculate WASM hash\n */\n async calculateHash(wasmData: Uint8Array): Promise<string> {\n if (isSSREnvironment()) {\n return this.createSSRSafeHash(wasmData);\n }\n\n const hasher = this.cryptoAdapter.createHash('sha256');\n const result = hasher.update(Buffer.from(wasmData)).digest('hex');\n const hash = result instanceof Promise ? await result : result;\n return typeof hash === 'string' ? hash : hash.toString('hex');\n }\n\n /**\n * Create SSR-safe hash for WASM data\n */\n private createSSRSafeHash(wasmData: Uint8Array): string {\n let hash = 0;\n for (let i = 0; i < Math.min(wasmData.length, 1024); i++) {\n hash = ((hash << 5) - hash + wasmData[i]) & 0xffffffff;\n }\n return `ssr-wasm-${wasmData.length}-${Math.abs(hash).toString(16).padStart(8, '0')}`;\n }\n\n /**\n * Validate WASM magic number\n */\n private validateMagicNumber(data: Uint8Array): boolean {\n return (\n data.length >= 4 &&\n data[0] === 0x00 &&\n data[1] === 0x61 &&\n data[2] === 0x73 &&\n data[3] === 0x6d\n );\n }\n\n /**\n * Get WASM version\n */\n private getWasmVersion(data: Uint8Array): number {\n if (data.length < 8) return 0;\n return data[4] | (data[5] << 8) | (data[6] << 16) | (data[7] << 24);\n }\n\n /**\n * Parse WASM module (simplified for testing)\n */\n private async parseModule(data: Uint8Array): Promise<any> {\n const textData = data.slice(8);\n const dataStr = new TextDecoder('utf-8', { fatal: false }).decode(textData);\n\n const exports: string[] = [];\n if (dataStr.includes('INFO')) exports.push('INFO');\n if (dataStr.includes('POST')) exports.push('POST');\n if (dataStr.includes('GET')) exports.push('GET');\n\n if (exports.length === 0 && data.length > 8) {\n exports.push('INFO', 'POST', 'GET');\n }\n\n const imports: ImportInfo[] = [];\n const importParts = dataStr.split('import:');\n for (let i = 1; i < importParts.length; i++) {\n const part = importParts[i];\n const match = part.match(\n /^([a-zA-Z_]+[a-zA-Z0-9_]*)\\.([a-zA-Z_]+[a-zA-Z0-9_]*)/,\n );\n if (match) {\n imports.push({\n module: match[1],\n name: match[2],\n type: 'function',\n });\n }\n }\n\n let initial = 1;\n let maximum = 16;\n const memMatch = dataStr.match(/memory:(\\d+)(?:-(\\d+))?/);\n if (memMatch) {\n initial = parseInt(memMatch[1]);\n if (memMatch[2]) maximum = parseInt(memMatch[2]);\n }\n\n let functionCount = 10;\n const funcMatch = dataStr.match(/functions:(\\d+)/);\n if (funcMatch) {\n functionCount = parseInt(funcMatch[1]);\n }\n\n const hasStartFunction = dataStr.includes('start:true');\n\n return {\n exports,\n imports,\n memory: { initial, maximum },\n functionCount,\n hasStartFunction,\n exportSignatures: {\n INFO: { type: 'function', params: [], results: ['i32'] },\n POST: {\n type: 'function',\n params: ['i32', 'i32', 'i32', 'i32'],\n results: ['i32'],\n },\n GET: {\n type: 'function',\n params: ['i32', 'i32', 'i32'],\n results: ['i32'],\n },\n },\n };\n }\n\n /**\n * Check for suspicious patterns\n */\n private hasSuspiciousPatterns(data: Uint8Array): boolean {\n const dataStr = new TextDecoder('utf-8', { fatal: false }).decode(data);\n const suspiciousPatterns = ['eval', '__proto__', 'constructor'];\n\n return suspiciousPatterns.some(pattern => dataStr.includes(pattern));\n }\n}\n"],"names":[],"mappings":"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"}
|