@xyo-network/chain-services 1.9.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/chain-services",
4
- "version": "1.9.0",
4
+ "version": "1.10.0",
5
5
  "description": "XYO Layer One SDK Services",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -36,57 +36,54 @@
36
36
  "src"
37
37
  ],
38
38
  "dependencies": {
39
- "@opentelemetry/api": "^1.9.0",
40
- "@xylabs/array": "^5.0.0",
41
- "@xylabs/assert": "^5.0.0",
42
- "@xylabs/axios": "^5.0.0",
43
- "@xylabs/creatable": "^5.0.0",
44
- "@xylabs/decimal-precision": "^5.0.0",
45
- "@xylabs/events": "^5.0.0",
46
- "@xylabs/exists": "^5.0.0",
47
- "@xylabs/forget": "^5.0.0",
48
- "@xylabs/hex": "^5.0.0",
49
- "@xylabs/promise": "^5.0.0",
50
- "@xylabs/telemetry": "^5.0.0",
51
- "@xylabs/typeof": "^5.0.0",
52
- "@xyo-network/account-model": "^5.0.0",
53
- "@xyo-network/archivist-memory": "^5.0.0",
54
- "@xyo-network/archivist-model": "^5.0.0",
55
- "@xyo-network/boundwitness-model": "^5.0.0",
56
- "@xyo-network/boundwitness-validator": "^5.0.0",
57
- "@xyo-network/boundwitness-wrapper": "^5.0.0",
58
- "@xyo-network/chain-analyze": "^1.9.0",
59
- "@xyo-network/chain-modules": "^1.9.0",
60
- "@xyo-network/chain-protocol": "^1.9.0",
61
- "@xyo-network/chain-utils": "^1.9.0",
62
- "@xyo-network/hash": "^5.0.0",
63
- "@xyo-network/payload-builder": "^5.0.0",
64
- "@xyo-network/payload-model": "^5.0.0",
65
- "@xyo-network/typechain": "^3.5.4",
66
- "@xyo-network/xl1-protocol": "^1.8.0",
67
- "@xyo-network/xl1-protocol-sdk": "^1.9.0",
68
- "@xyo-network/xl1-validation": "^1.9.0",
69
- "@xyo-network/xl1-wrappers": "^1.9.0",
70
- "async-mutex": "^0.5.0",
71
- "axios": "^1.11.0",
39
+ "@opentelemetry/api": "~1.9.0",
40
+ "@xylabs/array": "~5.0.2",
41
+ "@xylabs/assert": "~5.0.2",
42
+ "@xylabs/creatable": "~5.0.2",
43
+ "@xylabs/decimal-precision": "~5.0.2",
44
+ "@xylabs/events": "~5.0.2",
45
+ "@xylabs/exists": "~5.0.2",
46
+ "@xylabs/forget": "~5.0.2",
47
+ "@xylabs/hex": "~5.0.2",
48
+ "@xylabs/promise": "~5.0.2",
49
+ "@xylabs/telemetry": "~5.0.2",
50
+ "@xylabs/typeof": "~5.0.2",
51
+ "@xyo-network/account-model": "~5.0.0",
52
+ "@xyo-network/archivist-memory": "~5.0.0",
53
+ "@xyo-network/archivist-model": "~5.0.0",
54
+ "@xyo-network/boundwitness-model": "~5.0.0",
55
+ "@xyo-network/boundwitness-validator": "~5.0.0",
56
+ "@xyo-network/boundwitness-wrapper": "~5.0.0",
57
+ "@xyo-network/chain-analyze": "~1.10.0",
58
+ "@xyo-network/chain-modules": "~1.10.0",
59
+ "@xyo-network/chain-protocol": "~1.10.0",
60
+ "@xyo-network/chain-utils": "~1.10.0",
61
+ "@xyo-network/payload-builder": "~5.0.0",
62
+ "@xyo-network/payload-model": "~5.0.0",
63
+ "@xyo-network/typechain": "~3.5.4",
64
+ "@xyo-network/xl1-protocol": "~1.9.3",
65
+ "@xyo-network/xl1-protocol-sdk": "~1.10.0",
66
+ "@xyo-network/xl1-validation": "~1.10.0",
67
+ "@xyo-network/xl1-wrappers": "~1.10.0",
68
+ "async-mutex": "~0.5.0",
72
69
  "ethers": "6.15.0",
73
- "lru-cache": "^11.1.0"
70
+ "lru-cache": "~11.1.0"
74
71
  },
75
72
  "devDependencies": {
76
- "@types/node": "^24.1.0",
77
- "@xylabs/delay": "^5.0.0",
78
- "@xylabs/ts-scripts-yarn3": "^7.0.2",
79
- "@xylabs/tsconfig": "^7.0.2",
80
- "@xylabs/vitest-extended": "^5.0.0",
81
- "@xyo-network/account": "^5.0.0",
82
- "@xyo-network/account-model": "^5.0.0",
83
- "@xyo-network/chain-validation": "^1.9.0",
84
- "@xyo-network/wallet": "^5.0.0",
85
- "knip": "^5.62.0",
86
- "typescript": "^5.8.3",
87
- "vitest": "^3.2.4",
88
- "vitest-mock-extended": "^3.1.0",
89
- "web3-types": "^1.10.0"
73
+ "@types/node": "~24.2.0",
74
+ "@xylabs/delay": "~5.0.2",
75
+ "@xylabs/ts-scripts-yarn3": "~7.0.3",
76
+ "@xylabs/tsconfig": "~7.0.3",
77
+ "@xylabs/vitest-extended": "~5.0.2",
78
+ "@xyo-network/account": "~5.0.0",
79
+ "@xyo-network/account-model": "~5.0.0",
80
+ "@xyo-network/chain-validation": "~1.10.0",
81
+ "@xyo-network/wallet": "~5.0.0",
82
+ "tslib": "~2.8.1",
83
+ "typescript": "~5.9.2",
84
+ "vitest": "~3.2.4",
85
+ "vitest-mock-extended": "~3.1.0",
86
+ "web3-types": "~1.10.0"
90
87
  },
91
88
  "engines": {
92
89
  "node": ">=22.3 <23"
@@ -2,6 +2,7 @@ import '@xylabs/vitest-extended'
2
2
 
3
3
  import { filterAs } from '@xylabs/array'
4
4
  import { assertEx } from '@xylabs/assert'
5
+ import type { CreatableName } from '@xylabs/creatable'
5
6
  import { delay } from '@xylabs/delay'
6
7
  import type { Address, Hex } from '@xylabs/hex'
7
8
  import { asAddress, ZERO_HASH } from '@xylabs/hex'
@@ -76,7 +77,7 @@ describe('XyoBlockProducer', () => {
76
77
  electionService = mock<ElectionService>()
77
78
  pendingBundledTransactionsArchivist = await MemoryArchivist.create({ account: 'random' })
78
79
  const BasePendingTransactionsServiceParams: BasePendingTransactionsServiceParams = {
79
- name: 'TestBasePendingTransactionsServiceParams',
80
+ name: 'TestBasePendingTransactionsServiceParams' as CreatableName,
80
81
  chainArchivist: chainArchivist,
81
82
  chainId,
82
83
  config,
@@ -91,7 +92,7 @@ describe('XyoBlockProducer', () => {
91
92
  rewardService = await MemoryBlockRewardService.create()
92
93
  const balanceService = await accountBalanceServiceFromArchivist(chainArchivist)
93
94
  const params: BaseBlockProducerServiceParams = {
94
- name: 'TestXyoBlockProducerParams',
95
+ name: 'TestXyoBlockProducerParams' as CreatableName,
95
96
  account,
96
97
  balanceService,
97
98
  chainArchivist,
@@ -176,7 +177,7 @@ describe('XyoBlockProducer', () => {
176
177
  }
177
178
  const balanceService = await accountBalanceServiceFromArchivist(chainArchivist)
178
179
  const params: BaseBlockProducerServiceParams = {
179
- name: 'TestXyoBlockProducerParams',
180
+ name: 'TestXyoBlockProducerParams' as CreatableName,
180
181
  account,
181
182
  balanceService,
182
183
  chainArchivist,
@@ -1,4 +1,5 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
+ import type { CreatableName } from '@xylabs/creatable'
2
3
  import { delay } from '@xylabs/delay'
3
4
  import { asAddress } from '@xylabs/hex'
4
5
  import { Account } from '@xyo-network/account'
@@ -52,7 +53,7 @@ describe('BasePendingTransactionsService', () => {
52
53
  rejectedTransactionsArchivist = await MemoryArchivist.create({ account: 'random' })
53
54
  head = assertEx(await findMostRecentBlock(chainArchivist))
54
55
  const params: BasePendingTransactionsServiceParams = {
55
- name: 'TestBasePendingTransactionsServiceParams',
56
+ name: 'TestBasePendingTransactionsServiceParams' as CreatableName,
56
57
  chainArchivist,
57
58
  chainId,
58
59
  config,
package/src/index.ts CHANGED
@@ -5,7 +5,6 @@ export * from './BlockReward/index.ts'
5
5
  export * from './ChainBlockNumberIteration/index.ts'
6
6
  export * from './ChainService/index.ts'
7
7
  export * from './ChainValidator/index.ts'
8
- export * from './DataLake/index.ts'
9
8
  export * from './Election/index.ts'
10
9
  export * from './model/index.ts'
11
10
  export * from './PendingTransactions/index.ts'
@@ -1,10 +0,0 @@
1
- import type { Hash } from '@xylabs/hex';
2
- import type { Payload } from '@xyo-network/payload-model';
3
- import { type DataLakeData, type XyoDataLakeProvider } from '@xyo-network/xl1-protocol';
4
- export declare abstract class AbstractXyoDataLake implements XyoDataLakeProvider {
5
- fetch(hashes: Hash[], maxDepth?: number): Promise<DataLakeData[]>;
6
- trace(hash: Hash): Promise<[DataLakeData | undefined, Payload[]]>;
7
- abstract add(items: DataLakeData[]): Promise<DataLakeData[]>;
8
- abstract get(hashes: Hash[]): Promise<DataLakeData[]>;
9
- }
10
- //# sourceMappingURL=AbstractXyoDataLake.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractXyoDataLake.d.ts","sourceRoot":"","sources":["../../../src/DataLake/AbstractXyoDataLake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAGvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAA;AAElC,8BAAsB,mBAAoB,YAAW,mBAAmB;IAChE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,GAAE,MAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAarE,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,YAAY,GAAG,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IASvE,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAE5D,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CACtD"}
@@ -1,11 +0,0 @@
1
- import type { Hash } from '@xylabs/hex';
2
- import type { ReadWriteArchivist } from '@xyo-network/archivist-model';
3
- import { type DataLakeData } from '@xyo-network/xl1-protocol';
4
- import { AbstractXyoDataLake } from './AbstractXyoDataLake.ts';
5
- export declare class ArchivistXyoDataLake extends AbstractXyoDataLake {
6
- private _archivist;
7
- constructor(archivist: ReadWriteArchivist);
8
- add(items: DataLakeData[]): Promise<DataLakeData[]>;
9
- get(hashes: Hash[]): Promise<DataLakeData[]>;
10
- }
11
- //# sourceMappingURL=ArchivistXyoDataLake.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ArchivistXyoDataLake.d.ts","sourceRoot":"","sources":["../../../src/DataLake/ArchivistXyoDataLake.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEtE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,oBAAqB,SAAQ,mBAAmB;IAC3D,OAAO,CAAC,UAAU,CAAoB;gBAE1B,SAAS,EAAE,kBAAkB;IAKnC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAMnD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAGnD"}
@@ -1,20 +0,0 @@
1
- import type { Hash } from '@xylabs/hex';
2
- import type { Promisable } from '@xylabs/promise';
3
- import { type Payload } from '@xyo-network/payload-model';
4
- import { type DataLakeData } from '@xyo-network/xl1-protocol';
5
- import { AbstractXyoDataLake } from './AbstractXyoDataLake.ts';
6
- export declare class HttpXyoDataLake extends AbstractXyoDataLake {
7
- private _axiosGet;
8
- private _axiosInsertBlob;
9
- private _axiosInsertJson;
10
- private _endpoint;
11
- constructor(endpoint: string);
12
- get endpoint(): string;
13
- add(items: DataLakeData[]): Promise<DataLakeData[]>;
14
- get(hashes: Hash[]): Promise<DataLakeData[]>;
15
- protected addArrayBuffer(item: ArrayBuffer): Promise<ArrayBuffer | undefined>;
16
- protected addPayload(item: Payload): Promise<Payload | undefined>;
17
- protected fetchOne(hash: Hash, maxDepth?: number): Promise<DataLakeData | undefined>;
18
- protected getOne(hash: Hash): Promisable<DataLakeData | undefined>;
19
- }
20
- //# sourceMappingURL=HttpXyoDataLake.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HttpXyoDataLake.d.ts","sourceRoot":"","sources":["../../../src/DataLake/HttpXyoDataLake.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,2BAA2B,CAAA;AAG5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,eAAgB,SAAQ,mBAAmB;IACtD,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,gBAAgB,CAAO;IAC/B,OAAO,CAAC,gBAAgB,CAAW;IACnC,OAAO,CAAC,SAAS,CAAQ;gBAEb,QAAQ,EAAE,MAAM;IAQ5B,IAAI,QAAQ,IAAI,MAAM,CAErB;IAEK,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAsBnD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;cAMlC,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;cAYnE,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;cAYvD,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,GAAE,MAAgC,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAWnH,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,CAAC,YAAY,GAAG,SAAS,CAAC;CAWnE"}
@@ -1,4 +0,0 @@
1
- export * from './AbstractXyoDataLake.ts';
2
- export * from './ArchivistXyoDataLake.ts';
3
- export * from './HttpXyoDataLake.ts';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/DataLake/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,2BAA2B,CAAA;AACzC,cAAc,sBAAsB,CAAA"}
@@ -1,38 +0,0 @@
1
- import type { Hash } from '@xylabs/hex'
2
- import { ObjectHasher } from '@xyo-network/hash'
3
- import { PayloadBuilder } from '@xyo-network/payload-builder'
4
- import type { Payload } from '@xyo-network/payload-model'
5
- import { isAnyPayload } from '@xyo-network/payload-model'
6
- import {
7
- type DataLakeData,
8
- isHashPayload,
9
- type XyoDataLakeProvider,
10
- } from '@xyo-network/xl1-protocol'
11
-
12
- export abstract class AbstractXyoDataLake implements XyoDataLakeProvider {
13
- async fetch(hashes: Hash[], maxDepth: number = 10): Promise<DataLakeData[]> {
14
- const results: DataLakeData[] = await this.get(hashes)
15
- if (maxDepth > 0) {
16
- const hashPayloads = results.filter(isHashPayload)
17
- const otherPayloads = results.filter(item => !isHashPayload(item))
18
- const found = await this.fetch(hashPayloads.map(item => item.hash), maxDepth - 1)
19
- const foundHashes = await Promise.all(found.map(async item => isAnyPayload(item) ? await PayloadBuilder.hash(item) : ObjectHasher.hashBytes(item)))
20
- const notFound = hashPayloads.filter(item => !foundHashes.includes(item.hash))
21
- return [...otherPayloads, ...found, ...notFound]
22
- }
23
- return results
24
- }
25
-
26
- async trace(hash: Hash): Promise<[DataLakeData | undefined, Payload[]]> {
27
- const [result] = await this.get([hash])
28
- if (isHashPayload(result)) {
29
- const [payload, route] = await this.trace(result.hash)
30
- return [payload, [result, ...route]]
31
- }
32
- return [result, []]
33
- }
34
-
35
- abstract add(items: DataLakeData[]): Promise<DataLakeData[]>
36
-
37
- abstract get(hashes: Hash[]): Promise<DataLakeData[]>
38
- }
@@ -1,26 +0,0 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import type { Hash } from '@xylabs/hex'
3
- import type { ReadWriteArchivist } from '@xyo-network/archivist-model'
4
- import { isAnyPayload } from '@xyo-network/payload-model'
5
- import { type DataLakeData } from '@xyo-network/xl1-protocol'
6
-
7
- import { AbstractXyoDataLake } from './AbstractXyoDataLake.ts'
8
-
9
- export class ArchivistXyoDataLake extends AbstractXyoDataLake {
10
- private _archivist: ReadWriteArchivist
11
-
12
- constructor(archivist: ReadWriteArchivist) {
13
- super()
14
- this._archivist = archivist
15
- }
16
-
17
- async add(items: DataLakeData[]): Promise<DataLakeData[]> {
18
- const payloads = items.filter(isAnyPayload)
19
- assertEx(payloads.length === items.length, () => 'Some items are not payloads')
20
- return await this._archivist.insert(payloads)
21
- }
22
-
23
- async get(hashes: Hash[]): Promise<DataLakeData[]> {
24
- return await this._archivist.get(hashes)
25
- }
26
- }
@@ -1,105 +0,0 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import { AxiosJson } from '@xylabs/axios'
3
- import { exists } from '@xylabs/exists'
4
- import type { Hash } from '@xylabs/hex'
5
- import type { Promisable } from '@xylabs/promise'
6
- import { isArrayBuffer, isDefined } from '@xylabs/typeof'
7
- import { isAnyPayload, type Payload } from '@xyo-network/payload-model'
8
- import { type DataLakeData, isHashPayload } from '@xyo-network/xl1-protocol'
9
- import { Axios } from 'axios'
10
-
11
- import { AbstractXyoDataLake } from './AbstractXyoDataLake.ts'
12
-
13
- export class HttpXyoDataLake extends AbstractXyoDataLake {
14
- private _axiosGet: Axios
15
- private _axiosInsertBlob: Axios
16
- private _axiosInsertJson: AxiosJson
17
- private _endpoint: string
18
-
19
- constructor(endpoint: string) {
20
- super()
21
- this._endpoint = endpoint
22
- this._axiosInsertJson = new AxiosJson({ baseURL: endpoint })
23
- this._axiosInsertBlob = new Axios({ baseURL: endpoint, headers: { 'Content-Type': 'application/octet-stream', 'Accept': 'application/octet-stream' } })
24
- this._axiosGet = new Axios({ baseURL: endpoint, headers: { 'Content-Type': 'application/json', 'Accept': 'application/octet-stream, application/json' } })
25
- }
26
-
27
- get endpoint(): string {
28
- return this._endpoint
29
- }
30
-
31
- async add(items: DataLakeData[]): Promise<DataLakeData[]> {
32
- const results: DataLakeData[] = []
33
- for (const item of items) {
34
- if (isAnyPayload(item)) {
35
- const result = await this.addPayload(item)
36
- if (isAnyPayload(result)) {
37
- results.push(result)
38
- } else if (isDefined(result)) {
39
- assertEx(false, () => 'Expected result to be a Payload')
40
- }
41
- } else if (isArrayBuffer(item)) {
42
- const result = await this.addArrayBuffer(item)
43
- if (isAnyPayload(result)) {
44
- results.push(result)
45
- } else if (isDefined(result)) {
46
- assertEx(false, () => 'Expected result to be a Payload')
47
- }
48
- }
49
- }
50
- return results
51
- }
52
-
53
- async get(hashes: Hash[]): Promise<DataLakeData[]> {
54
- return (await Promise.all(hashes.map(async (hash) => {
55
- return await this.getOne(hash)
56
- }))).filter(exists)
57
- }
58
-
59
- protected async addArrayBuffer(item: ArrayBuffer): Promise<ArrayBuffer | undefined> {
60
- const result = await this._axiosInsertBlob.post('/insert', item)
61
- if (result.status < 200 || result.status >= 300) {
62
- throw new Error(`Failed to add items [${result.status}]: ${result.statusText}`)
63
- }
64
- if (!isArrayBuffer(result.data)) {
65
- throw new Error('Invalid response from server (expected a ArrayBuffer)')
66
- }
67
-
68
- return result.data
69
- }
70
-
71
- protected async addPayload(item: Payload): Promise<Payload | undefined> {
72
- const result = await this._axiosInsertJson.post('/insert', item)
73
- if (result.status < 200 || result.status >= 300) {
74
- throw new Error(`Failed to add items [${result.status}]: ${result.statusText}`)
75
- }
76
- if (!isAnyPayload(result.data)) {
77
- throw new Error('Invalid response from server (expected a Payload)')
78
- }
79
-
80
- return result.data
81
- }
82
-
83
- protected async fetchOne(hash: Hash, maxDepth: number = Number.MAX_SAFE_INTEGER): Promise<DataLakeData | undefined> {
84
- if (maxDepth <= 0) {
85
- return undefined
86
- }
87
- const result = await this.getOne(hash)
88
- if (isHashPayload(result)) {
89
- return await this.fetchOne(result.hash, maxDepth - 1)
90
- }
91
- return result
92
- }
93
-
94
- protected getOne(hash: Hash): Promisable<DataLakeData | undefined> {
95
- return this._axiosGet.get(`/get/${hash}`).then((response) => {
96
- if (response.status < 200 || response.status >= 300) {
97
- throw new Error(`Failed to get item [${response.status}]: ${response.statusText}`)
98
- }
99
- if (!isAnyPayload(response.data)) {
100
- throw new Error('Invalid response from server (expected a Payload)')
101
- }
102
- return response.data
103
- })
104
- }
105
- }
@@ -1,3 +0,0 @@
1
- export * from './AbstractXyoDataLake.ts'
2
- export * from './ArchivistXyoDataLake.ts'
3
- export * from './HttpXyoDataLake.ts'