@xyo-network/api-call-witness 2.99.5 → 2.99.6

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.
Files changed (177) hide show
  1. package/dist/browser/Payload/identity/asApiCall.d.cts +2 -2
  2. package/dist/browser/Payload/identity/asApiCall.d.cts.map +1 -1
  3. package/dist/browser/Payload/identity/asApiCall.d.mts +2 -2
  4. package/dist/browser/Payload/identity/asApiCall.d.mts.map +1 -1
  5. package/dist/browser/Payload/identity/asApiCall.d.ts +2 -2
  6. package/dist/browser/Payload/identity/asApiCall.d.ts.map +1 -1
  7. package/dist/browser/Payload/identity/asApiCallBase64Result.d.cts +2 -2
  8. package/dist/browser/Payload/identity/asApiCallBase64Result.d.cts.map +1 -1
  9. package/dist/browser/Payload/identity/asApiCallBase64Result.d.mts +2 -2
  10. package/dist/browser/Payload/identity/asApiCallBase64Result.d.mts.map +1 -1
  11. package/dist/browser/Payload/identity/asApiCallBase64Result.d.ts +2 -2
  12. package/dist/browser/Payload/identity/asApiCallBase64Result.d.ts.map +1 -1
  13. package/dist/browser/Payload/identity/asApiCallResult.d.cts +2 -2
  14. package/dist/browser/Payload/identity/asApiCallResult.d.cts.map +1 -1
  15. package/dist/browser/Payload/identity/asApiCallResult.d.mts +2 -2
  16. package/dist/browser/Payload/identity/asApiCallResult.d.mts.map +1 -1
  17. package/dist/browser/Payload/identity/asApiCallResult.d.ts +2 -2
  18. package/dist/browser/Payload/identity/asApiCallResult.d.ts.map +1 -1
  19. package/dist/browser/Payload/identity/asApiCallXmlResult.d.cts +2 -2
  20. package/dist/browser/Payload/identity/asApiCallXmlResult.d.cts.map +1 -1
  21. package/dist/browser/Payload/identity/asApiCallXmlResult.d.mts +2 -2
  22. package/dist/browser/Payload/identity/asApiCallXmlResult.d.mts.map +1 -1
  23. package/dist/browser/Payload/identity/asApiCallXmlResult.d.ts +2 -2
  24. package/dist/browser/Payload/identity/asApiCallXmlResult.d.ts.map +1 -1
  25. package/dist/browser/Payload/identity/asApiUriCall.d.cts +2 -2
  26. package/dist/browser/Payload/identity/asApiUriCall.d.cts.map +1 -1
  27. package/dist/browser/Payload/identity/asApiUriCall.d.mts +2 -2
  28. package/dist/browser/Payload/identity/asApiUriCall.d.mts.map +1 -1
  29. package/dist/browser/Payload/identity/asApiUriCall.d.ts +2 -2
  30. package/dist/browser/Payload/identity/asApiUriCall.d.ts.map +1 -1
  31. package/dist/browser/Payload/identity/asApiUriTemplateCall.d.cts +2 -2
  32. package/dist/browser/Payload/identity/asApiUriTemplateCall.d.cts.map +1 -1
  33. package/dist/browser/Payload/identity/asApiUriTemplateCall.d.mts +2 -2
  34. package/dist/browser/Payload/identity/asApiUriTemplateCall.d.mts.map +1 -1
  35. package/dist/browser/Payload/identity/asApiUriTemplateCall.d.ts +2 -2
  36. package/dist/browser/Payload/identity/asApiUriTemplateCall.d.ts.map +1 -1
  37. package/dist/browser/Payload/types/ApiCallJsonResult.d.cts +2 -2
  38. package/dist/browser/Payload/types/ApiCallJsonResult.d.cts.map +1 -1
  39. package/dist/browser/Payload/types/ApiCallJsonResult.d.mts +2 -2
  40. package/dist/browser/Payload/types/ApiCallJsonResult.d.mts.map +1 -1
  41. package/dist/browser/Payload/types/ApiCallJsonResult.d.ts +2 -2
  42. package/dist/browser/Payload/types/ApiCallJsonResult.d.ts.map +1 -1
  43. package/dist/browser/Witness/Config.d.cts +16 -16
  44. package/dist/browser/Witness/Config.d.cts.map +1 -1
  45. package/dist/browser/Witness/Config.d.mts +16 -16
  46. package/dist/browser/Witness/Config.d.mts.map +1 -1
  47. package/dist/browser/Witness/Config.d.ts +16 -16
  48. package/dist/browser/Witness/Config.d.ts.map +1 -1
  49. package/dist/browser/Witness/Witness.d.cts.map +1 -1
  50. package/dist/browser/Witness/Witness.d.mts.map +1 -1
  51. package/dist/browser/Witness/Witness.d.ts.map +1 -1
  52. package/dist/browser/index.cjs +46 -71
  53. package/dist/browser/index.cjs.map +1 -1
  54. package/dist/browser/index.mjs +45 -72
  55. package/dist/browser/index.mjs.map +1 -1
  56. package/dist/browser/lib/checkIpfsUrl.d.cts.map +1 -1
  57. package/dist/browser/lib/checkIpfsUrl.d.mts.map +1 -1
  58. package/dist/browser/lib/checkIpfsUrl.d.ts.map +1 -1
  59. package/dist/neutral/Payload/identity/asApiCall.d.cts +2 -2
  60. package/dist/neutral/Payload/identity/asApiCall.d.cts.map +1 -1
  61. package/dist/neutral/Payload/identity/asApiCall.d.mts +2 -2
  62. package/dist/neutral/Payload/identity/asApiCall.d.mts.map +1 -1
  63. package/dist/neutral/Payload/identity/asApiCall.d.ts +2 -2
  64. package/dist/neutral/Payload/identity/asApiCall.d.ts.map +1 -1
  65. package/dist/neutral/Payload/identity/asApiCallBase64Result.d.cts +2 -2
  66. package/dist/neutral/Payload/identity/asApiCallBase64Result.d.cts.map +1 -1
  67. package/dist/neutral/Payload/identity/asApiCallBase64Result.d.mts +2 -2
  68. package/dist/neutral/Payload/identity/asApiCallBase64Result.d.mts.map +1 -1
  69. package/dist/neutral/Payload/identity/asApiCallBase64Result.d.ts +2 -2
  70. package/dist/neutral/Payload/identity/asApiCallBase64Result.d.ts.map +1 -1
  71. package/dist/neutral/Payload/identity/asApiCallResult.d.cts +2 -2
  72. package/dist/neutral/Payload/identity/asApiCallResult.d.cts.map +1 -1
  73. package/dist/neutral/Payload/identity/asApiCallResult.d.mts +2 -2
  74. package/dist/neutral/Payload/identity/asApiCallResult.d.mts.map +1 -1
  75. package/dist/neutral/Payload/identity/asApiCallResult.d.ts +2 -2
  76. package/dist/neutral/Payload/identity/asApiCallResult.d.ts.map +1 -1
  77. package/dist/neutral/Payload/identity/asApiCallXmlResult.d.cts +2 -2
  78. package/dist/neutral/Payload/identity/asApiCallXmlResult.d.cts.map +1 -1
  79. package/dist/neutral/Payload/identity/asApiCallXmlResult.d.mts +2 -2
  80. package/dist/neutral/Payload/identity/asApiCallXmlResult.d.mts.map +1 -1
  81. package/dist/neutral/Payload/identity/asApiCallXmlResult.d.ts +2 -2
  82. package/dist/neutral/Payload/identity/asApiCallXmlResult.d.ts.map +1 -1
  83. package/dist/neutral/Payload/identity/asApiUriCall.d.cts +2 -2
  84. package/dist/neutral/Payload/identity/asApiUriCall.d.cts.map +1 -1
  85. package/dist/neutral/Payload/identity/asApiUriCall.d.mts +2 -2
  86. package/dist/neutral/Payload/identity/asApiUriCall.d.mts.map +1 -1
  87. package/dist/neutral/Payload/identity/asApiUriCall.d.ts +2 -2
  88. package/dist/neutral/Payload/identity/asApiUriCall.d.ts.map +1 -1
  89. package/dist/neutral/Payload/identity/asApiUriTemplateCall.d.cts +2 -2
  90. package/dist/neutral/Payload/identity/asApiUriTemplateCall.d.cts.map +1 -1
  91. package/dist/neutral/Payload/identity/asApiUriTemplateCall.d.mts +2 -2
  92. package/dist/neutral/Payload/identity/asApiUriTemplateCall.d.mts.map +1 -1
  93. package/dist/neutral/Payload/identity/asApiUriTemplateCall.d.ts +2 -2
  94. package/dist/neutral/Payload/identity/asApiUriTemplateCall.d.ts.map +1 -1
  95. package/dist/neutral/Payload/types/ApiCallJsonResult.d.cts +2 -2
  96. package/dist/neutral/Payload/types/ApiCallJsonResult.d.cts.map +1 -1
  97. package/dist/neutral/Payload/types/ApiCallJsonResult.d.mts +2 -2
  98. package/dist/neutral/Payload/types/ApiCallJsonResult.d.mts.map +1 -1
  99. package/dist/neutral/Payload/types/ApiCallJsonResult.d.ts +2 -2
  100. package/dist/neutral/Payload/types/ApiCallJsonResult.d.ts.map +1 -1
  101. package/dist/neutral/Witness/Config.d.cts +16 -16
  102. package/dist/neutral/Witness/Config.d.cts.map +1 -1
  103. package/dist/neutral/Witness/Config.d.mts +16 -16
  104. package/dist/neutral/Witness/Config.d.mts.map +1 -1
  105. package/dist/neutral/Witness/Config.d.ts +16 -16
  106. package/dist/neutral/Witness/Config.d.ts.map +1 -1
  107. package/dist/neutral/Witness/Witness.d.cts.map +1 -1
  108. package/dist/neutral/Witness/Witness.d.mts.map +1 -1
  109. package/dist/neutral/Witness/Witness.d.ts.map +1 -1
  110. package/dist/neutral/index.cjs +46 -71
  111. package/dist/neutral/index.cjs.map +1 -1
  112. package/dist/neutral/index.mjs +45 -72
  113. package/dist/neutral/index.mjs.map +1 -1
  114. package/dist/neutral/lib/checkIpfsUrl.d.cts.map +1 -1
  115. package/dist/neutral/lib/checkIpfsUrl.d.mts.map +1 -1
  116. package/dist/neutral/lib/checkIpfsUrl.d.ts.map +1 -1
  117. package/dist/node/Payload/identity/asApiCall.d.cts +2 -2
  118. package/dist/node/Payload/identity/asApiCall.d.cts.map +1 -1
  119. package/dist/node/Payload/identity/asApiCall.d.mts +2 -2
  120. package/dist/node/Payload/identity/asApiCall.d.mts.map +1 -1
  121. package/dist/node/Payload/identity/asApiCall.d.ts +2 -2
  122. package/dist/node/Payload/identity/asApiCall.d.ts.map +1 -1
  123. package/dist/node/Payload/identity/asApiCallBase64Result.d.cts +2 -2
  124. package/dist/node/Payload/identity/asApiCallBase64Result.d.cts.map +1 -1
  125. package/dist/node/Payload/identity/asApiCallBase64Result.d.mts +2 -2
  126. package/dist/node/Payload/identity/asApiCallBase64Result.d.mts.map +1 -1
  127. package/dist/node/Payload/identity/asApiCallBase64Result.d.ts +2 -2
  128. package/dist/node/Payload/identity/asApiCallBase64Result.d.ts.map +1 -1
  129. package/dist/node/Payload/identity/asApiCallResult.d.cts +2 -2
  130. package/dist/node/Payload/identity/asApiCallResult.d.cts.map +1 -1
  131. package/dist/node/Payload/identity/asApiCallResult.d.mts +2 -2
  132. package/dist/node/Payload/identity/asApiCallResult.d.mts.map +1 -1
  133. package/dist/node/Payload/identity/asApiCallResult.d.ts +2 -2
  134. package/dist/node/Payload/identity/asApiCallResult.d.ts.map +1 -1
  135. package/dist/node/Payload/identity/asApiCallXmlResult.d.cts +2 -2
  136. package/dist/node/Payload/identity/asApiCallXmlResult.d.cts.map +1 -1
  137. package/dist/node/Payload/identity/asApiCallXmlResult.d.mts +2 -2
  138. package/dist/node/Payload/identity/asApiCallXmlResult.d.mts.map +1 -1
  139. package/dist/node/Payload/identity/asApiCallXmlResult.d.ts +2 -2
  140. package/dist/node/Payload/identity/asApiCallXmlResult.d.ts.map +1 -1
  141. package/dist/node/Payload/identity/asApiUriCall.d.cts +2 -2
  142. package/dist/node/Payload/identity/asApiUriCall.d.cts.map +1 -1
  143. package/dist/node/Payload/identity/asApiUriCall.d.mts +2 -2
  144. package/dist/node/Payload/identity/asApiUriCall.d.mts.map +1 -1
  145. package/dist/node/Payload/identity/asApiUriCall.d.ts +2 -2
  146. package/dist/node/Payload/identity/asApiUriCall.d.ts.map +1 -1
  147. package/dist/node/Payload/identity/asApiUriTemplateCall.d.cts +2 -2
  148. package/dist/node/Payload/identity/asApiUriTemplateCall.d.cts.map +1 -1
  149. package/dist/node/Payload/identity/asApiUriTemplateCall.d.mts +2 -2
  150. package/dist/node/Payload/identity/asApiUriTemplateCall.d.mts.map +1 -1
  151. package/dist/node/Payload/identity/asApiUriTemplateCall.d.ts +2 -2
  152. package/dist/node/Payload/identity/asApiUriTemplateCall.d.ts.map +1 -1
  153. package/dist/node/Payload/types/ApiCallJsonResult.d.cts +2 -2
  154. package/dist/node/Payload/types/ApiCallJsonResult.d.cts.map +1 -1
  155. package/dist/node/Payload/types/ApiCallJsonResult.d.mts +2 -2
  156. package/dist/node/Payload/types/ApiCallJsonResult.d.mts.map +1 -1
  157. package/dist/node/Payload/types/ApiCallJsonResult.d.ts +2 -2
  158. package/dist/node/Payload/types/ApiCallJsonResult.d.ts.map +1 -1
  159. package/dist/node/Witness/Config.d.cts +16 -16
  160. package/dist/node/Witness/Config.d.cts.map +1 -1
  161. package/dist/node/Witness/Config.d.mts +16 -16
  162. package/dist/node/Witness/Config.d.mts.map +1 -1
  163. package/dist/node/Witness/Config.d.ts +16 -16
  164. package/dist/node/Witness/Config.d.ts.map +1 -1
  165. package/dist/node/Witness/Witness.d.cts.map +1 -1
  166. package/dist/node/Witness/Witness.d.mts.map +1 -1
  167. package/dist/node/Witness/Witness.d.ts.map +1 -1
  168. package/dist/node/index.cjs +49 -77
  169. package/dist/node/index.cjs.map +1 -1
  170. package/dist/node/index.mjs +48 -79
  171. package/dist/node/index.mjs.map +1 -1
  172. package/dist/node/lib/checkIpfsUrl.d.cts.map +1 -1
  173. package/dist/node/lib/checkIpfsUrl.d.mts.map +1 -1
  174. package/dist/node/lib/checkIpfsUrl.d.ts.map +1 -1
  175. package/package.json +20 -18
  176. package/src/Witness/Witness.ts +3 -1
  177. package/src/lib/checkIpfsUrl.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Payload/identity/asApiCall.ts","../../src/Payload/identity/isApiCall.ts","../../src/Payload/Schema.ts","../../src/Payload/identity/asApiCallBase64Result.ts","../../src/Payload/identity/isApiCallBase64Result.ts","../../src/Payload/identity/asApiCallResult.ts","../../src/Payload/identity/isApiCallResult.ts","../../src/Payload/identity/asApiCallXmlResult.ts","../../src/Payload/identity/isApiCallXmlResult.ts","../../src/Payload/identity/asApiUriCall.ts","../../src/Payload/identity/isApiUriCall.ts","../../src/Payload/identity/asApiUriTemplateCall.ts","../../src/Payload/identity/isApiUriTemplateCall.ts","../../src/Payload/identity/isApiCallErrorResult.ts","../../src/Payload/types/ApiCallJsonResult.ts","../../src/Witness/Config.ts","../../src/Witness/Schema.ts","../../src/Witness/Witness.ts","../../src/lib/checkIpfsUrl.ts"],"sourcesContent":["export * from './Payload/index.ts'\nexport * from './Witness/index.ts'\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCall } from './isApiCall.ts'\n\nexport const asApiCall = AsObjectFactory.create(isApiCall)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallSchema } from '../Schema.ts'\nimport { ApiCall } from '../types/index.ts'\n\nexport const isApiCall = isPayloadOfSchemaType<ApiCall>(ApiCallSchema)\n","export const ApiCallSchema = 'network.xyo.api.call'\nexport type ApiCallSchema = typeof ApiCallSchema\n\nexport const ApiCallResultSchema = `${ApiCallSchema}.result`\nexport type ApiCallResultSchema = typeof ApiCallResultSchema\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCallBase64Result } from './isApiCallBase64Result.ts'\n\nexport const asApiCallBase64Result = AsObjectFactory.create(isApiCallBase64Result)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallBase64Result } from '../types/index.ts'\n\nexport const isApiCallBase64Result = (x?: unknown | null): x is ApiCallBase64Result => {\n return isPayloadOfSchemaType(ApiCallResultSchema)(x) && typeof (x as ApiCallBase64Result)?.data === 'string'\n}\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCallResult } from './isApiCallResult.ts'\n\nexport const asApiCallResult = AsObjectFactory.create(isApiCallResult)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallResult } from '../types/index.ts'\n\nexport const isApiCallResult = isPayloadOfSchemaType<ApiCallResult>(ApiCallResultSchema)\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCallXmlResult } from './isApiCallXmlResult.ts'\n\nexport const asApiCallXmlResult = AsObjectFactory.create(isApiCallXmlResult)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallXmlResult } from '../types/index.ts'\n\nexport const isApiCallXmlResult = (x?: unknown | null): x is ApiCallXmlResult => {\n return isPayloadOfSchemaType(ApiCallResultSchema)(x) && typeof (x as ApiCallXmlResult)?.data === 'string'\n}\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiUriCall } from './isApiUriCall.ts'\n\nexport const asApiUriCall = AsObjectFactory.create(isApiUriCall)\n","import { ApiUriCall } from '../types/index.ts'\nimport { isApiCall } from './isApiCall.ts'\n\nexport const isApiUriCall = (value?: unknown): value is ApiUriCall => isApiCall(value) && !!(value as ApiUriCall).uri\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiUriTemplateCall } from './isApiUriTemplateCall.ts'\n\nexport const asApiUriTemplateCall = AsObjectFactory.create(isApiUriTemplateCall)\n","import { ApiUriTemplateCall } from '../types/index.ts'\nimport { isApiCall } from './isApiCall.ts'\n\nexport const isApiUriTemplateCall = (value?: unknown): value is ApiUriTemplateCall =>\n isApiCall(value) && !!((value as ApiUriTemplateCall).uriTemplate || (value as ApiUriTemplateCall).params)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallErrorResult, ApiCallResult } from '../types/index.ts'\n\nexport const isApiCallErrorResult = (value: unknown): value is ApiCallErrorResult =>\n !!isPayloadOfSchemaType<ApiCallResult>(ApiCallResultSchema) && ((value as ApiCallErrorResult).http?.status ?? 200) >= 400\n","import { Hash } from '@xylabs/hex'\nimport { AsObjectFactory, JsonArray, JsonObject } from '@xylabs/object'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\n\nexport type ApiCallJsonResultType = JsonArray | JsonObject\n\nexport type ApiCallJsonResult<T extends ApiCallJsonResultType = ApiCallJsonResultType> = Payload<\n {\n call: Hash\n contentType: 'application/json'\n data: T\n },\n ApiCallResultSchema\n>\n\nexport const isApiCallJsonResult = <T extends ApiCallJsonResultType = ApiCallJsonResultType>(x?: unknown | null): x is ApiCallJsonResult<T> => {\n return isPayloadOfSchemaType(ApiCallResultSchema)(x) && (x as ApiCallJsonResult)?.contentType === 'application/json'\n}\nexport const asApiCallJsonResult = AsObjectFactory.create(isApiCallJsonResult)\n","import { AsObjectFactory } from '@xylabs/object'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessConfig } from '@xyo-network/witness-model'\n\nimport { ApiCall, ApiUriCall, ApiUriTemplateCall, MimeTypes } from '../Payload/index.ts'\nimport { ApiCallWitnessConfigSchema } from './Schema.ts'\n\nexport type ApiCallWitnessConfigBase = WitnessConfig<{\n accept?: MimeTypes\n headers?: Record<string, string | undefined>\n queries?: ApiCall['queries']\n schema: ApiCallWitnessConfigSchema\n timeout?: number\n verb?: ApiCall['verb']\n}>\n\nexport type ApiUriCallWitnessConfig = WitnessConfig<\n ApiCallWitnessConfigBase & {\n uri: ApiUriCall['uri']\n }\n>\n\nexport type ApiUriTemplateCallWitnessConfig = WitnessConfig<\n ApiCallWitnessConfigBase & {\n params?: Record<string, string>\n uriTemplate: ApiUriTemplateCall['uriTemplate']\n }\n>\n\nexport type ApiCallWitnessConfig = ApiUriCallWitnessConfig | ApiUriTemplateCallWitnessConfig | ApiCallWitnessConfigBase\n\nexport const isApiCallWitnessConfig = isPayloadOfSchemaType<ApiCallWitnessConfig>(ApiCallWitnessConfigSchema)\nexport const asApiCallWitnessConfig = AsObjectFactory.create(isApiCallWitnessConfig)\n\nexport const isApiUriCallWitnessConfig = (value?: unknown): value is ApiUriCallWitnessConfig =>\n isApiCallWitnessConfig(value) && !!(value as ApiUriCallWitnessConfig).uri\nexport const asApiUriCallWitnessConfig = AsObjectFactory.create(isApiUriCallWitnessConfig)\n\nexport const isApiUriTemplateCallWitnessConfig = (value?: unknown): value is ApiUriTemplateCallWitnessConfig =>\n isApiCallWitnessConfig(value) && !!(value as ApiUriTemplateCallWitnessConfig).uriTemplate\nexport const asApiUriTemplateCallWitnessConfig = AsObjectFactory.create(isApiUriTemplateCallWitnessConfig)\n","export const ApiCallWitnessConfigSchema = 'network.xyo.api.call.witness.config'\nexport type ApiCallWitnessConfigSchema = typeof ApiCallWitnessConfigSchema\n","/* eslint-disable max-statements */\nimport { assertEx } from '@xylabs/assert'\nimport { Axios, AxiosError, AxiosJson } from '@xylabs/axios'\nimport { Hash } from '@xylabs/hex'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { fromByteArray } from 'base64-js'\nimport fillTemplate from 'es6-dynamic-template'\n\nimport { checkIpfsUrl } from '../lib/index.ts'\nimport {\n ApiCall,\n ApiCallBase64Result,\n ApiCallErrorResult,\n ApiCallJsonResult,\n ApiCallJsonResultType,\n ApiCallResult,\n ApiCallResultSchema,\n ApiCallSchema,\n ApiCallXmlResult,\n asApiUriCall,\n asApiUriTemplateCall,\n MimeTypes,\n} from '../Payload/index.ts'\nimport { asApiUriCallWitnessConfig, asApiUriTemplateCallWitnessConfig } from './Config.ts'\nimport { ApiCallWitnessParams } from './Params.ts'\nimport { ApiCallWitnessConfigSchema } from './Schema.ts'\n\nexport class ApiCallWitness<TParams extends ApiCallWitnessParams = ApiCallWitnessParams> extends AbstractWitness<TParams, ApiCall, ApiCallResult> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, ApiCallWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = ApiCallWitnessConfigSchema\n\n get accept(): MimeTypes {\n return this.config.accept ?? 'application/json'\n }\n\n get ipfsGateway() {\n return this.params.ipfsGateway\n }\n\n get timeout() {\n return this.config.timeout\n }\n\n getFullUri(call?: ApiCall): string {\n const { uri: callUri } = asApiUriCall(call) ?? {}\n const { uriTemplate: callUriTemplate, params: callParams, queries: callQueries } = asApiUriTemplateCall(call) ?? {}\n const { uri: configUri } = asApiUriCallWitnessConfig(this.config) ?? {}\n const { uriTemplate: configUriTemplate, params: configParams, queries: configQueries } = asApiUriTemplateCallWitnessConfig(this.config) ?? {}\n\n const params = { ...configParams, ...callParams }\n\n let url: URL | undefined = undefined\n\n if (callUri) {\n url = new URL(callUri)\n } else if (callUriTemplate) {\n url = new URL(fillTemplate(callUriTemplate, params))\n } else if (configUri) {\n url = new URL(configUri)\n } else if (configUriTemplate) {\n url = new URL(fillTemplate(configUriTemplate, params))\n }\n\n if (url) {\n const queries = Object.entries({ ...configQueries, ...callQueries })\n queries.map(([key, value]) => url?.searchParams.set(key, value))\n return url.href\n }\n\n throw new Error('Unable to determine uri. No uri/uriTemplate specified in either the call or config.')\n }\n\n getHeaders(headers?: Record<string, string | undefined>): Record<string, string | undefined> {\n return { ...this.params.headers, ...this.config.headers, ...headers }\n }\n\n protected override async observeHandler(inPayloads: ApiCall[] = []): Promise<ApiCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(ApiCallSchema)).map(async (call) => {\n const { verb: callVerb } = call\n const { verb: configVerb } = this.config\n const verb = callVerb ?? configVerb ?? 'get'\n const uri = this.getFullUri(call)\n\n const validatedUri = assertEx(checkIpfsUrl(uri, this.ipfsGateway), () => 'Invalid URI')\n\n if (verb === 'get') {\n return this.httpGet(validatedUri, (await PayloadBuilder.build(call)).$hash)\n }\n\n const observation: ApiCallResult = {\n call: await PayloadHasher.hash(call),\n schema: ApiCallResultSchema,\n }\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.error(`Error [${this.config.name}]: ${error.message}`)\n console.log(error.stack)\n throw error\n }\n }\n\n // eslint-disable-next-line complexity\n private async httpGet(url: string, call: Hash, headers?: Record<string, string | undefined>): Promise<ApiCallResult> {\n const result: ApiCallResult = {\n call,\n schema: ApiCallResultSchema,\n }\n try {\n switch (this.accept) {\n case 'application/json': {\n const axios = new AxiosJson({ headers: { ...this.getHeaders(headers), Accept: 'application/json' }, timeout: this.timeout })\n const response = await axios.get<ApiCallJsonResultType>(url)\n if (response.status >= 200 && response.status < 300) {\n const jsonResult = result as ApiCallJsonResult\n jsonResult.data = response.data\n jsonResult.contentType = 'application/json'\n } else {\n const errorResult = result as ApiCallErrorResult\n errorResult.http = {\n status: response.status,\n }\n }\n break\n }\n case 'application/xml':\n case 'text/xml': {\n const axios = new Axios({\n headers: { ...this.getHeaders(headers), Accept: this.accept },\n responseType: 'arraybuffer',\n timeout: this.timeout,\n })\n const response = await axios.get(url)\n if (response.status >= 200 && response.status < 300) {\n const xmlResult = result as ApiCallXmlResult\n xmlResult.data = Buffer.from(response.data, 'binary').toString('utf8')\n xmlResult.contentType = response.headers['content-type']?.toString() ?? 'application/xml'\n } else {\n const errorResult = result as ApiCallErrorResult\n errorResult.http = {\n status: response.status,\n }\n }\n break\n }\n default: {\n const axios = new Axios({ headers: this.params.headers, responseType: 'arraybuffer', timeout: this.timeout })\n const response = await axios.get(url)\n if (response.status >= 200 && response.status < 300) {\n const jsonResult = result as ApiCallBase64Result\n jsonResult.data = fromByteArray(Buffer.from(response.data, 'binary'))\n jsonResult.contentType = response.headers['content-type']?.toString() ?? 'application/octet-stream'\n } else {\n const errorResult = result as ApiCallErrorResult\n errorResult.http = {\n status: response.status,\n }\n }\n break\n }\n }\n } catch (ex) {\n const axiosError = ex as AxiosError\n if (axiosError.isAxiosError) {\n if (axiosError?.response?.status !== undefined) {\n result.http = result.http ?? {}\n result.http.status = axiosError?.response?.status\n }\n if (axiosError?.code !== undefined) {\n result.http = result.http ?? {}\n result.http.code = axiosError?.code\n }\n return result\n } else {\n throw ex\n }\n }\n return result\n }\n}\n","import { assertEx } from '@xylabs/assert'\n\nconst allowIpfsIoRepair = true\n\n/**\n * Returns the equivalent IPFS gateway URL for the supplied URL.\n * @param urlToCheck The URL to check\n * @returns If the supplied URL is an IPFS URL, it converts the URL to the\n * equivalent IPFS gateway URL. Otherwise, returns the original URL.\n */\nexport const checkIpfsUrl = (urlToCheck: string, ipfsGateway?: string): string => {\n try {\n const url = new URL(urlToCheck)\n let protocol = url.protocol\n let host = url.host\n let path = url.pathname\n const query = url.search\n if (protocol === 'ipfs:') {\n protocol = 'https:'\n host = assertEx(ipfsGateway, () => 'No ipfsGateway provided')\n path = url.host === 'ipfs' ? `ipfs${path}` : `ipfs/${url.host}${path}`\n const root = `${protocol}//${host}/${path}`\n return query?.length > 0 ? `${root}?${query}` : root\n } else if (allowIpfsIoRepair && protocol === 'https' && host === 'ipfs.io') {\n protocol = 'https:'\n host = assertEx(ipfsGateway, () => 'No ipfsGateway provided')\n const pathParts = path.split('/')\n if (pathParts[0] === 'ipfs') {\n pathParts.shift()\n }\n path = pathParts.join('/')\n const root = `${protocol}//${host}/${path}`\n return query?.length > 0 ? `${root}?${query}` : root\n } else {\n return urlToCheck\n }\n } catch {\n // const error = ex as Error\n // console.error(`${error.name}:${error.message} [${urlToCheck}]`)\n // console.log(error.stack)\n return urlToCheck\n }\n}\n"],"mappings":"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","names":["ApiCallSchema","ApiCallResultSchema","isApiCall","isPayloadOfSchemaType","ApiCallSchema","asApiCall","AsObjectFactory","create","isApiCall","import_object","import_payload_model","isApiCallBase64Result","x","isPayloadOfSchemaType","ApiCallResultSchema","data","asApiCallBase64Result","AsObjectFactory","create","isApiCallBase64Result","import_object","import_payload_model","isApiCallResult","isPayloadOfSchemaType","ApiCallResultSchema","asApiCallResult","AsObjectFactory","create","isApiCallResult","import_object","import_payload_model","isApiCallXmlResult","x","isPayloadOfSchemaType","ApiCallResultSchema","data","asApiCallXmlResult","AsObjectFactory","create","isApiCallXmlResult","import_object","isApiUriCall","value","isApiCall","uri","asApiUriCall","AsObjectFactory","create","isApiUriCall","import_object","isApiUriTemplateCall","value","isApiCall","uriTemplate","params","asApiUriTemplateCall","AsObjectFactory","create","isApiUriTemplateCall","import_payload_model","isApiCallErrorResult","value","isPayloadOfSchemaType","ApiCallResultSchema","http","status","import_object","import_payload_model","isApiCallJsonResult","x","isPayloadOfSchemaType","ApiCallResultSchema","contentType","asApiCallJsonResult","AsObjectFactory","create","import_object","import_payload_model","ApiCallWitnessConfigSchema","isApiCallWitnessConfig","isPayloadOfSchemaType","ApiCallWitnessConfigSchema","asApiCallWitnessConfig","AsObjectFactory","create","isApiUriCallWitnessConfig","value","uri","asApiUriCallWitnessConfig","isApiUriTemplateCallWitnessConfig","uriTemplate","asApiUriTemplateCallWitnessConfig","import_assert","import_payload_model","allowIpfsIoRepair","checkIpfsUrl","urlToCheck","ipfsGateway","url","URL","protocol","host","path","pathname","query","search","assertEx","root","length","pathParts","split","shift","join","ApiCallWitness","AbstractWitness","accept","config","ipfsGateway","params","timeout","getFullUri","call","uri","callUri","asApiUriCall","uriTemplate","callUriTemplate","callParams","queries","callQueries","asApiUriTemplateCall","configUri","asApiUriCallWitnessConfig","configUriTemplate","configParams","configQueries","asApiUriTemplateCallWitnessConfig","url","undefined","URL","fillTemplate","Object","entries","map","key","value","searchParams","set","href","Error","getHeaders","headers","observeHandler","inPayloads","started","observations","Promise","all","filter","isPayloadOfSchemaType","ApiCallSchema","verb","callVerb","configVerb","validatedUri","assertEx","checkIpfsUrl","httpGet","PayloadBuilder","build","$hash","observation","PayloadHasher","hash","schema","ApiCallResultSchema","ex","error","console","name","message","log","stack","result","axios","AxiosJson","Accept","response","get","status","jsonResult","data","contentType","errorResult","http","Axios","responseType","xmlResult","Buffer","from","toString","fromByteArray","axiosError","isAxiosError","code","configSchemas","ApiCallWitnessConfigSchema","defaultConfigSchema"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Payload/identity/asApiCall.ts","../../src/Payload/identity/isApiCall.ts","../../src/Payload/Schema.ts","../../src/Payload/identity/asApiCallBase64Result.ts","../../src/Payload/identity/isApiCallBase64Result.ts","../../src/Payload/identity/asApiCallResult.ts","../../src/Payload/identity/isApiCallResult.ts","../../src/Payload/identity/asApiCallXmlResult.ts","../../src/Payload/identity/isApiCallXmlResult.ts","../../src/Payload/identity/asApiUriCall.ts","../../src/Payload/identity/isApiUriCall.ts","../../src/Payload/identity/asApiUriTemplateCall.ts","../../src/Payload/identity/isApiUriTemplateCall.ts","../../src/Payload/identity/isApiCallErrorResult.ts","../../src/Payload/types/ApiCallJsonResult.ts","../../src/Witness/Config.ts","../../src/Witness/Schema.ts","../../src/Witness/Witness.ts","../../src/lib/checkIpfsUrl.ts"],"sourcesContent":["export * from './Payload/index.ts'\nexport * from './Witness/index.ts'\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCall } from './isApiCall.ts'\n\nexport const asApiCall = AsObjectFactory.create(isApiCall)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallSchema } from '../Schema.ts'\nimport { ApiCall } from '../types/index.ts'\n\nexport const isApiCall = isPayloadOfSchemaType<ApiCall>(ApiCallSchema)\n","export const ApiCallSchema = 'network.xyo.api.call'\nexport type ApiCallSchema = typeof ApiCallSchema\n\nexport const ApiCallResultSchema = `${ApiCallSchema}.result`\nexport type ApiCallResultSchema = typeof ApiCallResultSchema\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCallBase64Result } from './isApiCallBase64Result.ts'\n\nexport const asApiCallBase64Result = AsObjectFactory.create(isApiCallBase64Result)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallBase64Result } from '../types/index.ts'\n\nexport const isApiCallBase64Result = (x?: unknown | null): x is ApiCallBase64Result => {\n return isPayloadOfSchemaType(ApiCallResultSchema)(x) && typeof (x as ApiCallBase64Result)?.data === 'string'\n}\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCallResult } from './isApiCallResult.ts'\n\nexport const asApiCallResult = AsObjectFactory.create(isApiCallResult)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallResult } from '../types/index.ts'\n\nexport const isApiCallResult = isPayloadOfSchemaType<ApiCallResult>(ApiCallResultSchema)\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCallXmlResult } from './isApiCallXmlResult.ts'\n\nexport const asApiCallXmlResult = AsObjectFactory.create(isApiCallXmlResult)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallXmlResult } from '../types/index.ts'\n\nexport const isApiCallXmlResult = (x?: unknown | null): x is ApiCallXmlResult => {\n return isPayloadOfSchemaType(ApiCallResultSchema)(x) && typeof (x as ApiCallXmlResult)?.data === 'string'\n}\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiUriCall } from './isApiUriCall.ts'\n\nexport const asApiUriCall = AsObjectFactory.create(isApiUriCall)\n","import { ApiUriCall } from '../types/index.ts'\nimport { isApiCall } from './isApiCall.ts'\n\nexport const isApiUriCall = (value?: unknown): value is ApiUriCall => isApiCall(value) && !!(value as ApiUriCall).uri\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiUriTemplateCall } from './isApiUriTemplateCall.ts'\n\nexport const asApiUriTemplateCall = AsObjectFactory.create(isApiUriTemplateCall)\n","import { ApiUriTemplateCall } from '../types/index.ts'\nimport { isApiCall } from './isApiCall.ts'\n\nexport const isApiUriTemplateCall = (value?: unknown): value is ApiUriTemplateCall =>\n isApiCall(value) && !!((value as ApiUriTemplateCall).uriTemplate || (value as ApiUriTemplateCall).params)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallErrorResult, ApiCallResult } from '../types/index.ts'\n\nexport const isApiCallErrorResult = (value: unknown): value is ApiCallErrorResult =>\n !!isPayloadOfSchemaType<ApiCallResult>(ApiCallResultSchema) && ((value as ApiCallErrorResult).http?.status ?? 200) >= 400\n","import { Hash } from '@xylabs/hex'\nimport { AsObjectFactory, JsonArray, JsonObject } from '@xylabs/object'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\n\nexport type ApiCallJsonResultType = JsonArray | JsonObject\n\nexport type ApiCallJsonResult<T extends ApiCallJsonResultType = ApiCallJsonResultType> = Payload<\n {\n call: Hash\n contentType: 'application/json'\n data: T\n },\n ApiCallResultSchema\n>\n\nexport const isApiCallJsonResult = <T extends ApiCallJsonResultType = ApiCallJsonResultType>(x?: unknown | null): x is ApiCallJsonResult<T> => {\n return isPayloadOfSchemaType(ApiCallResultSchema)(x) && (x as ApiCallJsonResult)?.contentType === 'application/json'\n}\nexport const asApiCallJsonResult = AsObjectFactory.create(isApiCallJsonResult)\n","import { AsObjectFactory } from '@xylabs/object'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessConfig } from '@xyo-network/witness-model'\n\nimport { ApiCall, ApiUriCall, ApiUriTemplateCall, MimeTypes } from '../Payload/index.ts'\nimport { ApiCallWitnessConfigSchema } from './Schema.ts'\n\nexport type ApiCallWitnessConfigBase = WitnessConfig<{\n accept?: MimeTypes\n headers?: Record<string, string | undefined>\n queries?: ApiCall['queries']\n schema: ApiCallWitnessConfigSchema\n timeout?: number\n verb?: ApiCall['verb']\n}>\n\nexport type ApiUriCallWitnessConfig = WitnessConfig<\n ApiCallWitnessConfigBase & {\n uri: ApiUriCall['uri']\n }\n>\n\nexport type ApiUriTemplateCallWitnessConfig = WitnessConfig<\n ApiCallWitnessConfigBase & {\n params?: Record<string, string>\n uriTemplate: ApiUriTemplateCall['uriTemplate']\n }\n>\n\nexport type ApiCallWitnessConfig = ApiUriCallWitnessConfig | ApiUriTemplateCallWitnessConfig | ApiCallWitnessConfigBase\n\nexport const isApiCallWitnessConfig = isPayloadOfSchemaType<ApiCallWitnessConfig>(ApiCallWitnessConfigSchema)\nexport const asApiCallWitnessConfig = AsObjectFactory.create(isApiCallWitnessConfig)\n\nexport const isApiUriCallWitnessConfig = (value?: unknown): value is ApiUriCallWitnessConfig =>\n isApiCallWitnessConfig(value) && !!(value as ApiUriCallWitnessConfig).uri\nexport const asApiUriCallWitnessConfig = AsObjectFactory.create(isApiUriCallWitnessConfig)\n\nexport const isApiUriTemplateCallWitnessConfig = (value?: unknown): value is ApiUriTemplateCallWitnessConfig =>\n isApiCallWitnessConfig(value) && !!(value as ApiUriTemplateCallWitnessConfig).uriTemplate\nexport const asApiUriTemplateCallWitnessConfig = AsObjectFactory.create(isApiUriTemplateCallWitnessConfig)\n","export const ApiCallWitnessConfigSchema = 'network.xyo.api.call.witness.config'\nexport type ApiCallWitnessConfigSchema = typeof ApiCallWitnessConfigSchema\n","/* eslint-disable max-statements */\nimport { assertEx } from '@xylabs/assert'\nimport { AxiosJson } from '@xylabs/axios'\nimport { Hash } from '@xylabs/hex'\nimport { URL } from '@xylabs/url'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { Axios, AxiosError } from 'axios'\nimport { fromByteArray } from 'base64-js'\nimport fillTemplate from 'es6-dynamic-template'\n\nimport { checkIpfsUrl } from '../lib/index.ts'\nimport {\n ApiCall,\n ApiCallBase64Result,\n ApiCallErrorResult,\n ApiCallJsonResult,\n ApiCallJsonResultType,\n ApiCallResult,\n ApiCallResultSchema,\n ApiCallSchema,\n ApiCallXmlResult,\n asApiUriCall,\n asApiUriTemplateCall,\n MimeTypes,\n} from '../Payload/index.ts'\nimport { asApiUriCallWitnessConfig, asApiUriTemplateCallWitnessConfig } from './Config.ts'\nimport { ApiCallWitnessParams } from './Params.ts'\nimport { ApiCallWitnessConfigSchema } from './Schema.ts'\n\nexport class ApiCallWitness<TParams extends ApiCallWitnessParams = ApiCallWitnessParams> extends AbstractWitness<TParams, ApiCall, ApiCallResult> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, ApiCallWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = ApiCallWitnessConfigSchema\n\n get accept(): MimeTypes {\n return this.config.accept ?? 'application/json'\n }\n\n get ipfsGateway() {\n return this.params.ipfsGateway\n }\n\n get timeout() {\n return this.config.timeout\n }\n\n getFullUri(call?: ApiCall): string {\n const { uri: callUri } = asApiUriCall(call) ?? {}\n const { uriTemplate: callUriTemplate, params: callParams, queries: callQueries } = asApiUriTemplateCall(call) ?? {}\n const { uri: configUri } = asApiUriCallWitnessConfig(this.config) ?? {}\n const { uriTemplate: configUriTemplate, params: configParams, queries: configQueries } = asApiUriTemplateCallWitnessConfig(this.config) ?? {}\n\n const params = { ...configParams, ...callParams }\n\n let url: URL | undefined = undefined\n\n if (callUri) {\n url = new URL(callUri)\n } else if (callUriTemplate) {\n url = new URL(fillTemplate(callUriTemplate, params))\n } else if (configUri) {\n url = new URL(configUri)\n } else if (configUriTemplate) {\n url = new URL(fillTemplate(configUriTemplate, params))\n }\n\n if (url) {\n const queries = Object.entries({ ...configQueries, ...callQueries })\n queries.map(([key, value]) => url?.searchParams.set(key, value))\n return url.href\n }\n\n throw new Error('Unable to determine uri. No uri/uriTemplate specified in either the call or config.')\n }\n\n getHeaders(headers?: Record<string, string | undefined>): Record<string, string | undefined> {\n return { ...this.params.headers, ...this.config.headers, ...headers }\n }\n\n protected override async observeHandler(inPayloads: ApiCall[] = []): Promise<ApiCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(ApiCallSchema)).map(async (call) => {\n const { verb: callVerb } = call\n const { verb: configVerb } = this.config\n const verb = callVerb ?? configVerb ?? 'get'\n const uri = this.getFullUri(call)\n\n const validatedUri = assertEx(checkIpfsUrl(uri, this.ipfsGateway), () => 'Invalid URI')\n\n if (verb === 'get') {\n return this.httpGet(validatedUri, (await PayloadBuilder.build(call)).$hash)\n }\n\n const observation: ApiCallResult = {\n call: await PayloadHasher.hash(call),\n schema: ApiCallResultSchema,\n }\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.error(`Error [${this.config.name}]: ${error.message}`)\n console.log(error.stack)\n throw error\n }\n }\n\n // eslint-disable-next-line complexity\n private async httpGet(url: string, call: Hash, headers?: Record<string, string | undefined>): Promise<ApiCallResult> {\n const result: ApiCallResult = {\n call,\n schema: ApiCallResultSchema,\n }\n try {\n switch (this.accept) {\n case 'application/json': {\n const axios = new AxiosJson({ headers: { ...this.getHeaders(headers), Accept: 'application/json' }, timeout: this.timeout })\n const response = await axios.get<ApiCallJsonResultType>(url)\n if (response.status >= 200 && response.status < 300) {\n const jsonResult = result as ApiCallJsonResult\n jsonResult.data = response.data\n jsonResult.contentType = 'application/json'\n } else {\n const errorResult = result as ApiCallErrorResult\n errorResult.http = {\n status: response.status,\n }\n }\n break\n }\n case 'application/xml':\n case 'text/xml': {\n const axios = new Axios({\n headers: { ...this.getHeaders(headers), Accept: this.accept },\n responseType: 'arraybuffer',\n timeout: this.timeout,\n })\n const response = await axios.get(url)\n if (response.status >= 200 && response.status < 300) {\n const xmlResult = result as ApiCallXmlResult\n xmlResult.data = Buffer.from(response.data, 'binary').toString('utf8')\n xmlResult.contentType = response.headers['content-type']?.toString() ?? 'application/xml'\n } else {\n const errorResult = result as ApiCallErrorResult\n errorResult.http = {\n status: response.status,\n }\n }\n break\n }\n default: {\n const axios = new Axios({ headers: this.params.headers, responseType: 'arraybuffer', timeout: this.timeout })\n const response = await axios.get(url)\n if (response.status >= 200 && response.status < 300) {\n const jsonResult = result as ApiCallBase64Result\n jsonResult.data = fromByteArray(Buffer.from(response.data, 'binary'))\n jsonResult.contentType = response.headers['content-type']?.toString() ?? 'application/octet-stream'\n } else {\n const errorResult = result as ApiCallErrorResult\n errorResult.http = {\n status: response.status,\n }\n }\n break\n }\n }\n } catch (ex) {\n const axiosError = ex as AxiosError\n if (axiosError.isAxiosError) {\n if (axiosError?.response?.status !== undefined) {\n result.http = result.http ?? {}\n result.http.status = axiosError?.response?.status\n }\n if (axiosError?.code !== undefined) {\n result.http = result.http ?? {}\n result.http.code = axiosError?.code\n }\n return result\n } else {\n throw ex\n }\n }\n return result\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { URL } from '@xylabs/url'\n\nconst allowIpfsIoRepair = true\n\n/**\n * Returns the equivalent IPFS gateway URL for the supplied URL.\n * @param urlToCheck The URL to check\n * @returns If the supplied URL is an IPFS URL, it converts the URL to the\n * equivalent IPFS gateway URL. Otherwise, returns the original URL.\n */\nexport const checkIpfsUrl = (urlToCheck: string, ipfsGateway?: string): string => {\n try {\n const url = new URL(urlToCheck)\n let protocol = url.protocol\n let host = url.host\n let path = url.pathname\n const query = url.search\n if (protocol === 'ipfs:') {\n protocol = 'https:'\n host = assertEx(ipfsGateway, () => 'No ipfsGateway provided')\n path = url.host === 'ipfs' ? `ipfs${path}` : `ipfs/${url.host}${path}`\n const root = `${protocol}//${host}/${path}`\n return query?.length > 0 ? `${root}?${query}` : root\n } else if (allowIpfsIoRepair && protocol === 'https' && host === 'ipfs.io') {\n protocol = 'https:'\n host = assertEx(ipfsGateway, () => 'No ipfsGateway provided')\n const pathParts = path.split('/')\n if (pathParts[0] === 'ipfs') {\n pathParts.shift()\n }\n path = pathParts.join('/')\n const root = `${protocol}//${host}/${path}`\n return query?.length > 0 ? `${root}?${query}` : root\n } else {\n return urlToCheck\n }\n } catch {\n // const error = ex as Error\n // console.error(`${error.name}:${error.message} [${urlToCheck}]`)\n // console.log(error.stack)\n return urlToCheck\n }\n}\n"],"mappings":"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","names":["import_object","import_payload_model","import_object","import_payload_model","import_object","import_payload_model","import_object","import_object","import_payload_model","import_object","import_payload_model","import_object","import_payload_model","import_assert","import_url","import_payload_model","import_axios","fillTemplate"]}
@@ -1,11 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __getProtoOf = Object.getPrototypeOf;
3
- var __reflectGet = Reflect.get;
4
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
7
- var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
8
-
9
1
  // src/Payload/identity/asApiCall.ts
10
2
  import { AsObjectFactory } from "@xylabs/object";
11
3
 
@@ -27,9 +19,9 @@ import { AsObjectFactory as AsObjectFactory2 } from "@xylabs/object";
27
19
 
28
20
  // src/Payload/identity/isApiCallBase64Result.ts
29
21
  import { isPayloadOfSchemaType as isPayloadOfSchemaType2 } from "@xyo-network/payload-model";
30
- var isApiCallBase64Result = /* @__PURE__ */ __name((x) => {
22
+ var isApiCallBase64Result = (x) => {
31
23
  return isPayloadOfSchemaType2(ApiCallResultSchema)(x) && typeof (x == null ? void 0 : x.data) === "string";
32
- }, "isApiCallBase64Result");
24
+ };
33
25
 
34
26
  // src/Payload/identity/asApiCallBase64Result.ts
35
27
  var asApiCallBase64Result = AsObjectFactory2.create(isApiCallBase64Result);
@@ -49,9 +41,9 @@ import { AsObjectFactory as AsObjectFactory4 } from "@xylabs/object";
49
41
 
50
42
  // src/Payload/identity/isApiCallXmlResult.ts
51
43
  import { isPayloadOfSchemaType as isPayloadOfSchemaType4 } from "@xyo-network/payload-model";
52
- var isApiCallXmlResult = /* @__PURE__ */ __name((x) => {
44
+ var isApiCallXmlResult = (x) => {
53
45
  return isPayloadOfSchemaType4(ApiCallResultSchema)(x) && typeof (x == null ? void 0 : x.data) === "string";
54
- }, "isApiCallXmlResult");
46
+ };
55
47
 
56
48
  // src/Payload/identity/asApiCallXmlResult.ts
57
49
  var asApiCallXmlResult = AsObjectFactory4.create(isApiCallXmlResult);
@@ -60,7 +52,7 @@ var asApiCallXmlResult = AsObjectFactory4.create(isApiCallXmlResult);
60
52
  import { AsObjectFactory as AsObjectFactory5 } from "@xylabs/object";
61
53
 
62
54
  // src/Payload/identity/isApiUriCall.ts
63
- var isApiUriCall = /* @__PURE__ */ __name((value) => isApiCall(value) && !!value.uri, "isApiUriCall");
55
+ var isApiUriCall = (value) => isApiCall(value) && !!value.uri;
64
56
 
65
57
  // src/Payload/identity/asApiUriCall.ts
66
58
  var asApiUriCall = AsObjectFactory5.create(isApiUriCall);
@@ -69,24 +61,24 @@ var asApiUriCall = AsObjectFactory5.create(isApiUriCall);
69
61
  import { AsObjectFactory as AsObjectFactory6 } from "@xylabs/object";
70
62
 
71
63
  // src/Payload/identity/isApiUriTemplateCall.ts
72
- var isApiUriTemplateCall = /* @__PURE__ */ __name((value) => isApiCall(value) && !!(value.uriTemplate || value.params), "isApiUriTemplateCall");
64
+ var isApiUriTemplateCall = (value) => isApiCall(value) && !!(value.uriTemplate || value.params);
73
65
 
74
66
  // src/Payload/identity/asApiUriTemplateCall.ts
75
67
  var asApiUriTemplateCall = AsObjectFactory6.create(isApiUriTemplateCall);
76
68
 
77
69
  // src/Payload/identity/isApiCallErrorResult.ts
78
70
  import { isPayloadOfSchemaType as isPayloadOfSchemaType5 } from "@xyo-network/payload-model";
79
- var isApiCallErrorResult = /* @__PURE__ */ __name((value) => {
71
+ var isApiCallErrorResult = (value) => {
80
72
  var _a;
81
73
  return !!isPayloadOfSchemaType5(ApiCallResultSchema) && (((_a = value.http) == null ? void 0 : _a.status) ?? 200) >= 400;
82
- }, "isApiCallErrorResult");
74
+ };
83
75
 
84
76
  // src/Payload/types/ApiCallJsonResult.ts
85
77
  import { AsObjectFactory as AsObjectFactory7 } from "@xylabs/object";
86
78
  import { isPayloadOfSchemaType as isPayloadOfSchemaType6 } from "@xyo-network/payload-model";
87
- var isApiCallJsonResult = /* @__PURE__ */ __name((x) => {
79
+ var isApiCallJsonResult = (x) => {
88
80
  return isPayloadOfSchemaType6(ApiCallResultSchema)(x) && (x == null ? void 0 : x.contentType) === "application/json";
89
- }, "isApiCallJsonResult");
81
+ };
90
82
  var asApiCallJsonResult = AsObjectFactory7.create(isApiCallJsonResult);
91
83
 
92
84
  // src/Witness/Config.ts
@@ -99,25 +91,28 @@ var ApiCallWitnessConfigSchema = "network.xyo.api.call.witness.config";
99
91
  // src/Witness/Config.ts
100
92
  var isApiCallWitnessConfig = isPayloadOfSchemaType7(ApiCallWitnessConfigSchema);
101
93
  var asApiCallWitnessConfig = AsObjectFactory8.create(isApiCallWitnessConfig);
102
- var isApiUriCallWitnessConfig = /* @__PURE__ */ __name((value) => isApiCallWitnessConfig(value) && !!value.uri, "isApiUriCallWitnessConfig");
94
+ var isApiUriCallWitnessConfig = (value) => isApiCallWitnessConfig(value) && !!value.uri;
103
95
  var asApiUriCallWitnessConfig = AsObjectFactory8.create(isApiUriCallWitnessConfig);
104
- var isApiUriTemplateCallWitnessConfig = /* @__PURE__ */ __name((value) => isApiCallWitnessConfig(value) && !!value.uriTemplate, "isApiUriTemplateCallWitnessConfig");
96
+ var isApiUriTemplateCallWitnessConfig = (value) => isApiCallWitnessConfig(value) && !!value.uriTemplate;
105
97
  var asApiUriTemplateCallWitnessConfig = AsObjectFactory8.create(isApiUriTemplateCallWitnessConfig);
106
98
 
107
99
  // src/Witness/Witness.ts
108
100
  import { assertEx as assertEx2 } from "@xylabs/assert";
109
- import { Axios, AxiosJson } from "@xylabs/axios";
101
+ import { AxiosJson } from "@xylabs/axios";
102
+ import { URL as URL2 } from "@xylabs/url";
110
103
  import { AbstractWitness } from "@xyo-network/abstract-witness";
111
104
  import { PayloadHasher } from "@xyo-network/hash";
112
105
  import { PayloadBuilder } from "@xyo-network/payload-builder";
113
106
  import { isPayloadOfSchemaType as isPayloadOfSchemaType8 } from "@xyo-network/payload-model";
107
+ import { Axios } from "axios";
114
108
  import { fromByteArray } from "base64-js";
115
109
  import fillTemplate from "es6-dynamic-template";
116
110
 
117
111
  // src/lib/checkIpfsUrl.ts
118
112
  import { assertEx } from "@xylabs/assert";
113
+ import { URL } from "@xylabs/url";
119
114
  var allowIpfsIoRepair = true;
120
- var checkIpfsUrl = /* @__PURE__ */ __name((urlToCheck, ipfsGateway) => {
115
+ var checkIpfsUrl = (urlToCheck, ipfsGateway) => {
121
116
  try {
122
117
  const url = new URL(urlToCheck);
123
118
  let protocol = url.protocol;
@@ -146,10 +141,12 @@ var checkIpfsUrl = /* @__PURE__ */ __name((urlToCheck, ipfsGateway) => {
146
141
  } catch {
147
142
  return urlToCheck;
148
143
  }
149
- }, "checkIpfsUrl");
144
+ };
150
145
 
151
146
  // src/Witness/Witness.ts
152
- var _ApiCallWitness = class _ApiCallWitness extends AbstractWitness {
147
+ var ApiCallWitness = class extends AbstractWitness {
148
+ static configSchemas = [...super.configSchemas, ApiCallWitnessConfigSchema];
149
+ static defaultConfigSchema = ApiCallWitnessConfigSchema;
153
150
  get accept() {
154
151
  return this.config.accept ?? "application/json";
155
152
  }
@@ -164,55 +161,47 @@ var _ApiCallWitness = class _ApiCallWitness extends AbstractWitness {
164
161
  const { uriTemplate: callUriTemplate, params: callParams, queries: callQueries } = asApiUriTemplateCall(call) ?? {};
165
162
  const { uri: configUri } = asApiUriCallWitnessConfig(this.config) ?? {};
166
163
  const { uriTemplate: configUriTemplate, params: configParams, queries: configQueries } = asApiUriTemplateCallWitnessConfig(this.config) ?? {};
167
- const params = {
168
- ...configParams,
169
- ...callParams
170
- };
164
+ const params = { ...configParams, ...callParams };
171
165
  let url = void 0;
172
166
  if (callUri) {
173
- url = new URL(callUri);
167
+ url = new URL2(callUri);
174
168
  } else if (callUriTemplate) {
175
- url = new URL(fillTemplate(callUriTemplate, params));
169
+ url = new URL2(fillTemplate(callUriTemplate, params));
176
170
  } else if (configUri) {
177
- url = new URL(configUri);
171
+ url = new URL2(configUri);
178
172
  } else if (configUriTemplate) {
179
- url = new URL(fillTemplate(configUriTemplate, params));
173
+ url = new URL2(fillTemplate(configUriTemplate, params));
180
174
  }
181
175
  if (url) {
182
- const queries = Object.entries({
183
- ...configQueries,
184
- ...callQueries
185
- });
176
+ const queries = Object.entries({ ...configQueries, ...callQueries });
186
177
  queries.map(([key, value]) => url == null ? void 0 : url.searchParams.set(key, value));
187
178
  return url.href;
188
179
  }
189
180
  throw new Error("Unable to determine uri. No uri/uriTemplate specified in either the call or config.");
190
181
  }
191
182
  getHeaders(headers) {
192
- return {
193
- ...this.params.headers,
194
- ...this.config.headers,
195
- ...headers
196
- };
183
+ return { ...this.params.headers, ...this.config.headers, ...headers };
197
184
  }
198
185
  async observeHandler(inPayloads = []) {
199
186
  await this.started("throw");
200
187
  try {
201
- const observations = await Promise.all(inPayloads.filter(isPayloadOfSchemaType8(ApiCallSchema)).map(async (call) => {
202
- const { verb: callVerb } = call;
203
- const { verb: configVerb } = this.config;
204
- const verb = callVerb ?? configVerb ?? "get";
205
- const uri = this.getFullUri(call);
206
- const validatedUri = assertEx2(checkIpfsUrl(uri, this.ipfsGateway), () => "Invalid URI");
207
- if (verb === "get") {
208
- return this.httpGet(validatedUri, (await PayloadBuilder.build(call)).$hash);
209
- }
210
- const observation = {
211
- call: await PayloadHasher.hash(call),
212
- schema: ApiCallResultSchema
213
- };
214
- return observation;
215
- }));
188
+ const observations = await Promise.all(
189
+ inPayloads.filter(isPayloadOfSchemaType8(ApiCallSchema)).map(async (call) => {
190
+ const { verb: callVerb } = call;
191
+ const { verb: configVerb } = this.config;
192
+ const verb = callVerb ?? configVerb ?? "get";
193
+ const uri = this.getFullUri(call);
194
+ const validatedUri = assertEx2(checkIpfsUrl(uri, this.ipfsGateway), () => "Invalid URI");
195
+ if (verb === "get") {
196
+ return this.httpGet(validatedUri, (await PayloadBuilder.build(call)).$hash);
197
+ }
198
+ const observation = {
199
+ call: await PayloadHasher.hash(call),
200
+ schema: ApiCallResultSchema
201
+ };
202
+ return observation;
203
+ })
204
+ );
216
205
  return observations;
217
206
  } catch (ex) {
218
207
  const error = ex;
@@ -231,13 +220,7 @@ var _ApiCallWitness = class _ApiCallWitness extends AbstractWitness {
231
220
  try {
232
221
  switch (this.accept) {
233
222
  case "application/json": {
234
- const axios = new AxiosJson({
235
- headers: {
236
- ...this.getHeaders(headers),
237
- Accept: "application/json"
238
- },
239
- timeout: this.timeout
240
- });
223
+ const axios = new AxiosJson({ headers: { ...this.getHeaders(headers), Accept: "application/json" }, timeout: this.timeout });
241
224
  const response = await axios.get(url);
242
225
  if (response.status >= 200 && response.status < 300) {
243
226
  const jsonResult = result;
@@ -254,10 +237,7 @@ var _ApiCallWitness = class _ApiCallWitness extends AbstractWitness {
254
237
  case "application/xml":
255
238
  case "text/xml": {
256
239
  const axios = new Axios({
257
- headers: {
258
- ...this.getHeaders(headers),
259
- Accept: this.accept
260
- },
240
+ headers: { ...this.getHeaders(headers), Accept: this.accept },
261
241
  responseType: "arraybuffer",
262
242
  timeout: this.timeout
263
243
  });
@@ -275,11 +255,7 @@ var _ApiCallWitness = class _ApiCallWitness extends AbstractWitness {
275
255
  break;
276
256
  }
277
257
  default: {
278
- const axios = new Axios({
279
- headers: this.params.headers,
280
- responseType: "arraybuffer",
281
- timeout: this.timeout
282
- });
258
+ const axios = new Axios({ headers: this.params.headers, responseType: "arraybuffer", timeout: this.timeout });
283
259
  const response = await axios.get(url);
284
260
  if (response.status >= 200 && response.status < 300) {
285
261
  const jsonResult = result;
@@ -313,13 +289,6 @@ var _ApiCallWitness = class _ApiCallWitness extends AbstractWitness {
313
289
  return result;
314
290
  }
315
291
  };
316
- __name(_ApiCallWitness, "ApiCallWitness");
317
- __publicField(_ApiCallWitness, "configSchemas", [
318
- ...__superGet(_ApiCallWitness, _ApiCallWitness, "configSchemas"),
319
- ApiCallWitnessConfigSchema
320
- ]);
321
- __publicField(_ApiCallWitness, "defaultConfigSchema", ApiCallWitnessConfigSchema);
322
- var ApiCallWitness = _ApiCallWitness;
323
292
  export {
324
293
  ApiCallResultSchema,
325
294
  ApiCallSchema,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Payload/identity/asApiCall.ts","../../src/Payload/identity/isApiCall.ts","../../src/Payload/Schema.ts","../../src/Payload/identity/asApiCallBase64Result.ts","../../src/Payload/identity/isApiCallBase64Result.ts","../../src/Payload/identity/asApiCallResult.ts","../../src/Payload/identity/isApiCallResult.ts","../../src/Payload/identity/asApiCallXmlResult.ts","../../src/Payload/identity/isApiCallXmlResult.ts","../../src/Payload/identity/asApiUriCall.ts","../../src/Payload/identity/isApiUriCall.ts","../../src/Payload/identity/asApiUriTemplateCall.ts","../../src/Payload/identity/isApiUriTemplateCall.ts","../../src/Payload/identity/isApiCallErrorResult.ts","../../src/Payload/types/ApiCallJsonResult.ts","../../src/Witness/Config.ts","../../src/Witness/Schema.ts","../../src/Witness/Witness.ts","../../src/lib/checkIpfsUrl.ts"],"sourcesContent":["import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCall } from './isApiCall.ts'\n\nexport const asApiCall = AsObjectFactory.create(isApiCall)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallSchema } from '../Schema.ts'\nimport { ApiCall } from '../types/index.ts'\n\nexport const isApiCall = isPayloadOfSchemaType<ApiCall>(ApiCallSchema)\n","export const ApiCallSchema = 'network.xyo.api.call'\nexport type ApiCallSchema = typeof ApiCallSchema\n\nexport const ApiCallResultSchema = `${ApiCallSchema}.result`\nexport type ApiCallResultSchema = typeof ApiCallResultSchema\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCallBase64Result } from './isApiCallBase64Result.ts'\n\nexport const asApiCallBase64Result = AsObjectFactory.create(isApiCallBase64Result)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallBase64Result } from '../types/index.ts'\n\nexport const isApiCallBase64Result = (x?: unknown | null): x is ApiCallBase64Result => {\n return isPayloadOfSchemaType(ApiCallResultSchema)(x) && typeof (x as ApiCallBase64Result)?.data === 'string'\n}\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCallResult } from './isApiCallResult.ts'\n\nexport const asApiCallResult = AsObjectFactory.create(isApiCallResult)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallResult } from '../types/index.ts'\n\nexport const isApiCallResult = isPayloadOfSchemaType<ApiCallResult>(ApiCallResultSchema)\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCallXmlResult } from './isApiCallXmlResult.ts'\n\nexport const asApiCallXmlResult = AsObjectFactory.create(isApiCallXmlResult)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallXmlResult } from '../types/index.ts'\n\nexport const isApiCallXmlResult = (x?: unknown | null): x is ApiCallXmlResult => {\n return isPayloadOfSchemaType(ApiCallResultSchema)(x) && typeof (x as ApiCallXmlResult)?.data === 'string'\n}\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiUriCall } from './isApiUriCall.ts'\n\nexport const asApiUriCall = AsObjectFactory.create(isApiUriCall)\n","import { ApiUriCall } from '../types/index.ts'\nimport { isApiCall } from './isApiCall.ts'\n\nexport const isApiUriCall = (value?: unknown): value is ApiUriCall => isApiCall(value) && !!(value as ApiUriCall).uri\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiUriTemplateCall } from './isApiUriTemplateCall.ts'\n\nexport const asApiUriTemplateCall = AsObjectFactory.create(isApiUriTemplateCall)\n","import { ApiUriTemplateCall } from '../types/index.ts'\nimport { isApiCall } from './isApiCall.ts'\n\nexport const isApiUriTemplateCall = (value?: unknown): value is ApiUriTemplateCall =>\n isApiCall(value) && !!((value as ApiUriTemplateCall).uriTemplate || (value as ApiUriTemplateCall).params)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallErrorResult, ApiCallResult } from '../types/index.ts'\n\nexport const isApiCallErrorResult = (value: unknown): value is ApiCallErrorResult =>\n !!isPayloadOfSchemaType<ApiCallResult>(ApiCallResultSchema) && ((value as ApiCallErrorResult).http?.status ?? 200) >= 400\n","import { Hash } from '@xylabs/hex'\nimport { AsObjectFactory, JsonArray, JsonObject } from '@xylabs/object'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\n\nexport type ApiCallJsonResultType = JsonArray | JsonObject\n\nexport type ApiCallJsonResult<T extends ApiCallJsonResultType = ApiCallJsonResultType> = Payload<\n {\n call: Hash\n contentType: 'application/json'\n data: T\n },\n ApiCallResultSchema\n>\n\nexport const isApiCallJsonResult = <T extends ApiCallJsonResultType = ApiCallJsonResultType>(x?: unknown | null): x is ApiCallJsonResult<T> => {\n return isPayloadOfSchemaType(ApiCallResultSchema)(x) && (x as ApiCallJsonResult)?.contentType === 'application/json'\n}\nexport const asApiCallJsonResult = AsObjectFactory.create(isApiCallJsonResult)\n","import { AsObjectFactory } from '@xylabs/object'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessConfig } from '@xyo-network/witness-model'\n\nimport { ApiCall, ApiUriCall, ApiUriTemplateCall, MimeTypes } from '../Payload/index.ts'\nimport { ApiCallWitnessConfigSchema } from './Schema.ts'\n\nexport type ApiCallWitnessConfigBase = WitnessConfig<{\n accept?: MimeTypes\n headers?: Record<string, string | undefined>\n queries?: ApiCall['queries']\n schema: ApiCallWitnessConfigSchema\n timeout?: number\n verb?: ApiCall['verb']\n}>\n\nexport type ApiUriCallWitnessConfig = WitnessConfig<\n ApiCallWitnessConfigBase & {\n uri: ApiUriCall['uri']\n }\n>\n\nexport type ApiUriTemplateCallWitnessConfig = WitnessConfig<\n ApiCallWitnessConfigBase & {\n params?: Record<string, string>\n uriTemplate: ApiUriTemplateCall['uriTemplate']\n }\n>\n\nexport type ApiCallWitnessConfig = ApiUriCallWitnessConfig | ApiUriTemplateCallWitnessConfig | ApiCallWitnessConfigBase\n\nexport const isApiCallWitnessConfig = isPayloadOfSchemaType<ApiCallWitnessConfig>(ApiCallWitnessConfigSchema)\nexport const asApiCallWitnessConfig = AsObjectFactory.create(isApiCallWitnessConfig)\n\nexport const isApiUriCallWitnessConfig = (value?: unknown): value is ApiUriCallWitnessConfig =>\n isApiCallWitnessConfig(value) && !!(value as ApiUriCallWitnessConfig).uri\nexport const asApiUriCallWitnessConfig = AsObjectFactory.create(isApiUriCallWitnessConfig)\n\nexport const isApiUriTemplateCallWitnessConfig = (value?: unknown): value is ApiUriTemplateCallWitnessConfig =>\n isApiCallWitnessConfig(value) && !!(value as ApiUriTemplateCallWitnessConfig).uriTemplate\nexport const asApiUriTemplateCallWitnessConfig = AsObjectFactory.create(isApiUriTemplateCallWitnessConfig)\n","export const ApiCallWitnessConfigSchema = 'network.xyo.api.call.witness.config'\nexport type ApiCallWitnessConfigSchema = typeof ApiCallWitnessConfigSchema\n","/* eslint-disable max-statements */\nimport { assertEx } from '@xylabs/assert'\nimport { Axios, AxiosError, AxiosJson } from '@xylabs/axios'\nimport { Hash } from '@xylabs/hex'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { fromByteArray } from 'base64-js'\nimport fillTemplate from 'es6-dynamic-template'\n\nimport { checkIpfsUrl } from '../lib/index.ts'\nimport {\n ApiCall,\n ApiCallBase64Result,\n ApiCallErrorResult,\n ApiCallJsonResult,\n ApiCallJsonResultType,\n ApiCallResult,\n ApiCallResultSchema,\n ApiCallSchema,\n ApiCallXmlResult,\n asApiUriCall,\n asApiUriTemplateCall,\n MimeTypes,\n} from '../Payload/index.ts'\nimport { asApiUriCallWitnessConfig, asApiUriTemplateCallWitnessConfig } from './Config.ts'\nimport { ApiCallWitnessParams } from './Params.ts'\nimport { ApiCallWitnessConfigSchema } from './Schema.ts'\n\nexport class ApiCallWitness<TParams extends ApiCallWitnessParams = ApiCallWitnessParams> extends AbstractWitness<TParams, ApiCall, ApiCallResult> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, ApiCallWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = ApiCallWitnessConfigSchema\n\n get accept(): MimeTypes {\n return this.config.accept ?? 'application/json'\n }\n\n get ipfsGateway() {\n return this.params.ipfsGateway\n }\n\n get timeout() {\n return this.config.timeout\n }\n\n getFullUri(call?: ApiCall): string {\n const { uri: callUri } = asApiUriCall(call) ?? {}\n const { uriTemplate: callUriTemplate, params: callParams, queries: callQueries } = asApiUriTemplateCall(call) ?? {}\n const { uri: configUri } = asApiUriCallWitnessConfig(this.config) ?? {}\n const { uriTemplate: configUriTemplate, params: configParams, queries: configQueries } = asApiUriTemplateCallWitnessConfig(this.config) ?? {}\n\n const params = { ...configParams, ...callParams }\n\n let url: URL | undefined = undefined\n\n if (callUri) {\n url = new URL(callUri)\n } else if (callUriTemplate) {\n url = new URL(fillTemplate(callUriTemplate, params))\n } else if (configUri) {\n url = new URL(configUri)\n } else if (configUriTemplate) {\n url = new URL(fillTemplate(configUriTemplate, params))\n }\n\n if (url) {\n const queries = Object.entries({ ...configQueries, ...callQueries })\n queries.map(([key, value]) => url?.searchParams.set(key, value))\n return url.href\n }\n\n throw new Error('Unable to determine uri. No uri/uriTemplate specified in either the call or config.')\n }\n\n getHeaders(headers?: Record<string, string | undefined>): Record<string, string | undefined> {\n return { ...this.params.headers, ...this.config.headers, ...headers }\n }\n\n protected override async observeHandler(inPayloads: ApiCall[] = []): Promise<ApiCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(ApiCallSchema)).map(async (call) => {\n const { verb: callVerb } = call\n const { verb: configVerb } = this.config\n const verb = callVerb ?? configVerb ?? 'get'\n const uri = this.getFullUri(call)\n\n const validatedUri = assertEx(checkIpfsUrl(uri, this.ipfsGateway), () => 'Invalid URI')\n\n if (verb === 'get') {\n return this.httpGet(validatedUri, (await PayloadBuilder.build(call)).$hash)\n }\n\n const observation: ApiCallResult = {\n call: await PayloadHasher.hash(call),\n schema: ApiCallResultSchema,\n }\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.error(`Error [${this.config.name}]: ${error.message}`)\n console.log(error.stack)\n throw error\n }\n }\n\n // eslint-disable-next-line complexity\n private async httpGet(url: string, call: Hash, headers?: Record<string, string | undefined>): Promise<ApiCallResult> {\n const result: ApiCallResult = {\n call,\n schema: ApiCallResultSchema,\n }\n try {\n switch (this.accept) {\n case 'application/json': {\n const axios = new AxiosJson({ headers: { ...this.getHeaders(headers), Accept: 'application/json' }, timeout: this.timeout })\n const response = await axios.get<ApiCallJsonResultType>(url)\n if (response.status >= 200 && response.status < 300) {\n const jsonResult = result as ApiCallJsonResult\n jsonResult.data = response.data\n jsonResult.contentType = 'application/json'\n } else {\n const errorResult = result as ApiCallErrorResult\n errorResult.http = {\n status: response.status,\n }\n }\n break\n }\n case 'application/xml':\n case 'text/xml': {\n const axios = new Axios({\n headers: { ...this.getHeaders(headers), Accept: this.accept },\n responseType: 'arraybuffer',\n timeout: this.timeout,\n })\n const response = await axios.get(url)\n if (response.status >= 200 && response.status < 300) {\n const xmlResult = result as ApiCallXmlResult\n xmlResult.data = Buffer.from(response.data, 'binary').toString('utf8')\n xmlResult.contentType = response.headers['content-type']?.toString() ?? 'application/xml'\n } else {\n const errorResult = result as ApiCallErrorResult\n errorResult.http = {\n status: response.status,\n }\n }\n break\n }\n default: {\n const axios = new Axios({ headers: this.params.headers, responseType: 'arraybuffer', timeout: this.timeout })\n const response = await axios.get(url)\n if (response.status >= 200 && response.status < 300) {\n const jsonResult = result as ApiCallBase64Result\n jsonResult.data = fromByteArray(Buffer.from(response.data, 'binary'))\n jsonResult.contentType = response.headers['content-type']?.toString() ?? 'application/octet-stream'\n } else {\n const errorResult = result as ApiCallErrorResult\n errorResult.http = {\n status: response.status,\n }\n }\n break\n }\n }\n } catch (ex) {\n const axiosError = ex as AxiosError\n if (axiosError.isAxiosError) {\n if (axiosError?.response?.status !== undefined) {\n result.http = result.http ?? {}\n result.http.status = axiosError?.response?.status\n }\n if (axiosError?.code !== undefined) {\n result.http = result.http ?? {}\n result.http.code = axiosError?.code\n }\n return result\n } else {\n throw ex\n }\n }\n return result\n }\n}\n","import { assertEx } from '@xylabs/assert'\n\nconst allowIpfsIoRepair = true\n\n/**\n * Returns the equivalent IPFS gateway URL for the supplied URL.\n * @param urlToCheck The URL to check\n * @returns If the supplied URL is an IPFS URL, it converts the URL to the\n * equivalent IPFS gateway URL. Otherwise, returns the original URL.\n */\nexport const checkIpfsUrl = (urlToCheck: string, ipfsGateway?: string): string => {\n try {\n const url = new URL(urlToCheck)\n let protocol = url.protocol\n let host = url.host\n let path = url.pathname\n const query = url.search\n if (protocol === 'ipfs:') {\n protocol = 'https:'\n host = assertEx(ipfsGateway, () => 'No ipfsGateway provided')\n path = url.host === 'ipfs' ? `ipfs${path}` : `ipfs/${url.host}${path}`\n const root = `${protocol}//${host}/${path}`\n return query?.length > 0 ? `${root}?${query}` : root\n } else if (allowIpfsIoRepair && protocol === 'https' && host === 'ipfs.io') {\n protocol = 'https:'\n host = assertEx(ipfsGateway, () => 'No ipfsGateway provided')\n const pathParts = path.split('/')\n if (pathParts[0] === 'ipfs') {\n pathParts.shift()\n }\n path = pathParts.join('/')\n const root = `${protocol}//${host}/${path}`\n return query?.length > 0 ? `${root}?${query}` : root\n } else {\n return urlToCheck\n }\n } catch {\n // const error = ex as Error\n // console.error(`${error.name}:${error.message} [${urlToCheck}]`)\n // console.log(error.stack)\n return urlToCheck\n }\n}\n"],"mappings":"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","names":["AsObjectFactory","isPayloadOfSchemaType","ApiCallSchema","ApiCallResultSchema","isApiCall","isPayloadOfSchemaType","ApiCallSchema","asApiCall","AsObjectFactory","create","isApiCall","AsObjectFactory","isPayloadOfSchemaType","isApiCallBase64Result","x","isPayloadOfSchemaType","ApiCallResultSchema","data","asApiCallBase64Result","AsObjectFactory","create","isApiCallBase64Result","AsObjectFactory","isPayloadOfSchemaType","isApiCallResult","isPayloadOfSchemaType","ApiCallResultSchema","asApiCallResult","AsObjectFactory","create","isApiCallResult","AsObjectFactory","isPayloadOfSchemaType","isApiCallXmlResult","x","isPayloadOfSchemaType","ApiCallResultSchema","data","asApiCallXmlResult","AsObjectFactory","create","isApiCallXmlResult","AsObjectFactory","isApiUriCall","value","isApiCall","uri","asApiUriCall","AsObjectFactory","create","isApiUriCall","AsObjectFactory","isApiUriTemplateCall","value","isApiCall","uriTemplate","params","asApiUriTemplateCall","AsObjectFactory","create","isApiUriTemplateCall","isPayloadOfSchemaType","isApiCallErrorResult","value","isPayloadOfSchemaType","ApiCallResultSchema","http","status","AsObjectFactory","isPayloadOfSchemaType","isApiCallJsonResult","x","isPayloadOfSchemaType","ApiCallResultSchema","contentType","asApiCallJsonResult","AsObjectFactory","create","AsObjectFactory","isPayloadOfSchemaType","ApiCallWitnessConfigSchema","isApiCallWitnessConfig","isPayloadOfSchemaType","ApiCallWitnessConfigSchema","asApiCallWitnessConfig","AsObjectFactory","create","isApiUriCallWitnessConfig","value","uri","asApiUriCallWitnessConfig","isApiUriTemplateCallWitnessConfig","uriTemplate","asApiUriTemplateCallWitnessConfig","assertEx","Axios","AxiosJson","AbstractWitness","PayloadHasher","PayloadBuilder","isPayloadOfSchemaType","fromByteArray","fillTemplate","assertEx","allowIpfsIoRepair","checkIpfsUrl","urlToCheck","ipfsGateway","url","URL","protocol","host","path","pathname","query","search","assertEx","root","length","pathParts","split","shift","join","ApiCallWitness","AbstractWitness","accept","config","ipfsGateway","params","timeout","getFullUri","call","uri","callUri","asApiUriCall","uriTemplate","callUriTemplate","callParams","queries","callQueries","asApiUriTemplateCall","configUri","asApiUriCallWitnessConfig","configUriTemplate","configParams","configQueries","asApiUriTemplateCallWitnessConfig","url","undefined","URL","fillTemplate","Object","entries","map","key","value","searchParams","set","href","Error","getHeaders","headers","observeHandler","inPayloads","started","observations","Promise","all","filter","isPayloadOfSchemaType","ApiCallSchema","verb","callVerb","configVerb","validatedUri","assertEx","checkIpfsUrl","httpGet","PayloadBuilder","build","$hash","observation","PayloadHasher","hash","schema","ApiCallResultSchema","ex","error","console","name","message","log","stack","result","axios","AxiosJson","Accept","response","get","status","jsonResult","data","contentType","errorResult","http","Axios","responseType","xmlResult","Buffer","from","toString","fromByteArray","axiosError","isAxiosError","code","configSchemas","ApiCallWitnessConfigSchema","defaultConfigSchema"]}
1
+ {"version":3,"sources":["../../src/Payload/identity/asApiCall.ts","../../src/Payload/identity/isApiCall.ts","../../src/Payload/Schema.ts","../../src/Payload/identity/asApiCallBase64Result.ts","../../src/Payload/identity/isApiCallBase64Result.ts","../../src/Payload/identity/asApiCallResult.ts","../../src/Payload/identity/isApiCallResult.ts","../../src/Payload/identity/asApiCallXmlResult.ts","../../src/Payload/identity/isApiCallXmlResult.ts","../../src/Payload/identity/asApiUriCall.ts","../../src/Payload/identity/isApiUriCall.ts","../../src/Payload/identity/asApiUriTemplateCall.ts","../../src/Payload/identity/isApiUriTemplateCall.ts","../../src/Payload/identity/isApiCallErrorResult.ts","../../src/Payload/types/ApiCallJsonResult.ts","../../src/Witness/Config.ts","../../src/Witness/Schema.ts","../../src/Witness/Witness.ts","../../src/lib/checkIpfsUrl.ts"],"sourcesContent":["import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCall } from './isApiCall.ts'\n\nexport const asApiCall = AsObjectFactory.create(isApiCall)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallSchema } from '../Schema.ts'\nimport { ApiCall } from '../types/index.ts'\n\nexport const isApiCall = isPayloadOfSchemaType<ApiCall>(ApiCallSchema)\n","export const ApiCallSchema = 'network.xyo.api.call'\nexport type ApiCallSchema = typeof ApiCallSchema\n\nexport const ApiCallResultSchema = `${ApiCallSchema}.result`\nexport type ApiCallResultSchema = typeof ApiCallResultSchema\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCallBase64Result } from './isApiCallBase64Result.ts'\n\nexport const asApiCallBase64Result = AsObjectFactory.create(isApiCallBase64Result)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallBase64Result } from '../types/index.ts'\n\nexport const isApiCallBase64Result = (x?: unknown | null): x is ApiCallBase64Result => {\n return isPayloadOfSchemaType(ApiCallResultSchema)(x) && typeof (x as ApiCallBase64Result)?.data === 'string'\n}\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCallResult } from './isApiCallResult.ts'\n\nexport const asApiCallResult = AsObjectFactory.create(isApiCallResult)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallResult } from '../types/index.ts'\n\nexport const isApiCallResult = isPayloadOfSchemaType<ApiCallResult>(ApiCallResultSchema)\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiCallXmlResult } from './isApiCallXmlResult.ts'\n\nexport const asApiCallXmlResult = AsObjectFactory.create(isApiCallXmlResult)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallXmlResult } from '../types/index.ts'\n\nexport const isApiCallXmlResult = (x?: unknown | null): x is ApiCallXmlResult => {\n return isPayloadOfSchemaType(ApiCallResultSchema)(x) && typeof (x as ApiCallXmlResult)?.data === 'string'\n}\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiUriCall } from './isApiUriCall.ts'\n\nexport const asApiUriCall = AsObjectFactory.create(isApiUriCall)\n","import { ApiUriCall } from '../types/index.ts'\nimport { isApiCall } from './isApiCall.ts'\n\nexport const isApiUriCall = (value?: unknown): value is ApiUriCall => isApiCall(value) && !!(value as ApiUriCall).uri\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isApiUriTemplateCall } from './isApiUriTemplateCall.ts'\n\nexport const asApiUriTemplateCall = AsObjectFactory.create(isApiUriTemplateCall)\n","import { ApiUriTemplateCall } from '../types/index.ts'\nimport { isApiCall } from './isApiCall.ts'\n\nexport const isApiUriTemplateCall = (value?: unknown): value is ApiUriTemplateCall =>\n isApiCall(value) && !!((value as ApiUriTemplateCall).uriTemplate || (value as ApiUriTemplateCall).params)\n","import { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\nimport { ApiCallErrorResult, ApiCallResult } from '../types/index.ts'\n\nexport const isApiCallErrorResult = (value: unknown): value is ApiCallErrorResult =>\n !!isPayloadOfSchemaType<ApiCallResult>(ApiCallResultSchema) && ((value as ApiCallErrorResult).http?.status ?? 200) >= 400\n","import { Hash } from '@xylabs/hex'\nimport { AsObjectFactory, JsonArray, JsonObject } from '@xylabs/object'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nimport { ApiCallResultSchema } from '../Schema.ts'\n\nexport type ApiCallJsonResultType = JsonArray | JsonObject\n\nexport type ApiCallJsonResult<T extends ApiCallJsonResultType = ApiCallJsonResultType> = Payload<\n {\n call: Hash\n contentType: 'application/json'\n data: T\n },\n ApiCallResultSchema\n>\n\nexport const isApiCallJsonResult = <T extends ApiCallJsonResultType = ApiCallJsonResultType>(x?: unknown | null): x is ApiCallJsonResult<T> => {\n return isPayloadOfSchemaType(ApiCallResultSchema)(x) && (x as ApiCallJsonResult)?.contentType === 'application/json'\n}\nexport const asApiCallJsonResult = AsObjectFactory.create(isApiCallJsonResult)\n","import { AsObjectFactory } from '@xylabs/object'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessConfig } from '@xyo-network/witness-model'\n\nimport { ApiCall, ApiUriCall, ApiUriTemplateCall, MimeTypes } from '../Payload/index.ts'\nimport { ApiCallWitnessConfigSchema } from './Schema.ts'\n\nexport type ApiCallWitnessConfigBase = WitnessConfig<{\n accept?: MimeTypes\n headers?: Record<string, string | undefined>\n queries?: ApiCall['queries']\n schema: ApiCallWitnessConfigSchema\n timeout?: number\n verb?: ApiCall['verb']\n}>\n\nexport type ApiUriCallWitnessConfig = WitnessConfig<\n ApiCallWitnessConfigBase & {\n uri: ApiUriCall['uri']\n }\n>\n\nexport type ApiUriTemplateCallWitnessConfig = WitnessConfig<\n ApiCallWitnessConfigBase & {\n params?: Record<string, string>\n uriTemplate: ApiUriTemplateCall['uriTemplate']\n }\n>\n\nexport type ApiCallWitnessConfig = ApiUriCallWitnessConfig | ApiUriTemplateCallWitnessConfig | ApiCallWitnessConfigBase\n\nexport const isApiCallWitnessConfig = isPayloadOfSchemaType<ApiCallWitnessConfig>(ApiCallWitnessConfigSchema)\nexport const asApiCallWitnessConfig = AsObjectFactory.create(isApiCallWitnessConfig)\n\nexport const isApiUriCallWitnessConfig = (value?: unknown): value is ApiUriCallWitnessConfig =>\n isApiCallWitnessConfig(value) && !!(value as ApiUriCallWitnessConfig).uri\nexport const asApiUriCallWitnessConfig = AsObjectFactory.create(isApiUriCallWitnessConfig)\n\nexport const isApiUriTemplateCallWitnessConfig = (value?: unknown): value is ApiUriTemplateCallWitnessConfig =>\n isApiCallWitnessConfig(value) && !!(value as ApiUriTemplateCallWitnessConfig).uriTemplate\nexport const asApiUriTemplateCallWitnessConfig = AsObjectFactory.create(isApiUriTemplateCallWitnessConfig)\n","export const ApiCallWitnessConfigSchema = 'network.xyo.api.call.witness.config'\nexport type ApiCallWitnessConfigSchema = typeof ApiCallWitnessConfigSchema\n","/* eslint-disable max-statements */\nimport { assertEx } from '@xylabs/assert'\nimport { AxiosJson } from '@xylabs/axios'\nimport { Hash } from '@xylabs/hex'\nimport { URL } from '@xylabs/url'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { Axios, AxiosError } from 'axios'\nimport { fromByteArray } from 'base64-js'\nimport fillTemplate from 'es6-dynamic-template'\n\nimport { checkIpfsUrl } from '../lib/index.ts'\nimport {\n ApiCall,\n ApiCallBase64Result,\n ApiCallErrorResult,\n ApiCallJsonResult,\n ApiCallJsonResultType,\n ApiCallResult,\n ApiCallResultSchema,\n ApiCallSchema,\n ApiCallXmlResult,\n asApiUriCall,\n asApiUriTemplateCall,\n MimeTypes,\n} from '../Payload/index.ts'\nimport { asApiUriCallWitnessConfig, asApiUriTemplateCallWitnessConfig } from './Config.ts'\nimport { ApiCallWitnessParams } from './Params.ts'\nimport { ApiCallWitnessConfigSchema } from './Schema.ts'\n\nexport class ApiCallWitness<TParams extends ApiCallWitnessParams = ApiCallWitnessParams> extends AbstractWitness<TParams, ApiCall, ApiCallResult> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, ApiCallWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = ApiCallWitnessConfigSchema\n\n get accept(): MimeTypes {\n return this.config.accept ?? 'application/json'\n }\n\n get ipfsGateway() {\n return this.params.ipfsGateway\n }\n\n get timeout() {\n return this.config.timeout\n }\n\n getFullUri(call?: ApiCall): string {\n const { uri: callUri } = asApiUriCall(call) ?? {}\n const { uriTemplate: callUriTemplate, params: callParams, queries: callQueries } = asApiUriTemplateCall(call) ?? {}\n const { uri: configUri } = asApiUriCallWitnessConfig(this.config) ?? {}\n const { uriTemplate: configUriTemplate, params: configParams, queries: configQueries } = asApiUriTemplateCallWitnessConfig(this.config) ?? {}\n\n const params = { ...configParams, ...callParams }\n\n let url: URL | undefined = undefined\n\n if (callUri) {\n url = new URL(callUri)\n } else if (callUriTemplate) {\n url = new URL(fillTemplate(callUriTemplate, params))\n } else if (configUri) {\n url = new URL(configUri)\n } else if (configUriTemplate) {\n url = new URL(fillTemplate(configUriTemplate, params))\n }\n\n if (url) {\n const queries = Object.entries({ ...configQueries, ...callQueries })\n queries.map(([key, value]) => url?.searchParams.set(key, value))\n return url.href\n }\n\n throw new Error('Unable to determine uri. No uri/uriTemplate specified in either the call or config.')\n }\n\n getHeaders(headers?: Record<string, string | undefined>): Record<string, string | undefined> {\n return { ...this.params.headers, ...this.config.headers, ...headers }\n }\n\n protected override async observeHandler(inPayloads: ApiCall[] = []): Promise<ApiCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(ApiCallSchema)).map(async (call) => {\n const { verb: callVerb } = call\n const { verb: configVerb } = this.config\n const verb = callVerb ?? configVerb ?? 'get'\n const uri = this.getFullUri(call)\n\n const validatedUri = assertEx(checkIpfsUrl(uri, this.ipfsGateway), () => 'Invalid URI')\n\n if (verb === 'get') {\n return this.httpGet(validatedUri, (await PayloadBuilder.build(call)).$hash)\n }\n\n const observation: ApiCallResult = {\n call: await PayloadHasher.hash(call),\n schema: ApiCallResultSchema,\n }\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.error(`Error [${this.config.name}]: ${error.message}`)\n console.log(error.stack)\n throw error\n }\n }\n\n // eslint-disable-next-line complexity\n private async httpGet(url: string, call: Hash, headers?: Record<string, string | undefined>): Promise<ApiCallResult> {\n const result: ApiCallResult = {\n call,\n schema: ApiCallResultSchema,\n }\n try {\n switch (this.accept) {\n case 'application/json': {\n const axios = new AxiosJson({ headers: { ...this.getHeaders(headers), Accept: 'application/json' }, timeout: this.timeout })\n const response = await axios.get<ApiCallJsonResultType>(url)\n if (response.status >= 200 && response.status < 300) {\n const jsonResult = result as ApiCallJsonResult\n jsonResult.data = response.data\n jsonResult.contentType = 'application/json'\n } else {\n const errorResult = result as ApiCallErrorResult\n errorResult.http = {\n status: response.status,\n }\n }\n break\n }\n case 'application/xml':\n case 'text/xml': {\n const axios = new Axios({\n headers: { ...this.getHeaders(headers), Accept: this.accept },\n responseType: 'arraybuffer',\n timeout: this.timeout,\n })\n const response = await axios.get(url)\n if (response.status >= 200 && response.status < 300) {\n const xmlResult = result as ApiCallXmlResult\n xmlResult.data = Buffer.from(response.data, 'binary').toString('utf8')\n xmlResult.contentType = response.headers['content-type']?.toString() ?? 'application/xml'\n } else {\n const errorResult = result as ApiCallErrorResult\n errorResult.http = {\n status: response.status,\n }\n }\n break\n }\n default: {\n const axios = new Axios({ headers: this.params.headers, responseType: 'arraybuffer', timeout: this.timeout })\n const response = await axios.get(url)\n if (response.status >= 200 && response.status < 300) {\n const jsonResult = result as ApiCallBase64Result\n jsonResult.data = fromByteArray(Buffer.from(response.data, 'binary'))\n jsonResult.contentType = response.headers['content-type']?.toString() ?? 'application/octet-stream'\n } else {\n const errorResult = result as ApiCallErrorResult\n errorResult.http = {\n status: response.status,\n }\n }\n break\n }\n }\n } catch (ex) {\n const axiosError = ex as AxiosError\n if (axiosError.isAxiosError) {\n if (axiosError?.response?.status !== undefined) {\n result.http = result.http ?? {}\n result.http.status = axiosError?.response?.status\n }\n if (axiosError?.code !== undefined) {\n result.http = result.http ?? {}\n result.http.code = axiosError?.code\n }\n return result\n } else {\n throw ex\n }\n }\n return result\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { URL } from '@xylabs/url'\n\nconst allowIpfsIoRepair = true\n\n/**\n * Returns the equivalent IPFS gateway URL for the supplied URL.\n * @param urlToCheck The URL to check\n * @returns If the supplied URL is an IPFS URL, it converts the URL to the\n * equivalent IPFS gateway URL. Otherwise, returns the original URL.\n */\nexport const checkIpfsUrl = (urlToCheck: string, ipfsGateway?: string): string => {\n try {\n const url = new URL(urlToCheck)\n let protocol = url.protocol\n let host = url.host\n let path = url.pathname\n const query = url.search\n if (protocol === 'ipfs:') {\n protocol = 'https:'\n host = assertEx(ipfsGateway, () => 'No ipfsGateway provided')\n path = url.host === 'ipfs' ? `ipfs${path}` : `ipfs/${url.host}${path}`\n const root = `${protocol}//${host}/${path}`\n return query?.length > 0 ? `${root}?${query}` : root\n } else if (allowIpfsIoRepair && protocol === 'https' && host === 'ipfs.io') {\n protocol = 'https:'\n host = assertEx(ipfsGateway, () => 'No ipfsGateway provided')\n const pathParts = path.split('/')\n if (pathParts[0] === 'ipfs') {\n pathParts.shift()\n }\n path = pathParts.join('/')\n const root = `${protocol}//${host}/${path}`\n return query?.length > 0 ? `${root}?${query}` : root\n } else {\n return urlToCheck\n }\n } catch {\n // const error = ex as Error\n // console.error(`${error.name}:${error.message} [${urlToCheck}]`)\n // console.log(error.stack)\n return urlToCheck\n }\n}\n"],"mappings":"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","names":["AsObjectFactory","isPayloadOfSchemaType","isPayloadOfSchemaType","AsObjectFactory","AsObjectFactory","isPayloadOfSchemaType","isPayloadOfSchemaType","AsObjectFactory","AsObjectFactory","isPayloadOfSchemaType","isPayloadOfSchemaType","AsObjectFactory","AsObjectFactory","AsObjectFactory","AsObjectFactory","AsObjectFactory","isPayloadOfSchemaType","isPayloadOfSchemaType","AsObjectFactory","isPayloadOfSchemaType","isPayloadOfSchemaType","AsObjectFactory","AsObjectFactory","isPayloadOfSchemaType","isPayloadOfSchemaType","AsObjectFactory","assertEx","URL","isPayloadOfSchemaType","URL","isPayloadOfSchemaType","assertEx"]}
@@ -1 +1 @@
1
- {"version":3,"file":"checkIpfsUrl.d.ts","sourceRoot":"","sources":["../../../src/lib/checkIpfsUrl.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,YAAY,eAAgB,MAAM,gBAAgB,MAAM,KAAG,MAgCvE,CAAA"}
1
+ {"version":3,"file":"checkIpfsUrl.d.ts","sourceRoot":"","sources":["../../../src/lib/checkIpfsUrl.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY,eAAgB,MAAM,gBAAgB,MAAM,KAAG,MAgCvE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkIpfsUrl.d.ts","sourceRoot":"","sources":["../../../src/lib/checkIpfsUrl.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,YAAY,eAAgB,MAAM,gBAAgB,MAAM,KAAG,MAgCvE,CAAA"}
1
+ {"version":3,"file":"checkIpfsUrl.d.ts","sourceRoot":"","sources":["../../../src/lib/checkIpfsUrl.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY,eAAgB,MAAM,gBAAgB,MAAM,KAAG,MAgCvE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkIpfsUrl.d.ts","sourceRoot":"","sources":["../../../src/lib/checkIpfsUrl.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,YAAY,eAAgB,MAAM,gBAAgB,MAAM,KAAG,MAgCvE,CAAA"}
1
+ {"version":3,"file":"checkIpfsUrl.d.ts","sourceRoot":"","sources":["../../../src/lib/checkIpfsUrl.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY,eAAgB,MAAM,gBAAgB,MAAM,KAAG,MAgCvE,CAAA"}
package/package.json CHANGED
@@ -10,27 +10,29 @@
10
10
  "url": "https://github.com/XYOracleNetwork/plugins/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/assert": "^3.6.8",
14
- "@xylabs/axios": "^3.6.8",
15
- "@xylabs/hex": "^3.6.8",
16
- "@xylabs/object": "^3.6.8",
17
- "@xyo-network/abstract-witness": "^2.111.2",
18
- "@xyo-network/hash": "^2.111.2",
19
- "@xyo-network/payload-builder": "^2.111.2",
20
- "@xyo-network/payload-model": "^2.111.2",
21
- "@xyo-network/witness-model": "^2.111.2",
13
+ "@xylabs/assert": "^3.6.12",
14
+ "@xylabs/axios": "^3.6.12",
15
+ "@xylabs/hex": "^3.6.12",
16
+ "@xylabs/object": "^3.6.12",
17
+ "@xylabs/url": "^3.6.12",
18
+ "@xyo-network/abstract-witness": "^2.111.3",
19
+ "@xyo-network/hash": "^2.111.3",
20
+ "@xyo-network/payload-builder": "^2.111.3",
21
+ "@xyo-network/payload-model": "^2.111.3",
22
+ "@xyo-network/witness-model": "^2.111.3",
23
+ "axios": "^1.7.3",
22
24
  "base64-js": "^1.5.1",
23
25
  "es6-dynamic-template": "^2.0.0"
24
26
  },
25
27
  "devDependencies": {
26
- "@xylabs/jest-helpers": "^3.6.8",
27
- "@xylabs/ts-scripts-yarn3": "^3.15.13",
28
- "@xylabs/tsconfig": "^3.15.13",
29
- "@xyo-network/account": "^2.111.2",
30
- "@xyo-network/manifest": "^2.111.2",
31
- "@xyo-network/module-factory-locator": "^2.111.2",
32
- "@xyo-network/module-model": "^2.111.2",
33
- "@xyo-network/sentinel-model": "^2.111.2",
28
+ "@xylabs/jest-helpers": "^3.6.12",
29
+ "@xylabs/ts-scripts-yarn3": "^3.15.14",
30
+ "@xylabs/tsconfig": "^3.15.14",
31
+ "@xyo-network/account": "^2.111.3",
32
+ "@xyo-network/manifest": "^2.111.3",
33
+ "@xyo-network/module-factory-locator": "^2.111.3",
34
+ "@xyo-network/module-model": "^2.111.3",
35
+ "@xyo-network/sentinel-model": "^2.111.3",
34
36
  "ethers": "^6.13.2",
35
37
  "jest": "^29.7.0",
36
38
  "typescript": "^5.5.4"
@@ -74,6 +76,6 @@
74
76
  "url": "https://github.com/XYOracleNetwork/plugins.git"
75
77
  },
76
78
  "sideEffects": false,
77
- "version": "2.99.5",
79
+ "version": "2.99.6",
78
80
  "type": "module"
79
81
  }
@@ -1,11 +1,13 @@
1
1
  /* eslint-disable max-statements */
2
2
  import { assertEx } from '@xylabs/assert'
3
- import { Axios, AxiosError, AxiosJson } from '@xylabs/axios'
3
+ import { AxiosJson } from '@xylabs/axios'
4
4
  import { Hash } from '@xylabs/hex'
5
+ import { URL } from '@xylabs/url'
5
6
  import { AbstractWitness } from '@xyo-network/abstract-witness'
6
7
  import { PayloadHasher } from '@xyo-network/hash'
7
8
  import { PayloadBuilder } from '@xyo-network/payload-builder'
8
9
  import { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'
10
+ import { Axios, AxiosError } from 'axios'
9
11
  import { fromByteArray } from 'base64-js'
10
12
  import fillTemplate from 'es6-dynamic-template'
11
13
 
@@ -1,4 +1,5 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
+ import { URL } from '@xylabs/url'
2
3
 
3
4
  const allowIpfsIoRepair = true
4
5