@xyo-network/api-call-witness 5.3.2 → 5.3.4

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 (118) hide show
  1. package/dist/neutral/Payload/Schema.d.ts +9 -0
  2. package/dist/neutral/Payload/Schema.d.ts.map +1 -0
  3. package/dist/neutral/Payload/identity/asApiCall.d.ts +2 -0
  4. package/dist/neutral/Payload/identity/asApiCall.d.ts.map +1 -0
  5. package/dist/neutral/Payload/identity/asApiCallBase64Result.d.ts +2 -0
  6. package/dist/neutral/Payload/identity/asApiCallBase64Result.d.ts.map +1 -0
  7. package/dist/neutral/Payload/identity/asApiCallResult.d.ts +2 -0
  8. package/dist/neutral/Payload/identity/asApiCallResult.d.ts.map +1 -0
  9. package/dist/neutral/Payload/identity/asApiCallXmlResult.d.ts +2 -0
  10. package/dist/neutral/Payload/identity/asApiCallXmlResult.d.ts.map +1 -0
  11. package/dist/neutral/Payload/identity/asApiUriCall.d.ts +2 -0
  12. package/dist/neutral/Payload/identity/asApiUriCall.d.ts.map +1 -0
  13. package/dist/neutral/Payload/identity/asApiUriTemplateCall.d.ts +9 -0
  14. package/dist/neutral/Payload/identity/asApiUriTemplateCall.d.ts.map +1 -0
  15. package/dist/neutral/Payload/identity/index.d.ts +14 -0
  16. package/dist/neutral/Payload/identity/index.d.ts.map +1 -0
  17. package/dist/neutral/Payload/identity/isApiCall.d.ts +3 -0
  18. package/dist/neutral/Payload/identity/isApiCall.d.ts.map +1 -0
  19. package/dist/neutral/Payload/identity/isApiCallBase64Result.d.ts +3 -0
  20. package/dist/neutral/Payload/identity/isApiCallBase64Result.d.ts.map +1 -0
  21. package/dist/neutral/Payload/identity/isApiCallErrorResult.d.ts +3 -0
  22. package/dist/neutral/Payload/identity/isApiCallErrorResult.d.ts.map +1 -0
  23. package/dist/neutral/Payload/identity/isApiCallResult.d.ts +3 -0
  24. package/dist/neutral/Payload/identity/isApiCallResult.d.ts.map +1 -0
  25. package/dist/neutral/Payload/identity/isApiCallXmlResult.d.ts +3 -0
  26. package/dist/neutral/Payload/identity/isApiCallXmlResult.d.ts.map +1 -0
  27. package/dist/neutral/Payload/identity/isApiUriCall.d.ts +3 -0
  28. package/dist/neutral/Payload/identity/isApiUriCall.d.ts.map +1 -0
  29. package/dist/neutral/Payload/identity/isApiUriTemplateCall.d.ts +3 -0
  30. package/dist/neutral/Payload/identity/isApiUriTemplateCall.d.ts.map +1 -0
  31. package/dist/neutral/Payload/index.d.ts +4 -0
  32. package/dist/neutral/Payload/index.d.ts.map +1 -0
  33. package/{src/Payload/types/ApiCall.ts → dist/neutral/Payload/types/ApiCall.d.ts} +4 -4
  34. package/dist/neutral/Payload/types/ApiCall.d.ts.map +1 -0
  35. package/dist/neutral/Payload/types/ApiCallBase64Result.d.ts +11 -0
  36. package/dist/neutral/Payload/types/ApiCallBase64Result.d.ts.map +1 -0
  37. package/dist/neutral/Payload/types/ApiCallErrorResult.d.ts +9 -0
  38. package/dist/neutral/Payload/types/ApiCallErrorResult.d.ts.map +1 -0
  39. package/dist/neutral/Payload/types/ApiCallFields.d.ts +8 -0
  40. package/dist/neutral/Payload/types/ApiCallFields.d.ts.map +1 -0
  41. package/dist/neutral/Payload/types/ApiCallJsonResult.d.ts +12 -0
  42. package/dist/neutral/Payload/types/ApiCallJsonResult.d.ts.map +1 -0
  43. package/dist/neutral/Payload/types/ApiCallResult.d.ts +8 -0
  44. package/dist/neutral/Payload/types/ApiCallResult.d.ts.map +1 -0
  45. package/dist/neutral/Payload/types/ApiCallXmlResult.d.ts +9 -0
  46. package/dist/neutral/Payload/types/ApiCallXmlResult.d.ts.map +1 -0
  47. package/dist/neutral/Payload/types/ApiUriCall.d.ts +7 -0
  48. package/dist/neutral/Payload/types/ApiUriCall.d.ts.map +1 -0
  49. package/dist/neutral/Payload/types/ApiUriTemplateCall.d.ts +8 -0
  50. package/dist/neutral/Payload/types/ApiUriTemplateCall.d.ts.map +1 -0
  51. package/dist/neutral/Payload/types/HttpMeta.d.ts +5 -0
  52. package/dist/neutral/Payload/types/HttpMeta.d.ts.map +1 -0
  53. package/dist/neutral/Payload/types/MimeTypes.d.ts +2 -0
  54. package/dist/neutral/Payload/types/MimeTypes.d.ts.map +1 -0
  55. package/dist/neutral/Payload/types/Queries.d.ts +2 -0
  56. package/dist/neutral/Payload/types/Queries.d.ts.map +1 -0
  57. package/dist/neutral/Payload/types/Verb.d.ts +2 -0
  58. package/dist/neutral/Payload/types/Verb.d.ts.map +1 -0
  59. package/dist/neutral/Payload/types/index.d.ts +14 -0
  60. package/dist/neutral/Payload/types/index.d.ts.map +1 -0
  61. package/dist/neutral/Witness/Config.d.ts +26 -0
  62. package/dist/neutral/Witness/Config.d.ts.map +1 -0
  63. package/dist/neutral/Witness/Params.d.ts +7 -0
  64. package/dist/neutral/Witness/Params.d.ts.map +1 -0
  65. package/dist/neutral/Witness/Schema.d.ts +5 -0
  66. package/dist/neutral/Witness/Schema.d.ts.map +1 -0
  67. package/dist/neutral/Witness/Witness.d.ts +16 -0
  68. package/dist/neutral/Witness/Witness.d.ts.map +1 -0
  69. package/dist/neutral/Witness/index.d.ts +5 -0
  70. package/dist/neutral/Witness/index.d.ts.map +1 -0
  71. package/dist/neutral/index.d.ts +3 -0
  72. package/dist/neutral/index.d.ts.map +1 -0
  73. package/dist/neutral/index.mjs +327 -0
  74. package/dist/neutral/index.mjs.map +1 -0
  75. package/dist/neutral/lib/checkIpfsUrl.d.ts +8 -0
  76. package/dist/neutral/lib/checkIpfsUrl.d.ts.map +1 -0
  77. package/dist/neutral/lib/index.d.ts +2 -0
  78. package/dist/neutral/lib/index.d.ts.map +1 -0
  79. package/package.json +10 -5
  80. package/src/Payload/Schema.ts +0 -7
  81. package/src/Payload/identity/asApiCall.ts +0 -5
  82. package/src/Payload/identity/asApiCallBase64Result.ts +0 -5
  83. package/src/Payload/identity/asApiCallResult.ts +0 -5
  84. package/src/Payload/identity/asApiCallXmlResult.ts +0 -5
  85. package/src/Payload/identity/asApiUriCall.ts +0 -5
  86. package/src/Payload/identity/asApiUriTemplateCall.ts +0 -5
  87. package/src/Payload/identity/index.ts +0 -13
  88. package/src/Payload/identity/isApiCall.ts +0 -6
  89. package/src/Payload/identity/isApiCallBase64Result.ts +0 -8
  90. package/src/Payload/identity/isApiCallErrorResult.ts +0 -7
  91. package/src/Payload/identity/isApiCallResult.ts +0 -6
  92. package/src/Payload/identity/isApiCallXmlResult.ts +0 -8
  93. package/src/Payload/identity/isApiUriCall.ts +0 -4
  94. package/src/Payload/identity/isApiUriTemplateCall.ts +0 -5
  95. package/src/Payload/index.ts +0 -3
  96. package/src/Payload/types/ApiCallBase64Result.ts +0 -15
  97. package/src/Payload/types/ApiCallErrorResult.ts +0 -13
  98. package/src/Payload/types/ApiCallFields.ts +0 -8
  99. package/src/Payload/types/ApiCallJsonResult.ts +0 -25
  100. package/src/Payload/types/ApiCallResult.ts +0 -12
  101. package/src/Payload/types/ApiCallXmlResult.ts +0 -13
  102. package/src/Payload/types/ApiUriCall.ts +0 -11
  103. package/src/Payload/types/ApiUriTemplateCall.ts +0 -12
  104. package/src/Payload/types/HttpMeta.ts +0 -4
  105. package/src/Payload/types/MimeTypes.ts +0 -13
  106. package/src/Payload/types/Queries.ts +0 -1
  107. package/src/Payload/types/Verb.ts +0 -1
  108. package/src/Payload/types/index.ts +0 -13
  109. package/src/Witness/Config.ts +0 -43
  110. package/src/Witness/Params.ts +0 -10
  111. package/src/Witness/Schema.ts +0 -4
  112. package/src/Witness/Witness.ts +0 -197
  113. package/src/Witness/index.ts +0 -4
  114. package/src/Witness/spec/opensea.nft-call.json +0 -41
  115. package/src/index.ts +0 -2
  116. package/src/lib/checkIpfsUrl.ts +0 -43
  117. package/src/lib/index.ts +0 -1
  118. package/src/types.d.ts +0 -1
@@ -1,12 +0,0 @@
1
- import type { JsonArray, JsonObject } from '@xylabs/sdk-js'
2
-
3
- import type { ApiCallBase64Result } from './ApiCallBase64Result.ts'
4
- import type { ApiCallErrorResult } from './ApiCallErrorResult.ts'
5
- import type { ApiCallJsonResult } from './ApiCallJsonResult.ts'
6
-
7
- type NewType = JsonObject
8
-
9
- export type ApiCallResult<TJson extends JsonArray | JsonObject = JsonArray | NewType>
10
- = | ApiCallBase64Result
11
- | ApiCallJsonResult<TJson>
12
- | ApiCallErrorResult
@@ -1,13 +0,0 @@
1
- import type { Hash } from '@xylabs/sdk-js'
2
- import type { Payload } from '@xyo-network/payload-model'
3
-
4
- import type { ApiCallResultSchema } from '../Schema.ts'
5
-
6
- export type ApiCallXmlResult = Payload<
7
- {
8
- call: Hash
9
- contentType: 'application/xml' | 'text/xml'
10
- data: string
11
- },
12
- ApiCallResultSchema
13
- >
@@ -1,11 +0,0 @@
1
- import type { Payload } from '@xyo-network/payload-model'
2
-
3
- import type { ApiCallSchema } from '../Schema.ts'
4
- import type { ApiCallFields } from './ApiCallFields.ts'
5
-
6
- export type ApiUriCallPayload = Payload<
7
- ApiCallFields & {
8
- uri: string
9
- },
10
- ApiCallSchema
11
- >
@@ -1,12 +0,0 @@
1
- import type { Payload } from '@xyo-network/payload-model'
2
-
3
- import type { ApiCallSchema } from '../Schema.ts'
4
- import type { ApiCallFields } from './ApiCallFields.ts'
5
-
6
- export type ApiUriTemplateCallPayload = Payload<
7
- ApiCallFields & {
8
- params?: Record<string, string>
9
- uriTemplate?: string
10
- },
11
- ApiCallSchema
12
- >
@@ -1,4 +0,0 @@
1
- export interface HttpMeta {
2
- code?: string
3
- status?: number
4
- }
@@ -1,13 +0,0 @@
1
- // TODO: Bring in from some library or package for completeness
2
- export type MimeTypes
3
- = | 'application/json' // JSON format
4
- | 'application/octet-stream' // Binary data
5
- | 'application/pdf' // PDF format
6
- | 'application/xhtml+xml' // XHTML format
7
- | 'application/xml' // XML format
8
- | 'image/gif' // GIF image format
9
- | 'image/jpeg' // JPEG image format
10
- | 'image/png' // PNG image format
11
- | 'text/html' // HTML format
12
- | 'text/plain' // Plain text format
13
- | 'text/xml' // XML format (alternative)
@@ -1 +0,0 @@
1
- export type Queries = Record<string, string>
@@ -1 +0,0 @@
1
- export type Verb = 'get' | 'post'
@@ -1,13 +0,0 @@
1
- export * from './ApiCall.ts'
2
- export * from './ApiCallBase64Result.ts'
3
- export * from './ApiCallErrorResult.ts'
4
- export * from './ApiCallFields.ts'
5
- export * from './ApiCallJsonResult.ts'
6
- export * from './ApiCallResult.ts'
7
- export * from './ApiCallXmlResult.ts'
8
- export * from './ApiUriCall.ts'
9
- export * from './ApiUriTemplateCall.ts'
10
- export * from './HttpMeta.ts'
11
- export * from './MimeTypes.ts'
12
- export * from './Queries.ts'
13
- export * from './Verb.ts'
@@ -1,43 +0,0 @@
1
- import { AsObjectFactory } from '@xylabs/sdk-js'
2
- import { isPayloadOfSchemaType } from '@xyo-network/payload-model'
3
- import type { WitnessConfig } from '@xyo-network/witness-model'
4
-
5
- import type {
6
- ApiCallPayload, ApiUriCallPayload, ApiUriTemplateCallPayload, MimeTypes,
7
- } from '../Payload/index.ts'
8
- import { ApiCallWitnessConfigSchema } from './Schema.ts'
9
-
10
- export type ApiCallWitnessConfigBase = WitnessConfig<{
11
- accept?: MimeTypes
12
- headers?: Record<string, string | undefined>
13
- queries?: ApiCallPayload['queries']
14
- schema: ApiCallWitnessConfigSchema
15
- timeout?: number
16
- verb?: ApiCallPayload['verb']
17
- }>
18
-
19
- export type ApiUriCallWitnessConfig = WitnessConfig<
20
- ApiCallWitnessConfigBase & {
21
- uri: ApiUriCallPayload['uri']
22
- }
23
- >
24
-
25
- export type ApiUriTemplateCallWitnessConfig = WitnessConfig<
26
- ApiCallWitnessConfigBase & {
27
- params?: Record<string, string>
28
- uriTemplate: ApiUriTemplateCallPayload['uriTemplate']
29
- }
30
- >
31
-
32
- export type ApiCallWitnessConfig = ApiUriCallWitnessConfig | ApiUriTemplateCallWitnessConfig | ApiCallWitnessConfigBase
33
-
34
- export const isApiCallWitnessConfig = isPayloadOfSchemaType<ApiCallWitnessConfig>(ApiCallWitnessConfigSchema)
35
- export const asApiCallWitnessConfig = AsObjectFactory.create(isApiCallWitnessConfig)
36
-
37
- export const isApiUriCallWitnessConfig = (value?: unknown): value is ApiUriCallWitnessConfig =>
38
- isApiCallWitnessConfig(value) && !!(value as ApiUriCallWitnessConfig).uri
39
- export const asApiUriCallWitnessConfig = AsObjectFactory.create(isApiUriCallWitnessConfig)
40
-
41
- export const isApiUriTemplateCallWitnessConfig = (value?: unknown): value is ApiUriTemplateCallWitnessConfig =>
42
- isApiCallWitnessConfig(value) && !!(value as ApiUriTemplateCallWitnessConfig).uriTemplate
43
- export const asApiUriTemplateCallWitnessConfig = AsObjectFactory.create(isApiUriTemplateCallWitnessConfig)
@@ -1,10 +0,0 @@
1
- import type { WitnessParams } from '@xyo-network/witness-model'
2
-
3
- import type { ApiCallWitnessConfig } from './Config.ts'
4
-
5
- export interface ApiCallWitnessParams extends WitnessParams<
6
- ApiCallWitnessConfig>
7
- {
8
- headers?: Record<string, string | undefined>
9
- ipfsGateway?: string
10
- }
@@ -1,4 +0,0 @@
1
- import { asSchema } from '@xyo-network/payload-model'
2
-
3
- export const ApiCallWitnessConfigSchema = asSchema('network.xyo.api.call.witness.config', true)
4
- export type ApiCallWitnessConfigSchema = typeof ApiCallWitnessConfigSchema
@@ -1,197 +0,0 @@
1
- /* eslint-disable max-statements */
2
-
3
- import type { Hash } from '@xylabs/sdk-js'
4
- import {
5
- assertEx, axiosJsonConfig, URL,
6
- } from '@xylabs/sdk-js'
7
- import { AbstractWitness } from '@xyo-network/abstract-witness'
8
- import type { Schema } from '@xyo-network/payload-model'
9
- import { isPayloadOfSchemaType } from '@xyo-network/payload-model'
10
- import { PayloadBuilder } from '@xyo-network/sdk-js'
11
- import type { AxiosError } from 'axios'
12
- import { Axios } from 'axios'
13
- import { fromByteArray } from 'base64-js'
14
- import fillTemplate from 'es6-dynamic-template'
15
-
16
- import { checkIpfsUrl } from '../lib/index.ts'
17
- import type {
18
- ApiCallBase64Result,
19
- ApiCallErrorResult,
20
- ApiCallJsonResult,
21
- ApiCallJsonResultType,
22
- ApiCallPayload,
23
- ApiCallResult,
24
- ApiCallXmlResult,
25
- MimeTypes,
26
- } from '../Payload/index.ts'
27
- import {
28
- ApiCallResultSchema,
29
- ApiCallSchema,
30
- asApiUriCallPayload,
31
- asApiUriTemplateCall,
32
- } from '../Payload/index.ts'
33
- import { asApiUriCallWitnessConfig, asApiUriTemplateCallWitnessConfig } from './Config.ts'
34
- import type { ApiCallWitnessParams } from './Params.ts'
35
- import { ApiCallWitnessConfigSchema } from './Schema.ts'
36
-
37
- export class ApiCallWitness<TParams extends ApiCallWitnessParams = ApiCallWitnessParams> extends AbstractWitness<TParams, ApiCallPayload, ApiCallResult> {
38
- static override readonly configSchemas: Schema[] = [...super.configSchemas, ApiCallWitnessConfigSchema]
39
- static override readonly defaultConfigSchema: Schema = ApiCallWitnessConfigSchema
40
-
41
- get accept(): MimeTypes {
42
- return this.config.accept ?? 'application/json'
43
- }
44
-
45
- get ipfsGateway() {
46
- return this.params.ipfsGateway
47
- }
48
-
49
- get timeout() {
50
- return this.config.timeout
51
- }
52
-
53
- getFullUri(call?: ApiCallPayload): string {
54
- const { uri: callUri } = asApiUriCallPayload(call) ?? {}
55
- const {
56
- uriTemplate: callUriTemplate, params: callParams, queries: callQueries,
57
- } = asApiUriTemplateCall(call) ?? {}
58
- const { uri: configUri } = asApiUriCallWitnessConfig(this.config) ?? {}
59
- const {
60
- uriTemplate: configUriTemplate, params: configParams, queries: configQueries,
61
- } = asApiUriTemplateCallWitnessConfig(this.config) ?? {}
62
-
63
- const params = { ...configParams, ...callParams }
64
-
65
- let url: URL | undefined = undefined
66
-
67
- if (callUri) {
68
- url = new URL(callUri)
69
- } else if (callUriTemplate) {
70
- url = new URL(fillTemplate(callUriTemplate, params))
71
- } else if (configUri) {
72
- url = new URL(configUri)
73
- } else if (configUriTemplate) {
74
- url = new URL(fillTemplate(configUriTemplate, params))
75
- }
76
-
77
- if (url) {
78
- const queries = Object.entries({ ...configQueries, ...callQueries })
79
- for (let [key, value] of queries) url?.searchParams.set(key, value)
80
- return url.href
81
- }
82
-
83
- throw new Error('Unable to determine uri. No uri/uriTemplate specified in either the call or config.')
84
- }
85
-
86
- getHeaders(headers?: Record<string, string | undefined>): Record<string, string | undefined> {
87
- return {
88
- ...this.params.headers, ...this.config.headers, ...headers,
89
- }
90
- }
91
-
92
- protected override async observeHandler(inPayloads: ApiCallPayload[] = []): Promise<ApiCallResult[]> {
93
- await this.started('throw')
94
- try {
95
- const observations = await Promise.all(
96
- inPayloads.filter(isPayloadOfSchemaType<ApiCallPayload>(ApiCallSchema)).map(async (call) => {
97
- const { verb: callVerb } = call
98
- const { verb: configVerb } = this.config
99
- const verb = callVerb ?? configVerb ?? 'get'
100
- const uri = this.getFullUri(call)
101
-
102
- const validatedUri = assertEx(checkIpfsUrl(uri, this.ipfsGateway), () => 'Invalid URI')
103
-
104
- if (verb === 'get') {
105
- return this.httpGet(validatedUri, (await PayloadBuilder.dataHash(call)))
106
- }
107
-
108
- const observation: ApiCallResult = {
109
- call: await PayloadBuilder.hash(call),
110
- schema: ApiCallResultSchema,
111
- }
112
- return observation
113
- }),
114
- )
115
- return observations
116
- } catch (ex) {
117
- const error = ex as Error
118
- console.error(`Error [${this.config.name}]: ${error.message}`)
119
- console.log(error.stack)
120
- throw error
121
- }
122
- }
123
-
124
- // eslint-disable-next-line complexity
125
- private async httpGet(url: string, call: Hash, headers?: Record<string, string | undefined>): Promise<ApiCallResult> {
126
- const result: ApiCallResult = {
127
- call,
128
- schema: ApiCallResultSchema,
129
- }
130
- try {
131
- switch (this.accept) {
132
- case 'application/json': {
133
- const axios = new Axios(axiosJsonConfig({ headers: { ...this.getHeaders(headers), Accept: 'application/json' }, timeout: this.timeout }))
134
- const response = await axios.get<ApiCallJsonResultType>(url)
135
- if (response.status >= 200 && response.status < 300) {
136
- const jsonResult = result as ApiCallJsonResult
137
- jsonResult.data = response.data
138
- jsonResult.contentType = 'application/json'
139
- } else {
140
- const errorResult = result as ApiCallErrorResult
141
- errorResult.http = { status: response.status }
142
- }
143
- break
144
- }
145
- case 'application/xml':
146
- case 'text/xml': {
147
- const axios = new Axios({
148
- headers: { ...this.getHeaders(headers), Accept: this.accept },
149
- responseType: 'arraybuffer',
150
- timeout: this.timeout,
151
- })
152
- const response = await axios.get(url)
153
- if (response.status >= 200 && response.status < 300) {
154
- const xmlResult = result as ApiCallXmlResult
155
- xmlResult.data = Buffer.from(response.data, 'binary').toString('utf8')
156
- xmlResult.contentType = response.headers['content-type']?.toString() ?? 'application/xml'
157
- } else {
158
- const errorResult = result as ApiCallErrorResult
159
- errorResult.http = { status: response.status }
160
- }
161
- break
162
- }
163
- default: {
164
- const axios = new Axios({
165
- headers: this.params.headers, responseType: 'arraybuffer', timeout: this.timeout,
166
- })
167
- const response = await axios.get(url)
168
- if (response.status >= 200 && response.status < 300) {
169
- const jsonResult = result as ApiCallBase64Result
170
- jsonResult.data = fromByteArray(response.data)
171
- jsonResult.contentType = response.headers['content-type']?.toString() ?? 'application/octet-stream'
172
- } else {
173
- const errorResult = result as ApiCallErrorResult
174
- errorResult.http = { status: response.status }
175
- }
176
- break
177
- }
178
- }
179
- } catch (ex) {
180
- const axiosError = ex as AxiosError
181
- if (axiosError.isAxiosError) {
182
- if (axiosError?.response?.status !== undefined) {
183
- result.http = result.http ?? {}
184
- result.http.status = axiosError?.response?.status
185
- }
186
- if (axiosError?.code !== undefined) {
187
- result.http = result.http ?? {}
188
- result.http.code = axiosError?.code
189
- }
190
- return result
191
- } else {
192
- throw ex
193
- }
194
- }
195
- return result
196
- }
197
- }
@@ -1,4 +0,0 @@
1
- export * from './Config.ts'
2
- export * from './Params.ts'
3
- export * from './Schema.ts'
4
- export * from './Witness.ts'
@@ -1,41 +0,0 @@
1
- {
2
- "$schema": "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
3
- "nodes": [
4
- {
5
- "config": {
6
- "name": "ApiCall",
7
- "schema": "network.xyo.node.config"
8
- },
9
- "modules": {
10
- "public": [
11
- {
12
- "config": {
13
- "language": "javascript",
14
- "name": "ApiCallWitness",
15
- "queries": {
16
- "limit": 1
17
- },
18
- "schema": "network.xyo.api.call.witness.config",
19
- "uriTemplate": "https://api.opensea.io/api/v2/chain/ethereum/account/${address}/nfts"
20
- }
21
- },
22
- {
23
- "config": {
24
- "language": "javascript",
25
- "name": "ApiCallSentinel",
26
- "schema": "network.xyo.sentinel.config",
27
- "synchronous": "true",
28
- "tasks": [
29
- {
30
- "input": true,
31
- "mod": "ApiCallWitness"
32
- }
33
- ]
34
- }
35
- }
36
- ]
37
- }
38
- }
39
- ],
40
- "schema": "network.xyo.manifest"
41
- }
package/src/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './Payload/index.ts'
2
- export * from './Witness/index.ts'
@@ -1,43 +0,0 @@
1
- import { assertEx, URL } from '@xylabs/sdk-js'
2
-
3
- const allowIpfsIoRepair = true
4
-
5
- /**
6
- * Returns the equivalent IPFS gateway URL for the supplied URL.
7
- * @param urlToCheck The URL to check
8
- * @returns If the supplied URL is an IPFS URL, it converts the URL to the
9
- * equivalent IPFS gateway URL. Otherwise, returns the original URL.
10
- */
11
- export const checkIpfsUrl = (urlToCheck: string, ipfsGateway?: string): string => {
12
- try {
13
- const url = new URL(urlToCheck)
14
- let protocol = url.protocol
15
- let host = url.host
16
- let path = url.pathname
17
- const query = url.search
18
- if (protocol === 'ipfs:') {
19
- protocol = 'https:'
20
- host = assertEx(ipfsGateway, () => 'No ipfsGateway provided')
21
- path = url.host === 'ipfs' ? `ipfs${path}` : `ipfs/${url.host}${path}`
22
- const root = `${protocol}//${host}/${path}`
23
- return query?.length > 0 ? `${root}?${query}` : root
24
- } else if (allowIpfsIoRepair && protocol === 'https' && host === 'ipfs.io') {
25
- protocol = 'https:'
26
- host = assertEx(ipfsGateway, () => 'No ipfsGateway provided')
27
- const pathParts = path.split('/')
28
- if (pathParts[0] === 'ipfs') {
29
- pathParts.shift()
30
- }
31
- path = pathParts.join('/')
32
- const root = `${protocol}//${host}/${path}`
33
- return query?.length > 0 ? `${root}?${query}` : root
34
- } else {
35
- return urlToCheck
36
- }
37
- } catch {
38
- // const error = ex as Error
39
- // console.error(`${error.name}:${error.message} [${urlToCheck}]`)
40
- // console.log(error.stack)
41
- return urlToCheck
42
- }
43
- }
package/src/lib/index.ts DELETED
@@ -1 +0,0 @@
1
- export * from './checkIpfsUrl.ts'
package/src/types.d.ts DELETED
@@ -1 +0,0 @@
1
- declare module 'es6-dynamic-template'