@xyo-network/witness-evm-abstract 5.3.22 → 5.3.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/witness-evm-abstract",
3
- "version": "5.3.22",
3
+ "version": "5.3.25",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -30,39 +30,35 @@
30
30
  "types": "dist/neutral/index.d.ts",
31
31
  "files": [
32
32
  "dist",
33
- "src",
34
33
  "!**/*.bench.*",
35
34
  "!**/*.spec.*",
36
35
  "!**/*.test.*",
37
36
  "README.md"
38
37
  ],
39
38
  "dependencies": {
40
- "@xyo-network/abstract-witness": "~5.3.22",
41
- "@xyo-network/module-model": "~5.3.22",
42
- "@xyo-network/payload-model": "~5.3.22",
43
- "@xyo-network/witness-model": "~5.3.22"
39
+ "@xyo-network/abstract-witness": "~5.3.25",
40
+ "@xyo-network/payload-model": "~5.3.25",
41
+ "@xyo-network/module-model": "~5.3.25",
42
+ "@xyo-network/witness-model": "~5.3.25"
44
43
  },
45
44
  "devDependencies": {
46
45
  "@opentelemetry/api": "^1.9.1",
47
46
  "@types/node": "^25.5.0",
48
- "@xylabs/sdk-js": "^5.0.91",
49
- "@xylabs/ts-scripts-common": "~7.6.8",
50
- "@xylabs/ts-scripts-yarn3": "~7.6.8",
51
- "@xylabs/tsconfig": "~7.6.8",
52
- "@xyo-network/abstract-witness": "~5.3.22",
53
- "@xyo-network/module-model": "~5.3.22",
54
- "@xyo-network/payload-model": "~5.3.22",
55
- "@xyo-network/witness-model": "~5.3.22",
47
+ "@xylabs/sdk-js": "^5.0.93",
48
+ "@xylabs/ts-scripts-common": "~7.6.16",
49
+ "@xylabs/ts-scripts-pnpm": "~7.6.16",
50
+ "@xylabs/tsconfig": "~7.6.16",
56
51
  "acorn": "^8.16.0",
57
52
  "axios": "^1.14.0",
58
- "cosmiconfig": "^9.0.1",
59
- "esbuild": "^0.27.4",
60
- "eslint": "^10.1.0",
53
+ "esbuild": "^0.28.0",
61
54
  "ethers": "^6.16.0",
62
- "rollup": "^4.60.1",
63
55
  "tslib": "^2.8.1",
64
56
  "typescript": "~5.9.3",
65
- "zod": "^4.3.6"
57
+ "zod": "^4.3.6",
58
+ "@xyo-network/module-model": "~5.3.25",
59
+ "@xyo-network/abstract-witness": "~5.3.25",
60
+ "@xyo-network/payload-model": "~5.3.25",
61
+ "@xyo-network/witness-model": "~5.3.25"
66
62
  },
67
63
  "peerDependencies": {
68
64
  "@xylabs/sdk-js": "^5",
@@ -73,4 +69,4 @@
73
69
  "publishConfig": {
74
70
  "access": "public"
75
71
  }
76
- }
72
+ }
package/src/Witness.ts DELETED
@@ -1,74 +0,0 @@
1
- import type { EmptyObject, Promisable } from '@xylabs/sdk-js'
2
- import { isTruthy } from '@xylabs/sdk-js'
3
- import { AbstractWitness } from '@xyo-network/abstract-witness'
4
- import type { AnyConfigSchema } from '@xyo-network/module-model'
5
- import { creatableModule } from '@xyo-network/module-model'
6
- import {
7
- asSchema, type Payload, type Schema,
8
- } from '@xyo-network/payload-model'
9
- import type {
10
- CustomWitnessInstance, WitnessConfig, WitnessInstance, WitnessModuleEventData, WitnessParams,
11
- } from '@xyo-network/witness-model'
12
- import type { Provider } from 'ethers'
13
-
14
- export const EvmWitnessConfigSchema = asSchema('network.xyo.evm.witness', true)
15
- export type EvmWitnessConfigSchema = typeof EvmWitnessConfigSchema
16
-
17
- export type EvmWitnessConfig<TAdditional extends EmptyObject | Payload | void = void, TSchema extends Schema | void = void> = WitnessConfig<
18
- TAdditional,
19
- TSchema extends void
20
- ? TAdditional extends Payload
21
- ? TAdditional['schema']
22
- : EvmWitnessConfigSchema
23
- : TSchema
24
- >
25
-
26
- export type AdditionalEvmWitnessParams = {
27
- providers: Provider[]
28
- }
29
-
30
- export interface EvmWitnessParams<
31
- TConfig extends AnyConfigSchema<EvmWitnessConfig> = EvmWitnessConfig,
32
- > extends WitnessParams<TConfig>
33
- {
34
- providers: () => Promisable<Provider[]>
35
- }
36
-
37
- creatableModule()
38
- export abstract class AbstractEvmWitness<
39
- TParams extends EvmWitnessParams<AnyConfigSchema<EvmWitnessConfig>> = EvmWitnessParams,
40
- TIn extends Payload = Payload,
41
- TOut extends Payload = Payload,
42
- TEventData extends WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut> = WitnessModuleEventData<
43
- WitnessInstance<TParams, TIn, TOut>,
44
- TIn,
45
- TOut
46
- >,
47
- >
48
- extends AbstractWitness<TParams, TIn, TOut, TEventData>
49
- implements CustomWitnessInstance<TParams, TIn, TOut, TEventData> {
50
- static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmWitnessConfigSchema]
51
- static override readonly defaultConfigSchema: Schema = EvmWitnessConfigSchema
52
- private _providers: Provider[] | undefined = undefined
53
-
54
- async getProvider(cache?: boolean): Promise<Provider | undefined>
55
- async getProvider(cache: boolean, error: string | true): Promise<Provider>
56
- async getProvider(cache = false, error?: string | boolean): Promise<Provider | undefined> {
57
- const providers = await this.getProviders(cache)
58
- if (providers.length === 0) {
59
- if (isTruthy(error)) {
60
- throw new Error(typeof error === 'string' ? error : 'No providers available')
61
- }
62
- return undefined
63
- }
64
- return providers[Date.now() % providers.length] // pick a random provider
65
- }
66
-
67
- async getProviders(cache = false): Promise<Provider[]> {
68
- const cachedProviders = cache ? this._providers : undefined
69
- this._providers = cachedProviders ?? (await this.params.providers())
70
- return this._providers
71
- }
72
-
73
- protected abstract override observeHandler(payloads?: TIn[]): Promisable<TOut[]>
74
- }
package/src/index.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from './lib/index.ts'
2
- export * from './model.ts'
3
- export * from './Witness.ts'
@@ -1,43 +0,0 @@
1
- import { assertEx } 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
- }
@@ -1,103 +0,0 @@
1
- import {
2
- assertEx, isString, isUndefined,
3
- } from '@xylabs/sdk-js'
4
- import type { Provider } from 'ethers'
5
- import {
6
- InfuraProvider, InfuraWebSocketProvider, JsonRpcProvider,
7
- WebSocketProvider,
8
- } from 'ethers'
9
-
10
- export type ProviderSource = 'infura' | 'quicknode'
11
- export type ProviderType = 'rpc' | 'wss'
12
-
13
- export interface GetProvidersFromEnvOptions {
14
- providerSource?: ProviderSource
15
- providerType?: ProviderType
16
- }
17
-
18
- const createInfuraRpc = (chainId: number) => {
19
- return (isString(process.env.INFURA_PROJECT_ID) && isString(process.env.INFURA_PROJECT_SECRET))
20
- ? new InfuraProvider(chainId, process.env.INFURA_PROJECT_ID, process.env.INFURA_PROJECT_SECRET)
21
- : undefined
22
- }
23
-
24
- const createInfuraWss = (chainId: number) => {
25
- return isString(process.env.INFURA_PROJECT_ID) ? new InfuraWebSocketProvider(chainId, process.env.INFURA_PROJECT_ID) : undefined
26
- }
27
-
28
- const createQuicknodeWss = (chainId: number) => {
29
- const quickNodeWSSUri = process.env.QUICKNODE_WSS_URI
30
- return isString(quickNodeWSSUri) ? new WebSocketProvider(quickNodeWSSUri, chainId) : undefined
31
- }
32
-
33
- const createQuicknodeRpc = (chainId: number) => {
34
- const quickNodeHttpsUri = process.env.QUICKNODE_HTTPS_URI
35
- return isString(quickNodeHttpsUri) ? new JsonRpcProvider(quickNodeHttpsUri, chainId) : undefined
36
- }
37
-
38
- export const getProviderFromEnv = (
39
- chainId: number = 0x01,
40
- { providerSource = 'infura', providerType = 'rpc' }: GetProvidersFromEnvOptions = {},
41
- ): Provider => {
42
- let provider: Provider | undefined = undefined
43
-
44
- const quicknodeCases = () => {
45
- switch (providerType) {
46
- case 'rpc': {
47
- provider = createQuicknodeRpc(chainId)
48
- break
49
- }
50
- case 'wss': {
51
- provider = createQuicknodeWss(chainId)
52
- break
53
- }
54
- }
55
- }
56
-
57
- const infuraCases = () => {
58
- switch (providerType) {
59
- case 'wss': {
60
- provider = createInfuraWss(chainId)
61
- break
62
- }
63
- case 'rpc': {
64
- provider = createInfuraRpc(chainId)
65
- break
66
- }
67
- }
68
- }
69
-
70
- switch (providerSource ?? 'infura') {
71
- case 'quicknode': {
72
- quicknodeCases()
73
- break
74
- }
75
- case 'infura': {
76
- infuraCases()
77
- break
78
- }
79
- }
80
- if (isUndefined(provider)) {
81
- provider = createInfuraWss(chainId) ?? createInfuraRpc(chainId) ?? createQuicknodeRpc(chainId)
82
- }
83
- return assertEx(provider, () => `Unable to create provider [${chainId}]: ${providerSource}|${providerType}`)
84
- }
85
-
86
- const providers: Record<string, Provider> = {}
87
-
88
- export const getSharedProviderFromEnv = (
89
- chainId: number = 0x01,
90
- options?: { providerSource?: ProviderSource; providerType?: ProviderType },
91
- ): Provider => {
92
- const key = `${chainId}:${options ? JSON.stringify(options) : 'default'}`
93
- providers[key] = providers[key] ?? getProviderFromEnv(chainId, options)
94
- return providers[key]
95
- }
96
-
97
- export const getProvidersFromEnv = (count: number = 1, chainId: number = 0x01, options: GetProvidersFromEnvOptions = {}): Provider[] => {
98
- const result: Provider[] = []
99
- for (let i = 0; i < count; i++) {
100
- result.push(getProviderFromEnv(chainId, options))
101
- }
102
- return result
103
- }
package/src/lib/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './checkIpfsUrl.ts'
2
- export * from './getProviderFromEnv.ts'
package/src/model.ts DELETED
@@ -1,13 +0,0 @@
1
- import { asSchema, type Payload } from '@xyo-network/payload-model'
2
-
3
- export const EvmAddressSchema = asSchema('network.xyo.evm.address', true)
4
- export type EvmAddressSchema = typeof EvmAddressSchema
5
-
6
- export type EvmAddress = Payload<
7
- {
8
- address?: string
9
- blockTag?: string | number
10
- chainId?: number
11
- },
12
- EvmAddressSchema
13
- >