@ledgerhq/context-module 1.14.1 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/package.json +2 -2
- package/lib/cjs/src/DefaultContextModule.js +1 -1
- package/lib/cjs/src/DefaultContextModule.js.map +3 -3
- package/lib/cjs/src/di.js +1 -1
- package/lib/cjs/src/di.js.map +3 -3
- package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.js +1 -1
- package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.js.map +3 -3
- package/lib/cjs/src/gated-signing/data/GatedDescriptorDataSource.js +2 -0
- package/lib/cjs/src/gated-signing/data/GatedDescriptorDataSource.js.map +7 -0
- package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.js +2 -0
- package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.js.map +7 -0
- package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js +2 -0
- package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js.map +7 -0
- package/lib/cjs/src/gated-signing/data/dto/GatedDappsDto.js +2 -0
- package/lib/cjs/src/gated-signing/data/dto/GatedDappsDto.js.map +7 -0
- package/lib/cjs/src/gated-signing/di/gatedSigningModuleFactory.js +2 -0
- package/lib/cjs/src/gated-signing/di/gatedSigningModuleFactory.js.map +7 -0
- package/lib/cjs/src/gated-signing/di/gatedSigningTypes.js +2 -0
- package/lib/cjs/src/gated-signing/di/gatedSigningTypes.js.map +7 -0
- package/lib/cjs/src/gated-signing/domain/GatedSigningContextLoader.js +2 -0
- package/lib/cjs/src/gated-signing/domain/GatedSigningContextLoader.js.map +7 -0
- package/lib/cjs/src/gated-signing/domain/GatedSigningContextLoader.test.js +2 -0
- package/lib/cjs/src/gated-signing/domain/GatedSigningContextLoader.test.js.map +7 -0
- package/lib/cjs/src/gated-signing/domain/GatedSigningTypedDataContextLoader.js +2 -0
- package/lib/cjs/src/gated-signing/domain/GatedSigningTypedDataContextLoader.js.map +7 -0
- package/lib/cjs/src/gated-signing/domain/GatedSigningTypedDataContextLoader.test.js +2 -0
- package/lib/cjs/src/gated-signing/domain/GatedSigningTypedDataContextLoader.test.js.map +7 -0
- package/lib/cjs/src/index.js +1 -1
- package/lib/cjs/src/index.js.map +2 -2
- package/lib/cjs/src/pki/model/KeyId.js +1 -1
- package/lib/cjs/src/pki/model/KeyId.js.map +2 -2
- package/lib/cjs/src/pki/model/KeyUsage.js +1 -1
- package/lib/cjs/src/pki/model/KeyUsage.js.map +2 -2
- package/lib/cjs/src/shared/model/ClearSignContext.js +1 -1
- package/lib/cjs/src/shared/model/ClearSignContext.js.map +2 -2
- package/lib/cjs/src/shared/model/SolanaContextTypes.js +1 -1
- package/lib/cjs/src/shared/model/SolanaContextTypes.js.map +1 -1
- package/lib/cjs/src/shared/utils/KeyUsageMapper.js +1 -1
- package/lib/cjs/src/shared/utils/KeyUsageMapper.js.map +2 -2
- package/lib/cjs/src/shared/utils/KeyUsageMapper.test.js +1 -1
- package/lib/cjs/src/shared/utils/KeyUsageMapper.test.js.map +2 -2
- package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
- package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
- package/lib/cjs/src/solana/domain/solanaContextTypes.js.map +1 -1
- package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js +1 -1
- package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +3 -3
- package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +1 -1
- package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +3 -3
- package/lib/cjs/src/solanaLifi/data/SolanaLifiDataSource.js +1 -1
- package/lib/cjs/src/solanaLifi/data/SolanaLifiDataSource.js.map +1 -1
- package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js +1 -1
- package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +3 -3
- package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +1 -1
- package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +3 -3
- package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js +1 -1
- package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js.map +2 -2
- package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
- package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
- package/lib/cjs/src/typed-data/utils/getSchemaHash.js +2 -0
- package/lib/cjs/src/typed-data/utils/getSchemaHash.js.map +7 -0
- package/lib/cjs/src/typed-data/utils/getSchemaHash.test.js +2 -0
- package/lib/cjs/src/typed-data/utils/getSchemaHash.test.js.map +7 -0
- package/lib/esm/package.json +2 -2
- package/lib/esm/src/DefaultContextModule.js +1 -1
- package/lib/esm/src/DefaultContextModule.js.map +3 -3
- package/lib/esm/src/di.js +1 -1
- package/lib/esm/src/di.js.map +3 -3
- package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.js +1 -1
- package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.js.map +3 -3
- package/lib/esm/src/gated-signing/data/GatedDescriptorDataSource.js +1 -0
- package/lib/esm/src/gated-signing/data/GatedDescriptorDataSource.js.map +7 -0
- package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.js +2 -0
- package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.js.map +7 -0
- package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js +2 -0
- package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js.map +7 -0
- package/lib/esm/src/gated-signing/data/dto/GatedDappsDto.js +1 -0
- package/lib/esm/src/gated-signing/data/dto/GatedDappsDto.js.map +7 -0
- package/lib/esm/src/gated-signing/di/gatedSigningModuleFactory.js +2 -0
- package/lib/esm/src/gated-signing/di/gatedSigningModuleFactory.js.map +7 -0
- package/lib/esm/src/gated-signing/di/gatedSigningTypes.js +2 -0
- package/lib/esm/src/gated-signing/di/gatedSigningTypes.js.map +7 -0
- package/lib/esm/src/gated-signing/domain/GatedSigningContextLoader.js +2 -0
- package/lib/esm/src/gated-signing/domain/GatedSigningContextLoader.js.map +7 -0
- package/lib/esm/src/gated-signing/domain/GatedSigningContextLoader.test.js +2 -0
- package/lib/esm/src/gated-signing/domain/GatedSigningContextLoader.test.js.map +7 -0
- package/lib/esm/src/gated-signing/domain/GatedSigningTypedDataContextLoader.js +2 -0
- package/lib/esm/src/gated-signing/domain/GatedSigningTypedDataContextLoader.js.map +7 -0
- package/lib/esm/src/gated-signing/domain/GatedSigningTypedDataContextLoader.test.js +2 -0
- package/lib/esm/src/gated-signing/domain/GatedSigningTypedDataContextLoader.test.js.map +7 -0
- package/lib/esm/src/index.js +1 -1
- package/lib/esm/src/index.js.map +2 -2
- package/lib/esm/src/pki/model/KeyId.js +1 -1
- package/lib/esm/src/pki/model/KeyId.js.map +2 -2
- package/lib/esm/src/pki/model/KeyUsage.js +1 -1
- package/lib/esm/src/pki/model/KeyUsage.js.map +2 -2
- package/lib/esm/src/shared/model/ClearSignContext.js +1 -1
- package/lib/esm/src/shared/model/ClearSignContext.js.map +2 -2
- package/lib/esm/src/shared/model/SolanaContextTypes.js.map +1 -1
- package/lib/esm/src/shared/utils/KeyUsageMapper.js +1 -1
- package/lib/esm/src/shared/utils/KeyUsageMapper.js.map +2 -2
- package/lib/esm/src/shared/utils/KeyUsageMapper.test.js +1 -1
- package/lib/esm/src/shared/utils/KeyUsageMapper.test.js.map +2 -2
- package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
- package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
- package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js +1 -1
- package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +3 -3
- package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +1 -1
- package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +3 -3
- package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js +1 -1
- package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +3 -3
- package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +1 -1
- package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +3 -3
- package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js +1 -1
- package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js.map +2 -2
- package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
- package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
- package/lib/esm/src/typed-data/utils/getSchemaHash.js +2 -0
- package/lib/esm/src/typed-data/utils/getSchemaHash.js.map +7 -0
- package/lib/esm/src/typed-data/utils/getSchemaHash.test.js +2 -0
- package/lib/esm/src/typed-data/utils/getSchemaHash.test.js.map +7 -0
- package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
- package/lib/types/src/di.d.ts.map +1 -1
- package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.d.ts +2 -0
- package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.d.ts.map +1 -1
- package/lib/types/src/gated-signing/data/GatedDescriptorDataSource.d.ts +20 -0
- package/lib/types/src/gated-signing/data/GatedDescriptorDataSource.d.ts.map +1 -0
- package/lib/types/src/gated-signing/data/HttpGatedDescriptorDataSource.d.ts +13 -0
- package/lib/types/src/gated-signing/data/HttpGatedDescriptorDataSource.d.ts.map +1 -0
- package/lib/types/src/gated-signing/data/HttpGatedDescriptorDataSource.test.d.ts +2 -0
- package/lib/types/src/gated-signing/data/HttpGatedDescriptorDataSource.test.d.ts.map +1 -0
- package/lib/types/src/gated-signing/data/dto/GatedDappsDto.d.ts +15 -0
- package/lib/types/src/gated-signing/data/dto/GatedDappsDto.d.ts.map +1 -0
- package/lib/types/src/gated-signing/di/gatedSigningModuleFactory.d.ts +3 -0
- package/lib/types/src/gated-signing/di/gatedSigningModuleFactory.d.ts.map +1 -0
- package/lib/types/src/gated-signing/di/gatedSigningTypes.d.ts +6 -0
- package/lib/types/src/gated-signing/di/gatedSigningTypes.d.ts.map +1 -0
- package/lib/types/src/gated-signing/domain/GatedSigningContextLoader.d.ts +22 -0
- package/lib/types/src/gated-signing/domain/GatedSigningContextLoader.d.ts.map +1 -0
- package/lib/types/src/gated-signing/domain/GatedSigningContextLoader.test.d.ts +2 -0
- package/lib/types/src/gated-signing/domain/GatedSigningContextLoader.test.d.ts.map +1 -0
- package/lib/types/src/gated-signing/domain/GatedSigningTypedDataContextLoader.d.ts +27 -0
- package/lib/types/src/gated-signing/domain/GatedSigningTypedDataContextLoader.d.ts.map +1 -0
- package/lib/types/src/gated-signing/domain/GatedSigningTypedDataContextLoader.test.d.ts +2 -0
- package/lib/types/src/gated-signing/domain/GatedSigningTypedDataContextLoader.test.d.ts.map +1 -0
- package/lib/types/src/index.d.ts +5 -0
- package/lib/types/src/index.d.ts.map +1 -1
- package/lib/types/src/pki/model/KeyId.d.ts +3 -1
- package/lib/types/src/pki/model/KeyId.d.ts.map +1 -1
- package/lib/types/src/pki/model/KeyUsage.d.ts +3 -1
- package/lib/types/src/pki/model/KeyUsage.d.ts.map +1 -1
- package/lib/types/src/shared/model/ClearSignContext.d.ts +2 -1
- package/lib/types/src/shared/model/ClearSignContext.d.ts.map +1 -1
- package/lib/types/src/shared/model/SolanaContextTypes.d.ts +33 -3
- package/lib/types/src/shared/model/SolanaContextTypes.d.ts.map +1 -1
- package/lib/types/src/shared/utils/KeyUsageMapper.d.ts.map +1 -1
- package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts +4 -1
- package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts.map +1 -1
- package/lib/types/src/solana/domain/solanaContextTypes.d.ts +2 -2
- package/lib/types/src/solana/domain/solanaContextTypes.d.ts.map +1 -1
- package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts +3 -1
- package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts.map +1 -1
- package/lib/types/src/solanaLifi/data/SolanaLifiDataSource.d.ts +2 -5
- package/lib/types/src/solanaLifi/data/SolanaLifiDataSource.d.ts.map +1 -1
- package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts +10 -8
- package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts.map +1 -1
- package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts +4 -9
- package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts.map +1 -1
- package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts +0 -1
- package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts.map +1 -1
- package/lib/types/src/typed-data/utils/getSchemaHash.d.ts +12 -0
- package/lib/types/src/typed-data/utils/getSchemaHash.d.ts.map +1 -0
- package/lib/types/src/typed-data/utils/getSchemaHash.test.d.ts +2 -0
- package/lib/types/src/typed-data/utils/getSchemaHash.test.d.ts.map +1 -0
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +5 -5
package/lib/cjs/package.json
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"license": "Apache-2.0",
|
|
36
36
|
"name": "@ledgerhq/context-module",
|
|
37
37
|
"peerDependencies": {
|
|
38
|
-
"@ledgerhq/device-management-kit": "
|
|
38
|
+
"@ledgerhq/device-management-kit": "workspace:^"
|
|
39
39
|
},
|
|
40
40
|
"private": false,
|
|
41
41
|
"repository": {
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"watch:builds": "pnpm ldmk-tool watch --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
|
|
59
59
|
"watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
|
|
60
60
|
},
|
|
61
|
-
"version": "1.
|
|
61
|
+
"version": "1.15.0"
|
|
62
62
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var s=Object.defineProperty;var
|
|
1
|
+
"use strict";var s=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var F=Object.prototype.hasOwnProperty;var k=(a,t)=>{for(var e in t)s(a,e,{get:t[e],enumerable:!0})},w=(a,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of S(t))!F.call(a,o)&&o!==e&&s(a,o,{get:()=>t[o],enumerable:!(r=D(t,o))||r.enumerable});return a};var v=a=>w(s({},"__esModule",{value:!0}),a);var P={};k(P,{DefaultContextModule:()=>R});module.exports=v(P);var L=require("purify-ts"),y=require("./calldata/di/calldataTypes"),c=require("./dynamic-network/di/dynamicNetworkTypes"),l=require("./trusted-name/di/trustedNameTypes"),f=require("./external-plugin/di/externalPluginTypes"),p=require("./gated-signing/di/gatedSigningTypes"),C=require("./nft/di/nftTypes"),u=require("./proxy/di/proxyTypes"),g=require("./safe/di/safeTypes"),n=require("./shared/model/ClearSignContext"),T=require("./solana/di/solanaContextTypes"),x=require("./token/di/tokenTypes"),m=require("./transaction-check/di/transactionCheckTypes"),_=require("./typed-data/di/typedDataTypes"),h=require("./di");class R{_container;_loaders;_typedDataLoader;_solanaLoader;_fieldLoaders;constructor(t){this._container=(0,h.makeContainer)({config:t}),this._loaders=t.defaultLoaders?this._getDefaultLoaders():[],this._loaders.push(...t.customLoaders),this._fieldLoaders=t.defaultFieldLoaders?this._getDefaultFieldLoaders():[],this._fieldLoaders.push(...t.customFieldLoaders),this._typedDataLoader=t.customTypedDataLoader??this._getDefaultTypedDataLoader(),this._solanaLoader=t.customSolanaLoader??this._getSolanaLoader()}_getDefaultFieldLoaders(){return[this._container.get(C.nftTypes.NftContextFieldLoader),this._container.get(x.tokenTypes.TokenContextFieldLoader),this._container.get(l.trustedNameTypes.TrustedNameContextFieldLoader),this._container.get(u.proxyTypes.ProxyContextFieldLoader)]}_getDefaultLoaders(){return[this._container.get(f.externalPluginTypes.ExternalPluginContextLoader),this._container.get(l.trustedNameTypes.TrustedNameContextLoader),this._container.get(C.nftTypes.NftContextLoader),this._container.get(x.tokenTypes.TokenContextLoader),this._container.get(y.calldataTypes.CalldataContextLoader),this._container.get(c.dynamicNetworkTypes.DynamicNetworkContextLoader),this._container.get(g.safeTypes.SafeAddressLoader),this._container.get(p.gatedSigningTypes.GatedSigningContextLoader),this._container.get(p.gatedSigningTypes.GatedSigningTypedDataContextLoader),this._container.get(m.transactionCheckTypes.TransactionCheckContextLoader),this._container.get(m.transactionCheckTypes.TypedDataCheckContextLoader)]}_getDefaultTypedDataLoader(){return this._container.get(_.typedDataTypes.TypedDataContextLoader)}_getSolanaLoader(){try{return this._container.get(T.solanaContextTypes.SolanaContextLoader)}catch{return{load:async t=>(0,L.Left)(new Error("[ContextModule] - DefaultContextModule: no SolanaContextLoader bound"))}}}async getContexts(t,e){const r=Object.values(n.ClearSignContextType),d=this._loaders.filter(i=>i.canHandle(t,e??r)).map(i=>i.load(t));return(await Promise.all(d)).flat()}async getFieldContext(t,e){const r=this._fieldLoaders.filter(o=>o.canHandle(t,e));if(r.length===0)return Promise.resolve({type:n.ClearSignContextType.ERROR,error:new Error(`Loader not found for field: ${t} and expected type: ${e}`)});for(const o of r){const d=await o.loadField(t);if(d.type!==n.ClearSignContextType.ERROR)return d}return{type:n.ClearSignContextType.ERROR,error:new Error(`Loader not found for field: ${t} and expected type: ${e}`)}}async getTypedDataFilters(t){return this._typedDataLoader.load(t)}async getSolanaContext(t){return await this._solanaLoader.load(t)}}0&&(module.exports={DefaultContextModule});
|
|
2
2
|
//# sourceMappingURL=DefaultContextModule.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/DefaultContextModule.ts"],
|
|
4
|
-
"sourcesContent": ["import { type Container } from \"inversify\";\nimport { Left } from \"purify-ts\";\n\nimport { calldataTypes } from \"@/calldata/di/calldataTypes\";\nimport { dynamicNetworkTypes } from \"@/dynamic-network/di/dynamicNetworkTypes\";\nimport type { TypedDataClearSignContext } from \"@/shared/model/TypedDataClearSignContext\";\nimport type { TypedDataContext } from \"@/shared/model/TypedDataContext\";\nimport { trustedNameTypes } from \"@/trusted-name/di/trustedNameTypes\";\n\nimport { type ContextModuleConfig } from \"./config/model/ContextModuleConfig\";\nimport { externalPluginTypes } from \"./external-plugin/di/externalPluginTypes\";\nimport { nftTypes } from \"./nft/di/nftTypes\";\nimport { proxyTypes } from \"./proxy/di/proxyTypes\";\nimport { safeTypes } from \"./safe/di/safeTypes\";\nimport { type ContextFieldLoader } from \"./shared/domain/ContextFieldLoader\";\nimport { type ContextLoader } from \"./shared/domain/ContextLoader\";\nimport {\n type ClearSignContext,\n ClearSignContextType,\n} from \"./shared/model/ClearSignContext\";\nimport { type SolanaTransactionContext } from \"./shared/model/SolanaTransactionContext\";\nimport { solanaContextTypes } from \"./solana/di/solanaContextTypes\";\nimport { type SolanaContextLoader } from \"./solana/domain/SolanaContextLoader\";\nimport { type SolanaTransactionContextResult } from \"./solana/domain/solanaContextTypes\";\nimport { tokenTypes } from \"./token/di/tokenTypes\";\nimport { transactionCheckTypes } from \"./transaction-check/di/transactionCheckTypes\";\nimport { typedDataTypes } from \"./typed-data/di/typedDataTypes\";\nimport type { TypedDataContextLoader } from \"./typed-data/domain/TypedDataContextLoader\";\nimport { type ContextModule } from \"./ContextModule\";\nimport { makeContainer } from \"./di\";\n\nexport class DefaultContextModule implements ContextModule {\n private _container: Container;\n private _loaders: ContextLoader<unknown>[];\n private _typedDataLoader: TypedDataContextLoader;\n private _solanaLoader: SolanaContextLoader;\n private _fieldLoaders: ContextFieldLoader<unknown>[];\n\n constructor(args: ContextModuleConfig) {\n this._container = makeContainer({ config: args });\n\n this._loaders = args.defaultLoaders ? this._getDefaultLoaders() : [];\n this._loaders.push(...args.customLoaders);\n\n this._fieldLoaders = args.defaultFieldLoaders\n ? this._getDefaultFieldLoaders()\n : [];\n this._fieldLoaders.push(...args.customFieldLoaders);\n\n this._typedDataLoader =\n args.customTypedDataLoader ?? this._getDefaultTypedDataLoader();\n this._solanaLoader = args.customSolanaLoader ?? this._getSolanaLoader();\n }\n\n private _getDefaultFieldLoaders(): ContextFieldLoader[] {\n return [\n this._container.get<ContextFieldLoader>(nftTypes.NftContextFieldLoader),\n this._container.get<ContextFieldLoader>(\n tokenTypes.TokenContextFieldLoader,\n ),\n this._container.get<ContextFieldLoader>(\n trustedNameTypes.TrustedNameContextFieldLoader,\n ),\n this._container.get<ContextFieldLoader>(\n proxyTypes.ProxyContextFieldLoader,\n ),\n ];\n }\n\n private _getDefaultLoaders(): ContextLoader<unknown>[] {\n return [\n this._container.get<ContextLoader>(\n externalPluginTypes.ExternalPluginContextLoader,\n ),\n this._container.get<ContextLoader>(\n trustedNameTypes.TrustedNameContextLoader,\n ),\n this._container.get<ContextLoader>(nftTypes.NftContextLoader),\n this._container.get<ContextLoader>(tokenTypes.TokenContextLoader),\n this._container.get<ContextLoader>(calldataTypes.CalldataContextLoader),\n this._container.get<ContextLoader>(\n dynamicNetworkTypes.DynamicNetworkContextLoader,\n ),\n this._container.get<ContextLoader>(safeTypes.SafeAddressLoader),\n this._container.get<ContextLoader>(\n transactionCheckTypes.TransactionCheckContextLoader,\n ),\n this._container.get<ContextLoader>(\n transactionCheckTypes.TypedDataCheckContextLoader,\n ),\n ];\n }\n\n private _getDefaultTypedDataLoader(): TypedDataContextLoader {\n return this._container.get<TypedDataContextLoader>(\n typedDataTypes.TypedDataContextLoader,\n );\n }\n\n private _getSolanaLoader(): SolanaContextLoader {\n try {\n return this._container.get<SolanaContextLoader>(\n solanaContextTypes.SolanaContextLoader,\n );\n } catch {\n return {\n load: async (_ctx) =>\n Left(\n new Error(\n \"[ContextModule] - DefaultContextModule: no SolanaContextLoader bound\",\n ),\n ),\n };\n }\n }\n\n public async getContexts(\n input: unknown,\n expectedTypes?: ClearSignContextType[],\n ): Promise<ClearSignContext[]> {\n const allContextTypes = Object.values(ClearSignContextType);\n const loaders = this._loaders.filter((l) =>\n l.canHandle(input, expectedTypes ?? allContextTypes),\n );\n const promises = loaders.map((fetcher) => fetcher.load(input));\n const responses = await Promise.all(promises);\n return responses.flat();\n }\n\n public async getFieldContext<TInput>(\n field: TInput,\n expectedType: ClearSignContextType,\n ): Promise<ClearSignContext> {\n const loaders = this._fieldLoaders.filter((l) =>\n l.canHandle(field, expectedType),\n );\n if (loaders.length === 0) {\n return Promise.resolve({\n type: ClearSignContextType.ERROR,\n error: new Error(\n `Loader not found for field: ${field} and expected type: ${expectedType}`,\n ),\n });\n }\n\n for (const loader of loaders) {\n const context = await loader.loadField(field);\n if (context.type !== ClearSignContextType.ERROR) {\n return context;\n }\n }\n\n return {\n type: ClearSignContextType.ERROR,\n error: new Error(\n `Loader not found for field: ${field} and expected type: ${expectedType}`,\n ),\n };\n }\n\n public async getTypedDataFilters(\n typedData: TypedDataContext,\n ): Promise<TypedDataClearSignContext> {\n return this._typedDataLoader.load(typedData);\n }\n\n public async getSolanaContext(\n transactionContext: SolanaTransactionContext,\n ): Promise<SolanaTransactionContextResult> {\n return await this._solanaLoader.load(transactionContext);\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAAqB,qBAErBC,EAA8B,uCAC9BC,EAAoC,oDAGpCC,EAAiC,8CAGjCC,EAAoC,oDACpCC,EAAyB,6BACzBC,EAA2B,iCAC3BC,EAA0B,+BAG1BC,EAGO,2CAEPC,EAAmC,0CAGnCC,EAA2B,iCAC3BC,EAAsC,wDACtCC,EAA+B,0CAG/BC,EAA8B,gBAEvB,
|
|
6
|
-
"names": ["DefaultContextModule_exports", "__export", "DefaultContextModule", "__toCommonJS", "import_purify_ts", "import_calldataTypes", "import_dynamicNetworkTypes", "import_trustedNameTypes", "import_externalPluginTypes", "import_nftTypes", "import_proxyTypes", "import_safeTypes", "import_ClearSignContext", "import_solanaContextTypes", "import_tokenTypes", "import_transactionCheckTypes", "import_typedDataTypes", "import_di", "args", "_ctx", "input", "expectedTypes", "allContextTypes", "promises", "l", "fetcher", "field", "expectedType", "loaders", "loader", "context", "typedData", "transactionContext"]
|
|
4
|
+
"sourcesContent": ["import { type Container } from \"inversify\";\nimport { Left } from \"purify-ts\";\n\nimport { calldataTypes } from \"@/calldata/di/calldataTypes\";\nimport { dynamicNetworkTypes } from \"@/dynamic-network/di/dynamicNetworkTypes\";\nimport type { TypedDataClearSignContext } from \"@/shared/model/TypedDataClearSignContext\";\nimport type { TypedDataContext } from \"@/shared/model/TypedDataContext\";\nimport { trustedNameTypes } from \"@/trusted-name/di/trustedNameTypes\";\n\nimport { type ContextModuleConfig } from \"./config/model/ContextModuleConfig\";\nimport { externalPluginTypes } from \"./external-plugin/di/externalPluginTypes\";\nimport { gatedSigningTypes } from \"./gated-signing/di/gatedSigningTypes\";\nimport { nftTypes } from \"./nft/di/nftTypes\";\nimport { proxyTypes } from \"./proxy/di/proxyTypes\";\nimport { safeTypes } from \"./safe/di/safeTypes\";\nimport { type ContextFieldLoader } from \"./shared/domain/ContextFieldLoader\";\nimport { type ContextLoader } from \"./shared/domain/ContextLoader\";\nimport {\n type ClearSignContext,\n ClearSignContextType,\n} from \"./shared/model/ClearSignContext\";\nimport { type SolanaTransactionContext } from \"./shared/model/SolanaTransactionContext\";\nimport { solanaContextTypes } from \"./solana/di/solanaContextTypes\";\nimport { type SolanaContextLoader } from \"./solana/domain/SolanaContextLoader\";\nimport { type SolanaTransactionContextResult } from \"./solana/domain/solanaContextTypes\";\nimport { tokenTypes } from \"./token/di/tokenTypes\";\nimport { transactionCheckTypes } from \"./transaction-check/di/transactionCheckTypes\";\nimport { typedDataTypes } from \"./typed-data/di/typedDataTypes\";\nimport type { TypedDataContextLoader } from \"./typed-data/domain/TypedDataContextLoader\";\nimport { type ContextModule } from \"./ContextModule\";\nimport { makeContainer } from \"./di\";\n\nexport class DefaultContextModule implements ContextModule {\n private _container: Container;\n private _loaders: ContextLoader<unknown>[];\n private _typedDataLoader: TypedDataContextLoader;\n private _solanaLoader: SolanaContextLoader;\n private _fieldLoaders: ContextFieldLoader<unknown>[];\n\n constructor(args: ContextModuleConfig) {\n this._container = makeContainer({ config: args });\n\n this._loaders = args.defaultLoaders ? this._getDefaultLoaders() : [];\n this._loaders.push(...args.customLoaders);\n\n this._fieldLoaders = args.defaultFieldLoaders\n ? this._getDefaultFieldLoaders()\n : [];\n this._fieldLoaders.push(...args.customFieldLoaders);\n\n this._typedDataLoader =\n args.customTypedDataLoader ?? this._getDefaultTypedDataLoader();\n this._solanaLoader = args.customSolanaLoader ?? this._getSolanaLoader();\n }\n\n private _getDefaultFieldLoaders(): ContextFieldLoader[] {\n return [\n this._container.get<ContextFieldLoader>(nftTypes.NftContextFieldLoader),\n this._container.get<ContextFieldLoader>(\n tokenTypes.TokenContextFieldLoader,\n ),\n this._container.get<ContextFieldLoader>(\n trustedNameTypes.TrustedNameContextFieldLoader,\n ),\n this._container.get<ContextFieldLoader>(\n proxyTypes.ProxyContextFieldLoader,\n ),\n ];\n }\n\n private _getDefaultLoaders(): ContextLoader<unknown>[] {\n return [\n this._container.get<ContextLoader>(\n externalPluginTypes.ExternalPluginContextLoader,\n ),\n this._container.get<ContextLoader>(\n trustedNameTypes.TrustedNameContextLoader,\n ),\n this._container.get<ContextLoader>(nftTypes.NftContextLoader),\n this._container.get<ContextLoader>(tokenTypes.TokenContextLoader),\n this._container.get<ContextLoader>(calldataTypes.CalldataContextLoader),\n this._container.get<ContextLoader>(\n dynamicNetworkTypes.DynamicNetworkContextLoader,\n ),\n this._container.get<ContextLoader>(safeTypes.SafeAddressLoader),\n this._container.get<ContextLoader>(\n gatedSigningTypes.GatedSigningContextLoader,\n ),\n this._container.get<ContextLoader>(\n gatedSigningTypes.GatedSigningTypedDataContextLoader,\n ),\n this._container.get<ContextLoader>(\n transactionCheckTypes.TransactionCheckContextLoader,\n ),\n this._container.get<ContextLoader>(\n transactionCheckTypes.TypedDataCheckContextLoader,\n ),\n ];\n }\n\n private _getDefaultTypedDataLoader(): TypedDataContextLoader {\n return this._container.get<TypedDataContextLoader>(\n typedDataTypes.TypedDataContextLoader,\n );\n }\n\n private _getSolanaLoader(): SolanaContextLoader {\n try {\n return this._container.get<SolanaContextLoader>(\n solanaContextTypes.SolanaContextLoader,\n );\n } catch {\n return {\n load: async (_ctx) =>\n Left(\n new Error(\n \"[ContextModule] - DefaultContextModule: no SolanaContextLoader bound\",\n ),\n ),\n };\n }\n }\n\n public async getContexts(\n input: unknown,\n expectedTypes?: ClearSignContextType[],\n ): Promise<ClearSignContext[]> {\n const allContextTypes = Object.values(ClearSignContextType);\n const loaders = this._loaders.filter((l) =>\n l.canHandle(input, expectedTypes ?? allContextTypes),\n );\n const promises = loaders.map((fetcher) => fetcher.load(input));\n const responses = await Promise.all(promises);\n return responses.flat();\n }\n\n public async getFieldContext<TInput>(\n field: TInput,\n expectedType: ClearSignContextType,\n ): Promise<ClearSignContext> {\n const loaders = this._fieldLoaders.filter((l) =>\n l.canHandle(field, expectedType),\n );\n if (loaders.length === 0) {\n return Promise.resolve({\n type: ClearSignContextType.ERROR,\n error: new Error(\n `Loader not found for field: ${field} and expected type: ${expectedType}`,\n ),\n });\n }\n\n for (const loader of loaders) {\n const context = await loader.loadField(field);\n if (context.type !== ClearSignContextType.ERROR) {\n return context;\n }\n }\n\n return {\n type: ClearSignContextType.ERROR,\n error: new Error(\n `Loader not found for field: ${field} and expected type: ${expectedType}`,\n ),\n };\n }\n\n public async getTypedDataFilters(\n typedData: TypedDataContext,\n ): Promise<TypedDataClearSignContext> {\n return this._typedDataLoader.load(typedData);\n }\n\n public async getSolanaContext(\n transactionContext: SolanaTransactionContext,\n ): Promise<SolanaTransactionContextResult> {\n return await this._solanaLoader.load(transactionContext);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["DefaultContextModule_exports", "__export", "DefaultContextModule", "__toCommonJS", "import_purify_ts", "import_calldataTypes", "import_dynamicNetworkTypes", "import_trustedNameTypes", "import_externalPluginTypes", "import_gatedSigningTypes", "import_nftTypes", "import_proxyTypes", "import_safeTypes", "import_ClearSignContext", "import_solanaContextTypes", "import_tokenTypes", "import_transactionCheckTypes", "import_typedDataTypes", "import_di", "args", "_ctx", "input", "expectedTypes", "allContextTypes", "promises", "l", "fetcher", "field", "expectedType", "loaders", "loader", "context", "typedData", "transactionContext"]
|
|
7
7
|
}
|
package/lib/cjs/src/di.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var
|
|
1
|
+
"use strict";var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var v=(r,o)=>{for(var e in o)a(r,e,{get:o[e],enumerable:!0})},A=(r,o,e,m)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of h(o))!w.call(r,t)&&t!==e&&a(r,t,{get:()=>o[t],enumerable:!(m=b(o,t))||m.enumerable});return r};var N=r=>A(a({},"__esModule",{value:!0}),r);var D={};v(D,{makeContainer:()=>T});module.exports=N(D);var i=require("inversify"),n=require("./calldata/di/calldataModuleFactory"),l=require("./config/di/configModuleFactory"),c=require("./config/di/configTypes"),p=require("./dynamic-network/di/dynamicNetworkModuleFactory"),d=require("./external-plugin/di/externalPluginModuleFactory"),u=require("./gated-signing/di/gatedSigningModuleFactory"),y=require("./nft/di/nftModuleFactory"),f=require("./pki/di/pkiModuleFactory"),M=require("./proxy/di/proxyModuleFactory"),F=require("./safe/di/safeModuleFactory"),g=require("./solana/di/SolanaContextModuleFactory"),s=require("./solanaLifi/di/lifiModuleFactory"),C=require("./solanaToken/di/tokenModuleFactory"),k=require("./token/di/tokenModuleFactory"),x=require("./transaction-check/di/transactionCheckModuleFactory"),L=require("./trusted-name/di/trustedNameModuleFactory"),P=require("./typed-data/di/typedDataModuleFactory"),S=require("./uniswap/di/uniswapModuleFactory");const T=({config:r})=>{const o=new i.Container;return o.bind(c.configTypes.ContextModuleLoggerFactory).toConstantValue(r.loggerFactory),o.loadSync((0,l.configModuleFactory)(r),(0,d.externalPluginModuleFactory)(),(0,p.dynamicNetworkModuleFactory)(),(0,y.nftModuleFactory)(),(0,M.proxyModuleFactory)(r),(0,F.safeModuleFactory)(),(0,u.gatedSigningModuleFactory)(),(0,k.tokenModuleFactory)(),(0,n.calldataModuleFactory)(),(0,L.trustedNameModuleFactory)(r),(0,P.typedDataModuleFactory)(),(0,f.nanoPkiModuleFactory)(),(0,S.uniswapModuleFactory)(),(0,x.transactionCheckModuleFactory)(),(0,g.solanaContextModuleFactory)(),(0,C.solanaTokenModuleFactory)(),(0,s.solanaLifiModuleFactory)()),o};0&&(module.exports={makeContainer});
|
|
2
2
|
//# sourceMappingURL=di.js.map
|
package/lib/cjs/src/di.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/di.ts"],
|
|
4
|
-
"sourcesContent": ["import { type LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\nimport { calldataModuleFactory } from \"@/calldata/di/calldataModuleFactory\";\nimport { configModuleFactory } from \"@/config/di/configModuleFactory\";\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { dynamicNetworkModuleFactory } from \"@/dynamic-network/di/dynamicNetworkModuleFactory\";\nimport { externalPluginModuleFactory } from \"@/external-plugin/di/externalPluginModuleFactory\";\nimport { nftModuleFactory } from \"@/nft/di/nftModuleFactory\";\nimport { nanoPkiModuleFactory } from \"@/pki/di/pkiModuleFactory\";\nimport { proxyModuleFactory } from \"@/proxy/di/proxyModuleFactory\";\nimport { safeModuleFactory } from \"@/safe/di/safeModuleFactory\";\nimport { solanaContextModuleFactory } from \"@/solana/di/SolanaContextModuleFactory\";\nimport { solanaLifiModuleFactory } from \"@/solanaLifi/di/lifiModuleFactory\";\nimport { solanaTokenModuleFactory } from \"@/solanaToken/di/tokenModuleFactory\";\nimport { tokenModuleFactory } from \"@/token/di/tokenModuleFactory\";\nimport { transactionCheckModuleFactory } from \"@/transaction-check/di/transactionCheckModuleFactory\";\nimport { trustedNameModuleFactory } from \"@/trusted-name/di/trustedNameModuleFactory\";\nimport { typedDataModuleFactory } from \"@/typed-data/di/typedDataModuleFactory\";\nimport { uniswapModuleFactory } from \"@/uniswap/di/uniswapModuleFactory\";\n\ntype MakeContainerArgs = {\n config: ContextModuleConfig;\n};\n\nexport const makeContainer = ({ config }: MakeContainerArgs) => {\n const container = new Container();\n\n container\n .bind<\n (tag: string) => LoggerPublisherService\n >(configTypes.ContextModuleLoggerFactory)\n .toConstantValue(config.loggerFactory);\n\n container.loadSync(\n configModuleFactory(config),\n externalPluginModuleFactory(),\n dynamicNetworkModuleFactory(),\n nftModuleFactory(),\n proxyModuleFactory(config),\n safeModuleFactory(),\n tokenModuleFactory(),\n calldataModuleFactory(),\n trustedNameModuleFactory(config),\n typedDataModuleFactory(),\n nanoPkiModuleFactory(),\n uniswapModuleFactory(),\n transactionCheckModuleFactory(),\n solanaContextModuleFactory(),\n solanaTokenModuleFactory(),\n solanaLifiModuleFactory(),\n );\n\n return container;\n};\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAA0B,qBAE1BC,EAAsC,+CACtCC,EAAoC,2CACpCC,EAA4B,mCAE5BC,EAA4C,4DAC5CC,EAA4C,4DAC5CC,EAAiC,qCACjCC,EAAqC,qCACrCC,EAAmC,yCACnCC,EAAkC,uCAClCC,EAA2C,kDAC3CC,EAAwC,6CACxCC,EAAyC,+CACzCA,EAAmC,yCACnCC,EAA8C,gEAC9CC,EAAyC,sDACzCC,EAAuC,kDACvCC,EAAqC,6CAM9B,
|
|
6
|
-
"names": ["di_exports", "__export", "makeContainer", "__toCommonJS", "import_inversify", "import_calldataModuleFactory", "import_configModuleFactory", "import_configTypes", "import_dynamicNetworkModuleFactory", "import_externalPluginModuleFactory", "import_nftModuleFactory", "import_pkiModuleFactory", "import_proxyModuleFactory", "import_safeModuleFactory", "import_SolanaContextModuleFactory", "import_lifiModuleFactory", "import_tokenModuleFactory", "import_transactionCheckModuleFactory", "import_trustedNameModuleFactory", "import_typedDataModuleFactory", "import_uniswapModuleFactory", "config", "container"]
|
|
4
|
+
"sourcesContent": ["import { type LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\nimport { calldataModuleFactory } from \"@/calldata/di/calldataModuleFactory\";\nimport { configModuleFactory } from \"@/config/di/configModuleFactory\";\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { dynamicNetworkModuleFactory } from \"@/dynamic-network/di/dynamicNetworkModuleFactory\";\nimport { externalPluginModuleFactory } from \"@/external-plugin/di/externalPluginModuleFactory\";\nimport { gatedSigningModuleFactory } from \"@/gated-signing/di/gatedSigningModuleFactory\";\nimport { nftModuleFactory } from \"@/nft/di/nftModuleFactory\";\nimport { nanoPkiModuleFactory } from \"@/pki/di/pkiModuleFactory\";\nimport { proxyModuleFactory } from \"@/proxy/di/proxyModuleFactory\";\nimport { safeModuleFactory } from \"@/safe/di/safeModuleFactory\";\nimport { solanaContextModuleFactory } from \"@/solana/di/SolanaContextModuleFactory\";\nimport { solanaLifiModuleFactory } from \"@/solanaLifi/di/lifiModuleFactory\";\nimport { solanaTokenModuleFactory } from \"@/solanaToken/di/tokenModuleFactory\";\nimport { tokenModuleFactory } from \"@/token/di/tokenModuleFactory\";\nimport { transactionCheckModuleFactory } from \"@/transaction-check/di/transactionCheckModuleFactory\";\nimport { trustedNameModuleFactory } from \"@/trusted-name/di/trustedNameModuleFactory\";\nimport { typedDataModuleFactory } from \"@/typed-data/di/typedDataModuleFactory\";\nimport { uniswapModuleFactory } from \"@/uniswap/di/uniswapModuleFactory\";\n\ntype MakeContainerArgs = {\n config: ContextModuleConfig;\n};\n\nexport const makeContainer = ({ config }: MakeContainerArgs) => {\n const container = new Container();\n\n container\n .bind<\n (tag: string) => LoggerPublisherService\n >(configTypes.ContextModuleLoggerFactory)\n .toConstantValue(config.loggerFactory);\n\n container.loadSync(\n configModuleFactory(config),\n externalPluginModuleFactory(),\n dynamicNetworkModuleFactory(),\n nftModuleFactory(),\n proxyModuleFactory(config),\n safeModuleFactory(),\n gatedSigningModuleFactory(),\n tokenModuleFactory(),\n calldataModuleFactory(),\n trustedNameModuleFactory(config),\n typedDataModuleFactory(),\n nanoPkiModuleFactory(),\n uniswapModuleFactory(),\n transactionCheckModuleFactory(),\n solanaContextModuleFactory(),\n solanaTokenModuleFactory(),\n solanaLifiModuleFactory(),\n );\n\n return container;\n};\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAA0B,qBAE1BC,EAAsC,+CACtCC,EAAoC,2CACpCC,EAA4B,mCAE5BC,EAA4C,4DAC5CC,EAA4C,4DAC5CC,EAA0C,wDAC1CC,EAAiC,qCACjCC,EAAqC,qCACrCC,EAAmC,yCACnCC,EAAkC,uCAClCC,EAA2C,kDAC3CC,EAAwC,6CACxCC,EAAyC,+CACzCA,EAAmC,yCACnCC,EAA8C,gEAC9CC,EAAyC,sDACzCC,EAAuC,kDACvCC,EAAqC,6CAM9B,MAAMnB,EAAgB,CAAC,CAAE,OAAAoB,CAAO,IAAyB,CAC9D,MAAMC,EAAY,IAAI,YAEtB,OAAAA,EACG,KAEC,cAAY,0BAA0B,EACvC,gBAAgBD,EAAO,aAAa,EAEvCC,EAAU,YACR,uBAAoBD,CAAM,KAC1B,+BAA4B,KAC5B,+BAA4B,KAC5B,oBAAiB,KACjB,sBAAmBA,CAAM,KACzB,qBAAkB,KAClB,6BAA0B,KAC1B,sBAAmB,KACnB,yBAAsB,KACtB,4BAAyBA,CAAM,KAC/B,0BAAuB,KACvB,wBAAqB,KACrB,wBAAqB,KACrB,iCAA8B,KAC9B,8BAA2B,KAC3B,4BAAyB,KACzB,2BAAwB,CAC1B,EAEOC,CACT",
|
|
6
|
+
"names": ["di_exports", "__export", "makeContainer", "__toCommonJS", "import_inversify", "import_calldataModuleFactory", "import_configModuleFactory", "import_configTypes", "import_dynamicNetworkModuleFactory", "import_externalPluginModuleFactory", "import_gatedSigningModuleFactory", "import_nftModuleFactory", "import_pkiModuleFactory", "import_proxyModuleFactory", "import_safeModuleFactory", "import_SolanaContextModuleFactory", "import_lifiModuleFactory", "import_tokenModuleFactory", "import_transactionCheckModuleFactory", "import_trustedNameModuleFactory", "import_typedDataModuleFactory", "import_uniswapModuleFactory", "config", "container"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var p=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var
|
|
1
|
+
"use strict";var p=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var M=(i,e)=>{for(var o in e)p(i,o,{get:e[o],enumerable:!0})},L=(i,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of w(e))!v.call(i,t)&&t!==o&&p(i,t,{get:()=>e[t],enumerable:!(r=y(e,t))||r.enumerable});return i};var O=i=>L(p({},"__esModule",{value:!0}),i),u=(i,e,o,r)=>{for(var t=r>1?void 0:r?y(e,o):e,c=i.length-1,n;c>=0;c--)(n=i[c])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&p(e,o,t),t},s=(i,e)=>(o,r)=>e(o,r,i);var E={};M(E,{DYNAMIC_NETWORK_CONTEXT_TYPES:()=>x,DynamicNetworkContextLoader:()=>l});module.exports=O(E);var N=require("@ledgerhq/device-management-kit"),a=require("inversify"),m=require("../../config/di/configTypes"),I=require("../../dynamic-network/di/dynamicNetworkTypes"),k=require("../../pki/di/pkiTypes"),D=require("../../pki/model/KeyId"),S=require("../../pki/model/KeyUsage"),g=require("../../shared/model/ClearSignContext"),_=require("../../shared/utils/HexStringUtils");const P="15",x=[g.ClearSignContextType.DYNAMIC_NETWORK,g.ClearSignContextType.DYNAMIC_NETWORK_ICON];let l=class{_networkDataSource;_config;_certificateLoader;logger;constructor(e,o,r,t){this._networkDataSource=e,this._config=o,this._certificateLoader=r,this.logger=t("DynamicNetworkContextLoader")}canHandle(e,o){return typeof e=="object"&&e!==null&&"chainId"in e&&"deviceModelId"in e&&e.deviceModelId!==void 0&&e.deviceModelId!==N.DeviceModelId.NANO_S&&typeof e.chainId=="number"&&x.every(r=>o.includes(r))}async load(e){const{chainId:o,deviceModelId:r}=e,t=await this._networkDataSource.getDynamicNetworkConfiguration(o),c=await this._certificateLoader.loadCertificate({keyId:D.KeyId.CalNetwork,keyUsage:S.KeyUsage.Network,targetDevice:r}),n=t.caseOf({Left:()=>[],Right:h=>{const f=[],d=h.descriptors[r];if(!d)return[];const C=d.signatures[this._config.cal.mode];if(!C)return[];const T=_.HexStringUtils.appendSignatureToPayload(d.data,C,P);return f.push({type:g.ClearSignContextType.DYNAMIC_NETWORK,payload:T,certificate:c}),d.icon&&f.push({type:g.ClearSignContextType.DYNAMIC_NETWORK_ICON,payload:d.icon}),f}});return this.logger.debug("load result",{data:{result:n}}),n}};l=u([(0,a.injectable)(),s(0,(0,a.inject)(I.dynamicNetworkTypes.DynamicNetworkDataSource)),s(1,(0,a.inject)(m.configTypes.Config)),s(2,(0,a.inject)(k.pkiTypes.PkiCertificateLoader)),s(3,(0,a.inject)(m.configTypes.ContextModuleLoggerFactory))],l);0&&(module.exports={DYNAMIC_NETWORK_CONTEXT_TYPES,DynamicNetworkContextLoader});
|
|
2
2
|
//# sourceMappingURL=DynamicNetworkContextLoader.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dynamic-network/domain/DynamicNetworkContextLoader.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n DeviceModelId,\n LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { type DynamicNetworkDataSource } from \"@/dynamic-network/data/DynamicNetworkDataSource\";\nimport { dynamicNetworkTypes } from \"@/dynamic-network/di/dynamicNetworkTypes\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyId } from \"@/pki/model/KeyId\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { ContextLoader } from \"@/shared/domain/ContextLoader\";\nimport {\n ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { HexStringUtils } from \"@/shared/utils/HexStringUtils\";\n\nexport type DynamicNetworkContextInput = {\n chainId: number;\n deviceModelId: DeviceModelId;\n};\n\nconst NETWORK_SIGNATURE_TAG = \"15\";\n\
|
|
5
|
-
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,
|
|
6
|
-
"names": ["DynamicNetworkContextLoader_exports", "__export", "DynamicNetworkContextLoader", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_configTypes", "import_dynamicNetworkTypes", "import_pkiTypes", "import_KeyId", "import_KeyUsage", "import_ClearSignContext", "import_HexStringUtils", "NETWORK_SIGNATURE_TAG", "
|
|
4
|
+
"sourcesContent": ["import {\n DeviceModelId,\n LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { type DynamicNetworkDataSource } from \"@/dynamic-network/data/DynamicNetworkDataSource\";\nimport { dynamicNetworkTypes } from \"@/dynamic-network/di/dynamicNetworkTypes\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyId } from \"@/pki/model/KeyId\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { ContextLoader } from \"@/shared/domain/ContextLoader\";\nimport {\n ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { HexStringUtils } from \"@/shared/utils/HexStringUtils\";\n\nexport type DynamicNetworkContextInput = {\n chainId: number;\n deviceModelId: DeviceModelId;\n};\n\nconst NETWORK_SIGNATURE_TAG = \"15\";\n\n/** Context types produced by DynamicNetworkContextLoader (used for getContexts expectedTypes). */\nexport const DYNAMIC_NETWORK_CONTEXT_TYPES: ClearSignContextType[] = [\n ClearSignContextType.DYNAMIC_NETWORK,\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n];\n\n@injectable()\nexport class DynamicNetworkContextLoader\n implements ContextLoader<DynamicNetworkContextInput>\n{\n private readonly _networkDataSource: DynamicNetworkDataSource;\n private readonly _config: ContextModuleConfig;\n private readonly _certificateLoader: PkiCertificateLoader;\n private logger: LoggerPublisherService;\n\n constructor(\n @inject(dynamicNetworkTypes.DynamicNetworkDataSource)\n networkDataSource: DynamicNetworkDataSource,\n @inject(configTypes.Config)\n config: ContextModuleConfig,\n @inject(pkiTypes.PkiCertificateLoader)\n certificateLoader: PkiCertificateLoader,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._networkDataSource = networkDataSource;\n this._config = config;\n this._certificateLoader = certificateLoader;\n this.logger = loggerFactory(\"DynamicNetworkContextLoader\");\n }\n\n canHandle(\n input: unknown,\n expectedTypes: ClearSignContextType[],\n ): input is DynamicNetworkContextInput {\n return (\n typeof input === \"object\" &&\n input !== null &&\n \"chainId\" in input &&\n \"deviceModelId\" in input &&\n input.deviceModelId !== undefined &&\n input.deviceModelId !== DeviceModelId.NANO_S &&\n typeof input.chainId === \"number\" &&\n DYNAMIC_NETWORK_CONTEXT_TYPES.every((type) =>\n expectedTypes.includes(type),\n )\n );\n }\n\n async load(input: DynamicNetworkContextInput): Promise<ClearSignContext[]> {\n const { chainId, deviceModelId } = input;\n\n const networkConfig =\n await this._networkDataSource.getDynamicNetworkConfiguration(chainId);\n\n // Fetch certificate for the network configuration upfront\n const certificate = await this._certificateLoader.loadCertificate({\n keyId: KeyId.CalNetwork,\n keyUsage: KeyUsage.Network,\n targetDevice: deviceModelId,\n });\n\n const result = networkConfig.caseOf({\n Left: () => [],\n Right: (configuration) => {\n const contexts: ClearSignContext[] = [];\n const descriptor = configuration.descriptors[deviceModelId];\n\n if (!descriptor) {\n return [];\n }\n\n const signature = descriptor.signatures[this._config.cal.mode];\n\n if (!signature) {\n return [];\n }\n\n const configPayload = HexStringUtils.appendSignatureToPayload(\n descriptor.data,\n signature,\n NETWORK_SIGNATURE_TAG,\n );\n\n contexts.push({\n type: ClearSignContextType.DYNAMIC_NETWORK,\n payload: configPayload,\n certificate,\n });\n\n // Add icon if available in the descriptor\n if (descriptor.icon) {\n // Icons don't need signatures appended\n contexts.push({\n type: ClearSignContextType.DYNAMIC_NETWORK_ICON,\n payload: descriptor.icon,\n });\n }\n\n return contexts;\n },\n });\n\n this.logger.debug(\"load result\", { data: { result } });\n return result;\n }\n}\n"],
|
|
5
|
+
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mCAAAE,EAAA,gCAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAGO,2CACPC,EAAmC,qBAEnCC,EAA4B,mCAG5BC,EAAoC,oDACpCC,EAAyB,6BAEzBC,EAAsB,6BACtBC,EAAyB,gCAEzBC,EAGO,2CACPC,EAA+B,yCAO/B,MAAMC,EAAwB,KAGjBC,EAAwD,CACnE,uBAAqB,gBACrB,uBAAqB,oBACvB,EAGO,IAAMC,EAAN,KAEP,CACmB,mBACA,QACA,mBACT,OAER,YAEEC,EAEAC,EAEAC,EAEAC,EACA,CACA,KAAK,mBAAqBH,EAC1B,KAAK,QAAUC,EACf,KAAK,mBAAqBC,EAC1B,KAAK,OAASC,EAAc,6BAA6B,CAC3D,CAEA,UACEC,EACAC,EACqC,CACrC,OACE,OAAOD,GAAU,UACjBA,IAAU,MACV,YAAaA,GACb,kBAAmBA,GACnBA,EAAM,gBAAkB,QACxBA,EAAM,gBAAkB,gBAAc,QACtC,OAAOA,EAAM,SAAY,UACzBN,EAA8B,MAAOQ,GACnCD,EAAc,SAASC,CAAI,CAC7B,CAEJ,CAEA,MAAM,KAAKF,EAAgE,CACzE,KAAM,CAAE,QAAAG,EAAS,cAAAC,CAAc,EAAIJ,EAE7BK,EACJ,MAAM,KAAK,mBAAmB,+BAA+BF,CAAO,EAGhEG,EAAc,MAAM,KAAK,mBAAmB,gBAAgB,CAChE,MAAO,QAAM,WACb,SAAU,WAAS,QACnB,aAAcF,CAChB,CAAC,EAEKG,EAASF,EAAc,OAAO,CAClC,KAAM,IAAM,CAAC,EACb,MAAQG,GAAkB,CACxB,MAAMC,EAA+B,CAAC,EAChCC,EAAaF,EAAc,YAAYJ,CAAa,EAE1D,GAAI,CAACM,EACH,MAAO,CAAC,EAGV,MAAMC,EAAYD,EAAW,WAAW,KAAK,QAAQ,IAAI,IAAI,EAE7D,GAAI,CAACC,EACH,MAAO,CAAC,EAGV,MAAMC,EAAgB,iBAAe,yBACnCF,EAAW,KACXC,EACAlB,CACF,EAEA,OAAAgB,EAAS,KAAK,CACZ,KAAM,uBAAqB,gBAC3B,QAASG,EACT,YAAAN,CACF,CAAC,EAGGI,EAAW,MAEbD,EAAS,KAAK,CACZ,KAAM,uBAAqB,qBAC3B,QAASC,EAAW,IACtB,CAAC,EAGID,CACT,CACF,CAAC,EAED,YAAK,OAAO,MAAM,cAAe,CAAE,KAAM,CAAE,OAAAF,CAAO,CAAE,CAAC,EAC9CA,CACT,CACF,EAnGaZ,EAANkB,EAAA,IADN,cAAW,EAUPC,EAAA,eAAO,sBAAoB,wBAAwB,GAEnDA,EAAA,eAAO,cAAY,MAAM,GAEzBA,EAAA,eAAO,WAAS,oBAAoB,GAEpCA,EAAA,eAAO,cAAY,0BAA0B,IAfrCnB",
|
|
6
|
+
"names": ["DynamicNetworkContextLoader_exports", "__export", "DYNAMIC_NETWORK_CONTEXT_TYPES", "DynamicNetworkContextLoader", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_configTypes", "import_dynamicNetworkTypes", "import_pkiTypes", "import_KeyId", "import_KeyUsage", "import_ClearSignContext", "import_HexStringUtils", "NETWORK_SIGNATURE_TAG", "DYNAMIC_NETWORK_CONTEXT_TYPES", "DynamicNetworkContextLoader", "networkDataSource", "config", "certificateLoader", "loggerFactory", "input", "expectedTypes", "type", "chainId", "deviceModelId", "networkConfig", "certificate", "result", "configuration", "contexts", "descriptor", "signature", "configPayload", "__decorateClass", "__decorateParam"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var d=(r,e,o,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of i(e))!c.call(r,t)&&t!==o&&s(r,t,{get:()=>e[t],enumerable:!(a=p(e,t))||a.enumerable});return r};var n=r=>d(s({},"__esModule",{value:!0}),r);var G={};module.exports=n(G);
|
|
2
|
+
//# sourceMappingURL=GatedDescriptorDataSource.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/gated-signing/data/GatedDescriptorDataSource.ts"],
|
|
4
|
+
"sourcesContent": ["import { type HexaString } from \"@ledgerhq/device-management-kit\";\nimport { type Either } from \"purify-ts\";\n\nexport type GetGatedDescriptorParams = {\n contractAddress: HexaString;\n selector: HexaString;\n chainId: number;\n};\n\nexport type GetGatedDescriptorForTypedDataParams = {\n contractAddress: HexaString;\n schemaHash: string;\n chainId: number;\n};\n\nexport type GetGatedDescriptorResponse = {\n signedDescriptor: string;\n};\n\nexport interface GatedDescriptorDataSource {\n getGatedDescriptor(\n params: GetGatedDescriptorParams,\n ): Promise<Either<Error, GetGatedDescriptorResponse>>;\n\n getGatedDescriptorForTypedData(\n params: GetGatedDescriptorForTypedDataParams,\n ): Promise<Either<Error, GetGatedDescriptorResponse>>;\n}\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["GatedDescriptorDataSource_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var x=Object.create;var u=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,$=Object.prototype.hasOwnProperty;var j=(o,e)=>{for(var t in e)u(o,t,{get:e[t],enumerable:!0})},w=(o,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of T(e))!$.call(o,r)&&r!==t&&u(o,r,{get:()=>e[r],enumerable:!(s=E(e,r))||s.enumerable});return o};var C=(o,e,t)=>(t=o!=null?x(v(o)):{},w(e||!o||!o.__esModule?u(t,"default",{value:o,enumerable:!0}):t,o)),k=o=>w(u({},"__esModule",{value:!0}),o),R=(o,e,t,s)=>{for(var r=s>1?void 0:s?E(e,t):e,a=o.length-1,i;a>=0;a--)(i=o[a])&&(r=(s?i(e,t,r):i(r))||r);return s&&r&&u(e,t,r),r},_=(o,e)=>(t,s)=>e(t,s,o);var I={};j(I,{HttpGatedDescriptorDataSource:()=>D});module.exports=k(I);var m=C(require("axios")),g=require("inversify"),n=require("purify-ts"),b=require("../../config/di/configTypes"),f=require("../../shared/constant/HttpHeaders"),G=require("../../shared/model/SignatureTags"),y=require("../../shared/utils/HexStringUtils"),h=C(require("../../../package.json"));let D=class{constructor(e){this.config=e}async getGatedDescriptor({contractAddress:e,selector:t,chainId:s}){let r;try{r=(await m.default.request({method:"GET",url:`${this.config.cal.url}/gated_dapps`,params:{ref:`branch:${this.config.cal.branch}`,output:"gated_descriptors,app,category",contracts:e,chain_id:s},headers:{[f.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${h.default.version}`,[f.LEDGER_ORIGIN_TOKEN_HEADER]:this.config.originToken}})).data}catch(c){return(0,n.Left)(new Error(`[ContextModule] HttpGatedDescriptorDataSource: Failed to fetch gated descriptors: ${c}`))}if(!this.isGatedDappsDto(r))return(0,n.Left)(new Error("[ContextModule] HttpGatedDescriptorDataSource: Invalid gated descriptors response"));const a=e.toLowerCase(),i=t.startsWith("0x")?t.slice(2).toLowerCase():t.toLowerCase(),d=`0x${i}`;for(const c of r){const p=c.gated_descriptors?.[a];if(!p)continue;const l=p[i]??p[d]??p[t];if(l?.descriptor)return(0,n.Right)({signedDescriptor:y.HexStringUtils.appendSignatureToPayload(l.descriptor,l.signatures[this.config.cal.mode],G.SIGNATURE_TAG)})}return(0,n.Left)(new Error(`[ContextModule] HttpGatedDescriptorDataSource: No gated descriptor for contract ${e} and selector ${t}`))}async getGatedDescriptorForTypedData({contractAddress:e,schemaHash:t,chainId:s}){let r;try{r=(await m.default.request({method:"GET",url:`${this.config.cal.url}/gated_dapps`,params:{ref:`branch:${this.config.cal.branch}`,output:"gated_descriptors",contracts:e,chain_id:s},headers:{[f.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${h.default.version}`,[f.LEDGER_ORIGIN_TOKEN_HEADER]:this.config.originToken}})).data}catch(d){return(0,n.Left)(new Error(`[ContextModule] HttpGatedDescriptorDataSource: Failed to fetch gated descriptors: ${d}`))}if(!this.isGatedDappsDto(r))return(0,n.Left)(new Error("[ContextModule] HttpGatedDescriptorDataSource: Invalid gated descriptors response"));const a=e.toLowerCase(),i=t.toLowerCase();for(const d of r){const c=d.gated_descriptors?.[a];if(!c)continue;const p=c[i];if(p?.descriptor)return(0,n.Right)({signedDescriptor:y.HexStringUtils.appendSignatureToPayload(p.descriptor,p.signatures[this.config.cal.mode],G.SIGNATURE_TAG)})}return(0,n.Left)(new Error(`[ContextModule] HttpGatedDescriptorDataSource: No gated descriptor for contract ${e} and schema hash ${t}`))}isGatedDappsDto(e){if(!Array.isArray(e)||e.length===0)return!1;for(const t of e)if(!this.isGatedDappsResponseItemDto(t))return!1;return!0}isGatedDappsResponseItemDto(e){if(!e||typeof e!="object")return!1;const t=e;if(!t.gated_descriptors||typeof t.gated_descriptors!="object")return!1;const s=t.gated_descriptors;for(const r of Object.values(s)){if(typeof r!="object"||r===null)return!1;for(const a of Object.values(r))if(!this.isGatedDescriptorEntryDto(a))return!1}return!0}isGatedDescriptorEntryDto(e){if(!e||typeof e!="object")return!1;const t=e;if(typeof t.network!="string"||typeof t.chain_id!="number"||typeof t.address!="string"||typeof t.selector!="string"||typeof t.version!="string"||typeof t.descriptor!="string")return!1;if(t.signatures!==void 0){if(typeof t.signatures!="object"||t.signatures===null)return!1;const s=t.signatures;for(const r of Object.values(s))if(typeof r!="string")return!1}return!0}};D=R([(0,g.injectable)(),_(0,(0,g.inject)(b.configTypes.Config))],D);0&&(module.exports={HttpGatedDescriptorDataSource});
|
|
2
|
+
//# sourceMappingURL=HttpGatedDescriptorDataSource.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/gated-signing/data/HttpGatedDescriptorDataSource.ts"],
|
|
4
|
+
"sourcesContent": ["import axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport { SIGNATURE_TAG } from \"@/shared/model/SignatureTags\";\nimport { HexStringUtils } from \"@/shared/utils/HexStringUtils\";\nimport PACKAGE from \"@root/package.json\";\n\nimport {\n type GatedDappsDto,\n type GatedDappsResponseItemDto,\n type GatedDescriptorEntryDto,\n} from \"./dto/GatedDappsDto\";\nimport {\n type GatedDescriptorDataSource,\n type GetGatedDescriptorForTypedDataParams,\n type GetGatedDescriptorParams,\n type GetGatedDescriptorResponse,\n} from \"./GatedDescriptorDataSource\";\n\n@injectable()\nexport class HttpGatedDescriptorDataSource\n implements GatedDescriptorDataSource\n{\n constructor(\n @inject(configTypes.Config) private readonly config: ContextModuleConfig,\n ) {}\n\n async getGatedDescriptor({\n contractAddress,\n selector,\n chainId,\n }: GetGatedDescriptorParams): Promise<\n Either<Error, GetGatedDescriptorResponse>\n > {\n let dto: GatedDappsDto | undefined;\n try {\n const response = await axios.request<GatedDappsDto>({\n method: \"GET\",\n url: `${this.config.cal.url}/gated_dapps`,\n params: {\n ref: `branch:${this.config.cal.branch}`,\n output: \"gated_descriptors,app,category\",\n contracts: contractAddress,\n chain_id: chainId,\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n });\n dto = response.data;\n } catch (error) {\n return Left(\n new Error(\n `[ContextModule] HttpGatedDescriptorDataSource: Failed to fetch gated descriptors: ${error}`,\n ),\n );\n }\n\n if (!this.isGatedDappsDto(dto)) {\n return Left(\n new Error(\n `[ContextModule] HttpGatedDescriptorDataSource: Invalid gated descriptors response`,\n ),\n );\n }\n\n const normalizedAddress = contractAddress.toLowerCase();\n const selectorWithout0x = selector.startsWith(\"0x\")\n ? selector.slice(2).toLowerCase()\n : selector.toLowerCase();\n const selectorWith0x = `0x${selectorWithout0x}`;\n\n for (const item of dto) {\n const byContract = item.gated_descriptors?.[normalizedAddress];\n if (!byContract) continue;\n\n const entry =\n byContract[selectorWithout0x] ??\n byContract[selectorWith0x] ??\n byContract[selector];\n if (entry?.descriptor) {\n return Right({\n signedDescriptor: HexStringUtils.appendSignatureToPayload(\n entry.descriptor,\n entry.signatures![this.config.cal.mode]!,\n SIGNATURE_TAG,\n ),\n });\n }\n }\n\n return Left(\n new Error(\n `[ContextModule] HttpGatedDescriptorDataSource: No gated descriptor for contract ${contractAddress} and selector ${selector}`,\n ),\n );\n }\n\n async getGatedDescriptorForTypedData({\n contractAddress,\n schemaHash,\n chainId,\n }: GetGatedDescriptorForTypedDataParams): Promise<\n Either<Error, GetGatedDescriptorResponse>\n > {\n let dto: GatedDappsDto | undefined;\n try {\n const response = await axios.request<GatedDappsDto>({\n method: \"GET\",\n url: `${this.config.cal.url}/gated_dapps`,\n params: {\n ref: `branch:${this.config.cal.branch}`,\n output: \"gated_descriptors\",\n contracts: contractAddress,\n chain_id: chainId,\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n });\n dto = response.data;\n } catch (error) {\n return Left(\n new Error(\n `[ContextModule] HttpGatedDescriptorDataSource: Failed to fetch gated descriptors: ${error}`,\n ),\n );\n }\n\n if (!this.isGatedDappsDto(dto)) {\n return Left(\n new Error(\n `[ContextModule] HttpGatedDescriptorDataSource: Invalid gated descriptors response`,\n ),\n );\n }\n\n const normalizedAddress = contractAddress.toLowerCase();\n const normalizedSchemaHash = schemaHash.toLowerCase();\n\n for (const item of dto) {\n const byContract = item.gated_descriptors?.[normalizedAddress];\n if (!byContract) continue;\n\n const entry = byContract[normalizedSchemaHash];\n if (entry?.descriptor) {\n return Right({\n signedDescriptor: HexStringUtils.appendSignatureToPayload(\n entry.descriptor,\n entry.signatures![this.config.cal.mode]!,\n SIGNATURE_TAG,\n ),\n });\n }\n }\n\n return Left(\n new Error(\n `[ContextModule] HttpGatedDescriptorDataSource: No gated descriptor for contract ${contractAddress} and schema hash ${schemaHash}`,\n ),\n );\n }\n\n private isGatedDappsDto(data: unknown): data is GatedDappsDto {\n if (!Array.isArray(data) || data.length === 0) {\n return false;\n }\n for (const item of data) {\n if (!this.isGatedDappsResponseItemDto(item)) {\n return false;\n }\n }\n return true;\n }\n\n private isGatedDappsResponseItemDto(\n item: unknown,\n ): item is GatedDappsResponseItemDto {\n if (!item || typeof item !== \"object\") {\n return false;\n }\n const obj = item as Record<string, unknown>;\n if (\n !obj[\"gated_descriptors\"] ||\n typeof obj[\"gated_descriptors\"] !== \"object\"\n ) {\n return false;\n }\n const byContract = obj[\"gated_descriptors\"] as Record<string, unknown>;\n for (const selectorsMap of Object.values(byContract)) {\n if (typeof selectorsMap !== \"object\" || selectorsMap === null) {\n return false;\n }\n for (const entry of Object.values(\n selectorsMap as Record<string, unknown>,\n )) {\n if (!this.isGatedDescriptorEntryDto(entry)) {\n return false;\n }\n }\n }\n return true;\n }\n\n private isGatedDescriptorEntryDto(\n entry: unknown,\n ): entry is GatedDescriptorEntryDto {\n if (!entry || typeof entry !== \"object\") {\n return false;\n }\n const e = entry as Record<string, unknown>;\n if (\n typeof e[\"network\"] !== \"string\" ||\n typeof e[\"chain_id\"] !== \"number\" ||\n typeof e[\"address\"] !== \"string\" ||\n typeof e[\"selector\"] !== \"string\" ||\n typeof e[\"version\"] !== \"string\" ||\n typeof e[\"descriptor\"] !== \"string\"\n ) {\n return false;\n }\n if (e[\"signatures\"] !== undefined) {\n if (typeof e[\"signatures\"] !== \"object\" || e[\"signatures\"] === null) {\n return false;\n }\n const sigs = e[\"signatures\"] as Record<string, unknown>;\n for (const v of Object.values(sigs)) {\n if (typeof v !== \"string\") {\n return false;\n }\n }\n }\n return true;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["HttpGatedDescriptorDataSource_exports", "__export", "HttpGatedDescriptorDataSource", "__toCommonJS", "import_axios", "import_inversify", "import_purify_ts", "import_configTypes", "import_HttpHeaders", "import_SignatureTags", "import_HexStringUtils", "import_package", "HttpGatedDescriptorDataSource", "config", "contractAddress", "selector", "chainId", "dto", "axios", "PACKAGE", "error", "normalizedAddress", "selectorWithout0x", "selectorWith0x", "item", "byContract", "entry", "schemaHash", "normalizedSchemaHash", "data", "obj", "selectorsMap", "e", "sigs", "v", "__decorateClass", "__decorateParam"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var f=Object.create;var w=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty;var k=(t,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of D(e))!q.call(t,i)&&i!==o&&w(t,i,{get:()=>e[i],enumerable:!(s=x(e,i))||s.enumerable});return t};var v=(t,e,o)=>(o=t!=null?f(E(t)):{},k(e||!t||!t.__esModule?w(o,"default",{value:t,enumerable:!0}):o,t));var a=v(require("axios")),n=require("purify-ts"),c=require("../../gated-signing/data/HttpGatedDescriptorDataSource"),p=require("../../shared/constant/HttpHeaders"),h=v(require("../../../package.json"));vi.mock("axios");describe("HttpGatedDescriptorDataSource",()=>{const t={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",branch:"next",mode:"prod"},originToken:"test-origin-token"},e="0x1111111254fb6c44bac0bed2854e76f90643097d",o="0xa1251d75",s=1,i="010122020101222a30783131313131313235346662366334346261633062656432383534653736663930363433303937642308000000000000000140086131323531643735",l=[{gated_descriptors:{"0x1111111254fb6c44bac0bed2854e76f90643097d":{a1251d75:{network:"ethereum",chain_id:1,address:"0x1111111254fb6c44bac0bed2854e76f90643097d",selector:"a1251d75",version:"v1",descriptor:i,signatures:{prod:"00",test:"00"}}}}}],g=`${i}150100`;beforeEach(()=>{vi.clearAllMocks()}),describe("getGatedDescriptor",()=>{it("should return descriptor on successful request with correct URL and params",async()=>{vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:l});const r=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptor({contractAddress:e,selector:o,chainId:s});expect(a.default.request).toHaveBeenCalledWith({method:"GET",url:"https://crypto-assets-service.api.ledger.com/v1/gated_dapps",params:{ref:"branch:next",output:"gated_descriptors,app,category",contracts:e,chain_id:s},headers:{[p.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${h.default.version}`,[p.LEDGER_ORIGIN_TOKEN_HEADER]:"test-origin-token"}}),expect(r).toEqual((0,n.Right)({signedDescriptor:g}))}),it("should find descriptor when API response has selector key without 0x prefix",async()=>{vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:l});const r=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptor({contractAddress:e,selector:"0xa1251d75",chainId:s});expect(r).toEqual((0,n.Right)({signedDescriptor:g}))}),it("should return Left when response is not an array",async()=>{vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:{gated_descriptors:{}}});const r=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptor({contractAddress:e,selector:o,chainId:s});expect(r).toEqual((0,n.Left)(new Error("[ContextModule] HttpGatedDescriptorDataSource: Invalid gated descriptors response")))}),it("should return Left when response is empty array",async()=>{vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:[]});const r=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptor({contractAddress:e,selector:o,chainId:s});expect(r).toEqual((0,n.Left)(new Error("[ContextModule] HttpGatedDescriptorDataSource: Invalid gated descriptors response")))}),it("should return Left when no descriptor matches contract and selector",async()=>{vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:[{gated_descriptors:{"0xothercontract":{a1251d75:{descriptor:"some-descriptor",network:"ethereum",chain_id:1,address:"0xother",selector:"a1251d75",version:"v1"}}}}]});const r=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptor({contractAddress:e,selector:o,chainId:s});expect(r).toEqual((0,n.Left)(new Error("[ContextModule] HttpGatedDescriptorDataSource: No gated descriptor for contract 0x1111111254fb6c44bac0bed2854e76f90643097d and selector 0xa1251d75")))}),it("should return Left when axios request fails",async()=>{vi.spyOn(a.default,"request").mockRejectedValue(new Error("Network error"));const r=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptor({contractAddress:e,selector:o,chainId:s});expect(r).toEqual((0,n.Left)(new Error("[ContextModule] HttpGatedDescriptorDataSource: Failed to fetch gated descriptors: Error: Network error")))}),it("should use config.cal.branch in ref param",async()=>{const r={...t,cal:{...t.cal,branch:"main"}};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:l}),await new c.HttpGatedDescriptorDataSource(r).getGatedDescriptor({contractAddress:e,selector:o,chainId:s}),expect(a.default.request).toHaveBeenCalledWith(expect.objectContaining({params:expect.objectContaining({ref:"branch:main"})}))}),describe("when response fails DTO validation",()=>{const r=new Error("[ContextModule] HttpGatedDescriptorDataSource: Invalid gated descriptors response");it("should return Left when array item has no gated_descriptors",async()=>{vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:[{}]});const d=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptor({contractAddress:e,selector:o,chainId:s});expect(d).toEqual((0,n.Left)(r))}),it("should return Left when gated_descriptors is not an object",async()=>{vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:[{gated_descriptors:"not-an-object"}]});const d=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptor({contractAddress:e,selector:o,chainId:s});expect(d).toEqual((0,n.Left)(r))}),it("should return Left when entry is missing required field (descriptor)",async()=>{vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:[{gated_descriptors:{[e]:{a1251d75:{network:"ethereum",chain_id:1,address:e,selector:"a1251d75",version:"v1"}}}}]});const d=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptor({contractAddress:e,selector:o,chainId:s});expect(d).toEqual((0,n.Left)(r))}),it("should return Left when entry has wrong type for chain_id",async()=>{vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:[{gated_descriptors:{[e]:{a1251d75:{network:"ethereum",chain_id:"1",address:e,selector:"a1251d75",version:"v1",descriptor:i,signatures:{prod:"00",test:"00"}}}}}]});const d=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptor({contractAddress:e,selector:o,chainId:s});expect(d).toEqual((0,n.Left)(r))}),it("should return Left when entry signatures contains non-string value",async()=>{vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:[{gated_descriptors:{[e]:{a1251d75:{network:"ethereum",chain_id:1,address:e,selector:"a1251d75",version:"v1",descriptor:i,signatures:{prod:123}}}}}]});const d=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptor({contractAddress:e,selector:o,chainId:s});expect(d).toEqual((0,n.Left)(r))}),it("should return Left when array item is null",async()=>{vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:[null]});const d=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptor({contractAddress:e,selector:o,chainId:s});expect(d).toEqual((0,n.Left)(r))}),it("should return Left when selectors map value is not an object",async()=>{vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:[{gated_descriptors:{[e]:"not-a-selectors-map"}}]});const d=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptor({contractAddress:e,selector:o,chainId:s});expect(d).toEqual((0,n.Left)(r))})})}),describe("getGatedDescriptorForTypedData",()=>{const r="4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3",d="010122020101222a30783131313131313235346662366334346261633062656432383534653736663930363433303937642308000000000000000140086131323531643735",m=[{gated_descriptors:{[e]:{[r]:{network:"ethereum",chain_id:1,address:e,selector:"eip712",version:"v1",descriptor:d,signatures:{prod:"00",test:"00"}}}}}],y=`${d}150100`;it("should return descriptor on successful request when keyed by schema hash",async()=>{vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:m});const u=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptorForTypedData({contractAddress:e,schemaHash:r,chainId:s});expect(a.default.request).toHaveBeenCalledWith({method:"GET",url:"https://crypto-assets-service.api.ledger.com/v1/gated_dapps",params:{ref:"branch:next",output:"gated_descriptors",contracts:e,chain_id:s},headers:{[p.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${h.default.version}`,[p.LEDGER_ORIGIN_TOKEN_HEADER]:"test-origin-token"}}),expect(u).toEqual((0,n.Right)({signedDescriptor:y}))}),it("should return Left when no descriptor matches contract and schema hash",async()=>{vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:[{gated_descriptors:{[e]:{other_schema_hash:{descriptor:"some-descriptor",network:"ethereum",chain_id:1,address:e,selector:"eip712",version:"v1"}}}}]});const u=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptorForTypedData({contractAddress:e,schemaHash:r,chainId:s});expect(u).toEqual((0,n.Left)(new Error(`[ContextModule] HttpGatedDescriptorDataSource: No gated descriptor for contract ${e} and schema hash ${r}`)))}),it("should return Left when axios request fails",async()=>{vi.spyOn(a.default,"request").mockRejectedValue(new Error("Network error"));const u=await new c.HttpGatedDescriptorDataSource(t).getGatedDescriptorForTypedData({contractAddress:e,schemaHash:r,chainId:s});expect(u).toEqual((0,n.Left)(new Error("[ContextModule] HttpGatedDescriptorDataSource: Failed to fetch gated descriptors: Error: Network error")))})})});
|
|
2
|
+
//# sourceMappingURL=HttpGatedDescriptorDataSource.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/gated-signing/data/HttpGatedDescriptorDataSource.test.ts"],
|
|
4
|
+
"sourcesContent": ["import axios from \"axios\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { HttpGatedDescriptorDataSource } from \"@/gated-signing/data/HttpGatedDescriptorDataSource\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nvi.mock(\"axios\");\n\ndescribe(\"HttpGatedDescriptorDataSource\", () => {\n const config: ContextModuleConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n branch: \"next\",\n mode: \"prod\",\n },\n originToken: \"test-origin-token\",\n } as ContextModuleConfig;\n\n const contractAddress = \"0x1111111254fb6c44bac0bed2854e76f90643097d\";\n const selector = \"0xa1251d75\";\n const chainId = 1;\n\n const descriptorPayload =\n \"010122020101222a30783131313131313235346662366334346261633062656432383534653736663930363433303937642308000000000000000140086131323531643735\";\n const validGatedDappsResponse = [\n {\n gated_descriptors: {\n \"0x1111111254fb6c44bac0bed2854e76f90643097d\": {\n a1251d75: {\n network: \"ethereum\",\n chain_id: 1,\n address: \"0x1111111254fb6c44bac0bed2854e76f90643097d\",\n selector: \"a1251d75\",\n version: \"v1\",\n descriptor: descriptorPayload,\n signatures: { prod: \"00\", test: \"00\" },\n },\n },\n },\n },\n ];\n // signedDescriptor = payload + SIGNATURE_TAG(\"15\") + length(01) + signature(\"00\")\n const expectedSignedDescriptor = `${descriptorPayload}150100`;\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"getGatedDescriptor\", () => {\n it(\"should return descriptor on successful request with correct URL and params\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: validGatedDappsResponse,\n });\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptor({\n contractAddress,\n selector,\n chainId,\n });\n\n expect(axios.request).toHaveBeenCalledWith({\n method: \"GET\",\n url: \"https://crypto-assets-service.api.ledger.com/v1/gated_dapps\",\n params: {\n ref: \"branch:next\",\n output: \"gated_descriptors,app,category\",\n contracts: contractAddress,\n chain_id: chainId,\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: \"test-origin-token\",\n },\n });\n expect(result).toEqual(\n Right({\n signedDescriptor: expectedSignedDescriptor,\n }),\n );\n });\n\n it(\"should find descriptor when API response has selector key without 0x prefix\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: validGatedDappsResponse,\n });\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptor({\n contractAddress,\n selector: \"0xa1251d75\",\n chainId,\n });\n\n expect(result).toEqual(\n Right({\n signedDescriptor: expectedSignedDescriptor,\n }),\n );\n });\n\n it(\"should return Left when response is not an array\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: { gated_descriptors: {} },\n });\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptor({\n contractAddress,\n selector,\n chainId,\n });\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpGatedDescriptorDataSource: Invalid gated descriptors response\",\n ),\n ),\n );\n });\n\n it(\"should return Left when response is empty array\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: [],\n });\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptor({\n contractAddress,\n selector,\n chainId,\n });\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpGatedDescriptorDataSource: Invalid gated descriptors response\",\n ),\n ),\n );\n });\n\n it(\"should return Left when no descriptor matches contract and selector\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: [\n {\n gated_descriptors: {\n \"0xothercontract\": {\n a1251d75: {\n descriptor: \"some-descriptor\",\n network: \"ethereum\",\n chain_id: 1,\n address: \"0xother\",\n selector: \"a1251d75\",\n version: \"v1\",\n },\n },\n },\n },\n ],\n });\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptor({\n contractAddress,\n selector,\n chainId,\n });\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpGatedDescriptorDataSource: No gated descriptor for contract 0x1111111254fb6c44bac0bed2854e76f90643097d and selector 0xa1251d75\",\n ),\n ),\n );\n });\n\n it(\"should return Left when axios request fails\", async () => {\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"Network error\"));\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptor({\n contractAddress,\n selector,\n chainId,\n });\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpGatedDescriptorDataSource: Failed to fetch gated descriptors: Error: Network error\",\n ),\n ),\n );\n });\n\n it(\"should use config.cal.branch in ref param\", async () => {\n const configMain: ContextModuleConfig = {\n ...config,\n cal: { ...config.cal!, branch: \"main\" },\n } as ContextModuleConfig;\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: validGatedDappsResponse,\n });\n\n await new HttpGatedDescriptorDataSource(configMain).getGatedDescriptor({\n contractAddress,\n selector,\n chainId,\n });\n\n expect(axios.request).toHaveBeenCalledWith(\n expect.objectContaining({\n params: expect.objectContaining({\n ref: \"branch:main\",\n }),\n }),\n );\n });\n\n describe(\"when response fails DTO validation\", () => {\n const invalidResponseError = new Error(\n \"[ContextModule] HttpGatedDescriptorDataSource: Invalid gated descriptors response\",\n );\n\n it(\"should return Left when array item has no gated_descriptors\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: [{}],\n });\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptor({\n contractAddress,\n selector,\n chainId,\n });\n\n expect(result).toEqual(Left(invalidResponseError));\n });\n\n it(\"should return Left when gated_descriptors is not an object\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: [{ gated_descriptors: \"not-an-object\" }],\n });\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptor({\n contractAddress,\n selector,\n chainId,\n });\n\n expect(result).toEqual(Left(invalidResponseError));\n });\n\n it(\"should return Left when entry is missing required field (descriptor)\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: [\n {\n gated_descriptors: {\n [contractAddress]: {\n a1251d75: {\n network: \"ethereum\",\n chain_id: 1,\n address: contractAddress,\n selector: \"a1251d75\",\n version: \"v1\",\n // descriptor missing\n },\n },\n },\n },\n ],\n });\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptor({\n contractAddress,\n selector,\n chainId,\n });\n\n expect(result).toEqual(Left(invalidResponseError));\n });\n\n it(\"should return Left when entry has wrong type for chain_id\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: [\n {\n gated_descriptors: {\n [contractAddress]: {\n a1251d75: {\n network: \"ethereum\",\n chain_id: \"1\", // string instead of number\n address: contractAddress,\n selector: \"a1251d75\",\n version: \"v1\",\n descriptor: descriptorPayload,\n signatures: { prod: \"00\", test: \"00\" },\n },\n },\n },\n },\n ],\n });\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptor({\n contractAddress,\n selector,\n chainId,\n });\n\n expect(result).toEqual(Left(invalidResponseError));\n });\n\n it(\"should return Left when entry signatures contains non-string value\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: [\n {\n gated_descriptors: {\n [contractAddress]: {\n a1251d75: {\n network: \"ethereum\",\n chain_id: 1,\n address: contractAddress,\n selector: \"a1251d75\",\n version: \"v1\",\n descriptor: descriptorPayload,\n signatures: { prod: 123 }, // number instead of string\n },\n },\n },\n },\n ],\n });\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptor({\n contractAddress,\n selector,\n chainId,\n });\n\n expect(result).toEqual(Left(invalidResponseError));\n });\n\n it(\"should return Left when array item is null\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: [null],\n });\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptor({\n contractAddress,\n selector,\n chainId,\n });\n\n expect(result).toEqual(Left(invalidResponseError));\n });\n\n it(\"should return Left when selectors map value is not an object\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: [\n {\n gated_descriptors: {\n [contractAddress]: \"not-a-selectors-map\",\n },\n },\n ],\n });\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptor({\n contractAddress,\n selector,\n chainId,\n });\n\n expect(result).toEqual(Left(invalidResponseError));\n });\n });\n });\n\n describe(\"getGatedDescriptorForTypedData\", () => {\n const schemaHash =\n \"4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3\";\n const descriptorPayloadTypedData =\n \"010122020101222a30783131313131313235346662366334346261633062656432383534653736663930363433303937642308000000000000000140086131323531643735\";\n const validTypedDataResponse = [\n {\n gated_descriptors: {\n [contractAddress]: {\n [schemaHash]: {\n network: \"ethereum\",\n chain_id: 1,\n address: contractAddress,\n selector: \"eip712\",\n version: \"v1\",\n descriptor: descriptorPayloadTypedData,\n signatures: { prod: \"00\", test: \"00\" },\n },\n },\n },\n },\n ];\n const expectedSignedDescriptorTypedData = `${descriptorPayloadTypedData}150100`;\n\n it(\"should return descriptor on successful request when keyed by schema hash\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: validTypedDataResponse,\n });\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptorForTypedData({\n contractAddress,\n schemaHash,\n chainId,\n });\n\n expect(axios.request).toHaveBeenCalledWith({\n method: \"GET\",\n url: \"https://crypto-assets-service.api.ledger.com/v1/gated_dapps\",\n params: {\n ref: \"branch:next\",\n output: \"gated_descriptors\",\n contracts: contractAddress,\n chain_id: chainId,\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: \"test-origin-token\",\n },\n });\n expect(result).toEqual(\n Right({\n signedDescriptor: expectedSignedDescriptorTypedData,\n }),\n );\n });\n\n it(\"should return Left when no descriptor matches contract and schema hash\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: [\n {\n gated_descriptors: {\n [contractAddress]: {\n other_schema_hash: {\n descriptor: \"some-descriptor\",\n network: \"ethereum\",\n chain_id: 1,\n address: contractAddress,\n selector: \"eip712\",\n version: \"v1\",\n },\n },\n },\n },\n ],\n });\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptorForTypedData({\n contractAddress,\n schemaHash,\n chainId,\n });\n\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpGatedDescriptorDataSource: No gated descriptor for contract ${contractAddress} and schema hash ${schemaHash}`,\n ),\n ),\n );\n });\n\n it(\"should return Left when axios request fails\", async () => {\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"Network error\"));\n\n const result = await new HttpGatedDescriptorDataSource(\n config,\n ).getGatedDescriptorForTypedData({\n contractAddress,\n schemaHash,\n chainId,\n });\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpGatedDescriptorDataSource: Failed to fetch gated descriptors: Error: Network error\",\n ),\n ),\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_axios", "import_purify_ts", "import_HttpGatedDescriptorDataSource", "import_HttpHeaders", "import_package", "config", "contractAddress", "selector", "chainId", "descriptorPayload", "validGatedDappsResponse", "expectedSignedDescriptor", "axios", "result", "PACKAGE", "configMain", "invalidResponseError", "schemaHash", "descriptorPayloadTypedData", "validTypedDataResponse", "expectedSignedDescriptorTypedData"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var o=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var d=(e,t,p,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of i(t))!a.call(e,r)&&r!==p&&o(e,r,{get:()=>t[r],enumerable:!(s=n(t,r))||s.enumerable});return e};var D=e=>d(o({},"__esModule",{value:!0}),e);var c={};module.exports=D(c);
|
|
2
|
+
//# sourceMappingURL=GatedDappsDto.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/gated-signing/data/dto/GatedDappsDto.ts"],
|
|
4
|
+
"sourcesContent": ["export type GatedDescriptorEntryDto = {\n network: string;\n chain_id: number;\n address: string;\n selector: string;\n version: string;\n descriptor: string;\n signatures?: Record<string, string>;\n};\n\nexport type GatedDescriptorsByContractDto = Record<\n string,\n Record<string, GatedDescriptorEntryDto>\n>;\n\nexport type GatedDappsResponseItemDto = {\n gated_descriptors: GatedDescriptorsByContractDto;\n};\n\nexport type GatedDappsDto = GatedDappsResponseItemDto[];\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["GatedDappsDto_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var i=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var G=(t,o)=>{for(var r in o)i(t,r,{get:o[r],enumerable:!0})},f=(t,o,r,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of c(o))!D.call(t,e)&&e!==r&&i(t,e,{get:()=>o[e],enumerable:!(n=S(o,e))||n.enumerable});return t};var x=t=>f(i({},"__esModule",{value:!0}),t);var s={};G(s,{gatedSigningModuleFactory:()=>C});module.exports=x(s);var d=require("inversify"),g=require("../../gated-signing/data/HttpGatedDescriptorDataSource"),p=require("../../gated-signing/domain/GatedSigningContextLoader"),m=require("../../gated-signing/domain/GatedSigningTypedDataContextLoader"),a=require("./gatedSigningTypes");const C=()=>new d.ContainerModule(({bind:t})=>{t(a.gatedSigningTypes.GatedDescriptorDataSource).to(g.HttpGatedDescriptorDataSource),t(a.gatedSigningTypes.GatedSigningContextLoader).to(p.GatedSigningContextLoader),t(a.gatedSigningTypes.GatedSigningTypedDataContextLoader).to(m.GatedSigningTypedDataContextLoader)});0&&(module.exports={gatedSigningModuleFactory});
|
|
2
|
+
//# sourceMappingURL=gatedSigningModuleFactory.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/gated-signing/di/gatedSigningModuleFactory.ts"],
|
|
4
|
+
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { HttpGatedDescriptorDataSource } from \"@/gated-signing/data/HttpGatedDescriptorDataSource\";\nimport { GatedSigningContextLoader } from \"@/gated-signing/domain/GatedSigningContextLoader\";\nimport { GatedSigningTypedDataContextLoader } from \"@/gated-signing/domain/GatedSigningTypedDataContextLoader\";\n\nimport { gatedSigningTypes } from \"./gatedSigningTypes\";\n\nexport const gatedSigningModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(gatedSigningTypes.GatedDescriptorDataSource).to(\n HttpGatedDescriptorDataSource,\n );\n bind(gatedSigningTypes.GatedSigningContextLoader).to(\n GatedSigningContextLoader,\n );\n bind(gatedSigningTypes.GatedSigningTypedDataContextLoader).to(\n GatedSigningTypedDataContextLoader,\n );\n });\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,EAA8C,8DAC9CC,EAA0C,4DAC1CC,EAAmD,qEAEnDC,EAAkC,+BAE3B,MAAMN,EAA4B,IACvC,IAAI,kBAAgB,CAAC,CAAE,KAAAO,CAAK,IAAM,CAChCA,EAAK,oBAAkB,yBAAyB,EAAE,GAChD,+BACF,EACAA,EAAK,oBAAkB,yBAAyB,EAAE,GAChD,2BACF,EACAA,EAAK,oBAAkB,kCAAkC,EAAE,GACzD,oCACF,CACF,CAAC",
|
|
6
|
+
"names": ["gatedSigningModuleFactory_exports", "__export", "gatedSigningModuleFactory", "__toCommonJS", "import_inversify", "import_HttpGatedDescriptorDataSource", "import_GatedSigningContextLoader", "import_GatedSigningTypedDataContextLoader", "import_gatedSigningTypes", "bind"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var n=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var S=(t,e)=>{for(var a in e)n(t,a,{get:e[a],enumerable:!0})},p=(t,e,a,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of i(e))!g.call(t,o)&&o!==a&&n(t,o,{get:()=>e[o],enumerable:!(r=d(e,o))||r.enumerable});return t};var y=t=>p(n({},"__esModule",{value:!0}),t);var G={};S(G,{gatedSigningTypes:()=>D});module.exports=y(G);const D={GatedDescriptorDataSource:Symbol.for("GatedDescriptorDataSource"),GatedSigningContextLoader:Symbol.for("GatedSigningContextLoader"),GatedSigningTypedDataContextLoader:Symbol.for("GatedSigningTypedDataContextLoader")};0&&(module.exports={gatedSigningTypes});
|
|
2
|
+
//# sourceMappingURL=gatedSigningTypes.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/gated-signing/di/gatedSigningTypes.ts"],
|
|
4
|
+
"sourcesContent": ["export const gatedSigningTypes = {\n GatedDescriptorDataSource: Symbol.for(\"GatedDescriptorDataSource\"),\n GatedSigningContextLoader: Symbol.for(\"GatedSigningContextLoader\"),\n GatedSigningTypedDataContextLoader: Symbol.for(\n \"GatedSigningTypedDataContextLoader\",\n ),\n};\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAoB,CAC/B,0BAA2B,OAAO,IAAI,2BAA2B,EACjE,0BAA2B,OAAO,IAAI,2BAA2B,EACjE,mCAAoC,OAAO,IACzC,oCACF,CACF",
|
|
6
|
+
"names": ["gatedSigningTypes_exports", "__export", "gatedSigningTypes", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var l=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var w=(o,e)=>{for(var r in e)l(o,r,{get:e[r],enumerable:!0})},L=(o,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of A(e))!R.call(o,t)&&t!==r&&l(o,t,{get:()=>e[t],enumerable:!(a=x(e,t))||a.enumerable});return o};var E=o=>L(l({},"__esModule",{value:!0}),o),S=(o,e,r,a)=>{for(var t=a>1?void 0:a?x(e,r):e,i=o.length-1,n;i>=0;i--)(n=o[i])&&(t=(a?n(e,r,t):n(t))||t);return a&&t&&l(e,r,t),t},y=(o,e)=>(r,a)=>e(r,a,o);var U={};w(U,{GatedSigningContextLoader:()=>d});module.exports=E(U);var f=require("@ledgerhq/device-management-kit"),s=require("inversify"),C=require("../../gated-signing/di/gatedSigningTypes"),u=require("../../pki/di/pkiTypes"),D=require("../../pki/model/KeyId"),G=require("../../pki/model/KeyUsage"),I=require("../../proxy/di/proxyTypes"),c=require("../../shared/model/ClearSignContext");const H=[c.ClearSignContextType.GATED_SIGNING];function N(o){const e=o.toLowerCase();return e.startsWith("0x")?e:`0x${e}`}let d=class{constructor(e,r,a){this._dataSource=e;this._certificateLoader=r;this._proxyDataSource=a}canHandle(e,r){return H.every(a=>r.includes(a))&&typeof e=="object"&&e!==null&&"to"in e&&(0,f.isHexaString)(e.to)&&e.to!=="0x"&&"selector"in e&&(0,f.isHexaString)(e.selector)&&"chainId"in e&&typeof e.chainId=="number"&&"deviceModelId"in e&&e.deviceModelId!==void 0}async load({to:e,selector:r,chainId:a,deviceModelId:t}){const i=await this._dataSource.getGatedDescriptor({contractAddress:e,selector:r,chainId:a});if(i.isRight()){const{signedDescriptor:v}=i.unsafeCoerce(),T=await this._loadGatedCertificate(t);return[{type:c.ClearSignContextType.GATED_SIGNING,payload:v,certificate:T}]}const n={type:c.ClearSignContextType.ERROR,error:i.extract()},m=await this._proxyDataSource.getProxyImplementationAddress({proxyAddress:e,chainId:a,challenge:"",calldata:"0x"});if(m.isLeft())return[n];const p=m.unsafeCoerce(),_=N(p.implementationAddress),g=await this._dataSource.getGatedDescriptor({contractAddress:_,selector:r,chainId:a});if(g.isLeft())return[n];const{signedDescriptor:P}=g.unsafeCoerce(),[h,k]=await Promise.all([this._certificateLoader.loadCertificate({keyId:p.keyId,keyUsage:p.keyUsage,targetDevice:t}),this._loadGatedCertificate(t)]);return[{type:c.ClearSignContextType.PROXY_INFO,payload:p.signedDescriptor,certificate:h},{type:c.ClearSignContextType.GATED_SIGNING,payload:P,certificate:k}]}_loadGatedCertificate(e){return this._certificateLoader.loadCertificate({keyId:D.KeyId.CalGatedSigning,keyUsage:G.KeyUsage.GatedSigning,targetDevice:e})}};d=S([(0,s.injectable)(),y(0,(0,s.inject)(C.gatedSigningTypes.GatedDescriptorDataSource)),y(1,(0,s.inject)(u.pkiTypes.PkiCertificateLoader)),y(2,(0,s.inject)(I.proxyTypes.ProxyDataSource))],d);0&&(module.exports={GatedSigningContextLoader});
|
|
2
|
+
//# sourceMappingURL=GatedSigningContextLoader.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/gated-signing/domain/GatedSigningContextLoader.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n DeviceModelId,\n HexaString,\n isHexaString,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { type GatedDescriptorDataSource } from \"@/gated-signing/data/GatedDescriptorDataSource\";\nimport { gatedSigningTypes } from \"@/gated-signing/di/gatedSigningTypes\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyId } from \"@/pki/model/KeyId\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport type { ProxyDataSource } from \"@/proxy/data/ProxyDataSource\";\nimport { proxyTypes } from \"@/proxy/di/proxyTypes\";\nimport { ContextLoader } from \"@/shared/domain/ContextLoader\";\nimport {\n ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\n\nexport type GatedSigningContextInput = {\n to: HexaString;\n selector: HexaString;\n chainId: number;\n deviceModelId: DeviceModelId;\n};\n\nconst SUPPORTED_TYPES: ClearSignContextType[] = [\n ClearSignContextType.GATED_SIGNING,\n];\n\nfunction normalizeAddress(address: string): HexaString {\n const lower = address.toLowerCase();\n return (lower.startsWith(\"0x\") ? lower : `0x${lower}`) as HexaString;\n}\n\n@injectable()\nexport class GatedSigningContextLoader\n implements ContextLoader<GatedSigningContextInput>\n{\n constructor(\n @inject(gatedSigningTypes.GatedDescriptorDataSource)\n private readonly _dataSource: GatedDescriptorDataSource,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly _certificateLoader: PkiCertificateLoader,\n @inject(proxyTypes.ProxyDataSource)\n private readonly _proxyDataSource: ProxyDataSource,\n ) {}\n\n canHandle(\n input: unknown,\n expectedTypes: ClearSignContextType[],\n ): input is GatedSigningContextInput {\n return (\n SUPPORTED_TYPES.every((type) => expectedTypes.includes(type)) &&\n typeof input === \"object\" &&\n input !== null &&\n \"to\" in input &&\n isHexaString(input.to) &&\n input.to !== \"0x\" &&\n \"selector\" in input &&\n isHexaString(input.selector) &&\n \"chainId\" in input &&\n typeof input.chainId === \"number\" &&\n \"deviceModelId\" in input &&\n input.deviceModelId !== undefined\n );\n }\n\n async load({\n to,\n selector,\n chainId,\n deviceModelId,\n }: GatedSigningContextInput): Promise<ClearSignContext[]> {\n const directResult = await this._dataSource.getGatedDescriptor({\n contractAddress: to,\n selector,\n chainId,\n });\n\n if (directResult.isRight()) {\n const { signedDescriptor } = directResult.unsafeCoerce();\n const certificate = await this._loadGatedCertificate(deviceModelId);\n return [\n {\n type: ClearSignContextType.GATED_SIGNING,\n payload: signedDescriptor,\n certificate,\n },\n ];\n }\n\n const errorContext: ClearSignContext = {\n type: ClearSignContextType.ERROR,\n error: directResult.extract() as Error,\n };\n\n const proxyResult =\n await this._proxyDataSource.getProxyImplementationAddress({\n proxyAddress: to,\n chainId,\n challenge: \"\",\n calldata: \"0x\",\n });\n\n if (proxyResult.isLeft()) {\n return [errorContext];\n }\n\n const proxyData = proxyResult.unsafeCoerce();\n const implementationAddress = normalizeAddress(\n proxyData.implementationAddress,\n );\n\n const implGatedResult = await this._dataSource.getGatedDescriptor({\n contractAddress: implementationAddress,\n selector,\n chainId,\n });\n\n if (implGatedResult.isLeft()) {\n return [errorContext];\n }\n\n const { signedDescriptor } = implGatedResult.unsafeCoerce();\n const [proxyCertificate, gatedCertificate] = await Promise.all([\n this._certificateLoader.loadCertificate({\n keyId: proxyData.keyId,\n keyUsage: proxyData.keyUsage,\n targetDevice: deviceModelId,\n }),\n this._loadGatedCertificate(deviceModelId),\n ]);\n\n return [\n {\n type: ClearSignContextType.PROXY_INFO,\n payload: proxyData.signedDescriptor,\n certificate: proxyCertificate,\n },\n {\n type: ClearSignContextType.GATED_SIGNING,\n payload: signedDescriptor,\n certificate: gatedCertificate,\n },\n ];\n }\n\n private _loadGatedCertificate(deviceModelId: DeviceModelId) {\n return this._certificateLoader.loadCertificate({\n keyId: KeyId.CalGatedSigning,\n keyUsage: KeyUsage.GatedSigning,\n targetDevice: deviceModelId,\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAIO,2CACPC,EAAmC,qBAGnCC,EAAkC,gDAClCC,EAAyB,6BAEzBC,EAAsB,6BACtBC,EAAyB,gCAEzBC,EAA2B,iCAE3BC,EAGO,2CASP,MAAMC,EAA0C,CAC9C,uBAAqB,aACvB,EAEA,SAASC,EAAiBC,EAA6B,CACrD,MAAMC,EAAQD,EAAQ,YAAY,EAClC,OAAQC,EAAM,WAAW,IAAI,EAAIA,EAAQ,KAAKA,CAAK,EACrD,CAGO,IAAMC,EAAN,KAEP,CACE,YAEmBC,EAEAC,EAEAC,EACjB,CALiB,iBAAAF,EAEA,wBAAAC,EAEA,sBAAAC,CAChB,CAEH,UACEC,EACAC,EACmC,CACnC,OACET,EAAgB,MAAOU,GAASD,EAAc,SAASC,CAAI,CAAC,GAC5D,OAAOF,GAAU,UACjBA,IAAU,MACV,OAAQA,MACR,gBAAaA,EAAM,EAAE,GACrBA,EAAM,KAAO,MACb,aAAcA,MACd,gBAAaA,EAAM,QAAQ,GAC3B,YAAaA,GACb,OAAOA,EAAM,SAAY,UACzB,kBAAmBA,GACnBA,EAAM,gBAAkB,MAE5B,CAEA,MAAM,KAAK,CACT,GAAAG,EACA,SAAAC,EACA,QAAAC,EACA,cAAAC,CACF,EAA0D,CACxD,MAAMC,EAAe,MAAM,KAAK,YAAY,mBAAmB,CAC7D,gBAAiBJ,EACjB,SAAAC,EACA,QAAAC,CACF,CAAC,EAED,GAAIE,EAAa,QAAQ,EAAG,CAC1B,KAAM,CAAE,iBAAAC,CAAiB,EAAID,EAAa,aAAa,EACjDE,EAAc,MAAM,KAAK,sBAAsBH,CAAa,EAClE,MAAO,CACL,CACE,KAAM,uBAAqB,cAC3B,QAASE,EACT,YAAAC,CACF,CACF,CACF,CAEA,MAAMC,EAAiC,CACrC,KAAM,uBAAqB,MAC3B,MAAOH,EAAa,QAAQ,CAC9B,EAEMI,EACJ,MAAM,KAAK,iBAAiB,8BAA8B,CACxD,aAAcR,EACd,QAAAE,EACA,UAAW,GACX,SAAU,IACZ,CAAC,EAEH,GAAIM,EAAY,OAAO,EACrB,MAAO,CAACD,CAAY,EAGtB,MAAME,EAAYD,EAAY,aAAa,EACrCE,EAAwBpB,EAC5BmB,EAAU,qBACZ,EAEME,EAAkB,MAAM,KAAK,YAAY,mBAAmB,CAChE,gBAAiBD,EACjB,SAAAT,EACA,QAAAC,CACF,CAAC,EAED,GAAIS,EAAgB,OAAO,EACzB,MAAO,CAACJ,CAAY,EAGtB,KAAM,CAAE,iBAAAF,CAAiB,EAAIM,EAAgB,aAAa,EACpD,CAACC,EAAkBC,CAAgB,EAAI,MAAM,QAAQ,IAAI,CAC7D,KAAK,mBAAmB,gBAAgB,CACtC,MAAOJ,EAAU,MACjB,SAAUA,EAAU,SACpB,aAAcN,CAChB,CAAC,EACD,KAAK,sBAAsBA,CAAa,CAC1C,CAAC,EAED,MAAO,CACL,CACE,KAAM,uBAAqB,WAC3B,QAASM,EAAU,iBACnB,YAAaG,CACf,EACA,CACE,KAAM,uBAAqB,cAC3B,QAASP,EACT,YAAaQ,CACf,CACF,CACF,CAEQ,sBAAsBV,EAA8B,CAC1D,OAAO,KAAK,mBAAmB,gBAAgB,CAC7C,MAAO,QAAM,gBACb,SAAU,WAAS,aACnB,aAAcA,CAChB,CAAC,CACH,CACF,EAvHaV,EAANqB,EAAA,IADN,cAAW,EAKPC,EAAA,eAAO,oBAAkB,yBAAyB,GAElDA,EAAA,eAAO,WAAS,oBAAoB,GAEpCA,EAAA,eAAO,aAAW,eAAe,IARzBtB",
|
|
6
|
+
"names": ["GatedSigningContextLoader_exports", "__export", "GatedSigningContextLoader", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_gatedSigningTypes", "import_pkiTypes", "import_KeyId", "import_KeyUsage", "import_proxyTypes", "import_ClearSignContext", "SUPPORTED_TYPES", "normalizeAddress", "address", "lower", "GatedSigningContextLoader", "_dataSource", "_certificateLoader", "_proxyDataSource", "input", "expectedTypes", "type", "to", "selector", "chainId", "deviceModelId", "directResult", "signedDescriptor", "certificate", "errorContext", "proxyResult", "proxyData", "implementationAddress", "implGatedResult", "proxyCertificate", "gatedCertificate", "__decorateClass", "__decorateParam"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var d=require("@ledgerhq/device-management-kit"),i=require("purify-ts"),m=require("../../gated-signing/domain/GatedSigningContextLoader"),f=require("../../pki/model/KeyId"),g=require("../../pki/model/KeyUsage"),c=require("../../shared/model/ClearSignContext");describe("GatedSigningContextLoader",()=>{const o={getGatedDescriptor:vi.fn(),getGatedDescriptorForTypedData:vi.fn()},n={loadCertificate:vi.fn()},s={getProxyImplementationAddress:vi.fn()},r=new m.GatedSigningContextLoader(o,n,s),x={keyUsageNumber:1,payload:new Uint8Array([1,2,3])},l=[c.ClearSignContextType.GATED_SIGNING];beforeEach(()=>{vi.resetAllMocks(),vi.spyOn(n,"loadCertificate").mockResolvedValue(x)}),describe("canHandle function",()=>{const e={to:"0x1111111254fb6c44bac0bed2854e76f90643097d",selector:"0xa1251d75",chainId:1,deviceModelId:d.DeviceModelId.STAX};it("should return true for valid input",()=>{expect(r.canHandle(e,l)).toBe(!0)}),it("should return false for invalid expected type",()=>{expect(r.canHandle(e,[c.ClearSignContextType.TOKEN])).toBe(!1),expect(r.canHandle(e,[c.ClearSignContextType.DYNAMIC_NETWORK])).toBe(!1)}),it.each([[null,"null input"],[void 0,"undefined input"],[{},"empty object"],["string","string input"],[123,"number input"]])("should return false for %s",(a,t)=>{expect(r.canHandle(a,l)).toBe(!1)}),it.each([[{...e,to:void 0},"missing to"],[{...e,selector:void 0},"missing selector"],[{...e,chainId:void 0},"missing chainId"],[{...e,deviceModelId:void 0},"missing deviceModelId"]])("should return false for %s",(a,t)=>{expect(r.canHandle(a,l)).toBe(!1)}),it.each([[{...e,to:"0x"},"empty to (0x)"],[{...e,to:"not-hex"},"non-hex to"],[{...e,selector:"not-hex"},"non-hex selector"],[{...e,chainId:"1"},"string chainId"],[{...e,chainId:null},"null chainId"]])("should return false for %s",(a,t)=>{expect(r.canHandle(a,l)).toBe(!1)})}),describe("load function",()=>{const e={to:"0x1111111254fb6c44bac0bed2854e76f90643097d",selector:"0xa1251d75",chainId:1,deviceModelId:d.DeviceModelId.STAX},a="010122020101222a30783131313131313235346662366334346261633062656432383534653736663930363433303937642308000000000000000140086131323531643735150100";it("should return error context when getGatedDescriptor returns Left and proxy resolution fails",async()=>{const t=new Error("Failed to fetch gated descriptors");vi.spyOn(o,"getGatedDescriptor").mockResolvedValue((0,i.Left)(t)),vi.spyOn(s,"getProxyImplementationAddress").mockResolvedValue((0,i.Left)(new Error("Not a proxy")));const p=await r.load(e);expect(p).toEqual([{type:c.ClearSignContextType.ERROR,error:t}]),expect(o.getGatedDescriptor).toHaveBeenCalledWith({contractAddress:e.to,selector:e.selector,chainId:e.chainId}),expect(s.getProxyImplementationAddress).toHaveBeenCalledWith({proxyAddress:e.to,chainId:e.chainId,challenge:"",calldata:"0x"}),expect(n.loadCertificate).not.toHaveBeenCalled()}),it("should return gated signing context when getGatedDescriptor succeeds",async()=>{vi.spyOn(o,"getGatedDescriptor").mockResolvedValue((0,i.Right)({signedDescriptor:a}));const t=await r.load(e);expect(t).toHaveLength(1),expect(t[0]).toMatchObject({type:c.ClearSignContextType.GATED_SIGNING,payload:a,certificate:x}),expect(o.getGatedDescriptor).toHaveBeenCalledWith({contractAddress:e.to,selector:e.selector,chainId:e.chainId}),expect(n.loadCertificate).toHaveBeenCalledWith({keyId:f.KeyId.CalGatedSigning,keyUsage:g.KeyUsage.GatedSigning,targetDevice:e.deviceModelId})}),it("should pass to as contractAddress to getGatedDescriptor",async()=>{const t="0xabcdef1234567890abcdef1234567890abcdef12";vi.spyOn(o,"getGatedDescriptor").mockResolvedValue((0,i.Right)({signedDescriptor:a})),await r.load({...e,to:t}),expect(o.getGatedDescriptor).toHaveBeenCalledWith(expect.objectContaining({contractAddress:t}))}),it("should request certificate for correct device model",async()=>{vi.spyOn(o,"getGatedDescriptor").mockResolvedValue((0,i.Right)({signedDescriptor:a})),await r.load({...e,deviceModelId:d.DeviceModelId.FLEX}),expect(n.loadCertificate).toHaveBeenCalledWith({keyId:f.KeyId.CalGatedSigning,keyUsage:g.KeyUsage.GatedSigning,targetDevice:d.DeviceModelId.FLEX})}),it("should reject when certificate loading fails",async()=>{const t=new Error("Certificate loading failed");vi.spyOn(o,"getGatedDescriptor").mockResolvedValue((0,i.Right)({signedDescriptor:a})),vi.spyOn(n,"loadCertificate").mockRejectedValue(t),await expect(r.load(e)).rejects.toThrow(t)}),it("should return PROXY_INFO and GATED_SIGNING when to is proxy and gated descriptor exists for implementation",async()=>{const t="0xabcdef1234567890abcdef1234567890abcdef12",p="0xproxy-descriptor";vi.spyOn(o,"getGatedDescriptor").mockResolvedValueOnce((0,i.Left)(new Error("No gated descriptor"))).mockResolvedValueOnce((0,i.Right)({signedDescriptor:a})),vi.spyOn(s,"getProxyImplementationAddress").mockResolvedValue((0,i.Right)({implementationAddress:t,signedDescriptor:p,keyId:"domain-metadata",keyUsage:"trusted-name"}));const u=await r.load(e);expect(u).toHaveLength(2),expect(u[0]).toMatchObject({type:c.ClearSignContextType.PROXY_INFO,payload:p}),expect(u[1]).toMatchObject({type:c.ClearSignContextType.GATED_SIGNING,payload:a}),expect(o.getGatedDescriptor).toHaveBeenCalledTimes(2),expect(o.getGatedDescriptor).toHaveBeenNthCalledWith(1,{contractAddress:e.to,selector:e.selector,chainId:e.chainId}),expect(o.getGatedDescriptor).toHaveBeenNthCalledWith(2,{contractAddress:t.toLowerCase(),selector:e.selector,chainId:e.chainId})})})});
|
|
2
|
+
//# sourceMappingURL=GatedSigningContextLoader.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/gated-signing/domain/GatedSigningContextLoader.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type GatedDescriptorDataSource } from \"@/gated-signing/data/GatedDescriptorDataSource\";\nimport {\n type GatedSigningContextInput,\n GatedSigningContextLoader,\n} from \"@/gated-signing/domain/GatedSigningContextLoader\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyId } from \"@/pki/model/KeyId\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\nimport type { ProxyDataSource } from \"@/proxy/data/ProxyDataSource\";\nimport { ClearSignContextType } from \"@/shared/model/ClearSignContext\";\n\ndescribe(\"GatedSigningContextLoader\", () => {\n const mockGatedDescriptorDataSource: GatedDescriptorDataSource = {\n getGatedDescriptor: vi.fn(),\n getGatedDescriptorForTypedData: vi.fn(),\n };\n\n const mockCertificateLoader: PkiCertificateLoader = {\n loadCertificate: vi.fn(),\n };\n\n const mockProxyDataSource: ProxyDataSource = {\n getProxyImplementationAddress: vi.fn(),\n };\n\n const loader = new GatedSigningContextLoader(\n mockGatedDescriptorDataSource,\n mockCertificateLoader,\n mockProxyDataSource,\n );\n\n const mockCertificate: PkiCertificate = {\n keyUsageNumber: 1,\n payload: new Uint8Array([0x01, 0x02, 0x03]),\n };\n\n const SUPPORTED_TYPES: ClearSignContextType[] = [\n ClearSignContextType.GATED_SIGNING,\n ];\n\n beforeEach(() => {\n vi.resetAllMocks();\n vi.spyOn(mockCertificateLoader, \"loadCertificate\").mockResolvedValue(\n mockCertificate,\n );\n });\n\n describe(\"canHandle function\", () => {\n const validInput: GatedSigningContextInput = {\n to: \"0x1111111254fb6c44bac0bed2854e76f90643097d\",\n selector: \"0xa1251d75\",\n chainId: 1,\n deviceModelId: DeviceModelId.STAX,\n };\n\n it(\"should return true for valid input\", () => {\n expect(loader.canHandle(validInput, SUPPORTED_TYPES)).toBe(true);\n });\n\n it(\"should return false for invalid expected type\", () => {\n expect(loader.canHandle(validInput, [ClearSignContextType.TOKEN])).toBe(\n false,\n );\n expect(\n loader.canHandle(validInput, [ClearSignContextType.DYNAMIC_NETWORK]),\n ).toBe(false);\n });\n\n it.each([\n [null, \"null input\"],\n [undefined, \"undefined input\"],\n [{}, \"empty object\"],\n [\"string\", \"string input\"],\n [123, \"number input\"],\n ])(\"should return false for %s\", (input, _description) => {\n expect(loader.canHandle(input, SUPPORTED_TYPES)).toBe(false);\n });\n\n it.each([\n [{ ...validInput, to: undefined }, \"missing to\"],\n [{ ...validInput, selector: undefined }, \"missing selector\"],\n [{ ...validInput, chainId: undefined }, \"missing chainId\"],\n [{ ...validInput, deviceModelId: undefined }, \"missing deviceModelId\"],\n ])(\"should return false for %s\", (input, _description) => {\n expect(loader.canHandle(input, SUPPORTED_TYPES)).toBe(false);\n });\n\n it.each([\n [{ ...validInput, to: \"0x\" }, \"empty to (0x)\"],\n [{ ...validInput, to: \"not-hex\" }, \"non-hex to\"],\n [{ ...validInput, selector: \"not-hex\" }, \"non-hex selector\"],\n [{ ...validInput, chainId: \"1\" as unknown as number }, \"string chainId\"],\n [{ ...validInput, chainId: null as unknown as number }, \"null chainId\"],\n ])(\"should return false for %s\", (input, _description) => {\n expect(loader.canHandle(input, SUPPORTED_TYPES)).toBe(false);\n });\n });\n\n describe(\"load function\", () => {\n const validInput: GatedSigningContextInput = {\n to: \"0x1111111254fb6c44bac0bed2854e76f90643097d\",\n selector: \"0xa1251d75\",\n chainId: 1,\n deviceModelId: DeviceModelId.STAX,\n };\n\n const signedDescriptor =\n \"010122020101222a30783131313131313235346662366334346261633062656432383534653736663930363433303937642308000000000000000140086131323531643735150100\";\n\n it(\"should return error context when getGatedDescriptor returns Left and proxy resolution fails\", async () => {\n const error = new Error(\"Failed to fetch gated descriptors\");\n vi.spyOn(\n mockGatedDescriptorDataSource,\n \"getGatedDescriptor\",\n ).mockResolvedValue(Left(error));\n vi.spyOn(\n mockProxyDataSource,\n \"getProxyImplementationAddress\",\n ).mockResolvedValue(Left(new Error(\"Not a proxy\")));\n\n const result = await loader.load(validInput);\n\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error,\n },\n ]);\n expect(\n mockGatedDescriptorDataSource.getGatedDescriptor,\n ).toHaveBeenCalledWith({\n contractAddress: validInput.to,\n selector: validInput.selector,\n chainId: validInput.chainId,\n });\n expect(\n mockProxyDataSource.getProxyImplementationAddress,\n ).toHaveBeenCalledWith({\n proxyAddress: validInput.to,\n chainId: validInput.chainId,\n challenge: \"\",\n calldata: \"0x\",\n });\n expect(mockCertificateLoader.loadCertificate).not.toHaveBeenCalled();\n });\n\n it(\"should return gated signing context when getGatedDescriptor succeeds\", async () => {\n vi.spyOn(\n mockGatedDescriptorDataSource,\n \"getGatedDescriptor\",\n ).mockResolvedValue(Right({ signedDescriptor }));\n\n const result = await loader.load(validInput);\n\n expect(result).toHaveLength(1);\n expect(result[0]).toMatchObject({\n type: ClearSignContextType.GATED_SIGNING,\n payload: signedDescriptor,\n certificate: mockCertificate,\n });\n expect(\n mockGatedDescriptorDataSource.getGatedDescriptor,\n ).toHaveBeenCalledWith({\n contractAddress: validInput.to,\n selector: validInput.selector,\n chainId: validInput.chainId,\n });\n expect(mockCertificateLoader.loadCertificate).toHaveBeenCalledWith({\n keyId: KeyId.CalGatedSigning,\n keyUsage: KeyUsage.GatedSigning,\n targetDevice: validInput.deviceModelId,\n });\n });\n\n it(\"should pass to as contractAddress to getGatedDescriptor\", async () => {\n const customTo = \"0xabcdef1234567890abcdef1234567890abcdef12\";\n vi.spyOn(\n mockGatedDescriptorDataSource,\n \"getGatedDescriptor\",\n ).mockResolvedValue(Right({ signedDescriptor }));\n\n await loader.load({\n ...validInput,\n to: customTo,\n });\n\n expect(\n mockGatedDescriptorDataSource.getGatedDescriptor,\n ).toHaveBeenCalledWith(\n expect.objectContaining({\n contractAddress: customTo,\n }),\n );\n });\n\n it(\"should request certificate for correct device model\", async () => {\n vi.spyOn(\n mockGatedDescriptorDataSource,\n \"getGatedDescriptor\",\n ).mockResolvedValue(Right({ signedDescriptor }));\n\n await loader.load({\n ...validInput,\n deviceModelId: DeviceModelId.FLEX,\n });\n\n expect(mockCertificateLoader.loadCertificate).toHaveBeenCalledWith({\n keyId: KeyId.CalGatedSigning,\n keyUsage: KeyUsage.GatedSigning,\n targetDevice: DeviceModelId.FLEX,\n });\n });\n\n it(\"should reject when certificate loading fails\", async () => {\n const certificateError = new Error(\"Certificate loading failed\");\n vi.spyOn(\n mockGatedDescriptorDataSource,\n \"getGatedDescriptor\",\n ).mockResolvedValue(Right({ signedDescriptor }));\n vi.spyOn(mockCertificateLoader, \"loadCertificate\").mockRejectedValue(\n certificateError,\n );\n\n await expect(loader.load(validInput)).rejects.toThrow(certificateError);\n });\n\n it(\"should return PROXY_INFO and GATED_SIGNING when to is proxy and gated descriptor exists for implementation\", async () => {\n const implementationAddress =\n \"0xabcdef1234567890abcdef1234567890abcdef12\";\n const proxySignedDescriptor = \"0xproxy-descriptor\";\n vi.spyOn(mockGatedDescriptorDataSource, \"getGatedDescriptor\")\n .mockResolvedValueOnce(Left(new Error(\"No gated descriptor\")))\n .mockResolvedValueOnce(Right({ signedDescriptor }));\n vi.spyOn(\n mockProxyDataSource,\n \"getProxyImplementationAddress\",\n ).mockResolvedValue(\n Right({\n implementationAddress,\n signedDescriptor: proxySignedDescriptor,\n keyId: \"domain-metadata\",\n keyUsage: \"trusted-name\",\n }),\n );\n\n const result = await loader.load(validInput);\n\n expect(result).toHaveLength(2);\n expect(result[0]).toMatchObject({\n type: ClearSignContextType.PROXY_INFO,\n payload: proxySignedDescriptor,\n });\n expect(result[1]).toMatchObject({\n type: ClearSignContextType.GATED_SIGNING,\n payload: signedDescriptor,\n });\n expect(\n mockGatedDescriptorDataSource.getGatedDescriptor,\n ).toHaveBeenCalledTimes(2);\n expect(\n mockGatedDescriptorDataSource.getGatedDescriptor,\n ).toHaveBeenNthCalledWith(1, {\n contractAddress: validInput.to,\n selector: validInput.selector,\n chainId: validInput.chainId,\n });\n expect(\n mockGatedDescriptorDataSource.getGatedDescriptor,\n ).toHaveBeenNthCalledWith(2, {\n contractAddress: implementationAddress.toLowerCase(),\n selector: validInput.selector,\n chainId: validInput.chainId,\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_device_management_kit", "import_purify_ts", "import_GatedSigningContextLoader", "import_KeyId", "import_KeyUsage", "import_ClearSignContext", "mockGatedDescriptorDataSource", "mockCertificateLoader", "mockProxyDataSource", "loader", "mockCertificate", "SUPPORTED_TYPES", "validInput", "input", "_description", "signedDescriptor", "error", "result", "customTo", "certificateError", "implementationAddress", "proxySignedDescriptor"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var y=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var b=(o,e)=>{for(var t in e)y(o,t,{get:e[t],enumerable:!0})},j=(o,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of L(e))!H.call(o,a)&&a!==t&&y(o,a,{get:()=>e[a],enumerable:!(r=G(e,a))||r.enumerable});return o};var O=o=>j(y({},"__esModule",{value:!0}),o),I=(o,e,t,r)=>{for(var a=r>1?void 0:r?G(e,t):e,i=o.length-1,s;i>=0;i--)(s=o[i])&&(a=(r?s(e,t,a):s(a))||a);return r&&a&&y(e,t,a),a},f=(o,e)=>(t,r)=>e(t,r,o);var M={};b(M,{GatedSigningTypedDataContextLoader:()=>p});module.exports=O(M);var c=require("inversify"),T=require("../../gated-signing/di/gatedSigningTypes"),k=require("../../pki/di/pkiTypes"),S=require("../../pki/model/KeyId"),u=require("../../pki/model/KeyUsage"),R=require("../../proxy/di/proxyTypes"),n=require("../../shared/model/ClearSignContext"),w=require("../../typed-data/utils/getSchemaHash");const N="0x0000000000000000000000000000000000000000",U=[n.ClearSignContextType.GATED_SIGNING];function F(o){if(!o||typeof o!="object")return!1;const e=o;if(!e.types||typeof e.types!="object"||Array.isArray(e.types))return!1;const t=e.types;for(const r of Object.keys(t)){if(typeof r!="string")return!1;const a=t[r];if(!Array.isArray(a))return!1;for(const i of a)if(!i||typeof i!="object"||typeof i.name!="string"||typeof i.type!="string")return!1}return!0}let p=class{constructor(e,t,r){this._dataSource=e;this._certificateLoader=t;this._proxyDataSource=r}canHandle(e,t){return U.every(r=>t.includes(r))&&typeof e=="object"&&e!==null&&"data"in e&&F(e.data)&&"chainId"in e&&"deviceModelId"in e&&e.deviceModelId!==void 0&&"challenge"in e&&typeof e.challenge=="string"}async load({data:e,chainId:t,deviceModelId:r,challenge:a}){const i=e.domain?.verifyingContract?.toLowerCase()??N,s=i.startsWith("0x")?i:`0x${i}`,x=(0,w.getSchemaHash)(e.types),g=await this._dataSource.getGatedDescriptorForTypedData({contractAddress:s,schemaHash:x,chainId:t});if(g.isRight()){const{signedDescriptor:m}=g.unsafeCoerce(),E=await this._certificateLoader.loadCertificate({keyId:S.KeyId.CalGatedSigning,keyUsage:u.KeyUsage.GatedSigning,targetDevice:r});return[{type:n.ClearSignContextType.GATED_SIGNING,payload:m,certificate:E}]}const D=g.caseOf({Left:m=>m,Right:()=>new Error("unreachable")}),C=await this._proxyDataSource.getProxyImplementationAddress({proxyAddress:s,chainId:t,challenge:a,calldata:"0x"});if(C.isLeft())return[{type:n.ClearSignContextType.ERROR,error:D}];const d=C.unsafeCoerce(),l=d.implementationAddress.toLowerCase(),v=l.startsWith("0x")?l:`0x${l}`,h=await this._dataSource.getGatedDescriptorForTypedData({contractAddress:v,schemaHash:x,chainId:t});if(h.isLeft())return[{type:n.ClearSignContextType.ERROR,error:D}];const{signedDescriptor:_}=h.unsafeCoerce(),[A,P]=await Promise.all([this._certificateLoader.loadCertificate({keyId:d.keyId,keyUsage:d.keyUsage,targetDevice:r}),this._certificateLoader.loadCertificate({keyId:S.KeyId.CalGatedSigning,keyUsage:u.KeyUsage.GatedSigning,targetDevice:r})]);return[{type:n.ClearSignContextType.PROXY_INFO,payload:d.signedDescriptor,certificate:A},{type:n.ClearSignContextType.GATED_SIGNING,payload:_,certificate:P}]}};p=I([(0,c.injectable)(),f(0,(0,c.inject)(T.gatedSigningTypes.GatedDescriptorDataSource)),f(1,(0,c.inject)(k.pkiTypes.PkiCertificateLoader)),f(2,(0,c.inject)(R.proxyTypes.ProxyDataSource))],p);0&&(module.exports={GatedSigningTypedDataContextLoader});
|
|
2
|
+
//# sourceMappingURL=GatedSigningTypedDataContextLoader.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/gated-signing/domain/GatedSigningTypedDataContextLoader.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n DeviceModelId,\n type HexaString,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { type GatedDescriptorDataSource } from \"@/gated-signing/data/GatedDescriptorDataSource\";\nimport { gatedSigningTypes } from \"@/gated-signing/di/gatedSigningTypes\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyId } from \"@/pki/model/KeyId\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport type { ProxyDataSource } from \"@/proxy/data/ProxyDataSource\";\nimport { proxyTypes } from \"@/proxy/di/proxyTypes\";\nimport { ContextLoader } from \"@/shared/domain/ContextLoader\";\nimport {\n ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport type { TypedDataSchema } from \"@/shared/model/TypedDataContext\";\nimport { getSchemaHash } from \"@/typed-data/utils/getSchemaHash\";\n\nconst ZERO_ADDRESS = \"0x0000000000000000000000000000000000000000\";\n\nexport type GatedSigningTypedDataContextInput = {\n data: {\n types: TypedDataSchema;\n domain?: { verifyingContract?: string };\n };\n chainId: number;\n deviceModelId: DeviceModelId;\n challenge: string;\n};\n\nconst SUPPORTED_TYPES: ClearSignContextType[] = [\n ClearSignContextType.GATED_SIGNING,\n];\n\nfunction hasTypedDataShape(\n data: unknown,\n): data is { types: TypedDataSchema; domain?: { verifyingContract?: string } } {\n if (!data || typeof data !== \"object\") return false;\n const obj = data as Record<string, unknown>;\n if (\n !obj[\"types\"] ||\n typeof obj[\"types\"] !== \"object\" ||\n Array.isArray(obj[\"types\"])\n ) {\n return false;\n }\n const types = obj[\"types\"] as Record<string, unknown>;\n for (const key of Object.keys(types)) {\n if (typeof key !== \"string\") return false;\n const value = types[key];\n if (!Array.isArray(value)) return false;\n for (const item of value) {\n if (\n !item ||\n typeof item !== \"object\" ||\n typeof (item as { name?: unknown }).name !== \"string\" ||\n typeof (item as { type?: unknown }).type !== \"string\"\n ) {\n return false;\n }\n }\n }\n return true;\n}\n\n@injectable()\nexport class GatedSigningTypedDataContextLoader\n implements ContextLoader<GatedSigningTypedDataContextInput>\n{\n constructor(\n @inject(gatedSigningTypes.GatedDescriptorDataSource)\n private readonly _dataSource: GatedDescriptorDataSource,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly _certificateLoader: PkiCertificateLoader,\n @inject(proxyTypes.ProxyDataSource)\n private readonly _proxyDataSource: ProxyDataSource,\n ) {}\n\n canHandle(\n input: unknown,\n expectedTypes: ClearSignContextType[],\n ): input is GatedSigningTypedDataContextInput {\n return (\n SUPPORTED_TYPES.every((type) => expectedTypes.includes(type)) &&\n typeof input === \"object\" &&\n input !== null &&\n \"data\" in input &&\n hasTypedDataShape((input as GatedSigningTypedDataContextInput).data) &&\n \"chainId\" in input &&\n \"deviceModelId\" in input &&\n (input as GatedSigningTypedDataContextInput).deviceModelId !==\n undefined &&\n \"challenge\" in input &&\n typeof (input as GatedSigningTypedDataContextInput).challenge === \"string\"\n );\n }\n\n async load({\n data,\n chainId,\n deviceModelId,\n challenge,\n }: GatedSigningTypedDataContextInput): Promise<ClearSignContext[]> {\n const raw = data.domain?.verifyingContract?.toLowerCase() ?? ZERO_ADDRESS;\n const verifyingContract: HexaString = raw.startsWith(\"0x\")\n ? (raw as HexaString)\n : (`0x${raw}` as HexaString);\n const schemaHash = getSchemaHash(data.types);\n\n const directResult = await this._dataSource.getGatedDescriptorForTypedData({\n contractAddress: verifyingContract,\n schemaHash,\n chainId,\n });\n\n if (directResult.isRight()) {\n const { signedDescriptor } = directResult.unsafeCoerce();\n const certificate = await this._certificateLoader.loadCertificate({\n keyId: KeyId.CalGatedSigning,\n keyUsage: KeyUsage.GatedSigning,\n targetDevice: deviceModelId,\n });\n return [\n {\n type: ClearSignContextType.GATED_SIGNING,\n payload: signedDescriptor,\n certificate,\n },\n ];\n }\n\n const firstError: Error = directResult.caseOf({\n Left: (error) => error,\n Right: () => new Error(\"unreachable\"),\n });\n\n const proxyResult =\n await this._proxyDataSource.getProxyImplementationAddress({\n proxyAddress: verifyingContract,\n chainId,\n challenge,\n calldata: \"0x\",\n });\n\n if (proxyResult.isLeft()) {\n return [\n {\n type: ClearSignContextType.ERROR,\n error: firstError,\n },\n ];\n }\n\n const proxyData = proxyResult.unsafeCoerce();\n const implRaw = proxyData.implementationAddress.toLowerCase();\n const implementationAddress: HexaString = implRaw.startsWith(\"0x\")\n ? (implRaw as HexaString)\n : (`0x${implRaw}` as HexaString);\n\n const implGatedResult =\n await this._dataSource.getGatedDescriptorForTypedData({\n contractAddress: implementationAddress,\n schemaHash,\n chainId,\n });\n\n if (implGatedResult.isLeft()) {\n return [\n {\n type: ClearSignContextType.ERROR,\n error: firstError,\n },\n ];\n }\n\n const { signedDescriptor } = implGatedResult.unsafeCoerce();\n const [proxyCertificate, gatedCertificate] = await Promise.all([\n this._certificateLoader.loadCertificate({\n keyId: proxyData.keyId,\n keyUsage: proxyData.keyUsage,\n targetDevice: deviceModelId,\n }),\n this._certificateLoader.loadCertificate({\n keyId: KeyId.CalGatedSigning,\n keyUsage: KeyUsage.GatedSigning,\n targetDevice: deviceModelId,\n }),\n ]);\n\n return [\n {\n type: ClearSignContextType.PROXY_INFO,\n payload: proxyData.signedDescriptor,\n certificate: proxyCertificate,\n },\n {\n type: ClearSignContextType.GATED_SIGNING,\n payload: signedDescriptor,\n certificate: gatedCertificate,\n },\n ];\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["GatedSigningTypedDataContextLoader_exports", "__export", "GatedSigningTypedDataContextLoader", "__toCommonJS", "import_inversify", "import_gatedSigningTypes", "import_pkiTypes", "import_KeyId", "import_KeyUsage", "import_proxyTypes", "import_ClearSignContext", "import_getSchemaHash", "ZERO_ADDRESS", "SUPPORTED_TYPES", "hasTypedDataShape", "data", "obj", "types", "key", "value", "item", "GatedSigningTypedDataContextLoader", "_dataSource", "_certificateLoader", "_proxyDataSource", "input", "expectedTypes", "type", "chainId", "deviceModelId", "challenge", "raw", "verifyingContract", "schemaHash", "directResult", "signedDescriptor", "certificate", "firstError", "error", "proxyResult", "proxyData", "implRaw", "implementationAddress", "implGatedResult", "proxyCertificate", "gatedCertificate", "__decorateClass", "__decorateParam"]
|
|
7
|
+
}
|