apibara 2.1.0-beta.1 → 2.1.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/add.mjs +12 -7
- package/dist/chunks/dev.mjs +25 -6
- package/dist/chunks/init.mjs +3 -7
- package/dist/chunks/start.mjs +2 -1
- package/dist/core/index.mjs +85 -42
- package/dist/create/index.d.mts +2 -1
- package/dist/create/index.d.ts +2 -1
- package/dist/create/index.mjs +185 -121
- package/dist/hooks/index.mjs +3 -1
- package/dist/rolldown/index.d.mts +7 -0
- package/dist/rolldown/index.d.ts +7 -0
- package/dist/rolldown/index.mjs +126 -0
- package/dist/runtime/dev.mjs +3 -0
- package/dist/runtime/internal/app.d.ts +1 -1
- package/dist/runtime/internal/app.mjs +12 -11
- package/dist/runtime/start.mjs +5 -0
- package/dist/shared/apibara.af330c7d.mjs +15 -0
- package/dist/types/index.d.mts +18 -15
- package/dist/types/index.d.ts +18 -15
- package/package.json +13 -15
- package/src/cli/commands/add.ts +12 -6
- package/src/cli/commands/dev.ts +27 -5
- package/src/cli/commands/init.ts +3 -7
- package/src/cli/commands/start.ts +1 -0
- package/src/core/build/build.ts +13 -5
- package/src/core/build/dev.ts +44 -23
- package/src/core/build/error.ts +9 -14
- package/src/core/build/prod.ts +15 -10
- package/src/core/build/types.ts +8 -0
- package/src/core/config/defaults.ts +3 -0
- package/src/core/config/resolvers/runtime-config.resolver.ts +21 -2
- package/src/core/config/update.ts +1 -1
- package/src/create/add.ts +26 -12
- package/src/create/constants.ts +9 -10
- package/src/create/init.ts +28 -14
- package/src/create/templates.ts +154 -118
- package/src/create/utils.ts +10 -0
- package/src/hooks/useRuntimeConfig.ts +2 -1
- package/src/rolldown/config.ts +108 -0
- package/src/rolldown/index.ts +2 -0
- package/src/rolldown/plugins/config.ts +25 -0
- package/src/{rollup → rolldown}/plugins/indexers.ts +3 -3
- package/src/runtime/dev.ts +3 -0
- package/src/runtime/internal/app.ts +30 -13
- package/src/runtime/start.ts +5 -0
- package/src/types/config.ts +12 -7
- package/src/types/hooks.ts +8 -5
- package/src/types/index.ts +1 -1
- package/src/types/rolldown.ts +5 -0
- package/src/types/virtual/config.d.ts +4 -1
- package/src/types/virtual/indexers.d.ts +4 -1
- package/src/utils/helper.ts +15 -0
- package/dist/rollup/index.d.mts +0 -6
- package/dist/rollup/index.d.ts +0 -6
- package/dist/rollup/index.mjs +0 -150
- package/src/rollup/config.ts +0 -87
- package/src/rollup/index.ts +0 -2
- package/src/rollup/plugins/config.ts +0 -12
- package/src/rollup/plugins/esm-shim.ts +0 -69
- package/src/types/rollup.ts +0 -8
package/dist/chunks/add.mjs
CHANGED
|
@@ -9,34 +9,39 @@ const add = defineCommand({
|
|
|
9
9
|
args: {
|
|
10
10
|
indexerId: {
|
|
11
11
|
type: "positional",
|
|
12
|
-
description: "Indexer ID",
|
|
12
|
+
description: "Indexer ID - must be in kebab-case",
|
|
13
13
|
required: false
|
|
14
14
|
},
|
|
15
15
|
chain: {
|
|
16
16
|
type: "string",
|
|
17
|
-
description: "
|
|
17
|
+
description: "Blockchain - ethereum, beaconchain, starknet"
|
|
18
18
|
},
|
|
19
19
|
network: {
|
|
20
20
|
type: "string",
|
|
21
|
-
description: "Network"
|
|
21
|
+
description: "Network - mainnet, sepolia, other"
|
|
22
22
|
},
|
|
23
23
|
storage: {
|
|
24
24
|
type: "string",
|
|
25
|
-
description: "Storage"
|
|
25
|
+
description: "Storage - postgres, none"
|
|
26
26
|
},
|
|
27
27
|
dnaUrl: {
|
|
28
28
|
type: "string",
|
|
29
|
-
description: "DNA URL"
|
|
29
|
+
description: "DNA URL - https://custom-dna-url.apibara.org"
|
|
30
|
+
},
|
|
31
|
+
dir: {
|
|
32
|
+
type: "string",
|
|
33
|
+
description: "Root directory - apibara project root where apibara.config is located | default: current working directory"
|
|
30
34
|
}
|
|
31
35
|
},
|
|
32
36
|
async run({ args }) {
|
|
33
|
-
const { indexerId, chain, network, storage, dnaUrl } = args;
|
|
37
|
+
const { indexerId, chain, network, storage, dnaUrl, dir } = args;
|
|
34
38
|
await addIndexer({
|
|
35
39
|
argIndexerId: indexerId,
|
|
36
40
|
argChain: chain,
|
|
37
41
|
argNetwork: network,
|
|
38
42
|
argStorage: storage,
|
|
39
|
-
argDnaUrl: dnaUrl
|
|
43
|
+
argDnaUrl: dnaUrl,
|
|
44
|
+
argRootDir: dir
|
|
40
45
|
});
|
|
41
46
|
}
|
|
42
47
|
});
|
package/dist/chunks/dev.mjs
CHANGED
|
@@ -21,10 +21,18 @@ const dev = defineCommand({
|
|
|
21
21
|
preset: {
|
|
22
22
|
type: "string",
|
|
23
23
|
description: "Preset to use"
|
|
24
|
+
},
|
|
25
|
+
alwaysReindex: {
|
|
26
|
+
type: "boolean",
|
|
27
|
+
default: false,
|
|
28
|
+
description: "Reindex the indexers from the starting block on every restart (default: false)"
|
|
24
29
|
}
|
|
25
30
|
},
|
|
26
31
|
async run({ args }) {
|
|
27
32
|
const rootDir = resolve(args.dir || args._dir || ".");
|
|
33
|
+
if (args.alwaysReindex) {
|
|
34
|
+
process.env.APIBARA_ALWAYS_REINDEX = "true";
|
|
35
|
+
}
|
|
28
36
|
let apibara;
|
|
29
37
|
let childProcess;
|
|
30
38
|
const reload = async () => {
|
|
@@ -37,7 +45,8 @@ const dev = defineCommand({
|
|
|
37
45
|
}
|
|
38
46
|
apibara = await createApibara(
|
|
39
47
|
{
|
|
40
|
-
rootDir
|
|
48
|
+
rootDir,
|
|
49
|
+
preset: args.preset
|
|
41
50
|
},
|
|
42
51
|
{
|
|
43
52
|
watch: true,
|
|
@@ -62,18 +71,20 @@ const dev = defineCommand({
|
|
|
62
71
|
await prepare(apibara);
|
|
63
72
|
await writeTypes(apibara);
|
|
64
73
|
await build(apibara);
|
|
65
|
-
apibara.hooks.hook("dev:restart", () => {
|
|
74
|
+
apibara.hooks.hook("dev:restart", async () => {
|
|
66
75
|
if (childProcess) {
|
|
67
76
|
apibara.logger.info("Change detected, stopping indexers to restart");
|
|
68
|
-
childProcess
|
|
77
|
+
await killProcess(childProcess);
|
|
69
78
|
childProcess = void 0;
|
|
70
79
|
}
|
|
71
80
|
});
|
|
72
|
-
apibara.hooks.hook("dev:reload", () => {
|
|
81
|
+
apibara.hooks.hook("dev:reload", async () => {
|
|
73
82
|
if (childProcess) {
|
|
74
|
-
|
|
83
|
+
apibara.logger.info("Restarting indexers");
|
|
84
|
+
await killProcess(childProcess);
|
|
85
|
+
childProcess = void 0;
|
|
75
86
|
} else {
|
|
76
|
-
apibara.logger.
|
|
87
|
+
apibara.logger.info("Starting indexers");
|
|
77
88
|
}
|
|
78
89
|
const childArgs = [
|
|
79
90
|
resolve(apibara.options.outputDir || "./.apibara/build", "dev.mjs"),
|
|
@@ -96,5 +107,13 @@ const dev = defineCommand({
|
|
|
96
107
|
await reload();
|
|
97
108
|
}
|
|
98
109
|
});
|
|
110
|
+
async function killProcess(childProcess) {
|
|
111
|
+
if (childProcess) {
|
|
112
|
+
await new Promise((resolve2) => {
|
|
113
|
+
childProcess.once("exit", resolve2);
|
|
114
|
+
childProcess.kill();
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
99
118
|
|
|
100
119
|
export { dev as default };
|
package/dist/chunks/init.mjs
CHANGED
|
@@ -18,22 +18,18 @@ const init = defineCommand({
|
|
|
18
18
|
default: "ts",
|
|
19
19
|
alias: "l"
|
|
20
20
|
},
|
|
21
|
-
|
|
21
|
+
noIndexer: {
|
|
22
22
|
type: "boolean",
|
|
23
23
|
description: "Do not create an indexer after initialization",
|
|
24
24
|
default: false
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
async run({ args }) {
|
|
28
|
-
const {
|
|
29
|
-
dir: targetDir,
|
|
30
|
-
"no-create-indexer": noCreateIndexer,
|
|
31
|
-
language
|
|
32
|
-
} = args;
|
|
28
|
+
const { dir: targetDir, noIndexer, language } = args;
|
|
33
29
|
await initializeProject({
|
|
34
30
|
argTargetDir: targetDir,
|
|
35
31
|
argLanguage: language,
|
|
36
|
-
argNoCreateIndexer:
|
|
32
|
+
argNoCreateIndexer: noIndexer
|
|
37
33
|
});
|
|
38
34
|
}
|
|
39
35
|
});
|
package/dist/chunks/start.mjs
CHANGED
|
@@ -26,7 +26,8 @@ const start = defineCommand({
|
|
|
26
26
|
const { indexer, preset } = args;
|
|
27
27
|
const rootDir = resolve(args.dir || args._dir || ".");
|
|
28
28
|
const apibara = await createApibara({
|
|
29
|
-
rootDir
|
|
29
|
+
rootDir,
|
|
30
|
+
preset
|
|
30
31
|
});
|
|
31
32
|
apibara.logger.start(
|
|
32
33
|
`Starting indexer ${indexer}${preset ? ` with preset ${preset}` : ""}`
|
package/dist/core/index.mjs
CHANGED
|
@@ -4,13 +4,13 @@ import { watchConfig, loadConfig } from 'c12';
|
|
|
4
4
|
import { klona } from 'klona/full';
|
|
5
5
|
import { resolve, join, basename, isAbsolute, relative, dirname } from 'pathe';
|
|
6
6
|
import defu from 'defu';
|
|
7
|
+
import { s as serialize } from '../shared/apibara.af330c7d.mjs';
|
|
7
8
|
import fse from 'fs-extra';
|
|
8
|
-
import {
|
|
9
|
+
import { getRolldownConfig } from 'apibara/rolldown';
|
|
10
|
+
import { colors } from 'consola/utils';
|
|
9
11
|
import { watch } from 'chokidar';
|
|
10
12
|
import { debounce } from 'perfect-debounce';
|
|
11
|
-
import * as
|
|
12
|
-
import { rollup as rollup$1 } from 'rollup';
|
|
13
|
-
import { colors } from 'consola/utils';
|
|
13
|
+
import * as rolldown from 'rolldown';
|
|
14
14
|
import fsp from 'node:fs/promises';
|
|
15
15
|
import { generateTypes, resolveSchema } from 'untyped';
|
|
16
16
|
|
|
@@ -24,7 +24,9 @@ const ApibaraDefaults = {
|
|
|
24
24
|
strict: false,
|
|
25
25
|
generateRuntimeConfigTypes: true,
|
|
26
26
|
internalPaths: false
|
|
27
|
-
}
|
|
27
|
+
},
|
|
28
|
+
node: true,
|
|
29
|
+
exportConditions: ["node"]
|
|
28
30
|
};
|
|
29
31
|
|
|
30
32
|
async function resolvePathOptions(options) {
|
|
@@ -45,8 +47,21 @@ async function presetResolver(options) {
|
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
async function resolveRuntimeConfigOptions(options) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
const { preset, presets } = options;
|
|
51
|
+
let runtimeConfig = { ...options.runtimeConfig };
|
|
52
|
+
if (preset) {
|
|
53
|
+
if (presets === void 0) {
|
|
54
|
+
throw new Error(
|
|
55
|
+
`Specified preset "${preset}" but no presets were defined`
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
if (presets[preset] === void 0) {
|
|
59
|
+
throw new Error(`Specified preset "${preset}" but it was not defined`);
|
|
60
|
+
}
|
|
61
|
+
const presetValue = presets[preset];
|
|
62
|
+
runtimeConfig = { ...runtimeConfig, ...presetValue.runtimeConfig };
|
|
63
|
+
}
|
|
64
|
+
process.env.APIBARA_RUNTIME_CONFIG = serialize(runtimeConfig);
|
|
50
65
|
}
|
|
51
66
|
|
|
52
67
|
const configResolvers = [
|
|
@@ -83,7 +98,7 @@ async function _loadUserConfig(configOverrides = {}, opts = {}, dev = false) {
|
|
|
83
98
|
}
|
|
84
99
|
|
|
85
100
|
async function updateApibaraConfig(apibara, _config) {
|
|
86
|
-
await apibara.hooks.callHook("
|
|
101
|
+
await apibara.hooks.callHook("rolldown:reload");
|
|
87
102
|
apibara.logger.success("Apibara config hot reloaded!");
|
|
88
103
|
}
|
|
89
104
|
|
|
@@ -134,20 +149,20 @@ async function createApibara(config = {}, opts = {}, dev = false) {
|
|
|
134
149
|
return apibara;
|
|
135
150
|
}
|
|
136
151
|
|
|
137
|
-
function
|
|
152
|
+
function formatRolldownError(_error) {
|
|
138
153
|
try {
|
|
139
154
|
const logs = [_error.toString()];
|
|
140
155
|
const errors = _error?.errors || [_error];
|
|
141
156
|
for (const error of errors) {
|
|
142
157
|
const id = error.path || error.id || _error.id;
|
|
143
158
|
let path = isAbsolute(id) ? relative(process.cwd(), id) : id;
|
|
144
|
-
const location = error.loc
|
|
159
|
+
const location = error.loc;
|
|
145
160
|
if (location) {
|
|
146
161
|
path += `:${location.line}:${location.column}`;
|
|
147
162
|
}
|
|
148
|
-
const text = error.
|
|
163
|
+
const text = error.frame;
|
|
149
164
|
logs.push(
|
|
150
|
-
`
|
|
165
|
+
`Rolldown error while processing \`${path}\`` + text ? "\n\n" + text : ""
|
|
151
166
|
);
|
|
152
167
|
}
|
|
153
168
|
return logs.join("\n");
|
|
@@ -156,45 +171,48 @@ function formatRollupError(_error) {
|
|
|
156
171
|
}
|
|
157
172
|
}
|
|
158
173
|
|
|
159
|
-
async function watchDev(apibara,
|
|
160
|
-
let
|
|
174
|
+
async function watchDev(apibara, rolldownConfig) {
|
|
175
|
+
let rolldownWatcher;
|
|
161
176
|
async function load() {
|
|
162
|
-
|
|
163
|
-
|
|
177
|
+
apibara.logger.start("Setting up a dev server");
|
|
178
|
+
if (rolldownWatcher) {
|
|
179
|
+
await rolldownWatcher.close();
|
|
164
180
|
}
|
|
165
|
-
|
|
181
|
+
rolldownWatcher = startRolldownWatcher(apibara, rolldownConfig);
|
|
166
182
|
}
|
|
167
|
-
const reload = debounce(load);
|
|
168
|
-
const watchPatterns =
|
|
183
|
+
const reload = debounce(async () => await load());
|
|
184
|
+
const watchPatterns = getWatchPatterns(apibara);
|
|
169
185
|
const watchReloadEvents = /* @__PURE__ */ new Set(["add", "addDir", "unlink", "unlinkDir"]);
|
|
170
186
|
const reloadWatcher = watch(watchPatterns, { ignoreInitial: true }).on(
|
|
171
187
|
"all",
|
|
172
|
-
(event) => {
|
|
188
|
+
async (event) => {
|
|
173
189
|
if (watchReloadEvents.has(event)) {
|
|
174
|
-
reload();
|
|
190
|
+
await reload();
|
|
175
191
|
}
|
|
176
192
|
}
|
|
177
193
|
);
|
|
178
194
|
apibara.hooks.hook("close", () => {
|
|
179
|
-
|
|
195
|
+
rolldownWatcher.close();
|
|
180
196
|
reloadWatcher.close();
|
|
181
197
|
});
|
|
182
|
-
apibara.hooks.hook("
|
|
198
|
+
apibara.hooks.hook("rolldown:reload", async () => await reload());
|
|
183
199
|
await load();
|
|
184
200
|
}
|
|
185
|
-
function
|
|
186
|
-
const
|
|
187
|
-
|
|
201
|
+
function startRolldownWatcher(apibara, rolldownConfig) {
|
|
202
|
+
const ignorePatterns = getIgnorePatterns();
|
|
203
|
+
const watcher = rolldown.watch(
|
|
204
|
+
defu(rolldownConfig, {
|
|
188
205
|
watch: {
|
|
189
|
-
|
|
206
|
+
exclude: ignorePatterns,
|
|
207
|
+
...apibara.options.watchOptions ?? {}
|
|
190
208
|
}
|
|
191
209
|
})
|
|
192
210
|
);
|
|
193
211
|
let start;
|
|
194
|
-
watcher.on("event", (event) => {
|
|
212
|
+
watcher.on("event", async (event) => {
|
|
195
213
|
switch (event.code) {
|
|
196
214
|
case "START": {
|
|
197
|
-
apibara.hooks.callHook("dev:restart");
|
|
215
|
+
await apibara.hooks.callHook("dev:restart");
|
|
198
216
|
return;
|
|
199
217
|
}
|
|
200
218
|
case "BUNDLE_START": {
|
|
@@ -207,34 +225,48 @@ function startRollupWatcher(apibara, rollupConfig) {
|
|
|
207
225
|
"Indexers built",
|
|
208
226
|
start ? `in ${Date.now() - start} ms` : ""
|
|
209
227
|
);
|
|
210
|
-
apibara.hooks.callHook("dev:reload");
|
|
228
|
+
await apibara.hooks.callHook("dev:reload");
|
|
211
229
|
return;
|
|
212
230
|
}
|
|
213
231
|
case "ERROR": {
|
|
214
|
-
apibara.logger.error(
|
|
232
|
+
apibara.logger.error(formatRolldownError(event.error));
|
|
215
233
|
}
|
|
216
234
|
}
|
|
217
235
|
});
|
|
218
236
|
return watcher;
|
|
219
237
|
}
|
|
238
|
+
const getWatchPatterns = (apibara) => [
|
|
239
|
+
join(apibara.options.rootDir, "indexers")
|
|
240
|
+
];
|
|
241
|
+
const getIgnorePatterns = (apibara) => [
|
|
242
|
+
"**/.apibara/**",
|
|
243
|
+
"**/.git/**",
|
|
244
|
+
"**/.DS_Store",
|
|
245
|
+
"**/node_modules/**",
|
|
246
|
+
"**/dist/**",
|
|
247
|
+
"**/.turbo/**"
|
|
248
|
+
];
|
|
220
249
|
|
|
221
|
-
async function buildProduction(apibara,
|
|
250
|
+
async function buildProduction(apibara, rolldownConfig) {
|
|
222
251
|
apibara.logger.start(
|
|
223
252
|
`Building ${colors.cyan(apibara.indexers.length)} indexers`
|
|
224
253
|
);
|
|
254
|
+
const startTime = Date.now();
|
|
225
255
|
try {
|
|
226
|
-
const bundle = await
|
|
227
|
-
if (Array.isArray(
|
|
228
|
-
for (const outputOptions of
|
|
256
|
+
const bundle = await rolldown.rolldown(rolldownConfig);
|
|
257
|
+
if (Array.isArray(rolldownConfig.output)) {
|
|
258
|
+
for (const outputOptions of rolldownConfig.output) {
|
|
229
259
|
await bundle.write(outputOptions);
|
|
230
260
|
}
|
|
231
|
-
} else if (
|
|
232
|
-
await bundle.write(
|
|
261
|
+
} else if (rolldownConfig.output) {
|
|
262
|
+
await bundle.write(rolldownConfig.output);
|
|
233
263
|
} else {
|
|
234
|
-
throw new Error("No output options specified in
|
|
264
|
+
throw new Error("No output options specified in Rolldown config");
|
|
235
265
|
}
|
|
236
266
|
await bundle.close();
|
|
237
|
-
|
|
267
|
+
const endTime = Date.now();
|
|
268
|
+
const duration = endTime - startTime;
|
|
269
|
+
apibara.logger.success(`Build succeeded in ${duration}ms`);
|
|
238
270
|
apibara.logger.info(
|
|
239
271
|
`You can start the indexers with ${colors.cyan("apibara start")}`
|
|
240
272
|
);
|
|
@@ -245,9 +277,16 @@ async function buildProduction(apibara, rollupConfig) {
|
|
|
245
277
|
}
|
|
246
278
|
|
|
247
279
|
async function build(apibara) {
|
|
248
|
-
const
|
|
249
|
-
await apibara.hooks.callHook("
|
|
250
|
-
|
|
280
|
+
const rolldownConfig = getRolldownConfig(apibara);
|
|
281
|
+
await apibara.hooks.callHook("rolldown:before", apibara, rolldownConfig);
|
|
282
|
+
if (apibara.options.rollupConfig) {
|
|
283
|
+
apibara.logger.error(
|
|
284
|
+
`
|
|
285
|
+
${colors.cyan("apibara.config:")} rollupConfig is deprecated. Use rolldownConfig instead`
|
|
286
|
+
);
|
|
287
|
+
process.exit(1);
|
|
288
|
+
}
|
|
289
|
+
return apibara.options.dev ? await watchDev(apibara, rolldownConfig) : await buildProduction(apibara, rolldownConfig);
|
|
251
290
|
}
|
|
252
291
|
|
|
253
292
|
function prettyPath(path, highlight = true) {
|
|
@@ -268,6 +307,10 @@ async function prepareDir(dir) {
|
|
|
268
307
|
}
|
|
269
308
|
|
|
270
309
|
async function writeTypes(apibara) {
|
|
310
|
+
const isTypeScript = apibara.options._c12.configFile?.endsWith(".ts");
|
|
311
|
+
if (!isTypeScript) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
271
314
|
const typesDir = resolve(apibara.options.buildDir, "types");
|
|
272
315
|
const config = [
|
|
273
316
|
"// Generated by apibara",
|
package/dist/create/index.d.mts
CHANGED
|
@@ -4,8 +4,9 @@ type Options$1 = {
|
|
|
4
4
|
argNetwork?: string;
|
|
5
5
|
argStorage?: string;
|
|
6
6
|
argDnaUrl?: string;
|
|
7
|
+
argRootDir?: string;
|
|
7
8
|
};
|
|
8
|
-
declare function addIndexer({ argIndexerId, argChain, argNetwork, argStorage, argDnaUrl, }: Options$1): Promise<void>;
|
|
9
|
+
declare function addIndexer({ argIndexerId, argChain, argNetwork, argStorage, argDnaUrl, argRootDir, }: Options$1): Promise<void>;
|
|
9
10
|
|
|
10
11
|
type Options = {
|
|
11
12
|
argTargetDir: string;
|
package/dist/create/index.d.ts
CHANGED
|
@@ -4,8 +4,9 @@ type Options$1 = {
|
|
|
4
4
|
argNetwork?: string;
|
|
5
5
|
argStorage?: string;
|
|
6
6
|
argDnaUrl?: string;
|
|
7
|
+
argRootDir?: string;
|
|
7
8
|
};
|
|
8
|
-
declare function addIndexer({ argIndexerId, argChain, argNetwork, argStorage, argDnaUrl, }: Options$1): Promise<void>;
|
|
9
|
+
declare function addIndexer({ argIndexerId, argChain, argNetwork, argStorage, argDnaUrl, argRootDir, }: Options$1): Promise<void>;
|
|
9
10
|
|
|
10
11
|
type Options = {
|
|
11
12
|
argTargetDir: string;
|