@taquito/tzip16 10.1.0-methodsObject.0 → 10.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/lib/version.js
CHANGED
|
@@ -4,8 +4,8 @@ exports.VERSION = void 0;
|
|
|
4
4
|
// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
|
|
5
5
|
/* tslint:disable */
|
|
6
6
|
exports.VERSION = {
|
|
7
|
-
"commitHash": "
|
|
8
|
-
"version": "10.1.
|
|
7
|
+
"commitHash": "eb5b2c4973cd11098b68ce62eb6702dea376e569",
|
|
8
|
+
"version": "10.1.1"
|
|
9
9
|
};
|
|
10
10
|
/* tslint:enable */
|
|
11
11
|
//# sourceMappingURL=version.js.map
|
package/dist/lib/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AACA,2EAA2E;AAC3E,oBAAoB;AACP,QAAA,OAAO,GAAG;IACnB,YAAY,EAAE,0CAA0C;IACxD,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AACA,2EAA2E;AAC3E,oBAAoB;AACP,QAAA,OAAO,GAAG;IACnB,YAAY,EAAE,0CAA0C;IACxD,SAAS,EAAE,QAAQ;CACtB,CAAC;AACF,mBAAmB"}
|
|
@@ -751,8 +751,8 @@ var Tzip16Module = /** @class */ (function () {
|
|
|
751
751
|
// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
|
|
752
752
|
/* tslint:disable */
|
|
753
753
|
var VERSION = {
|
|
754
|
-
"commitHash": "
|
|
755
|
-
"version": "10.1.
|
|
754
|
+
"commitHash": "eb5b2c4973cd11098b68ce62eb6702dea376e569",
|
|
755
|
+
"version": "10.1.1"
|
|
756
756
|
};
|
|
757
757
|
/* tslint:enable */
|
|
758
758
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taquito-tzip16.es5.js","sources":["../src/handlers/http-handler.ts","../src/tzip16-errors.ts","../src/handlers/tezos-storage-handler.ts","../src/handlers/ipfs-handler.ts","../src/metadata-interface.ts","../src/viewKind/michelson-storage-view.ts","../src/viewKind/viewFactory.ts","../src/tzip16-contract-abstraction.ts","../src/composer.ts","../src/tzip16-utils.ts","../src/metadata-provider.ts","../src/tzip16-extension.ts","../src/version.ts"],"sourcesContent":["import { HttpBackend } from \"@taquito/http-utils\";\nimport { ContractAbstraction, ContractProvider, Wallet, Context } from \"@taquito/taquito\";\nimport { Handler, Tzip16Uri } from \"../metadata-provider\";\n\nexport class HttpHandler implements Handler {\n httpBackend: HttpBackend;\n constructor() {\n this.httpBackend = new HttpBackend();\n }\n async getMetadata(_contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, { protocol, location }: Tzip16Uri, _context: Context) {\n return this.httpBackend.createRequest<string>({\n url: `${protocol}:${decodeURIComponent(location)}`,\n method: 'GET',\n mimeType: \"text; charset=utf-8\",\n json: false\n })\n }\n}","export class BigMapMetadataNotFound implements Error {\n name = 'BigMapMetadataNotFound';\n message = 'Non-compliance with the TZIP-016 standard. No big map named metadata was found in the contract storage.';\n}\n\nexport class MetadataNotFound implements Error {\n name: string = 'MetadataNotFound';\n message: string;\n\n constructor(public info: string) {\n this.message = `No metadata was found in the contract storage. ${info}`;\n }\n}\n\nexport class UriNotFound implements Error {\n name = 'UriNotFound';\n message = 'Non-compliance with the TZIP-016 standard. No URI found in the contract storage.';\n}\n\nexport class InvalidUri implements Error {\n name: string = 'InvalidUri';\n message: string;\n\n constructor(public uri: string) {\n this.message = `Non-compliance with the TZIP-016 standard. The URI is invalid: ${uri}.`;\n }\n}\n\nexport class InvalidMetadata implements Error {\n name: string = 'InvalidMetadata';\n message: string;\n\n constructor(public invalidMetadata: string) {\n this.message = `The metadata found at the pointed ressource are not compliant with tzip16 standard: ${invalidMetadata}.`;\n }\n}\n\nexport class ProtocolNotSupported implements Error {\n name: string = 'ProtocolNotSupported';\n message: string;\n\n constructor(public protocol: string) {\n this.message = `The protocol found in the URI is not supported: ${protocol}.`;\n }\n}\n\nexport class InvalidMetadataType implements Error {\n name = 'InvalidMetadataType';\n message = 'The contract does not comply with the tzip16 standard. The type of metadata should be bytes.';\n}\n\nexport class UnconfiguredMetadataProviderError implements Error {\n name = 'UnconfiguredMetadataProviderError';\n message =\n 'No metadata provider has been configured. The default one can be configured by calling addExtension(new Tzip16Module()) on your TezosToolkit instance.';\n}\n\nexport class ForbiddenInstructionInViewCode implements Error {\n name: string = 'ForbiddenInstructionInViewCode';\n message: string;\n\n constructor(public instruction: string) {\n this.message = `Error found in the code of the view. It contains a forbidden instruction: ${instruction}.`;\n }\n}\n\nexport class NoParameterExpectedError implements Error {\n name: string = 'NoParameterExpectedError';\n message: string;\n constructor(public viewName: string, public args: any[]) {\n this.message = `${viewName} Received ${args.length} arguments while expecting no parameter or 'Unit'`;\n }\n}\n\nexport class InvalidViewParameterError implements Error {\n name: string = 'InvalidViewParameterError';\n message: string;\n constructor(public viewName: string, public sigs: any[], public args: any[]) {\n this.message = `${viewName} Received ${args.length} arguments while expecting one of the following signatures (${JSON.stringify(sigs)})`;\n }\n}\n","import { Schema } from '@taquito/michelson-encoder';\nimport { Context, ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { Handler, Tzip16Uri } from '../metadata-provider';\nimport { bytes2Char } from '@taquito/utils';\nimport { InvalidMetadataType, BigMapMetadataNotFound, InvalidUri, MetadataNotFound } from '../tzip16-errors';\n\nconst typeOfValueToFind = {\n prim: 'big_map',\n args: [{ prim: 'string' }, { prim: 'bytes' }],\n annots: ['%metadata']\n};\n\ntype BigMapId = { int: string };\n\nexport class TezosStorageHandler implements Handler {\n private readonly TEZOS_STORAGE_REGEX = /^(?:\\/\\/(KT1\\w{33})(?:\\.(.+))?\\/)?([\\w|\\%]+)$/;\n\n async getMetadata(\n contractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n { location }: Tzip16Uri,\n context: Context\n ) {\n const parsedTezosStorageUri = this.parseTezosStorageUri(location);\n if (!parsedTezosStorageUri) {\n throw new InvalidUri(`tezos-storage:${location}`);\n }\n const storage: any = await context.rpc.getScript(parsedTezosStorageUri.contractAddress || contractAbstraction.address);\n const bigMapId = Schema.fromRPCResponse({ script: storage }).FindFirstInTopLevelPair<BigMapId>(\n storage.storage,\n typeOfValueToFind\n );\n\n if (!bigMapId) {\n throw new BigMapMetadataNotFound();\n }\n\n const bytes = await context.contract.getBigMapKeyByID<string>(\n bigMapId['int'].toString(),\n parsedTezosStorageUri.path,\n new Schema(typeOfValueToFind)\n );\n\n if (!bytes) {\n throw new MetadataNotFound(`No '${parsedTezosStorageUri.path}' key found in the big map %metadata of the contract ${parsedTezosStorageUri.contractAddress || contractAbstraction.address}`);\n }\n\n if (!/^[0-9a-fA-F]*$/.test(bytes)) {\n throw new InvalidMetadataType();\n }\n return bytes2Char(bytes);\n }\n\n /**\n * @description Extract the smart contract address, the network and the path pointing to the metadata from the uri\n * @returns an object which contains the properties allowing to find where the metadata are located or it returns undefined if the uri is not valid\n * @param tezosStorageURI URI (without the tezos-storage prefix)\n */\n private parseTezosStorageUri(tezosStorageURI: string) {\n const extractor = this.TEZOS_STORAGE_REGEX.exec(tezosStorageURI);\n if (!extractor) return;\n return {\n contractAddress: extractor[1],\n network: extractor[2],\n path: decodeURIComponent(extractor[3])\n };\n }\n}\n","import { HttpBackend } from \"@taquito/http-utils\";\nimport { ContractAbstraction, ContractProvider, Wallet, Context } from \"@taquito/taquito\";\nimport { Handler, Tzip16Uri } from \"../metadata-provider\";\n\nexport class IpfsHttpHandler implements Handler {\n private _ipfsGateway: string;\n private _httpBackend = new HttpBackend();\n\n constructor(ipfsGatheway?:string){\n this._ipfsGateway = ipfsGatheway? ipfsGatheway: 'ipfs.io';\n }\n\n async getMetadata(_contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, { location }: Tzip16Uri, _context: Context): Promise<string> {\n return this._httpBackend.createRequest<string>({\n url: `https://${this._ipfsGateway}/ipfs/${location.substring(2)}/`,\n method: 'GET',\n headers: {'Content-Type': 'text/plain'},\n mimeType: \"text; charset=utf-8\",\n json: false\n })\n }\n}","import { MichelsonV1Expression } from '@taquito/rpc';\nexport interface MetadataInterface {\n\tname?: string;\n\tdescription?: string;\n\tversion?: string;\n\tlicense?: { name: string; details?: string };\n\tauthors?: string[];\n\thomepage?: string;\n\tsource?: { tools?: string[]; location?: string };\n\tinterfaces?: string[];\n\terrors?: ErrorsTzip16;\n\tviews?: Views;\n}\n\nexport type ErrorsTzip16 = Array<\n\t| { error: MichelineTzip16Expression; expansion: MichelineTzip16Expression; languages?: string[] }\n\t| { view: string; languages?: string[] }\n>;\n\nexport enum ViewImplementationType {\n\tMICHELSON_STORAGE = 'michelsonStorageView',\n\tREST_API_QUERY = 'restApiQuery'\n}\n\nexport type ViewImplementation =\n\t| { [ViewImplementationType.MICHELSON_STORAGE]: MichelsonStorageViewType }\n\t| { [ViewImplementationType.REST_API_QUERY]: RestApiQueryType };\n\nexport interface ViewDefinition {\n\tname?: string;\n\tdescription?: string;\n\timplementations?: ViewImplementation[];\n\tpure?: boolean;\n}\n\nexport type Views = ViewDefinition[];\n\nexport type MichelsonStorageViewType = {\n\tparameter?: MichelineTzip16Expression;\n\treturnType: MichelineTzip16Expression;\n\tcode: MichelineTzip16Expression;\n\tannotations?: Array<{ name: string; description: string }>;\n\tversion?: string;\n};\n\nexport type RestApiQueryType = {\n\tspecificationUri: string;\n\tbaseUri?: string;\n\tpath: string;\n\tmethod?: 'GET' | 'POST' | 'PUT';\n};\n\nexport type MichelineTzip16Expression =\n\t| MichelsonV1Expression\n\t| MichelineTzip16Expression[]\n\t| { prim: Unistring; args?: MichelineTzip16Expression[]; annots?: string[] };\n\ntype Unistring = string | { invalid_utf8_string: number[] };\n","import { ParameterSchema } from '@taquito/michelson-encoder';\nimport { RpcClient, MichelsonV1Expression, MichelsonV1ExpressionExtended } from '@taquito/rpc';\nimport { ContractAbstraction, ContractProvider, Protocols, Wallet } from '@taquito/taquito';\nimport { ForbiddenInstructionInViewCode, InvalidViewParameterError, NoParameterExpectedError } from '../tzip16-errors';\nimport { View } from './interface';\n\nexport class MichelsonStorageView implements View {\n constructor(\n private viewName: string,\n private contract: ContractAbstraction<ContractProvider | Wallet>,\n private rpc: RpcClient,\n private returnType: MichelsonV1Expression,\n private code: MichelsonV1ExpressionExtended[],\n private viewParameterType?: MichelsonV1ExpressionExtended\n ) { }\n\n /**\n * @description According to the tzip-16 standard, the following instructions must not be used in the code of the view:\n * 'AMOUNT', 'CREATE_CONTRACT', 'SENDER', 'SET_DELEGATE', 'SOURCE', and 'TRANSFER_TOKENS'\n * The method throw an error if an illegal instruction is found\n */\n private findForbiddenInstructionInViewCode(code: MichelsonV1ExpressionExtended[]) {\n const illegalInstructions = [\n 'AMOUNT',\n 'CREATE_CONTRACT',\n 'SENDER',\n 'SET_DELEGATE',\n 'SOURCE',\n 'TRANSFER_TOKENS'\n ];\n\n for (let forbiddenInstruction of illegalInstructions) {\n for (let instruction of code) {\n if (instruction.prim === forbiddenInstruction) {\n throw new ForbiddenInstructionInViewCode(forbiddenInstruction);\n }\n if (instruction.args && instruction.args.length !== 0) {\n this.findForbiddenInstructionInViewCode(instruction.args as any);\n }\n }\n }\n }\n\n /**\n * @description According to the tzip-16 standard, in the first version of the specification, the instruction SELF should only be used before ADDRESS\n * The method throws an error is the instruction SELF is present, but not followed by ADDRESS\n */\n private illegalUseOfSelfInstruction(code: MichelsonV1ExpressionExtended[]) {\n for (let instruction of code) {\n if (instruction.prim === 'SELF') {\n const index = code.indexOf(instruction);\n const nextInstruction = code[index + 1] ? code[index + 1].prim : undefined;\n if (nextInstruction !== 'ADDRESS') {\n throw new ForbiddenInstructionInViewCode('the instruction SELF should only be used before ADDRESS');\n }\n }\n if (instruction.args && instruction.args.length !== 0) {\n this.illegalUseOfSelfInstruction(instruction.args as any);\n }\n }\n }\n\n /**\n * @description Loops through the view's code and replace SELF, BALANCE, NOW, and CHAIN_ID with Michelson expressions that match the current context, if applicable.\n */\n private adaptViewCodeToContext(\n code: MichelsonV1ExpressionExtended[],\n contractBalance: string,\n blockTimeStamp: string,\n chainId: string\n ) {\n const instructionsToReplace = {\n SELF: [\n { prim: 'PUSH', args: [{ prim: 'address' }, { string: this.contract.address }] },\n { prim: 'CONTRACT', args: [{ prim: 'unit' }] },\n { prim: 'IF_NONE', args: [[{ prim: 'UNIT' }, { prim: 'FAILWITH' }], []] }\n ],\n BALANCE: [{ prim: 'PUSH', args: [{ prim: 'mutez' }, { int: contractBalance }] }],\n NOW: [{ prim: 'PUSH', args: [{ prim: 'timestamp' }, { string: blockTimeStamp }] }],\n CHAIN_ID: [{ prim: 'PUSH', args: [{ prim: 'string' }, { string: chainId }] }]\n };\n\n code.forEach((x: any, i: any) => {\n for (let instruction in instructionsToReplace) {\n if (x.prim === instruction) {\n code[i] = Object(instructionsToReplace)[instruction];\n }\n if (x.args && x.args.length !== 0) {\n this.adaptViewCodeToContext(x.args, contractBalance, blockTimeStamp, chainId);\n }\n }\n });\n return code;\n }\n\n private validateArgs = (args: any[], schema: ParameterSchema, viewName: string) => {\n const sigs = schema.ExtractSignatures();\n\n if (!sigs.find((x: any[]) => x.length === args.length)) {\n throw new InvalidViewParameterError(viewName, sigs, args);\n }\n };\n\n private formatArgsAndParameter(argView: any[]) {\n let args = argView;\n let viewParameterType = this.viewParameterType;\n if (!viewParameterType) {\n viewParameterType = { args: [], prim: 'unit', annots: [] };\n }\n\n if (viewParameterType.prim === 'unit') {\n if (args.length === 0) {\n args = ['Unit'];\n }\n if (args.length !== 0 && args[0] !== 'Unit') {\n throw new NoParameterExpectedError(this.viewName, argView);\n }\n }\n const parameterViewSchema = new ParameterSchema(viewParameterType);\n this.validateArgs(args, parameterViewSchema, this.viewName);\n const arg = parameterViewSchema.Encode(...args);\n return { arg, viewParameterType };\n }\n\n async executeView(...args: any[]) {\n // validate view code against tzip-16 specifications\n this.findForbiddenInstructionInViewCode(this.code);\n this.illegalUseOfSelfInstruction(this.code);\n\n const { arg, viewParameterType } = this.formatArgsAndParameter(args);\n\n const storageType: any = this.contract.script.code.find((x: any) => x.prim === 'storage');\n const storageArgs = storageType.args[0];\n const storageValue: any = this.contract.script.storage;\n\n // currentContext\n const chainId = await this.rpc.getChainId();\n const contractBalance = (await this.rpc.getBalance(this.contract.address)).toString();\n const block = await this.rpc.getBlock();\n const blockTimestamp = block.header.timestamp.toString();\n const protocolHash = block.protocol;\n\n const code = this.adaptViewCodeToContext(this.code, contractBalance, blockTimestamp, chainId);\n\n if(!this.viewParameterType) {\n code.unshift({ prim: 'CDR' })\n }\n\n const viewScript = {\n script: [\n { prim: 'parameter', args: [{ prim: 'pair', args: [viewParameterType, storageArgs] }] },\n { prim: 'storage', args: [{ prim: 'option', args: [this.returnType] }] },\n {\n prim: 'code',\n args: [\n [\n { prim: 'CAR' }, \n code,\n { prim: 'SOME' }, \n { prim: 'NIL', args: [{ prim: 'operation' }] }, \n { prim: 'PAIR' }\n ]\n ]\n }\n ],\n storage: { prim: 'None' },\n input: { prim: 'Pair', args: [arg, storageValue] },\n amount: '0',\n chain_id: chainId,\n balance: '0'\n };\n\n const result: any = await this.rpc.runCode(viewScript as any);\n const viewResultSchema = new ParameterSchema(this.returnType);\n return viewResultSchema.Execute(result.storage.args[0]);\n }\n}\n","import { RpcClient } from '@taquito/rpc';\nimport { ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { ViewImplementation, ViewImplementationType } from '../metadata-interface';\nimport { MichelsonStorageView } from './michelson-storage-view';\n\nexport class ViewFactory {\n getView(\n viewName: string,\n rpc: RpcClient,\n contract: ContractAbstraction<ContractProvider | Wallet>,\n viewImplementation: ViewImplementation\n ) {\n if (this.isMichelsonStorageView(viewImplementation)) {\n const viewValues = viewImplementation[ViewImplementationType.MICHELSON_STORAGE];\n if (!viewValues.returnType || !viewValues.code) {\n console.warn(\n `${viewName} is missing mandatory code or returnType property therefore it will be skipped.`\n );\n return;\n }\n return () => {\n const view = new MichelsonStorageView(\n viewName,\n contract,\n rpc,\n viewValues.returnType as any,\n viewValues.code as any,\n viewValues.parameter as any\n );\n return view;\n };\n }\n }\n\n getImplementationType(viewImplementation: ViewImplementation) {\n return Object.keys(viewImplementation)[0];\n }\n\n private isMichelsonStorageView(\n viewImplementation: ViewImplementation\n ): viewImplementation is { [ViewImplementationType.MICHELSON_STORAGE]: any } {\n return this.getImplementationType(viewImplementation) === ViewImplementationType.MICHELSON_STORAGE;\n }\n}\n","import { BigMapAbstraction, Context, ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { bytes2Char } from '@taquito/utils';\nimport { MetadataEnvelope, MetadataProviderInterface } from './metadata-provider';\nimport { BigMapMetadataNotFound, UnconfiguredMetadataProviderError, UriNotFound } from './tzip16-errors';\nimport BigNumber from 'bignumber.js';\nimport { Schema } from '@taquito/michelson-encoder';\nimport { ViewFactory } from './viewKind/viewFactory';\nimport { View } from './viewKind/interface';\nimport { ViewDefinition } from './metadata-interface';\n\nexport type MetadataContext = Context & {\n metadataProvider: MetadataProviderInterface;\n};\n\ntype BigMapId = { int: string };\n\nconst metadataBigMapType = {\n prim: 'big_map',\n args: [{ prim: 'string' }, { prim: 'bytes' }],\n annots: ['%metadata']\n};\nexport class Tzip16ContractAbstraction {\n private _metadataProvider: MetadataProviderInterface;\n private _metadataEnvelope?: MetadataEnvelope;\n private _viewFactory = new ViewFactory();\n private _metadataViewsObject: { [key: string]: () => View } = {};\n\n constructor(\n private constractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n private context: MetadataContext\n ) {\n this._metadataProvider = context.metadataProvider;\n }\n\n private findMetadataBigMap(): BigMapAbstraction {\n const metadataBigMapId = this.constractAbstraction.schema.FindFirstInTopLevelPair<BigMapId>(\n this.constractAbstraction.script.storage,\n metadataBigMapType\n );\n\n if (!metadataBigMapId) {\n throw new BigMapMetadataNotFound();\n }\n\n return new BigMapAbstraction(\n new BigNumber(metadataBigMapId['int']),\n new Schema(metadataBigMapType),\n this.context.contract\n );\n }\n\n private async getUriOrFail() {\n const metadataBigMap = this.findMetadataBigMap();\n const uri = await metadataBigMap.get<string>('');\n if (!uri) {\n throw new UriNotFound();\n }\n return uri;\n }\n\n /**\n * @description Return an object containing the metadata, the uri, an optional integrity check result and an optional sha256 hash\n */\n async getMetadata() {\n if (!this._metadataProvider) {\n throw new UnconfiguredMetadataProviderError();\n }\n if (!this._metadataEnvelope) {\n const uri = await this.getUriOrFail();\n this._metadataEnvelope = await this._metadataProvider.provideMetadata(\n this.constractAbstraction,\n bytes2Char(uri),\n this.context\n );\n }\n return this._metadataEnvelope;\n }\n\n async metadataViews() {\n if (Object.keys(this._metadataViewsObject).length === 0) {\n await this.initializeMetadataViewsList();\n }\n return this._metadataViewsObject;\n }\n\n private async initializeMetadataViewsList() {\n const { metadata } = await this.getMetadata();\n const metadataViews: any = {};\n metadata.views?.forEach((view) => this.createViewImplementations(view, metadataViews))\n this._metadataViewsObject = metadataViews;\n }\n\n private generateIndexedViewName(viewName: string, metadataViews: {}) {\n let i = 1;\n if (viewName in metadataViews) {\n while (`${viewName}${i}` in metadataViews) {\n i++;\n }\n viewName = `${viewName}${i}`;\n }\n return viewName;\n }\n\n private createViewImplementations(view: ViewDefinition, metadataViews: any) {\n for (let viewImplementation of view?.implementations ?? []) {\n if (view.name) {\n // when views have the same name, add an index at the end of the name\n const viewName = this.generateIndexedViewName(view.name, metadataViews);\n const metadataView = this._viewFactory.getView(\n viewName,\n this.context.rpc,\n this.constractAbstraction,\n viewImplementation\n );\n if (metadataView) {\n metadataViews[viewName] = metadataView;\n } else {\n console.warn(`Skipped generating ${viewName} because the view has an unsupported type: ${this._viewFactory.getImplementationType(viewImplementation)}`)\n }\n }\n }\n }\n}\n","import { Context, ContractAbstraction, ContractProvider, Wallet } from \"@taquito/taquito\";\nimport { MetadataContext, Tzip16ContractAbstraction } from './tzip16-contract-abstraction'\n\nconst ABSTRACTION_KEY = Symbol(\"Tzip16ContractAbstractionObjectKey\");\n\nexport function tzip16<T extends ContractAbstraction<ContractProvider | Wallet>>(abs: T, context: Context) {\n return Object.assign(abs, {\n // namespace tzip16\n tzip16 (this: ContractAbstraction<ContractProvider | Wallet> & { [ABSTRACTION_KEY]?: Tzip16ContractAbstraction}) {\n if (!this[ABSTRACTION_KEY]) {\n this[ABSTRACTION_KEY] = new Tzip16ContractAbstraction(this, context as MetadataContext);\n }\n \n return this[ABSTRACTION_KEY]!\n }\n })\n}","import CryptoJS from \"crypto-js\";\n\nexport function calculateSHA256Hash(preimage: string): string {\n return CryptoJS.SHA256(preimage).toString(CryptoJS.enc.Hex);\n}","import { ContractAbstraction, ContractProvider, Wallet, Context } from '@taquito/taquito';\nimport { MetadataInterface } from './metadata-interface';\nimport { MetadataContext } from './tzip16-contract-abstraction';\nimport { InvalidMetadata, InvalidUri, ProtocolNotSupported } from './tzip16-errors';\nimport { calculateSHA256Hash } from './tzip16-utils';\n\nexport interface MetadataProviderInterface {\n provideMetadata(contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, uri: string, context: MetadataContext): Promise<MetadataEnvelope>;\n}\n\nexport interface MetadataEnvelope {\n uri: string;\n integrityCheckResult?: boolean;\n sha256Hash?: string;\n metadata: MetadataInterface;\n}\nexport interface Handler {\n getMetadata(\n contractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n uri: Tzip16Uri,\n context: Context\n ): Promise<string>\n}\n\nexport interface Tzip16Uri {\n sha256hash: string | undefined;\n protocol: string;\n location: string;\n}\n\n/**\n * @description: Metadata Provider\n */\nexport class MetadataProvider implements MetadataProviderInterface {\n private readonly PROTOCOL_REGEX = /(?:sha256\\:\\/\\/0x(.*)\\/)?(https?|ipfs|tezos-storage)\\:(.*)/;\n\n constructor(private handlers: Map<string, Handler>) {}\n\n /**\n * @description Fetch the metadata by using the appropriate handler based on the protcol found in the URI\n * @returns an object which contains the uri, the metadata, an optional integrity check result and an optional SHA256 hash\n * @param _contractAbstraction the contract abstraction which contains the URI in its storage\n * @param _uri the decoded uri found in the storage\n * @param context the TezosToolkit Context\n */\n async provideMetadata(contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, uri: string, context: Context): Promise<MetadataEnvelope> {\n\n const uriInfo = this.extractProtocolInfo(uri);\n if (!uriInfo || !uriInfo.location) {\n throw new InvalidUri(uri);\n }\n\n const handler = this.handlers.get(uriInfo.protocol);\n if (!handler) {\n throw new ProtocolNotSupported(uriInfo.protocol);\n }\n\n const metadata = await handler.getMetadata(contractAbstraction, uriInfo, context);\n const sha256Hash = calculateSHA256Hash(metadata);\n let metadataJSON;\n try {\n metadataJSON = JSON.parse(metadata);\n } catch (ex) {\n throw new InvalidMetadata(metadata);\n }\n\n return {\n uri,\n metadata: metadataJSON,\n integrityCheckResult: uriInfo.sha256hash ? uriInfo.sha256hash === sha256Hash : undefined,\n sha256Hash: uriInfo.sha256hash ? sha256Hash : undefined\n }\n }\n\n private extractProtocolInfo(_uri: string) {\n const extractor = this.PROTOCOL_REGEX.exec(_uri);\n if (!extractor) return;\n return {\n sha256hash: extractor[1],\n protocol: extractor[2],\n location: extractor[3]\n }\n }\n}\n","import { Context, Extension } from \"@taquito/taquito\";\nimport { Handler, MetadataProvider, MetadataProviderInterface } from \"./metadata-provider\";\nimport { HttpHandler } from \"./handlers/http-handler\";\nimport { TezosStorageHandler } from \"./handlers/tezos-storage-handler\";\nimport { IpfsHttpHandler } from \"./handlers/ipfs-handler\";\n\nexport const DEFAULT_HANDLERS = new Map<string, Handler>([\n ['http', new HttpHandler()],\n ['https', new HttpHandler()],\n ['tezos-storage', new TezosStorageHandler()],\n ['ipfs', new IpfsHttpHandler()]\n])\nexport class Tzip16Module implements Extension {\n private _metadataProvider: MetadataProviderInterface;\n\n constructor(metadataProvider?: MetadataProviderInterface) {\n this._metadataProvider = metadataProvider ? metadataProvider : new MetadataProvider(DEFAULT_HANDLERS);\n }\n\n configureContext(context: Context) {\n Object.assign(context, { metadataProvider: this._metadataProvider });\n }\n}","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\n/* tslint:disable */\nexport const VERSION = {\n \"commitHash\": \"a84011c75c8868b4484afc2bf8347ce3d28cf6da\",\n \"version\": \"10.1.0-methodsObject.0\"\n};\n/* tslint:enable */\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taquito-tzip16.es5.js","sources":["../src/handlers/http-handler.ts","../src/tzip16-errors.ts","../src/handlers/tezos-storage-handler.ts","../src/handlers/ipfs-handler.ts","../src/metadata-interface.ts","../src/viewKind/michelson-storage-view.ts","../src/viewKind/viewFactory.ts","../src/tzip16-contract-abstraction.ts","../src/composer.ts","../src/tzip16-utils.ts","../src/metadata-provider.ts","../src/tzip16-extension.ts","../src/version.ts"],"sourcesContent":["import { HttpBackend } from \"@taquito/http-utils\";\nimport { ContractAbstraction, ContractProvider, Wallet, Context } from \"@taquito/taquito\";\nimport { Handler, Tzip16Uri } from \"../metadata-provider\";\n\nexport class HttpHandler implements Handler {\n httpBackend: HttpBackend;\n constructor() {\n this.httpBackend = new HttpBackend();\n }\n async getMetadata(_contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, { protocol, location }: Tzip16Uri, _context: Context) {\n return this.httpBackend.createRequest<string>({\n url: `${protocol}:${decodeURIComponent(location)}`,\n method: 'GET',\n mimeType: \"text; charset=utf-8\",\n json: false\n })\n }\n}","export class BigMapMetadataNotFound implements Error {\n name = 'BigMapMetadataNotFound';\n message = 'Non-compliance with the TZIP-016 standard. No big map named metadata was found in the contract storage.';\n}\n\nexport class MetadataNotFound implements Error {\n name: string = 'MetadataNotFound';\n message: string;\n\n constructor(public info: string) {\n this.message = `No metadata was found in the contract storage. ${info}`;\n }\n}\n\nexport class UriNotFound implements Error {\n name = 'UriNotFound';\n message = 'Non-compliance with the TZIP-016 standard. No URI found in the contract storage.';\n}\n\nexport class InvalidUri implements Error {\n name: string = 'InvalidUri';\n message: string;\n\n constructor(public uri: string) {\n this.message = `Non-compliance with the TZIP-016 standard. The URI is invalid: ${uri}.`;\n }\n}\n\nexport class InvalidMetadata implements Error {\n name: string = 'InvalidMetadata';\n message: string;\n\n constructor(public invalidMetadata: string) {\n this.message = `The metadata found at the pointed ressource are not compliant with tzip16 standard: ${invalidMetadata}.`;\n }\n}\n\nexport class ProtocolNotSupported implements Error {\n name: string = 'ProtocolNotSupported';\n message: string;\n\n constructor(public protocol: string) {\n this.message = `The protocol found in the URI is not supported: ${protocol}.`;\n }\n}\n\nexport class InvalidMetadataType implements Error {\n name = 'InvalidMetadataType';\n message = 'The contract does not comply with the tzip16 standard. The type of metadata should be bytes.';\n}\n\nexport class UnconfiguredMetadataProviderError implements Error {\n name = 'UnconfiguredMetadataProviderError';\n message =\n 'No metadata provider has been configured. The default one can be configured by calling addExtension(new Tzip16Module()) on your TezosToolkit instance.';\n}\n\nexport class ForbiddenInstructionInViewCode implements Error {\n name: string = 'ForbiddenInstructionInViewCode';\n message: string;\n\n constructor(public instruction: string) {\n this.message = `Error found in the code of the view. It contains a forbidden instruction: ${instruction}.`;\n }\n}\n\nexport class NoParameterExpectedError implements Error {\n name: string = 'NoParameterExpectedError';\n message: string;\n constructor(public viewName: string, public args: any[]) {\n this.message = `${viewName} Received ${args.length} arguments while expecting no parameter or 'Unit'`;\n }\n}\n\nexport class InvalidViewParameterError implements Error {\n name: string = 'InvalidViewParameterError';\n message: string;\n constructor(public viewName: string, public sigs: any[], public args: any[]) {\n this.message = `${viewName} Received ${args.length} arguments while expecting one of the following signatures (${JSON.stringify(sigs)})`;\n }\n}\n","import { Schema } from '@taquito/michelson-encoder';\nimport { Context, ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { Handler, Tzip16Uri } from '../metadata-provider';\nimport { bytes2Char } from '@taquito/utils';\nimport { InvalidMetadataType, BigMapMetadataNotFound, InvalidUri, MetadataNotFound } from '../tzip16-errors';\n\nconst typeOfValueToFind = {\n prim: 'big_map',\n args: [{ prim: 'string' }, { prim: 'bytes' }],\n annots: ['%metadata']\n};\n\ntype BigMapId = { int: string };\n\nexport class TezosStorageHandler implements Handler {\n private readonly TEZOS_STORAGE_REGEX = /^(?:\\/\\/(KT1\\w{33})(?:\\.(.+))?\\/)?([\\w|\\%]+)$/;\n\n async getMetadata(\n contractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n { location }: Tzip16Uri,\n context: Context\n ) {\n const parsedTezosStorageUri = this.parseTezosStorageUri(location);\n if (!parsedTezosStorageUri) {\n throw new InvalidUri(`tezos-storage:${location}`);\n }\n const storage: any = await context.rpc.getScript(parsedTezosStorageUri.contractAddress || contractAbstraction.address);\n const bigMapId = Schema.fromRPCResponse({ script: storage }).FindFirstInTopLevelPair<BigMapId>(\n storage.storage,\n typeOfValueToFind\n );\n\n if (!bigMapId) {\n throw new BigMapMetadataNotFound();\n }\n\n const bytes = await context.contract.getBigMapKeyByID<string>(\n bigMapId['int'].toString(),\n parsedTezosStorageUri.path,\n new Schema(typeOfValueToFind)\n );\n\n if (!bytes) {\n throw new MetadataNotFound(`No '${parsedTezosStorageUri.path}' key found in the big map %metadata of the contract ${parsedTezosStorageUri.contractAddress || contractAbstraction.address}`);\n }\n\n if (!/^[0-9a-fA-F]*$/.test(bytes)) {\n throw new InvalidMetadataType();\n }\n return bytes2Char(bytes);\n }\n\n /**\n * @description Extract the smart contract address, the network and the path pointing to the metadata from the uri\n * @returns an object which contains the properties allowing to find where the metadata are located or it returns undefined if the uri is not valid\n * @param tezosStorageURI URI (without the tezos-storage prefix)\n */\n private parseTezosStorageUri(tezosStorageURI: string) {\n const extractor = this.TEZOS_STORAGE_REGEX.exec(tezosStorageURI);\n if (!extractor) return;\n return {\n contractAddress: extractor[1],\n network: extractor[2],\n path: decodeURIComponent(extractor[3])\n };\n }\n}\n","import { HttpBackend } from \"@taquito/http-utils\";\nimport { ContractAbstraction, ContractProvider, Wallet, Context } from \"@taquito/taquito\";\nimport { Handler, Tzip16Uri } from \"../metadata-provider\";\n\nexport class IpfsHttpHandler implements Handler {\n private _ipfsGateway: string;\n private _httpBackend = new HttpBackend();\n\n constructor(ipfsGatheway?:string){\n this._ipfsGateway = ipfsGatheway? ipfsGatheway: 'ipfs.io';\n }\n\n async getMetadata(_contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, { location }: Tzip16Uri, _context: Context): Promise<string> {\n return this._httpBackend.createRequest<string>({\n url: `https://${this._ipfsGateway}/ipfs/${location.substring(2)}/`,\n method: 'GET',\n headers: {'Content-Type': 'text/plain'},\n mimeType: \"text; charset=utf-8\",\n json: false\n })\n }\n}","import { MichelsonV1Expression } from '@taquito/rpc';\nexport interface MetadataInterface {\n\tname?: string;\n\tdescription?: string;\n\tversion?: string;\n\tlicense?: { name: string; details?: string };\n\tauthors?: string[];\n\thomepage?: string;\n\tsource?: { tools?: string[]; location?: string };\n\tinterfaces?: string[];\n\terrors?: ErrorsTzip16;\n\tviews?: Views;\n}\n\nexport type ErrorsTzip16 = Array<\n\t| { error: MichelineTzip16Expression; expansion: MichelineTzip16Expression; languages?: string[] }\n\t| { view: string; languages?: string[] }\n>;\n\nexport enum ViewImplementationType {\n\tMICHELSON_STORAGE = 'michelsonStorageView',\n\tREST_API_QUERY = 'restApiQuery'\n}\n\nexport type ViewImplementation =\n\t| { [ViewImplementationType.MICHELSON_STORAGE]: MichelsonStorageViewType }\n\t| { [ViewImplementationType.REST_API_QUERY]: RestApiQueryType };\n\nexport interface ViewDefinition {\n\tname?: string;\n\tdescription?: string;\n\timplementations?: ViewImplementation[];\n\tpure?: boolean;\n}\n\nexport type Views = ViewDefinition[];\n\nexport type MichelsonStorageViewType = {\n\tparameter?: MichelineTzip16Expression;\n\treturnType: MichelineTzip16Expression;\n\tcode: MichelineTzip16Expression;\n\tannotations?: Array<{ name: string; description: string }>;\n\tversion?: string;\n};\n\nexport type RestApiQueryType = {\n\tspecificationUri: string;\n\tbaseUri?: string;\n\tpath: string;\n\tmethod?: 'GET' | 'POST' | 'PUT';\n};\n\nexport type MichelineTzip16Expression =\n\t| MichelsonV1Expression\n\t| MichelineTzip16Expression[]\n\t| { prim: Unistring; args?: MichelineTzip16Expression[]; annots?: string[] };\n\ntype Unistring = string | { invalid_utf8_string: number[] };\n","import { ParameterSchema } from '@taquito/michelson-encoder';\nimport { RpcClient, MichelsonV1Expression, MichelsonV1ExpressionExtended } from '@taquito/rpc';\nimport { ContractAbstraction, ContractProvider, Protocols, Wallet } from '@taquito/taquito';\nimport { ForbiddenInstructionInViewCode, InvalidViewParameterError, NoParameterExpectedError } from '../tzip16-errors';\nimport { View } from './interface';\n\nexport class MichelsonStorageView implements View {\n constructor(\n private viewName: string,\n private contract: ContractAbstraction<ContractProvider | Wallet>,\n private rpc: RpcClient,\n private returnType: MichelsonV1Expression,\n private code: MichelsonV1ExpressionExtended[],\n private viewParameterType?: MichelsonV1ExpressionExtended\n ) { }\n\n /**\n * @description According to the tzip-16 standard, the following instructions must not be used in the code of the view:\n * 'AMOUNT', 'CREATE_CONTRACT', 'SENDER', 'SET_DELEGATE', 'SOURCE', and 'TRANSFER_TOKENS'\n * The method throw an error if an illegal instruction is found\n */\n private findForbiddenInstructionInViewCode(code: MichelsonV1ExpressionExtended[]) {\n const illegalInstructions = [\n 'AMOUNT',\n 'CREATE_CONTRACT',\n 'SENDER',\n 'SET_DELEGATE',\n 'SOURCE',\n 'TRANSFER_TOKENS'\n ];\n\n for (let forbiddenInstruction of illegalInstructions) {\n for (let instruction of code) {\n if (instruction.prim === forbiddenInstruction) {\n throw new ForbiddenInstructionInViewCode(forbiddenInstruction);\n }\n if (instruction.args && instruction.args.length !== 0) {\n this.findForbiddenInstructionInViewCode(instruction.args as any);\n }\n }\n }\n }\n\n /**\n * @description According to the tzip-16 standard, in the first version of the specification, the instruction SELF should only be used before ADDRESS\n * The method throws an error is the instruction SELF is present, but not followed by ADDRESS\n */\n private illegalUseOfSelfInstruction(code: MichelsonV1ExpressionExtended[]) {\n for (let instruction of code) {\n if (instruction.prim === 'SELF') {\n const index = code.indexOf(instruction);\n const nextInstruction = code[index + 1] ? code[index + 1].prim : undefined;\n if (nextInstruction !== 'ADDRESS') {\n throw new ForbiddenInstructionInViewCode('the instruction SELF should only be used before ADDRESS');\n }\n }\n if (instruction.args && instruction.args.length !== 0) {\n this.illegalUseOfSelfInstruction(instruction.args as any);\n }\n }\n }\n\n /**\n * @description Loops through the view's code and replace SELF, BALANCE, NOW, and CHAIN_ID with Michelson expressions that match the current context, if applicable.\n */\n private adaptViewCodeToContext(\n code: MichelsonV1ExpressionExtended[],\n contractBalance: string,\n blockTimeStamp: string,\n chainId: string\n ) {\n const instructionsToReplace = {\n SELF: [\n { prim: 'PUSH', args: [{ prim: 'address' }, { string: this.contract.address }] },\n { prim: 'CONTRACT', args: [{ prim: 'unit' }] },\n { prim: 'IF_NONE', args: [[{ prim: 'UNIT' }, { prim: 'FAILWITH' }], []] }\n ],\n BALANCE: [{ prim: 'PUSH', args: [{ prim: 'mutez' }, { int: contractBalance }] }],\n NOW: [{ prim: 'PUSH', args: [{ prim: 'timestamp' }, { string: blockTimeStamp }] }],\n CHAIN_ID: [{ prim: 'PUSH', args: [{ prim: 'string' }, { string: chainId }] }]\n };\n\n code.forEach((x: any, i: any) => {\n for (let instruction in instructionsToReplace) {\n if (x.prim === instruction) {\n code[i] = Object(instructionsToReplace)[instruction];\n }\n if (x.args && x.args.length !== 0) {\n this.adaptViewCodeToContext(x.args, contractBalance, blockTimeStamp, chainId);\n }\n }\n });\n return code;\n }\n\n private validateArgs = (args: any[], schema: ParameterSchema, viewName: string) => {\n const sigs = schema.ExtractSignatures();\n\n if (!sigs.find((x: any[]) => x.length === args.length)) {\n throw new InvalidViewParameterError(viewName, sigs, args);\n }\n };\n\n private formatArgsAndParameter(argView: any[]) {\n let args = argView;\n let viewParameterType = this.viewParameterType;\n if (!viewParameterType) {\n viewParameterType = { args: [], prim: 'unit', annots: [] };\n }\n\n if (viewParameterType.prim === 'unit') {\n if (args.length === 0) {\n args = ['Unit'];\n }\n if (args.length !== 0 && args[0] !== 'Unit') {\n throw new NoParameterExpectedError(this.viewName, argView);\n }\n }\n const parameterViewSchema = new ParameterSchema(viewParameterType);\n this.validateArgs(args, parameterViewSchema, this.viewName);\n const arg = parameterViewSchema.Encode(...args);\n return { arg, viewParameterType };\n }\n\n async executeView(...args: any[]) {\n // validate view code against tzip-16 specifications\n this.findForbiddenInstructionInViewCode(this.code);\n this.illegalUseOfSelfInstruction(this.code);\n\n const { arg, viewParameterType } = this.formatArgsAndParameter(args);\n\n const storageType: any = this.contract.script.code.find((x: any) => x.prim === 'storage');\n const storageArgs = storageType.args[0];\n const storageValue: any = this.contract.script.storage;\n\n // currentContext\n const chainId = await this.rpc.getChainId();\n const contractBalance = (await this.rpc.getBalance(this.contract.address)).toString();\n const block = await this.rpc.getBlock();\n const blockTimestamp = block.header.timestamp.toString();\n const protocolHash = block.protocol;\n\n const code = this.adaptViewCodeToContext(this.code, contractBalance, blockTimestamp, chainId);\n\n if(!this.viewParameterType) {\n code.unshift({ prim: 'CDR' })\n }\n\n const viewScript = {\n script: [\n { prim: 'parameter', args: [{ prim: 'pair', args: [viewParameterType, storageArgs] }] },\n { prim: 'storage', args: [{ prim: 'option', args: [this.returnType] }] },\n {\n prim: 'code',\n args: [\n [\n { prim: 'CAR' }, \n code,\n { prim: 'SOME' }, \n { prim: 'NIL', args: [{ prim: 'operation' }] }, \n { prim: 'PAIR' }\n ]\n ]\n }\n ],\n storage: { prim: 'None' },\n input: { prim: 'Pair', args: [arg, storageValue] },\n amount: '0',\n chain_id: chainId,\n balance: '0'\n };\n\n const result: any = await this.rpc.runCode(viewScript as any);\n const viewResultSchema = new ParameterSchema(this.returnType);\n return viewResultSchema.Execute(result.storage.args[0]);\n }\n}\n","import { RpcClient } from '@taquito/rpc';\nimport { ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { ViewImplementation, ViewImplementationType } from '../metadata-interface';\nimport { MichelsonStorageView } from './michelson-storage-view';\n\nexport class ViewFactory {\n getView(\n viewName: string,\n rpc: RpcClient,\n contract: ContractAbstraction<ContractProvider | Wallet>,\n viewImplementation: ViewImplementation\n ) {\n if (this.isMichelsonStorageView(viewImplementation)) {\n const viewValues = viewImplementation[ViewImplementationType.MICHELSON_STORAGE];\n if (!viewValues.returnType || !viewValues.code) {\n console.warn(\n `${viewName} is missing mandatory code or returnType property therefore it will be skipped.`\n );\n return;\n }\n return () => {\n const view = new MichelsonStorageView(\n viewName,\n contract,\n rpc,\n viewValues.returnType as any,\n viewValues.code as any,\n viewValues.parameter as any\n );\n return view;\n };\n }\n }\n\n getImplementationType(viewImplementation: ViewImplementation) {\n return Object.keys(viewImplementation)[0];\n }\n\n private isMichelsonStorageView(\n viewImplementation: ViewImplementation\n ): viewImplementation is { [ViewImplementationType.MICHELSON_STORAGE]: any } {\n return this.getImplementationType(viewImplementation) === ViewImplementationType.MICHELSON_STORAGE;\n }\n}\n","import { BigMapAbstraction, Context, ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { bytes2Char } from '@taquito/utils';\nimport { MetadataEnvelope, MetadataProviderInterface } from './metadata-provider';\nimport { BigMapMetadataNotFound, UnconfiguredMetadataProviderError, UriNotFound } from './tzip16-errors';\nimport BigNumber from 'bignumber.js';\nimport { Schema } from '@taquito/michelson-encoder';\nimport { ViewFactory } from './viewKind/viewFactory';\nimport { View } from './viewKind/interface';\nimport { ViewDefinition } from './metadata-interface';\n\nexport type MetadataContext = Context & {\n metadataProvider: MetadataProviderInterface;\n};\n\ntype BigMapId = { int: string };\n\nconst metadataBigMapType = {\n prim: 'big_map',\n args: [{ prim: 'string' }, { prim: 'bytes' }],\n annots: ['%metadata']\n};\nexport class Tzip16ContractAbstraction {\n private _metadataProvider: MetadataProviderInterface;\n private _metadataEnvelope?: MetadataEnvelope;\n private _viewFactory = new ViewFactory();\n private _metadataViewsObject: { [key: string]: () => View } = {};\n\n constructor(\n private constractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n private context: MetadataContext\n ) {\n this._metadataProvider = context.metadataProvider;\n }\n\n private findMetadataBigMap(): BigMapAbstraction {\n const metadataBigMapId = this.constractAbstraction.schema.FindFirstInTopLevelPair<BigMapId>(\n this.constractAbstraction.script.storage,\n metadataBigMapType\n );\n\n if (!metadataBigMapId) {\n throw new BigMapMetadataNotFound();\n }\n\n return new BigMapAbstraction(\n new BigNumber(metadataBigMapId['int']),\n new Schema(metadataBigMapType),\n this.context.contract\n );\n }\n\n private async getUriOrFail() {\n const metadataBigMap = this.findMetadataBigMap();\n const uri = await metadataBigMap.get<string>('');\n if (!uri) {\n throw new UriNotFound();\n }\n return uri;\n }\n\n /**\n * @description Return an object containing the metadata, the uri, an optional integrity check result and an optional sha256 hash\n */\n async getMetadata() {\n if (!this._metadataProvider) {\n throw new UnconfiguredMetadataProviderError();\n }\n if (!this._metadataEnvelope) {\n const uri = await this.getUriOrFail();\n this._metadataEnvelope = await this._metadataProvider.provideMetadata(\n this.constractAbstraction,\n bytes2Char(uri),\n this.context\n );\n }\n return this._metadataEnvelope;\n }\n\n async metadataViews() {\n if (Object.keys(this._metadataViewsObject).length === 0) {\n await this.initializeMetadataViewsList();\n }\n return this._metadataViewsObject;\n }\n\n private async initializeMetadataViewsList() {\n const { metadata } = await this.getMetadata();\n const metadataViews: any = {};\n metadata.views?.forEach((view) => this.createViewImplementations(view, metadataViews))\n this._metadataViewsObject = metadataViews;\n }\n\n private generateIndexedViewName(viewName: string, metadataViews: {}) {\n let i = 1;\n if (viewName in metadataViews) {\n while (`${viewName}${i}` in metadataViews) {\n i++;\n }\n viewName = `${viewName}${i}`;\n }\n return viewName;\n }\n\n private createViewImplementations(view: ViewDefinition, metadataViews: any) {\n for (let viewImplementation of view?.implementations ?? []) {\n if (view.name) {\n // when views have the same name, add an index at the end of the name\n const viewName = this.generateIndexedViewName(view.name, metadataViews);\n const metadataView = this._viewFactory.getView(\n viewName,\n this.context.rpc,\n this.constractAbstraction,\n viewImplementation\n );\n if (metadataView) {\n metadataViews[viewName] = metadataView;\n } else {\n console.warn(`Skipped generating ${viewName} because the view has an unsupported type: ${this._viewFactory.getImplementationType(viewImplementation)}`)\n }\n }\n }\n }\n}\n","import { Context, ContractAbstraction, ContractProvider, Wallet } from \"@taquito/taquito\";\nimport { MetadataContext, Tzip16ContractAbstraction } from './tzip16-contract-abstraction'\n\nconst ABSTRACTION_KEY = Symbol(\"Tzip16ContractAbstractionObjectKey\");\n\nexport function tzip16<T extends ContractAbstraction<ContractProvider | Wallet>>(abs: T, context: Context) {\n return Object.assign(abs, {\n // namespace tzip16\n tzip16 (this: ContractAbstraction<ContractProvider | Wallet> & { [ABSTRACTION_KEY]?: Tzip16ContractAbstraction}) {\n if (!this[ABSTRACTION_KEY]) {\n this[ABSTRACTION_KEY] = new Tzip16ContractAbstraction(this, context as MetadataContext);\n }\n \n return this[ABSTRACTION_KEY]!\n }\n })\n}","import CryptoJS from \"crypto-js\";\n\nexport function calculateSHA256Hash(preimage: string): string {\n return CryptoJS.SHA256(preimage).toString(CryptoJS.enc.Hex);\n}","import { ContractAbstraction, ContractProvider, Wallet, Context } from '@taquito/taquito';\nimport { MetadataInterface } from './metadata-interface';\nimport { MetadataContext } from './tzip16-contract-abstraction';\nimport { InvalidMetadata, InvalidUri, ProtocolNotSupported } from './tzip16-errors';\nimport { calculateSHA256Hash } from './tzip16-utils';\n\nexport interface MetadataProviderInterface {\n provideMetadata(contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, uri: string, context: MetadataContext): Promise<MetadataEnvelope>;\n}\n\nexport interface MetadataEnvelope {\n uri: string;\n integrityCheckResult?: boolean;\n sha256Hash?: string;\n metadata: MetadataInterface;\n}\nexport interface Handler {\n getMetadata(\n contractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n uri: Tzip16Uri,\n context: Context\n ): Promise<string>\n}\n\nexport interface Tzip16Uri {\n sha256hash: string | undefined;\n protocol: string;\n location: string;\n}\n\n/**\n * @description: Metadata Provider\n */\nexport class MetadataProvider implements MetadataProviderInterface {\n private readonly PROTOCOL_REGEX = /(?:sha256\\:\\/\\/0x(.*)\\/)?(https?|ipfs|tezos-storage)\\:(.*)/;\n\n constructor(private handlers: Map<string, Handler>) {}\n\n /**\n * @description Fetch the metadata by using the appropriate handler based on the protcol found in the URI\n * @returns an object which contains the uri, the metadata, an optional integrity check result and an optional SHA256 hash\n * @param _contractAbstraction the contract abstraction which contains the URI in its storage\n * @param _uri the decoded uri found in the storage\n * @param context the TezosToolkit Context\n */\n async provideMetadata(contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, uri: string, context: Context): Promise<MetadataEnvelope> {\n\n const uriInfo = this.extractProtocolInfo(uri);\n if (!uriInfo || !uriInfo.location) {\n throw new InvalidUri(uri);\n }\n\n const handler = this.handlers.get(uriInfo.protocol);\n if (!handler) {\n throw new ProtocolNotSupported(uriInfo.protocol);\n }\n\n const metadata = await handler.getMetadata(contractAbstraction, uriInfo, context);\n const sha256Hash = calculateSHA256Hash(metadata);\n let metadataJSON;\n try {\n metadataJSON = JSON.parse(metadata);\n } catch (ex) {\n throw new InvalidMetadata(metadata);\n }\n\n return {\n uri,\n metadata: metadataJSON,\n integrityCheckResult: uriInfo.sha256hash ? uriInfo.sha256hash === sha256Hash : undefined,\n sha256Hash: uriInfo.sha256hash ? sha256Hash : undefined\n }\n }\n\n private extractProtocolInfo(_uri: string) {\n const extractor = this.PROTOCOL_REGEX.exec(_uri);\n if (!extractor) return;\n return {\n sha256hash: extractor[1],\n protocol: extractor[2],\n location: extractor[3]\n }\n }\n}\n","import { Context, Extension } from \"@taquito/taquito\";\nimport { Handler, MetadataProvider, MetadataProviderInterface } from \"./metadata-provider\";\nimport { HttpHandler } from \"./handlers/http-handler\";\nimport { TezosStorageHandler } from \"./handlers/tezos-storage-handler\";\nimport { IpfsHttpHandler } from \"./handlers/ipfs-handler\";\n\nexport const DEFAULT_HANDLERS = new Map<string, Handler>([\n ['http', new HttpHandler()],\n ['https', new HttpHandler()],\n ['tezos-storage', new TezosStorageHandler()],\n ['ipfs', new IpfsHttpHandler()]\n])\nexport class Tzip16Module implements Extension {\n private _metadataProvider: MetadataProviderInterface;\n\n constructor(metadataProvider?: MetadataProviderInterface) {\n this._metadataProvider = metadataProvider ? metadataProvider : new MetadataProvider(DEFAULT_HANDLERS);\n }\n\n configureContext(context: Context) {\n Object.assign(context, { metadataProvider: this._metadataProvider });\n }\n}","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\n/* tslint:disable */\nexport const VERSION = {\n \"commitHash\": \"eb5b2c4973cd11098b68ce62eb6702dea376e569\",\n \"version\": \"10.1.1\"\n};\n/* tslint:enable */\n"],"names":[],"mappings":"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"}
|
|
@@ -754,8 +754,8 @@
|
|
|
754
754
|
// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
|
|
755
755
|
/* tslint:disable */
|
|
756
756
|
var VERSION = {
|
|
757
|
-
"commitHash": "
|
|
758
|
-
"version": "10.1.
|
|
757
|
+
"commitHash": "eb5b2c4973cd11098b68ce62eb6702dea376e569",
|
|
758
|
+
"version": "10.1.1"
|
|
759
759
|
};
|
|
760
760
|
/* tslint:enable */
|
|
761
761
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taquito-tzip16.umd.js","sources":["../src/handlers/http-handler.ts","../src/tzip16-errors.ts","../src/handlers/tezos-storage-handler.ts","../src/handlers/ipfs-handler.ts","../src/metadata-interface.ts","../src/viewKind/michelson-storage-view.ts","../src/viewKind/viewFactory.ts","../src/tzip16-contract-abstraction.ts","../src/composer.ts","../src/tzip16-utils.ts","../src/metadata-provider.ts","../src/tzip16-extension.ts","../src/version.ts"],"sourcesContent":["import { HttpBackend } from \"@taquito/http-utils\";\nimport { ContractAbstraction, ContractProvider, Wallet, Context } from \"@taquito/taquito\";\nimport { Handler, Tzip16Uri } from \"../metadata-provider\";\n\nexport class HttpHandler implements Handler {\n httpBackend: HttpBackend;\n constructor() {\n this.httpBackend = new HttpBackend();\n }\n async getMetadata(_contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, { protocol, location }: Tzip16Uri, _context: Context) {\n return this.httpBackend.createRequest<string>({\n url: `${protocol}:${decodeURIComponent(location)}`,\n method: 'GET',\n mimeType: \"text; charset=utf-8\",\n json: false\n })\n }\n}","export class BigMapMetadataNotFound implements Error {\n name = 'BigMapMetadataNotFound';\n message = 'Non-compliance with the TZIP-016 standard. No big map named metadata was found in the contract storage.';\n}\n\nexport class MetadataNotFound implements Error {\n name: string = 'MetadataNotFound';\n message: string;\n\n constructor(public info: string) {\n this.message = `No metadata was found in the contract storage. ${info}`;\n }\n}\n\nexport class UriNotFound implements Error {\n name = 'UriNotFound';\n message = 'Non-compliance with the TZIP-016 standard. No URI found in the contract storage.';\n}\n\nexport class InvalidUri implements Error {\n name: string = 'InvalidUri';\n message: string;\n\n constructor(public uri: string) {\n this.message = `Non-compliance with the TZIP-016 standard. The URI is invalid: ${uri}.`;\n }\n}\n\nexport class InvalidMetadata implements Error {\n name: string = 'InvalidMetadata';\n message: string;\n\n constructor(public invalidMetadata: string) {\n this.message = `The metadata found at the pointed ressource are not compliant with tzip16 standard: ${invalidMetadata}.`;\n }\n}\n\nexport class ProtocolNotSupported implements Error {\n name: string = 'ProtocolNotSupported';\n message: string;\n\n constructor(public protocol: string) {\n this.message = `The protocol found in the URI is not supported: ${protocol}.`;\n }\n}\n\nexport class InvalidMetadataType implements Error {\n name = 'InvalidMetadataType';\n message = 'The contract does not comply with the tzip16 standard. The type of metadata should be bytes.';\n}\n\nexport class UnconfiguredMetadataProviderError implements Error {\n name = 'UnconfiguredMetadataProviderError';\n message =\n 'No metadata provider has been configured. The default one can be configured by calling addExtension(new Tzip16Module()) on your TezosToolkit instance.';\n}\n\nexport class ForbiddenInstructionInViewCode implements Error {\n name: string = 'ForbiddenInstructionInViewCode';\n message: string;\n\n constructor(public instruction: string) {\n this.message = `Error found in the code of the view. It contains a forbidden instruction: ${instruction}.`;\n }\n}\n\nexport class NoParameterExpectedError implements Error {\n name: string = 'NoParameterExpectedError';\n message: string;\n constructor(public viewName: string, public args: any[]) {\n this.message = `${viewName} Received ${args.length} arguments while expecting no parameter or 'Unit'`;\n }\n}\n\nexport class InvalidViewParameterError implements Error {\n name: string = 'InvalidViewParameterError';\n message: string;\n constructor(public viewName: string, public sigs: any[], public args: any[]) {\n this.message = `${viewName} Received ${args.length} arguments while expecting one of the following signatures (${JSON.stringify(sigs)})`;\n }\n}\n","import { Schema } from '@taquito/michelson-encoder';\nimport { Context, ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { Handler, Tzip16Uri } from '../metadata-provider';\nimport { bytes2Char } from '@taquito/utils';\nimport { InvalidMetadataType, BigMapMetadataNotFound, InvalidUri, MetadataNotFound } from '../tzip16-errors';\n\nconst typeOfValueToFind = {\n prim: 'big_map',\n args: [{ prim: 'string' }, { prim: 'bytes' }],\n annots: ['%metadata']\n};\n\ntype BigMapId = { int: string };\n\nexport class TezosStorageHandler implements Handler {\n private readonly TEZOS_STORAGE_REGEX = /^(?:\\/\\/(KT1\\w{33})(?:\\.(.+))?\\/)?([\\w|\\%]+)$/;\n\n async getMetadata(\n contractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n { location }: Tzip16Uri,\n context: Context\n ) {\n const parsedTezosStorageUri = this.parseTezosStorageUri(location);\n if (!parsedTezosStorageUri) {\n throw new InvalidUri(`tezos-storage:${location}`);\n }\n const storage: any = await context.rpc.getScript(parsedTezosStorageUri.contractAddress || contractAbstraction.address);\n const bigMapId = Schema.fromRPCResponse({ script: storage }).FindFirstInTopLevelPair<BigMapId>(\n storage.storage,\n typeOfValueToFind\n );\n\n if (!bigMapId) {\n throw new BigMapMetadataNotFound();\n }\n\n const bytes = await context.contract.getBigMapKeyByID<string>(\n bigMapId['int'].toString(),\n parsedTezosStorageUri.path,\n new Schema(typeOfValueToFind)\n );\n\n if (!bytes) {\n throw new MetadataNotFound(`No '${parsedTezosStorageUri.path}' key found in the big map %metadata of the contract ${parsedTezosStorageUri.contractAddress || contractAbstraction.address}`);\n }\n\n if (!/^[0-9a-fA-F]*$/.test(bytes)) {\n throw new InvalidMetadataType();\n }\n return bytes2Char(bytes);\n }\n\n /**\n * @description Extract the smart contract address, the network and the path pointing to the metadata from the uri\n * @returns an object which contains the properties allowing to find where the metadata are located or it returns undefined if the uri is not valid\n * @param tezosStorageURI URI (without the tezos-storage prefix)\n */\n private parseTezosStorageUri(tezosStorageURI: string) {\n const extractor = this.TEZOS_STORAGE_REGEX.exec(tezosStorageURI);\n if (!extractor) return;\n return {\n contractAddress: extractor[1],\n network: extractor[2],\n path: decodeURIComponent(extractor[3])\n };\n }\n}\n","import { HttpBackend } from \"@taquito/http-utils\";\nimport { ContractAbstraction, ContractProvider, Wallet, Context } from \"@taquito/taquito\";\nimport { Handler, Tzip16Uri } from \"../metadata-provider\";\n\nexport class IpfsHttpHandler implements Handler {\n private _ipfsGateway: string;\n private _httpBackend = new HttpBackend();\n\n constructor(ipfsGatheway?:string){\n this._ipfsGateway = ipfsGatheway? ipfsGatheway: 'ipfs.io';\n }\n\n async getMetadata(_contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, { location }: Tzip16Uri, _context: Context): Promise<string> {\n return this._httpBackend.createRequest<string>({\n url: `https://${this._ipfsGateway}/ipfs/${location.substring(2)}/`,\n method: 'GET',\n headers: {'Content-Type': 'text/plain'},\n mimeType: \"text; charset=utf-8\",\n json: false\n })\n }\n}","import { MichelsonV1Expression } from '@taquito/rpc';\nexport interface MetadataInterface {\n\tname?: string;\n\tdescription?: string;\n\tversion?: string;\n\tlicense?: { name: string; details?: string };\n\tauthors?: string[];\n\thomepage?: string;\n\tsource?: { tools?: string[]; location?: string };\n\tinterfaces?: string[];\n\terrors?: ErrorsTzip16;\n\tviews?: Views;\n}\n\nexport type ErrorsTzip16 = Array<\n\t| { error: MichelineTzip16Expression; expansion: MichelineTzip16Expression; languages?: string[] }\n\t| { view: string; languages?: string[] }\n>;\n\nexport enum ViewImplementationType {\n\tMICHELSON_STORAGE = 'michelsonStorageView',\n\tREST_API_QUERY = 'restApiQuery'\n}\n\nexport type ViewImplementation =\n\t| { [ViewImplementationType.MICHELSON_STORAGE]: MichelsonStorageViewType }\n\t| { [ViewImplementationType.REST_API_QUERY]: RestApiQueryType };\n\nexport interface ViewDefinition {\n\tname?: string;\n\tdescription?: string;\n\timplementations?: ViewImplementation[];\n\tpure?: boolean;\n}\n\nexport type Views = ViewDefinition[];\n\nexport type MichelsonStorageViewType = {\n\tparameter?: MichelineTzip16Expression;\n\treturnType: MichelineTzip16Expression;\n\tcode: MichelineTzip16Expression;\n\tannotations?: Array<{ name: string; description: string }>;\n\tversion?: string;\n};\n\nexport type RestApiQueryType = {\n\tspecificationUri: string;\n\tbaseUri?: string;\n\tpath: string;\n\tmethod?: 'GET' | 'POST' | 'PUT';\n};\n\nexport type MichelineTzip16Expression =\n\t| MichelsonV1Expression\n\t| MichelineTzip16Expression[]\n\t| { prim: Unistring; args?: MichelineTzip16Expression[]; annots?: string[] };\n\ntype Unistring = string | { invalid_utf8_string: number[] };\n","import { ParameterSchema } from '@taquito/michelson-encoder';\nimport { RpcClient, MichelsonV1Expression, MichelsonV1ExpressionExtended } from '@taquito/rpc';\nimport { ContractAbstraction, ContractProvider, Protocols, Wallet } from '@taquito/taquito';\nimport { ForbiddenInstructionInViewCode, InvalidViewParameterError, NoParameterExpectedError } from '../tzip16-errors';\nimport { View } from './interface';\n\nexport class MichelsonStorageView implements View {\n constructor(\n private viewName: string,\n private contract: ContractAbstraction<ContractProvider | Wallet>,\n private rpc: RpcClient,\n private returnType: MichelsonV1Expression,\n private code: MichelsonV1ExpressionExtended[],\n private viewParameterType?: MichelsonV1ExpressionExtended\n ) { }\n\n /**\n * @description According to the tzip-16 standard, the following instructions must not be used in the code of the view:\n * 'AMOUNT', 'CREATE_CONTRACT', 'SENDER', 'SET_DELEGATE', 'SOURCE', and 'TRANSFER_TOKENS'\n * The method throw an error if an illegal instruction is found\n */\n private findForbiddenInstructionInViewCode(code: MichelsonV1ExpressionExtended[]) {\n const illegalInstructions = [\n 'AMOUNT',\n 'CREATE_CONTRACT',\n 'SENDER',\n 'SET_DELEGATE',\n 'SOURCE',\n 'TRANSFER_TOKENS'\n ];\n\n for (let forbiddenInstruction of illegalInstructions) {\n for (let instruction of code) {\n if (instruction.prim === forbiddenInstruction) {\n throw new ForbiddenInstructionInViewCode(forbiddenInstruction);\n }\n if (instruction.args && instruction.args.length !== 0) {\n this.findForbiddenInstructionInViewCode(instruction.args as any);\n }\n }\n }\n }\n\n /**\n * @description According to the tzip-16 standard, in the first version of the specification, the instruction SELF should only be used before ADDRESS\n * The method throws an error is the instruction SELF is present, but not followed by ADDRESS\n */\n private illegalUseOfSelfInstruction(code: MichelsonV1ExpressionExtended[]) {\n for (let instruction of code) {\n if (instruction.prim === 'SELF') {\n const index = code.indexOf(instruction);\n const nextInstruction = code[index + 1] ? code[index + 1].prim : undefined;\n if (nextInstruction !== 'ADDRESS') {\n throw new ForbiddenInstructionInViewCode('the instruction SELF should only be used before ADDRESS');\n }\n }\n if (instruction.args && instruction.args.length !== 0) {\n this.illegalUseOfSelfInstruction(instruction.args as any);\n }\n }\n }\n\n /**\n * @description Loops through the view's code and replace SELF, BALANCE, NOW, and CHAIN_ID with Michelson expressions that match the current context, if applicable.\n */\n private adaptViewCodeToContext(\n code: MichelsonV1ExpressionExtended[],\n contractBalance: string,\n blockTimeStamp: string,\n chainId: string\n ) {\n const instructionsToReplace = {\n SELF: [\n { prim: 'PUSH', args: [{ prim: 'address' }, { string: this.contract.address }] },\n { prim: 'CONTRACT', args: [{ prim: 'unit' }] },\n { prim: 'IF_NONE', args: [[{ prim: 'UNIT' }, { prim: 'FAILWITH' }], []] }\n ],\n BALANCE: [{ prim: 'PUSH', args: [{ prim: 'mutez' }, { int: contractBalance }] }],\n NOW: [{ prim: 'PUSH', args: [{ prim: 'timestamp' }, { string: blockTimeStamp }] }],\n CHAIN_ID: [{ prim: 'PUSH', args: [{ prim: 'string' }, { string: chainId }] }]\n };\n\n code.forEach((x: any, i: any) => {\n for (let instruction in instructionsToReplace) {\n if (x.prim === instruction) {\n code[i] = Object(instructionsToReplace)[instruction];\n }\n if (x.args && x.args.length !== 0) {\n this.adaptViewCodeToContext(x.args, contractBalance, blockTimeStamp, chainId);\n }\n }\n });\n return code;\n }\n\n private validateArgs = (args: any[], schema: ParameterSchema, viewName: string) => {\n const sigs = schema.ExtractSignatures();\n\n if (!sigs.find((x: any[]) => x.length === args.length)) {\n throw new InvalidViewParameterError(viewName, sigs, args);\n }\n };\n\n private formatArgsAndParameter(argView: any[]) {\n let args = argView;\n let viewParameterType = this.viewParameterType;\n if (!viewParameterType) {\n viewParameterType = { args: [], prim: 'unit', annots: [] };\n }\n\n if (viewParameterType.prim === 'unit') {\n if (args.length === 0) {\n args = ['Unit'];\n }\n if (args.length !== 0 && args[0] !== 'Unit') {\n throw new NoParameterExpectedError(this.viewName, argView);\n }\n }\n const parameterViewSchema = new ParameterSchema(viewParameterType);\n this.validateArgs(args, parameterViewSchema, this.viewName);\n const arg = parameterViewSchema.Encode(...args);\n return { arg, viewParameterType };\n }\n\n async executeView(...args: any[]) {\n // validate view code against tzip-16 specifications\n this.findForbiddenInstructionInViewCode(this.code);\n this.illegalUseOfSelfInstruction(this.code);\n\n const { arg, viewParameterType } = this.formatArgsAndParameter(args);\n\n const storageType: any = this.contract.script.code.find((x: any) => x.prim === 'storage');\n const storageArgs = storageType.args[0];\n const storageValue: any = this.contract.script.storage;\n\n // currentContext\n const chainId = await this.rpc.getChainId();\n const contractBalance = (await this.rpc.getBalance(this.contract.address)).toString();\n const block = await this.rpc.getBlock();\n const blockTimestamp = block.header.timestamp.toString();\n const protocolHash = block.protocol;\n\n const code = this.adaptViewCodeToContext(this.code, contractBalance, blockTimestamp, chainId);\n\n if(!this.viewParameterType) {\n code.unshift({ prim: 'CDR' })\n }\n\n const viewScript = {\n script: [\n { prim: 'parameter', args: [{ prim: 'pair', args: [viewParameterType, storageArgs] }] },\n { prim: 'storage', args: [{ prim: 'option', args: [this.returnType] }] },\n {\n prim: 'code',\n args: [\n [\n { prim: 'CAR' }, \n code,\n { prim: 'SOME' }, \n { prim: 'NIL', args: [{ prim: 'operation' }] }, \n { prim: 'PAIR' }\n ]\n ]\n }\n ],\n storage: { prim: 'None' },\n input: { prim: 'Pair', args: [arg, storageValue] },\n amount: '0',\n chain_id: chainId,\n balance: '0'\n };\n\n const result: any = await this.rpc.runCode(viewScript as any);\n const viewResultSchema = new ParameterSchema(this.returnType);\n return viewResultSchema.Execute(result.storage.args[0]);\n }\n}\n","import { RpcClient } from '@taquito/rpc';\nimport { ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { ViewImplementation, ViewImplementationType } from '../metadata-interface';\nimport { MichelsonStorageView } from './michelson-storage-view';\n\nexport class ViewFactory {\n getView(\n viewName: string,\n rpc: RpcClient,\n contract: ContractAbstraction<ContractProvider | Wallet>,\n viewImplementation: ViewImplementation\n ) {\n if (this.isMichelsonStorageView(viewImplementation)) {\n const viewValues = viewImplementation[ViewImplementationType.MICHELSON_STORAGE];\n if (!viewValues.returnType || !viewValues.code) {\n console.warn(\n `${viewName} is missing mandatory code or returnType property therefore it will be skipped.`\n );\n return;\n }\n return () => {\n const view = new MichelsonStorageView(\n viewName,\n contract,\n rpc,\n viewValues.returnType as any,\n viewValues.code as any,\n viewValues.parameter as any\n );\n return view;\n };\n }\n }\n\n getImplementationType(viewImplementation: ViewImplementation) {\n return Object.keys(viewImplementation)[0];\n }\n\n private isMichelsonStorageView(\n viewImplementation: ViewImplementation\n ): viewImplementation is { [ViewImplementationType.MICHELSON_STORAGE]: any } {\n return this.getImplementationType(viewImplementation) === ViewImplementationType.MICHELSON_STORAGE;\n }\n}\n","import { BigMapAbstraction, Context, ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { bytes2Char } from '@taquito/utils';\nimport { MetadataEnvelope, MetadataProviderInterface } from './metadata-provider';\nimport { BigMapMetadataNotFound, UnconfiguredMetadataProviderError, UriNotFound } from './tzip16-errors';\nimport BigNumber from 'bignumber.js';\nimport { Schema } from '@taquito/michelson-encoder';\nimport { ViewFactory } from './viewKind/viewFactory';\nimport { View } from './viewKind/interface';\nimport { ViewDefinition } from './metadata-interface';\n\nexport type MetadataContext = Context & {\n metadataProvider: MetadataProviderInterface;\n};\n\ntype BigMapId = { int: string };\n\nconst metadataBigMapType = {\n prim: 'big_map',\n args: [{ prim: 'string' }, { prim: 'bytes' }],\n annots: ['%metadata']\n};\nexport class Tzip16ContractAbstraction {\n private _metadataProvider: MetadataProviderInterface;\n private _metadataEnvelope?: MetadataEnvelope;\n private _viewFactory = new ViewFactory();\n private _metadataViewsObject: { [key: string]: () => View } = {};\n\n constructor(\n private constractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n private context: MetadataContext\n ) {\n this._metadataProvider = context.metadataProvider;\n }\n\n private findMetadataBigMap(): BigMapAbstraction {\n const metadataBigMapId = this.constractAbstraction.schema.FindFirstInTopLevelPair<BigMapId>(\n this.constractAbstraction.script.storage,\n metadataBigMapType\n );\n\n if (!metadataBigMapId) {\n throw new BigMapMetadataNotFound();\n }\n\n return new BigMapAbstraction(\n new BigNumber(metadataBigMapId['int']),\n new Schema(metadataBigMapType),\n this.context.contract\n );\n }\n\n private async getUriOrFail() {\n const metadataBigMap = this.findMetadataBigMap();\n const uri = await metadataBigMap.get<string>('');\n if (!uri) {\n throw new UriNotFound();\n }\n return uri;\n }\n\n /**\n * @description Return an object containing the metadata, the uri, an optional integrity check result and an optional sha256 hash\n */\n async getMetadata() {\n if (!this._metadataProvider) {\n throw new UnconfiguredMetadataProviderError();\n }\n if (!this._metadataEnvelope) {\n const uri = await this.getUriOrFail();\n this._metadataEnvelope = await this._metadataProvider.provideMetadata(\n this.constractAbstraction,\n bytes2Char(uri),\n this.context\n );\n }\n return this._metadataEnvelope;\n }\n\n async metadataViews() {\n if (Object.keys(this._metadataViewsObject).length === 0) {\n await this.initializeMetadataViewsList();\n }\n return this._metadataViewsObject;\n }\n\n private async initializeMetadataViewsList() {\n const { metadata } = await this.getMetadata();\n const metadataViews: any = {};\n metadata.views?.forEach((view) => this.createViewImplementations(view, metadataViews))\n this._metadataViewsObject = metadataViews;\n }\n\n private generateIndexedViewName(viewName: string, metadataViews: {}) {\n let i = 1;\n if (viewName in metadataViews) {\n while (`${viewName}${i}` in metadataViews) {\n i++;\n }\n viewName = `${viewName}${i}`;\n }\n return viewName;\n }\n\n private createViewImplementations(view: ViewDefinition, metadataViews: any) {\n for (let viewImplementation of view?.implementations ?? []) {\n if (view.name) {\n // when views have the same name, add an index at the end of the name\n const viewName = this.generateIndexedViewName(view.name, metadataViews);\n const metadataView = this._viewFactory.getView(\n viewName,\n this.context.rpc,\n this.constractAbstraction,\n viewImplementation\n );\n if (metadataView) {\n metadataViews[viewName] = metadataView;\n } else {\n console.warn(`Skipped generating ${viewName} because the view has an unsupported type: ${this._viewFactory.getImplementationType(viewImplementation)}`)\n }\n }\n }\n }\n}\n","import { Context, ContractAbstraction, ContractProvider, Wallet } from \"@taquito/taquito\";\nimport { MetadataContext, Tzip16ContractAbstraction } from './tzip16-contract-abstraction'\n\nconst ABSTRACTION_KEY = Symbol(\"Tzip16ContractAbstractionObjectKey\");\n\nexport function tzip16<T extends ContractAbstraction<ContractProvider | Wallet>>(abs: T, context: Context) {\n return Object.assign(abs, {\n // namespace tzip16\n tzip16 (this: ContractAbstraction<ContractProvider | Wallet> & { [ABSTRACTION_KEY]?: Tzip16ContractAbstraction}) {\n if (!this[ABSTRACTION_KEY]) {\n this[ABSTRACTION_KEY] = new Tzip16ContractAbstraction(this, context as MetadataContext);\n }\n \n return this[ABSTRACTION_KEY]!\n }\n })\n}","import CryptoJS from \"crypto-js\";\n\nexport function calculateSHA256Hash(preimage: string): string {\n return CryptoJS.SHA256(preimage).toString(CryptoJS.enc.Hex);\n}","import { ContractAbstraction, ContractProvider, Wallet, Context } from '@taquito/taquito';\nimport { MetadataInterface } from './metadata-interface';\nimport { MetadataContext } from './tzip16-contract-abstraction';\nimport { InvalidMetadata, InvalidUri, ProtocolNotSupported } from './tzip16-errors';\nimport { calculateSHA256Hash } from './tzip16-utils';\n\nexport interface MetadataProviderInterface {\n provideMetadata(contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, uri: string, context: MetadataContext): Promise<MetadataEnvelope>;\n}\n\nexport interface MetadataEnvelope {\n uri: string;\n integrityCheckResult?: boolean;\n sha256Hash?: string;\n metadata: MetadataInterface;\n}\nexport interface Handler {\n getMetadata(\n contractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n uri: Tzip16Uri,\n context: Context\n ): Promise<string>\n}\n\nexport interface Tzip16Uri {\n sha256hash: string | undefined;\n protocol: string;\n location: string;\n}\n\n/**\n * @description: Metadata Provider\n */\nexport class MetadataProvider implements MetadataProviderInterface {\n private readonly PROTOCOL_REGEX = /(?:sha256\\:\\/\\/0x(.*)\\/)?(https?|ipfs|tezos-storage)\\:(.*)/;\n\n constructor(private handlers: Map<string, Handler>) {}\n\n /**\n * @description Fetch the metadata by using the appropriate handler based on the protcol found in the URI\n * @returns an object which contains the uri, the metadata, an optional integrity check result and an optional SHA256 hash\n * @param _contractAbstraction the contract abstraction which contains the URI in its storage\n * @param _uri the decoded uri found in the storage\n * @param context the TezosToolkit Context\n */\n async provideMetadata(contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, uri: string, context: Context): Promise<MetadataEnvelope> {\n\n const uriInfo = this.extractProtocolInfo(uri);\n if (!uriInfo || !uriInfo.location) {\n throw new InvalidUri(uri);\n }\n\n const handler = this.handlers.get(uriInfo.protocol);\n if (!handler) {\n throw new ProtocolNotSupported(uriInfo.protocol);\n }\n\n const metadata = await handler.getMetadata(contractAbstraction, uriInfo, context);\n const sha256Hash = calculateSHA256Hash(metadata);\n let metadataJSON;\n try {\n metadataJSON = JSON.parse(metadata);\n } catch (ex) {\n throw new InvalidMetadata(metadata);\n }\n\n return {\n uri,\n metadata: metadataJSON,\n integrityCheckResult: uriInfo.sha256hash ? uriInfo.sha256hash === sha256Hash : undefined,\n sha256Hash: uriInfo.sha256hash ? sha256Hash : undefined\n }\n }\n\n private extractProtocolInfo(_uri: string) {\n const extractor = this.PROTOCOL_REGEX.exec(_uri);\n if (!extractor) return;\n return {\n sha256hash: extractor[1],\n protocol: extractor[2],\n location: extractor[3]\n }\n }\n}\n","import { Context, Extension } from \"@taquito/taquito\";\nimport { Handler, MetadataProvider, MetadataProviderInterface } from \"./metadata-provider\";\nimport { HttpHandler } from \"./handlers/http-handler\";\nimport { TezosStorageHandler } from \"./handlers/tezos-storage-handler\";\nimport { IpfsHttpHandler } from \"./handlers/ipfs-handler\";\n\nexport const DEFAULT_HANDLERS = new Map<string, Handler>([\n ['http', new HttpHandler()],\n ['https', new HttpHandler()],\n ['tezos-storage', new TezosStorageHandler()],\n ['ipfs', new IpfsHttpHandler()]\n])\nexport class Tzip16Module implements Extension {\n private _metadataProvider: MetadataProviderInterface;\n\n constructor(metadataProvider?: MetadataProviderInterface) {\n this._metadataProvider = metadataProvider ? metadataProvider : new MetadataProvider(DEFAULT_HANDLERS);\n }\n\n configureContext(context: Context) {\n Object.assign(context, { metadataProvider: this._metadataProvider });\n }\n}","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\n/* tslint:disable */\nexport const VERSION = {\n \"commitHash\": \"a84011c75c8868b4484afc2bf8347ce3d28cf6da\",\n \"version\": \"10.1.0-methodsObject.0\"\n};\n/* tslint:enable */\n"],"names":["HttpBackend","Schema","bytes2Char","ViewImplementationType","ParameterSchema","BigMapAbstraction","BigNumber","CryptoJS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taquito-tzip16.umd.js","sources":["../src/handlers/http-handler.ts","../src/tzip16-errors.ts","../src/handlers/tezos-storage-handler.ts","../src/handlers/ipfs-handler.ts","../src/metadata-interface.ts","../src/viewKind/michelson-storage-view.ts","../src/viewKind/viewFactory.ts","../src/tzip16-contract-abstraction.ts","../src/composer.ts","../src/tzip16-utils.ts","../src/metadata-provider.ts","../src/tzip16-extension.ts","../src/version.ts"],"sourcesContent":["import { HttpBackend } from \"@taquito/http-utils\";\nimport { ContractAbstraction, ContractProvider, Wallet, Context } from \"@taquito/taquito\";\nimport { Handler, Tzip16Uri } from \"../metadata-provider\";\n\nexport class HttpHandler implements Handler {\n httpBackend: HttpBackend;\n constructor() {\n this.httpBackend = new HttpBackend();\n }\n async getMetadata(_contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, { protocol, location }: Tzip16Uri, _context: Context) {\n return this.httpBackend.createRequest<string>({\n url: `${protocol}:${decodeURIComponent(location)}`,\n method: 'GET',\n mimeType: \"text; charset=utf-8\",\n json: false\n })\n }\n}","export class BigMapMetadataNotFound implements Error {\n name = 'BigMapMetadataNotFound';\n message = 'Non-compliance with the TZIP-016 standard. No big map named metadata was found in the contract storage.';\n}\n\nexport class MetadataNotFound implements Error {\n name: string = 'MetadataNotFound';\n message: string;\n\n constructor(public info: string) {\n this.message = `No metadata was found in the contract storage. ${info}`;\n }\n}\n\nexport class UriNotFound implements Error {\n name = 'UriNotFound';\n message = 'Non-compliance with the TZIP-016 standard. No URI found in the contract storage.';\n}\n\nexport class InvalidUri implements Error {\n name: string = 'InvalidUri';\n message: string;\n\n constructor(public uri: string) {\n this.message = `Non-compliance with the TZIP-016 standard. The URI is invalid: ${uri}.`;\n }\n}\n\nexport class InvalidMetadata implements Error {\n name: string = 'InvalidMetadata';\n message: string;\n\n constructor(public invalidMetadata: string) {\n this.message = `The metadata found at the pointed ressource are not compliant with tzip16 standard: ${invalidMetadata}.`;\n }\n}\n\nexport class ProtocolNotSupported implements Error {\n name: string = 'ProtocolNotSupported';\n message: string;\n\n constructor(public protocol: string) {\n this.message = `The protocol found in the URI is not supported: ${protocol}.`;\n }\n}\n\nexport class InvalidMetadataType implements Error {\n name = 'InvalidMetadataType';\n message = 'The contract does not comply with the tzip16 standard. The type of metadata should be bytes.';\n}\n\nexport class UnconfiguredMetadataProviderError implements Error {\n name = 'UnconfiguredMetadataProviderError';\n message =\n 'No metadata provider has been configured. The default one can be configured by calling addExtension(new Tzip16Module()) on your TezosToolkit instance.';\n}\n\nexport class ForbiddenInstructionInViewCode implements Error {\n name: string = 'ForbiddenInstructionInViewCode';\n message: string;\n\n constructor(public instruction: string) {\n this.message = `Error found in the code of the view. It contains a forbidden instruction: ${instruction}.`;\n }\n}\n\nexport class NoParameterExpectedError implements Error {\n name: string = 'NoParameterExpectedError';\n message: string;\n constructor(public viewName: string, public args: any[]) {\n this.message = `${viewName} Received ${args.length} arguments while expecting no parameter or 'Unit'`;\n }\n}\n\nexport class InvalidViewParameterError implements Error {\n name: string = 'InvalidViewParameterError';\n message: string;\n constructor(public viewName: string, public sigs: any[], public args: any[]) {\n this.message = `${viewName} Received ${args.length} arguments while expecting one of the following signatures (${JSON.stringify(sigs)})`;\n }\n}\n","import { Schema } from '@taquito/michelson-encoder';\nimport { Context, ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { Handler, Tzip16Uri } from '../metadata-provider';\nimport { bytes2Char } from '@taquito/utils';\nimport { InvalidMetadataType, BigMapMetadataNotFound, InvalidUri, MetadataNotFound } from '../tzip16-errors';\n\nconst typeOfValueToFind = {\n prim: 'big_map',\n args: [{ prim: 'string' }, { prim: 'bytes' }],\n annots: ['%metadata']\n};\n\ntype BigMapId = { int: string };\n\nexport class TezosStorageHandler implements Handler {\n private readonly TEZOS_STORAGE_REGEX = /^(?:\\/\\/(KT1\\w{33})(?:\\.(.+))?\\/)?([\\w|\\%]+)$/;\n\n async getMetadata(\n contractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n { location }: Tzip16Uri,\n context: Context\n ) {\n const parsedTezosStorageUri = this.parseTezosStorageUri(location);\n if (!parsedTezosStorageUri) {\n throw new InvalidUri(`tezos-storage:${location}`);\n }\n const storage: any = await context.rpc.getScript(parsedTezosStorageUri.contractAddress || contractAbstraction.address);\n const bigMapId = Schema.fromRPCResponse({ script: storage }).FindFirstInTopLevelPair<BigMapId>(\n storage.storage,\n typeOfValueToFind\n );\n\n if (!bigMapId) {\n throw new BigMapMetadataNotFound();\n }\n\n const bytes = await context.contract.getBigMapKeyByID<string>(\n bigMapId['int'].toString(),\n parsedTezosStorageUri.path,\n new Schema(typeOfValueToFind)\n );\n\n if (!bytes) {\n throw new MetadataNotFound(`No '${parsedTezosStorageUri.path}' key found in the big map %metadata of the contract ${parsedTezosStorageUri.contractAddress || contractAbstraction.address}`);\n }\n\n if (!/^[0-9a-fA-F]*$/.test(bytes)) {\n throw new InvalidMetadataType();\n }\n return bytes2Char(bytes);\n }\n\n /**\n * @description Extract the smart contract address, the network and the path pointing to the metadata from the uri\n * @returns an object which contains the properties allowing to find where the metadata are located or it returns undefined if the uri is not valid\n * @param tezosStorageURI URI (without the tezos-storage prefix)\n */\n private parseTezosStorageUri(tezosStorageURI: string) {\n const extractor = this.TEZOS_STORAGE_REGEX.exec(tezosStorageURI);\n if (!extractor) return;\n return {\n contractAddress: extractor[1],\n network: extractor[2],\n path: decodeURIComponent(extractor[3])\n };\n }\n}\n","import { HttpBackend } from \"@taquito/http-utils\";\nimport { ContractAbstraction, ContractProvider, Wallet, Context } from \"@taquito/taquito\";\nimport { Handler, Tzip16Uri } from \"../metadata-provider\";\n\nexport class IpfsHttpHandler implements Handler {\n private _ipfsGateway: string;\n private _httpBackend = new HttpBackend();\n\n constructor(ipfsGatheway?:string){\n this._ipfsGateway = ipfsGatheway? ipfsGatheway: 'ipfs.io';\n }\n\n async getMetadata(_contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, { location }: Tzip16Uri, _context: Context): Promise<string> {\n return this._httpBackend.createRequest<string>({\n url: `https://${this._ipfsGateway}/ipfs/${location.substring(2)}/`,\n method: 'GET',\n headers: {'Content-Type': 'text/plain'},\n mimeType: \"text; charset=utf-8\",\n json: false\n })\n }\n}","import { MichelsonV1Expression } from '@taquito/rpc';\nexport interface MetadataInterface {\n\tname?: string;\n\tdescription?: string;\n\tversion?: string;\n\tlicense?: { name: string; details?: string };\n\tauthors?: string[];\n\thomepage?: string;\n\tsource?: { tools?: string[]; location?: string };\n\tinterfaces?: string[];\n\terrors?: ErrorsTzip16;\n\tviews?: Views;\n}\n\nexport type ErrorsTzip16 = Array<\n\t| { error: MichelineTzip16Expression; expansion: MichelineTzip16Expression; languages?: string[] }\n\t| { view: string; languages?: string[] }\n>;\n\nexport enum ViewImplementationType {\n\tMICHELSON_STORAGE = 'michelsonStorageView',\n\tREST_API_QUERY = 'restApiQuery'\n}\n\nexport type ViewImplementation =\n\t| { [ViewImplementationType.MICHELSON_STORAGE]: MichelsonStorageViewType }\n\t| { [ViewImplementationType.REST_API_QUERY]: RestApiQueryType };\n\nexport interface ViewDefinition {\n\tname?: string;\n\tdescription?: string;\n\timplementations?: ViewImplementation[];\n\tpure?: boolean;\n}\n\nexport type Views = ViewDefinition[];\n\nexport type MichelsonStorageViewType = {\n\tparameter?: MichelineTzip16Expression;\n\treturnType: MichelineTzip16Expression;\n\tcode: MichelineTzip16Expression;\n\tannotations?: Array<{ name: string; description: string }>;\n\tversion?: string;\n};\n\nexport type RestApiQueryType = {\n\tspecificationUri: string;\n\tbaseUri?: string;\n\tpath: string;\n\tmethod?: 'GET' | 'POST' | 'PUT';\n};\n\nexport type MichelineTzip16Expression =\n\t| MichelsonV1Expression\n\t| MichelineTzip16Expression[]\n\t| { prim: Unistring; args?: MichelineTzip16Expression[]; annots?: string[] };\n\ntype Unistring = string | { invalid_utf8_string: number[] };\n","import { ParameterSchema } from '@taquito/michelson-encoder';\nimport { RpcClient, MichelsonV1Expression, MichelsonV1ExpressionExtended } from '@taquito/rpc';\nimport { ContractAbstraction, ContractProvider, Protocols, Wallet } from '@taquito/taquito';\nimport { ForbiddenInstructionInViewCode, InvalidViewParameterError, NoParameterExpectedError } from '../tzip16-errors';\nimport { View } from './interface';\n\nexport class MichelsonStorageView implements View {\n constructor(\n private viewName: string,\n private contract: ContractAbstraction<ContractProvider | Wallet>,\n private rpc: RpcClient,\n private returnType: MichelsonV1Expression,\n private code: MichelsonV1ExpressionExtended[],\n private viewParameterType?: MichelsonV1ExpressionExtended\n ) { }\n\n /**\n * @description According to the tzip-16 standard, the following instructions must not be used in the code of the view:\n * 'AMOUNT', 'CREATE_CONTRACT', 'SENDER', 'SET_DELEGATE', 'SOURCE', and 'TRANSFER_TOKENS'\n * The method throw an error if an illegal instruction is found\n */\n private findForbiddenInstructionInViewCode(code: MichelsonV1ExpressionExtended[]) {\n const illegalInstructions = [\n 'AMOUNT',\n 'CREATE_CONTRACT',\n 'SENDER',\n 'SET_DELEGATE',\n 'SOURCE',\n 'TRANSFER_TOKENS'\n ];\n\n for (let forbiddenInstruction of illegalInstructions) {\n for (let instruction of code) {\n if (instruction.prim === forbiddenInstruction) {\n throw new ForbiddenInstructionInViewCode(forbiddenInstruction);\n }\n if (instruction.args && instruction.args.length !== 0) {\n this.findForbiddenInstructionInViewCode(instruction.args as any);\n }\n }\n }\n }\n\n /**\n * @description According to the tzip-16 standard, in the first version of the specification, the instruction SELF should only be used before ADDRESS\n * The method throws an error is the instruction SELF is present, but not followed by ADDRESS\n */\n private illegalUseOfSelfInstruction(code: MichelsonV1ExpressionExtended[]) {\n for (let instruction of code) {\n if (instruction.prim === 'SELF') {\n const index = code.indexOf(instruction);\n const nextInstruction = code[index + 1] ? code[index + 1].prim : undefined;\n if (nextInstruction !== 'ADDRESS') {\n throw new ForbiddenInstructionInViewCode('the instruction SELF should only be used before ADDRESS');\n }\n }\n if (instruction.args && instruction.args.length !== 0) {\n this.illegalUseOfSelfInstruction(instruction.args as any);\n }\n }\n }\n\n /**\n * @description Loops through the view's code and replace SELF, BALANCE, NOW, and CHAIN_ID with Michelson expressions that match the current context, if applicable.\n */\n private adaptViewCodeToContext(\n code: MichelsonV1ExpressionExtended[],\n contractBalance: string,\n blockTimeStamp: string,\n chainId: string\n ) {\n const instructionsToReplace = {\n SELF: [\n { prim: 'PUSH', args: [{ prim: 'address' }, { string: this.contract.address }] },\n { prim: 'CONTRACT', args: [{ prim: 'unit' }] },\n { prim: 'IF_NONE', args: [[{ prim: 'UNIT' }, { prim: 'FAILWITH' }], []] }\n ],\n BALANCE: [{ prim: 'PUSH', args: [{ prim: 'mutez' }, { int: contractBalance }] }],\n NOW: [{ prim: 'PUSH', args: [{ prim: 'timestamp' }, { string: blockTimeStamp }] }],\n CHAIN_ID: [{ prim: 'PUSH', args: [{ prim: 'string' }, { string: chainId }] }]\n };\n\n code.forEach((x: any, i: any) => {\n for (let instruction in instructionsToReplace) {\n if (x.prim === instruction) {\n code[i] = Object(instructionsToReplace)[instruction];\n }\n if (x.args && x.args.length !== 0) {\n this.adaptViewCodeToContext(x.args, contractBalance, blockTimeStamp, chainId);\n }\n }\n });\n return code;\n }\n\n private validateArgs = (args: any[], schema: ParameterSchema, viewName: string) => {\n const sigs = schema.ExtractSignatures();\n\n if (!sigs.find((x: any[]) => x.length === args.length)) {\n throw new InvalidViewParameterError(viewName, sigs, args);\n }\n };\n\n private formatArgsAndParameter(argView: any[]) {\n let args = argView;\n let viewParameterType = this.viewParameterType;\n if (!viewParameterType) {\n viewParameterType = { args: [], prim: 'unit', annots: [] };\n }\n\n if (viewParameterType.prim === 'unit') {\n if (args.length === 0) {\n args = ['Unit'];\n }\n if (args.length !== 0 && args[0] !== 'Unit') {\n throw new NoParameterExpectedError(this.viewName, argView);\n }\n }\n const parameterViewSchema = new ParameterSchema(viewParameterType);\n this.validateArgs(args, parameterViewSchema, this.viewName);\n const arg = parameterViewSchema.Encode(...args);\n return { arg, viewParameterType };\n }\n\n async executeView(...args: any[]) {\n // validate view code against tzip-16 specifications\n this.findForbiddenInstructionInViewCode(this.code);\n this.illegalUseOfSelfInstruction(this.code);\n\n const { arg, viewParameterType } = this.formatArgsAndParameter(args);\n\n const storageType: any = this.contract.script.code.find((x: any) => x.prim === 'storage');\n const storageArgs = storageType.args[0];\n const storageValue: any = this.contract.script.storage;\n\n // currentContext\n const chainId = await this.rpc.getChainId();\n const contractBalance = (await this.rpc.getBalance(this.contract.address)).toString();\n const block = await this.rpc.getBlock();\n const blockTimestamp = block.header.timestamp.toString();\n const protocolHash = block.protocol;\n\n const code = this.adaptViewCodeToContext(this.code, contractBalance, blockTimestamp, chainId);\n\n if(!this.viewParameterType) {\n code.unshift({ prim: 'CDR' })\n }\n\n const viewScript = {\n script: [\n { prim: 'parameter', args: [{ prim: 'pair', args: [viewParameterType, storageArgs] }] },\n { prim: 'storage', args: [{ prim: 'option', args: [this.returnType] }] },\n {\n prim: 'code',\n args: [\n [\n { prim: 'CAR' }, \n code,\n { prim: 'SOME' }, \n { prim: 'NIL', args: [{ prim: 'operation' }] }, \n { prim: 'PAIR' }\n ]\n ]\n }\n ],\n storage: { prim: 'None' },\n input: { prim: 'Pair', args: [arg, storageValue] },\n amount: '0',\n chain_id: chainId,\n balance: '0'\n };\n\n const result: any = await this.rpc.runCode(viewScript as any);\n const viewResultSchema = new ParameterSchema(this.returnType);\n return viewResultSchema.Execute(result.storage.args[0]);\n }\n}\n","import { RpcClient } from '@taquito/rpc';\nimport { ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { ViewImplementation, ViewImplementationType } from '../metadata-interface';\nimport { MichelsonStorageView } from './michelson-storage-view';\n\nexport class ViewFactory {\n getView(\n viewName: string,\n rpc: RpcClient,\n contract: ContractAbstraction<ContractProvider | Wallet>,\n viewImplementation: ViewImplementation\n ) {\n if (this.isMichelsonStorageView(viewImplementation)) {\n const viewValues = viewImplementation[ViewImplementationType.MICHELSON_STORAGE];\n if (!viewValues.returnType || !viewValues.code) {\n console.warn(\n `${viewName} is missing mandatory code or returnType property therefore it will be skipped.`\n );\n return;\n }\n return () => {\n const view = new MichelsonStorageView(\n viewName,\n contract,\n rpc,\n viewValues.returnType as any,\n viewValues.code as any,\n viewValues.parameter as any\n );\n return view;\n };\n }\n }\n\n getImplementationType(viewImplementation: ViewImplementation) {\n return Object.keys(viewImplementation)[0];\n }\n\n private isMichelsonStorageView(\n viewImplementation: ViewImplementation\n ): viewImplementation is { [ViewImplementationType.MICHELSON_STORAGE]: any } {\n return this.getImplementationType(viewImplementation) === ViewImplementationType.MICHELSON_STORAGE;\n }\n}\n","import { BigMapAbstraction, Context, ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { bytes2Char } from '@taquito/utils';\nimport { MetadataEnvelope, MetadataProviderInterface } from './metadata-provider';\nimport { BigMapMetadataNotFound, UnconfiguredMetadataProviderError, UriNotFound } from './tzip16-errors';\nimport BigNumber from 'bignumber.js';\nimport { Schema } from '@taquito/michelson-encoder';\nimport { ViewFactory } from './viewKind/viewFactory';\nimport { View } from './viewKind/interface';\nimport { ViewDefinition } from './metadata-interface';\n\nexport type MetadataContext = Context & {\n metadataProvider: MetadataProviderInterface;\n};\n\ntype BigMapId = { int: string };\n\nconst metadataBigMapType = {\n prim: 'big_map',\n args: [{ prim: 'string' }, { prim: 'bytes' }],\n annots: ['%metadata']\n};\nexport class Tzip16ContractAbstraction {\n private _metadataProvider: MetadataProviderInterface;\n private _metadataEnvelope?: MetadataEnvelope;\n private _viewFactory = new ViewFactory();\n private _metadataViewsObject: { [key: string]: () => View } = {};\n\n constructor(\n private constractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n private context: MetadataContext\n ) {\n this._metadataProvider = context.metadataProvider;\n }\n\n private findMetadataBigMap(): BigMapAbstraction {\n const metadataBigMapId = this.constractAbstraction.schema.FindFirstInTopLevelPair<BigMapId>(\n this.constractAbstraction.script.storage,\n metadataBigMapType\n );\n\n if (!metadataBigMapId) {\n throw new BigMapMetadataNotFound();\n }\n\n return new BigMapAbstraction(\n new BigNumber(metadataBigMapId['int']),\n new Schema(metadataBigMapType),\n this.context.contract\n );\n }\n\n private async getUriOrFail() {\n const metadataBigMap = this.findMetadataBigMap();\n const uri = await metadataBigMap.get<string>('');\n if (!uri) {\n throw new UriNotFound();\n }\n return uri;\n }\n\n /**\n * @description Return an object containing the metadata, the uri, an optional integrity check result and an optional sha256 hash\n */\n async getMetadata() {\n if (!this._metadataProvider) {\n throw new UnconfiguredMetadataProviderError();\n }\n if (!this._metadataEnvelope) {\n const uri = await this.getUriOrFail();\n this._metadataEnvelope = await this._metadataProvider.provideMetadata(\n this.constractAbstraction,\n bytes2Char(uri),\n this.context\n );\n }\n return this._metadataEnvelope;\n }\n\n async metadataViews() {\n if (Object.keys(this._metadataViewsObject).length === 0) {\n await this.initializeMetadataViewsList();\n }\n return this._metadataViewsObject;\n }\n\n private async initializeMetadataViewsList() {\n const { metadata } = await this.getMetadata();\n const metadataViews: any = {};\n metadata.views?.forEach((view) => this.createViewImplementations(view, metadataViews))\n this._metadataViewsObject = metadataViews;\n }\n\n private generateIndexedViewName(viewName: string, metadataViews: {}) {\n let i = 1;\n if (viewName in metadataViews) {\n while (`${viewName}${i}` in metadataViews) {\n i++;\n }\n viewName = `${viewName}${i}`;\n }\n return viewName;\n }\n\n private createViewImplementations(view: ViewDefinition, metadataViews: any) {\n for (let viewImplementation of view?.implementations ?? []) {\n if (view.name) {\n // when views have the same name, add an index at the end of the name\n const viewName = this.generateIndexedViewName(view.name, metadataViews);\n const metadataView = this._viewFactory.getView(\n viewName,\n this.context.rpc,\n this.constractAbstraction,\n viewImplementation\n );\n if (metadataView) {\n metadataViews[viewName] = metadataView;\n } else {\n console.warn(`Skipped generating ${viewName} because the view has an unsupported type: ${this._viewFactory.getImplementationType(viewImplementation)}`)\n }\n }\n }\n }\n}\n","import { Context, ContractAbstraction, ContractProvider, Wallet } from \"@taquito/taquito\";\nimport { MetadataContext, Tzip16ContractAbstraction } from './tzip16-contract-abstraction'\n\nconst ABSTRACTION_KEY = Symbol(\"Tzip16ContractAbstractionObjectKey\");\n\nexport function tzip16<T extends ContractAbstraction<ContractProvider | Wallet>>(abs: T, context: Context) {\n return Object.assign(abs, {\n // namespace tzip16\n tzip16 (this: ContractAbstraction<ContractProvider | Wallet> & { [ABSTRACTION_KEY]?: Tzip16ContractAbstraction}) {\n if (!this[ABSTRACTION_KEY]) {\n this[ABSTRACTION_KEY] = new Tzip16ContractAbstraction(this, context as MetadataContext);\n }\n \n return this[ABSTRACTION_KEY]!\n }\n })\n}","import CryptoJS from \"crypto-js\";\n\nexport function calculateSHA256Hash(preimage: string): string {\n return CryptoJS.SHA256(preimage).toString(CryptoJS.enc.Hex);\n}","import { ContractAbstraction, ContractProvider, Wallet, Context } from '@taquito/taquito';\nimport { MetadataInterface } from './metadata-interface';\nimport { MetadataContext } from './tzip16-contract-abstraction';\nimport { InvalidMetadata, InvalidUri, ProtocolNotSupported } from './tzip16-errors';\nimport { calculateSHA256Hash } from './tzip16-utils';\n\nexport interface MetadataProviderInterface {\n provideMetadata(contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, uri: string, context: MetadataContext): Promise<MetadataEnvelope>;\n}\n\nexport interface MetadataEnvelope {\n uri: string;\n integrityCheckResult?: boolean;\n sha256Hash?: string;\n metadata: MetadataInterface;\n}\nexport interface Handler {\n getMetadata(\n contractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n uri: Tzip16Uri,\n context: Context\n ): Promise<string>\n}\n\nexport interface Tzip16Uri {\n sha256hash: string | undefined;\n protocol: string;\n location: string;\n}\n\n/**\n * @description: Metadata Provider\n */\nexport class MetadataProvider implements MetadataProviderInterface {\n private readonly PROTOCOL_REGEX = /(?:sha256\\:\\/\\/0x(.*)\\/)?(https?|ipfs|tezos-storage)\\:(.*)/;\n\n constructor(private handlers: Map<string, Handler>) {}\n\n /**\n * @description Fetch the metadata by using the appropriate handler based on the protcol found in the URI\n * @returns an object which contains the uri, the metadata, an optional integrity check result and an optional SHA256 hash\n * @param _contractAbstraction the contract abstraction which contains the URI in its storage\n * @param _uri the decoded uri found in the storage\n * @param context the TezosToolkit Context\n */\n async provideMetadata(contractAbstraction: ContractAbstraction<ContractProvider | Wallet>, uri: string, context: Context): Promise<MetadataEnvelope> {\n\n const uriInfo = this.extractProtocolInfo(uri);\n if (!uriInfo || !uriInfo.location) {\n throw new InvalidUri(uri);\n }\n\n const handler = this.handlers.get(uriInfo.protocol);\n if (!handler) {\n throw new ProtocolNotSupported(uriInfo.protocol);\n }\n\n const metadata = await handler.getMetadata(contractAbstraction, uriInfo, context);\n const sha256Hash = calculateSHA256Hash(metadata);\n let metadataJSON;\n try {\n metadataJSON = JSON.parse(metadata);\n } catch (ex) {\n throw new InvalidMetadata(metadata);\n }\n\n return {\n uri,\n metadata: metadataJSON,\n integrityCheckResult: uriInfo.sha256hash ? uriInfo.sha256hash === sha256Hash : undefined,\n sha256Hash: uriInfo.sha256hash ? sha256Hash : undefined\n }\n }\n\n private extractProtocolInfo(_uri: string) {\n const extractor = this.PROTOCOL_REGEX.exec(_uri);\n if (!extractor) return;\n return {\n sha256hash: extractor[1],\n protocol: extractor[2],\n location: extractor[3]\n }\n }\n}\n","import { Context, Extension } from \"@taquito/taquito\";\nimport { Handler, MetadataProvider, MetadataProviderInterface } from \"./metadata-provider\";\nimport { HttpHandler } from \"./handlers/http-handler\";\nimport { TezosStorageHandler } from \"./handlers/tezos-storage-handler\";\nimport { IpfsHttpHandler } from \"./handlers/ipfs-handler\";\n\nexport const DEFAULT_HANDLERS = new Map<string, Handler>([\n ['http', new HttpHandler()],\n ['https', new HttpHandler()],\n ['tezos-storage', new TezosStorageHandler()],\n ['ipfs', new IpfsHttpHandler()]\n])\nexport class Tzip16Module implements Extension {\n private _metadataProvider: MetadataProviderInterface;\n\n constructor(metadataProvider?: MetadataProviderInterface) {\n this._metadataProvider = metadataProvider ? metadataProvider : new MetadataProvider(DEFAULT_HANDLERS);\n }\n\n configureContext(context: Context) {\n Object.assign(context, { metadataProvider: this._metadataProvider });\n }\n}","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\n/* tslint:disable */\nexport const VERSION = {\n \"commitHash\": \"eb5b2c4973cd11098b68ce62eb6702dea376e569\",\n \"version\": \"10.1.1\"\n};\n/* tslint:enable */\n"],"names":["HttpBackend","Schema","bytes2Char","ViewImplementationType","ParameterSchema","BigMapAbstraction","BigNumber","CryptoJS"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taquito/tzip16",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.2",
|
|
4
4
|
"description": "Tzip16",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"tezos",
|
|
@@ -58,11 +58,11 @@
|
|
|
58
58
|
]
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@taquito/http-utils": "^10.1.
|
|
62
|
-
"@taquito/michelson-encoder": "^10.1.
|
|
63
|
-
"@taquito/rpc": "^10.1.
|
|
64
|
-
"@taquito/taquito": "^10.1.
|
|
65
|
-
"@taquito/utils": "^10.1.
|
|
61
|
+
"@taquito/http-utils": "^10.1.2",
|
|
62
|
+
"@taquito/michelson-encoder": "^10.1.2",
|
|
63
|
+
"@taquito/rpc": "^10.1.2",
|
|
64
|
+
"@taquito/taquito": "^10.1.2",
|
|
65
|
+
"@taquito/utils": "^10.1.2",
|
|
66
66
|
"bignumber.js": "^9.0.1",
|
|
67
67
|
"crypto-js": "^4.0.0"
|
|
68
68
|
},
|
|
@@ -97,5 +97,5 @@
|
|
|
97
97
|
"typedoc": "^0.20.36",
|
|
98
98
|
"typescript": "^4.1.5"
|
|
99
99
|
},
|
|
100
|
-
"gitHead": "
|
|
100
|
+
"gitHead": "d78608e9da010b98c288cd73c8d5b1beb322492f"
|
|
101
101
|
}
|
package/src/version.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
|
|
3
3
|
/* tslint:disable */
|
|
4
4
|
export const VERSION = {
|
|
5
|
-
"commitHash": "
|
|
6
|
-
"version": "10.1.
|
|
5
|
+
"commitHash": "eb5b2c4973cd11098b68ce62eb6702dea376e569",
|
|
6
|
+
"version": "10.1.1"
|
|
7
7
|
};
|
|
8
8
|
/* tslint:enable */
|