apibara 2.1.0-beta.40 → 2.1.0-beta.41

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.
@@ -82,6 +82,7 @@ const runtimeDependencies = [
82
82
  // https://socket.io/docs/v4/server-installation/#additional-packages
83
83
  "utf-8-validate",
84
84
  "bufferutil",
85
+ "fsevents",
85
86
  // was giving unresolved import warnings from `node-fetch` library.
86
87
  "encoding"
87
88
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/rolldown/plugins/indexers.ts","../../src/rolldown/plugins/instrumentation.ts","../../src/rolldown/plugins/static-config.ts","../../src/rolldown/config.ts"],"sourcesContent":["import virtual from \"@rollup/plugin-virtual\";\nimport type { Apibara } from \"apibara/types\";\nimport { hash } from \"ohash\";\nimport type { RolldownPluginOption } from \"rolldown\";\n\nexport function indexers(apibara: Apibara) {\n const indexers = [...new Set(apibara.indexers)];\n return virtual({\n \"#apibara-internal-virtual/indexers\": `\n ${indexers.map((i) => `import * as _${hash(i)} from '${i.indexer}';`).join(\"\\n\")}\n\n export const indexers = [\n ${indexers.map((i) => `{ name: \"${i.name}\", indexer: _${hash(i)} }`).join(\",\\n\")}\n ];\n `,\n }) as RolldownPluginOption;\n}\n","import { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport virtual from \"@rollup/plugin-virtual\";\nimport type { Apibara } from \"apibara/types\";\nimport type { RolldownPluginOption } from \"rolldown\";\n\nexport function instrumentation(apibara: Apibara) {\n const instrumentationPath = join(\n apibara.options._c12.cwd!,\n `instrumentation.${apibara.options._c12.configFile?.endsWith(\".ts\") ? \"ts\" : apibara.options._c12.configFile?.endsWith(\".mjs\") ? \"mjs\" : \"js\"}`,\n );\n\n if (!existsSync(instrumentationPath)) {\n return virtual({\n \"#apibara-internal-virtual/instrumentation\": `\n let register = undefined;\n let logger = undefined;\n \n export { register, logger };\n `,\n }) as RolldownPluginOption;\n }\n\n /**\n * We are importing the instrumentation file inline with \"require\" instead of \"import\" at the top of the file to avoid warnings from rolldown\n * when some methods are not defined in the instrumentation file.\n *\n * Example warning:\n * \n * [IMPORT_IS_UNDEFINED] Warning: Import `logger` will always be undefined because there is no matching export in 'instrumentation.ts'\n * ╭─[virtual:#apibara-internal-virtual/instrumentation:11:35]\n * │\n * 11 │ if (instrumentation && typeof instrumentation.logger === \"function\") {\n * │ ───────────┬────────── \n * │ ╰──────────── \n * ────╯\n\n * [IMPORT_IS_UNDEFINED] Warning: Import `logger` will always be undefined because there is no matching export in 'instrumentation.ts'\n * ╭─[virtual:#apibara-internal-virtual/instrumentation:12:16]\n * │\n * 12 │ logger = instrumentation.logger;\n * │ ───────────┬────────── \n * │ ╰──────────── \n * ────╯ \n */\n return virtual({\n \"#apibara-internal-virtual/instrumentation\": `\n let register = undefined;\n let logger = undefined;\n\n try {\n const instrumentation = require('${instrumentationPath}');\n \n if (instrumentation?.register && typeof instrumentation.register === \"function\") {\n register = instrumentation.register;\n }\n \n if (instrumentation?.logger && typeof instrumentation.logger === \"function\") {\n logger = instrumentation.logger;\n }\n } catch {\n // Silently handle any require errors\n }\n\n export { register, logger };\n `,\n }) as RolldownPluginOption;\n}\n","import virtual from \"@rollup/plugin-virtual\";\nimport { USER_ENV_APIBARA_RUNTIME_CONFIG } from \"apibara/common\";\nimport type { Apibara } from \"apibara/types\";\nimport type { RolldownPluginOption } from \"rolldown\";\n\nexport function staticConfig(apibara: Apibara) {\n const presetString = apibara.options.preset ?? \"\";\n const presetsStringified = JSON.stringify(apibara.options.presets ?? {});\n const runtimeConfigStringified = JSON.stringify(\n apibara.options.runtimeConfig ?? {},\n );\n\n return virtual({\n \"#apibara-internal-virtual/static-config\": `\n export const preset = ${presetString ? `\"${presetString}\"` : \"undefined\"};\n export const presets = ${presetsStringified};\n export const runtimeConfig = ${runtimeConfigStringified};\n export const userEnvRuntimeConfig = JSON.parse(process.env.${USER_ENV_APIBARA_RUNTIME_CONFIG} ?? \"{}\");\n `,\n }) as RolldownPluginOption;\n}\n","import { existsSync } from \"node:fs\";\nimport { builtinModules } from \"node:module\";\nimport type { Apibara } from \"apibara/types\";\nimport defu from \"defu\";\nimport { join } from \"pathe\";\nimport type {\n ConfigExport,\n RolldownOptions,\n RolldownPluginOption,\n} from \"rolldown\";\nimport { indexers } from \"./plugins/indexers\";\nimport { instrumentation } from \"./plugins/instrumentation\";\nimport { staticConfig } from \"./plugins/static-config\";\n\nconst runtimeDependencies = [\n \"better-sqlite3\",\n \"@electric-sql/pglite\",\n \"pg\",\n // https://socket.io/docs/v4/server-installation/#additional-packages\n \"utf-8-validate\",\n \"bufferutil\",\n // was giving unresolved import warnings from `node-fetch` library.\n \"encoding\",\n];\n\nexport function getRolldownConfig(apibara: Apibara): RolldownOptions {\n const extensions: string[] = [\n \".ts\",\n \".mjs\",\n \".js\",\n \".json\",\n \".node\",\n \".tsx\",\n \".jsx\",\n ];\n\n const tsConfigExists = existsSync(\n join(apibara.options.rootDir, \"tsconfig.json\"),\n );\n\n const rolldownConfig: RolldownOptions & {\n plugins: RolldownPluginOption[];\n } = defu(\n // biome-ignore lint/suspicious/noExplicitAny: apibara.options.rolldownConfig is typed\n apibara.options.rolldownConfig as any,\n <ConfigExport>{\n platform: \"node\",\n input: apibara.options.entry,\n output: {\n dir: join(apibara.options.outputDir || \"./.apibara/build\"),\n format: \"esm\",\n entryFileNames: \"[name].mjs\",\n chunkFileNames: \"chunks/[name]-[hash].mjs\",\n sourcemap: true,\n },\n plugins: [],\n onwarn(warning, rolldownWarn) {\n if (\n ![\"CIRCULAR_DEPENDENCY\", \"EVAL\", \"THIS_IS_UNDEFINED\"].includes(\n warning.code || \"\",\n ) &&\n !warning.message.includes(\"Unsupported source map comment\") &&\n !warning.message.includes(\"@__PURE__\") &&\n !warning.message.includes(\"/*#__PURE__*/\")\n ) {\n rolldownWarn(warning);\n }\n },\n resolve: {\n extensions,\n preferBuiltins: !!apibara.options.node,\n mainFields: [\"main\"],\n exportConditions: apibara.options.exportConditions,\n tsconfigFilename: tsConfigExists ? \"tsconfig.json\" : undefined,\n },\n treeshake: true,\n external: [...builtinModules, ...runtimeDependencies],\n },\n );\n\n rolldownConfig.plugins?.push(staticConfig(apibara));\n rolldownConfig.plugins?.push(instrumentation(apibara));\n rolldownConfig.plugins?.push(indexers(apibara));\n return rolldownConfig;\n}\n"],"names":["indexers","join"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/rolldown/plugins/indexers.ts","../../src/rolldown/plugins/instrumentation.ts","../../src/rolldown/plugins/static-config.ts","../../src/rolldown/config.ts"],"sourcesContent":["import virtual from \"@rollup/plugin-virtual\";\nimport type { Apibara } from \"apibara/types\";\nimport { hash } from \"ohash\";\nimport type { RolldownPluginOption } from \"rolldown\";\n\nexport function indexers(apibara: Apibara) {\n const indexers = [...new Set(apibara.indexers)];\n return virtual({\n \"#apibara-internal-virtual/indexers\": `\n ${indexers.map((i) => `import * as _${hash(i)} from '${i.indexer}';`).join(\"\\n\")}\n\n export const indexers = [\n ${indexers.map((i) => `{ name: \"${i.name}\", indexer: _${hash(i)} }`).join(\",\\n\")}\n ];\n `,\n }) as RolldownPluginOption;\n}\n","import { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport virtual from \"@rollup/plugin-virtual\";\nimport type { Apibara } from \"apibara/types\";\nimport type { RolldownPluginOption } from \"rolldown\";\n\nexport function instrumentation(apibara: Apibara) {\n const instrumentationPath = join(\n apibara.options._c12.cwd!,\n `instrumentation.${apibara.options._c12.configFile?.endsWith(\".ts\") ? \"ts\" : apibara.options._c12.configFile?.endsWith(\".mjs\") ? \"mjs\" : \"js\"}`,\n );\n\n if (!existsSync(instrumentationPath)) {\n return virtual({\n \"#apibara-internal-virtual/instrumentation\": `\n let register = undefined;\n let logger = undefined;\n \n export { register, logger };\n `,\n }) as RolldownPluginOption;\n }\n\n /**\n * We are importing the instrumentation file inline with \"require\" instead of \"import\" at the top of the file to avoid warnings from rolldown\n * when some methods are not defined in the instrumentation file.\n *\n * Example warning:\n * \n * [IMPORT_IS_UNDEFINED] Warning: Import `logger` will always be undefined because there is no matching export in 'instrumentation.ts'\n * ╭─[virtual:#apibara-internal-virtual/instrumentation:11:35]\n * │\n * 11 │ if (instrumentation && typeof instrumentation.logger === \"function\") {\n * │ ───────────┬────────── \n * │ ╰──────────── \n * ────╯\n\n * [IMPORT_IS_UNDEFINED] Warning: Import `logger` will always be undefined because there is no matching export in 'instrumentation.ts'\n * ╭─[virtual:#apibara-internal-virtual/instrumentation:12:16]\n * │\n * 12 │ logger = instrumentation.logger;\n * │ ───────────┬────────── \n * │ ╰──────────── \n * ────╯ \n */\n return virtual({\n \"#apibara-internal-virtual/instrumentation\": `\n let register = undefined;\n let logger = undefined;\n\n try {\n const instrumentation = require('${instrumentationPath}');\n \n if (instrumentation?.register && typeof instrumentation.register === \"function\") {\n register = instrumentation.register;\n }\n \n if (instrumentation?.logger && typeof instrumentation.logger === \"function\") {\n logger = instrumentation.logger;\n }\n } catch {\n // Silently handle any require errors\n }\n\n export { register, logger };\n `,\n }) as RolldownPluginOption;\n}\n","import virtual from \"@rollup/plugin-virtual\";\nimport { USER_ENV_APIBARA_RUNTIME_CONFIG } from \"apibara/common\";\nimport type { Apibara } from \"apibara/types\";\nimport type { RolldownPluginOption } from \"rolldown\";\n\nexport function staticConfig(apibara: Apibara) {\n const presetString = apibara.options.preset ?? \"\";\n const presetsStringified = JSON.stringify(apibara.options.presets ?? {});\n const runtimeConfigStringified = JSON.stringify(\n apibara.options.runtimeConfig ?? {},\n );\n\n return virtual({\n \"#apibara-internal-virtual/static-config\": `\n export const preset = ${presetString ? `\"${presetString}\"` : \"undefined\"};\n export const presets = ${presetsStringified};\n export const runtimeConfig = ${runtimeConfigStringified};\n export const userEnvRuntimeConfig = JSON.parse(process.env.${USER_ENV_APIBARA_RUNTIME_CONFIG} ?? \"{}\");\n `,\n }) as RolldownPluginOption;\n}\n","import { existsSync } from \"node:fs\";\nimport { builtinModules } from \"node:module\";\nimport type { Apibara } from \"apibara/types\";\nimport defu from \"defu\";\nimport { join } from \"pathe\";\nimport type {\n ConfigExport,\n RolldownOptions,\n RolldownPluginOption,\n} from \"rolldown\";\nimport { indexers } from \"./plugins/indexers\";\nimport { instrumentation } from \"./plugins/instrumentation\";\nimport { staticConfig } from \"./plugins/static-config\";\n\nconst runtimeDependencies = [\n \"better-sqlite3\",\n \"@electric-sql/pglite\",\n \"pg\",\n // https://socket.io/docs/v4/server-installation/#additional-packages\n \"utf-8-validate\",\n \"bufferutil\",\n \"fsevents\",\n // was giving unresolved import warnings from `node-fetch` library.\n \"encoding\",\n];\n\nexport function getRolldownConfig(apibara: Apibara): RolldownOptions {\n const extensions: string[] = [\n \".ts\",\n \".mjs\",\n \".js\",\n \".json\",\n \".node\",\n \".tsx\",\n \".jsx\",\n ];\n\n const tsConfigExists = existsSync(\n join(apibara.options.rootDir, \"tsconfig.json\"),\n );\n\n const rolldownConfig: RolldownOptions & {\n plugins: RolldownPluginOption[];\n } = defu(\n // biome-ignore lint/suspicious/noExplicitAny: apibara.options.rolldownConfig is typed\n apibara.options.rolldownConfig as any,\n <ConfigExport>{\n platform: \"node\",\n input: apibara.options.entry,\n output: {\n dir: join(apibara.options.outputDir || \"./.apibara/build\"),\n format: \"esm\",\n entryFileNames: \"[name].mjs\",\n chunkFileNames: \"chunks/[name]-[hash].mjs\",\n sourcemap: true,\n },\n plugins: [],\n onwarn(warning, rolldownWarn) {\n if (\n ![\"CIRCULAR_DEPENDENCY\", \"EVAL\", \"THIS_IS_UNDEFINED\"].includes(\n warning.code || \"\",\n ) &&\n !warning.message.includes(\"Unsupported source map comment\") &&\n !warning.message.includes(\"@__PURE__\") &&\n !warning.message.includes(\"/*#__PURE__*/\")\n ) {\n rolldownWarn(warning);\n }\n },\n resolve: {\n extensions,\n preferBuiltins: !!apibara.options.node,\n mainFields: [\"main\"],\n exportConditions: apibara.options.exportConditions,\n tsconfigFilename: tsConfigExists ? \"tsconfig.json\" : undefined,\n },\n treeshake: true,\n external: [...builtinModules, ...runtimeDependencies],\n },\n );\n\n rolldownConfig.plugins?.push(staticConfig(apibara));\n rolldownConfig.plugins?.push(instrumentation(apibara));\n rolldownConfig.plugins?.push(indexers(apibara));\n return rolldownConfig;\n}\n"],"names":["indexers","join"],"mappings":"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"}
@@ -1,9 +1,42 @@
1
- import { runWithReconnect } from "@apibara/indexer";
1
+ import { ReloadIndexerRequest, runWithReconnect } from "@apibara/indexer";
2
2
  import { createAuthenticatedClient } from "@apibara/protocol";
3
3
  import { getRuntimeDataFromEnv } from "apibara/common";
4
4
  import { defineCommand, runMain } from "citty";
5
5
  import { blueBright } from "picocolors";
6
6
  import { availableIndexers, createIndexer } from "./internal/app.mjs";
7
+ async function startIndexer(indexer) {
8
+ let _logger;
9
+ while (true) {
10
+ try {
11
+ const { processedRuntimeConfig, preset } = getRuntimeDataFromEnv();
12
+ const { indexer: indexerInstance, logger } = await createIndexer({
13
+ indexerName: indexer,
14
+ processedRuntimeConfig,
15
+ preset
16
+ }) ?? {};
17
+ _logger = logger;
18
+ if (!indexerInstance) {
19
+ return;
20
+ }
21
+ const client = createAuthenticatedClient(
22
+ indexerInstance.streamConfig,
23
+ indexerInstance.options.streamUrl,
24
+ indexerInstance.options.clientOptions
25
+ );
26
+ if (logger) {
27
+ logger.info(`Indexer ${blueBright(indexer)} started`);
28
+ }
29
+ await runWithReconnect(client, indexerInstance);
30
+ return;
31
+ } catch (error) {
32
+ if (error instanceof ReloadIndexerRequest) {
33
+ _logger?.info(`Indexer ${blueBright(indexer)} reloaded`);
34
+ continue;
35
+ }
36
+ throw error;
37
+ }
38
+ }
39
+ }
7
40
  const startCommand = defineCommand({
8
41
  meta: {
9
42
  name: "start",
@@ -17,7 +50,6 @@ const startCommand = defineCommand({
17
50
  },
18
51
  async run({ args }) {
19
52
  const { indexers: indexersArgs } = args;
20
- const { processedRuntimeConfig, preset } = getRuntimeDataFromEnv();
21
53
  let selectedIndexers = availableIndexers;
22
54
  if (indexersArgs) {
23
55
  selectedIndexers = indexersArgs.split(",");
@@ -29,27 +61,7 @@ const startCommand = defineCommand({
29
61
  );
30
62
  }
31
63
  }
32
- await Promise.all(
33
- selectedIndexers.map(async (indexer) => {
34
- const { indexer: indexerInstance, logger } = createIndexer({
35
- indexerName: indexer,
36
- processedRuntimeConfig,
37
- preset
38
- }) ?? {};
39
- if (!indexerInstance) {
40
- return;
41
- }
42
- const client = createAuthenticatedClient(
43
- indexerInstance.streamConfig,
44
- indexerInstance.options.streamUrl,
45
- indexerInstance.options.clientOptions
46
- );
47
- if (logger) {
48
- logger.info(`Indexer ${blueBright(indexer)} started`);
49
- }
50
- await runWithReconnect(client, indexerInstance);
51
- })
52
- );
64
+ await Promise.all(selectedIndexers.map((indexer) => startIndexer(indexer)));
53
65
  }
54
66
  });
55
67
  export const mainCli = defineCommand({
@@ -9,7 +9,7 @@ export declare function createIndexer({ indexerName, processedRuntimeConfig, pre
9
9
  * Preset name which was used to generate the runtime config
10
10
  */
11
11
  preset?: string;
12
- }): {
12
+ }): Promise<{
13
13
  indexer: import("@apibara/indexer").Indexer<unknown, unknown>;
14
14
  logger: any;
15
- } | undefined;
15
+ } | undefined>;
@@ -11,7 +11,7 @@ import { indexers } from "#apibara-internal-virtual/indexers";
11
11
  import { logger as instrumentationLogger } from "#apibara-internal-virtual/instrumentation";
12
12
  import { createLogger } from "./logger.mjs";
13
13
  export const availableIndexers = indexers.map((i) => i.name);
14
- export function createIndexer({
14
+ export async function createIndexer({
15
15
  indexerName,
16
16
  processedRuntimeConfig,
17
17
  preset
@@ -29,7 +29,7 @@ export function createIndexer({
29
29
  );
30
30
  return;
31
31
  }
32
- const definition = typeof indexerModule === "function" ? indexerModule(processedRuntimeConfig) : indexerModule;
32
+ const definition = typeof indexerModule === "function" ? await indexerModule(processedRuntimeConfig) : indexerModule;
33
33
  let reporter = createLogger({
34
34
  indexer: indexerName,
35
35
  preset,
@@ -30,7 +30,7 @@ const startCommand = defineCommand({
30
30
  userEnvRuntimeConfig
31
31
  });
32
32
  for (const indexer of availableIndexers) {
33
- const { indexer: indexerInstance } = createIndexer({
33
+ const { indexer: indexerInstance } = await createIndexer({
34
34
  indexerName: indexer,
35
35
  processedRuntimeConfig,
36
36
  preset
@@ -1,4 +1,4 @@
1
- import { runWithReconnect } from "@apibara/indexer";
1
+ import { ReloadIndexerRequest, runWithReconnect } from "@apibara/indexer";
2
2
  import { createAuthenticatedClient } from "@apibara/protocol";
3
3
  import {
4
4
  checkForUnknownArgs,
@@ -40,44 +40,59 @@ const startCommand = defineCommand({
40
40
  async run({ args, cmd }) {
41
41
  const { indexer, preset: argPreset, standalone } = args;
42
42
  await checkForUnknownArgs(args, cmd);
43
- let preset;
44
- let processedRuntimeConfig;
45
- if (standalone) {
46
- preset = argPreset ?? originalPreset;
47
- processedRuntimeConfig = getProcessedRuntimeConfig({
48
- preset,
49
- presets,
50
- runtimeConfig,
51
- userEnvRuntimeConfig
52
- });
53
- } else {
54
- const envResult = getRuntimeDataFromEnv();
55
- preset = envResult.preset;
56
- processedRuntimeConfig = envResult.processedRuntimeConfig;
43
+ let _logger;
44
+ while (true) {
45
+ try {
46
+ let preset;
47
+ let processedRuntimeConfig;
48
+ if (standalone) {
49
+ preset = argPreset ?? originalPreset;
50
+ processedRuntimeConfig = getProcessedRuntimeConfig({
51
+ preset,
52
+ presets,
53
+ runtimeConfig,
54
+ userEnvRuntimeConfig
55
+ });
56
+ } else {
57
+ const envResult = getRuntimeDataFromEnv();
58
+ preset = envResult.preset;
59
+ processedRuntimeConfig = envResult.processedRuntimeConfig;
60
+ }
61
+ const { indexer: indexerInstance, logger } = await createIndexer({
62
+ indexerName: indexer,
63
+ processedRuntimeConfig,
64
+ preset
65
+ }) ?? {};
66
+ _logger = logger;
67
+ if (!indexerInstance) {
68
+ consola.error(
69
+ `Specified indexer "${indexer}" but it was not defined`
70
+ );
71
+ process.exit(1);
72
+ }
73
+ const client = createAuthenticatedClient(
74
+ indexerInstance.streamConfig,
75
+ indexerInstance.options.streamUrl,
76
+ indexerInstance.options.clientOptions
77
+ );
78
+ if (register) {
79
+ consola.start("Registering from instrumentation");
80
+ await register();
81
+ consola.success("Registered from instrumentation");
82
+ }
83
+ if (logger) {
84
+ logger.info(`Indexer ${blueBright(indexer)} started`);
85
+ }
86
+ await runWithReconnect(client, indexerInstance);
87
+ return;
88
+ } catch (error) {
89
+ if (error instanceof ReloadIndexerRequest) {
90
+ _logger?.info(`Indexer ${blueBright(indexer)} reloaded`);
91
+ continue;
92
+ }
93
+ throw error;
94
+ }
57
95
  }
58
- const { indexer: indexerInstance, logger } = createIndexer({
59
- indexerName: indexer,
60
- processedRuntimeConfig,
61
- preset
62
- }) ?? {};
63
- if (!indexerInstance) {
64
- consola.error(`Specified indexer "${indexer}" but it was not defined`);
65
- process.exit(1);
66
- }
67
- const client = createAuthenticatedClient(
68
- indexerInstance.streamConfig,
69
- indexerInstance.options.streamUrl,
70
- indexerInstance.options.clientOptions
71
- );
72
- if (register) {
73
- consola.start("Registering from instrumentation");
74
- await register();
75
- consola.success("Registered from instrumentation");
76
- }
77
- if (logger) {
78
- logger.info(`Indexer ${blueBright(indexer)} started`);
79
- }
80
- await runWithReconnect(client, indexerInstance);
81
96
  }
82
97
  });
83
98
  export const mainCli = defineCommand({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apibara",
3
- "version": "2.1.0-beta.40",
3
+ "version": "2.1.0-beta.41",
4
4
  "type": "module",
5
5
  "main": "./dist/core/index.mjs",
6
6
  "exports": {
@@ -98,7 +98,7 @@
98
98
  "playground:add": "pnpm playground add --dir playground"
99
99
  },
100
100
  "devDependencies": {
101
- "@apibara/starknet": "2.1.0-beta.40",
101
+ "@apibara/starknet": "2.1.0-beta.41",
102
102
  "@types/fs-extra": "^11.0.4",
103
103
  "@types/node": "^20.14.0",
104
104
  "@types/prompts": "^2.4.9",
@@ -109,8 +109,8 @@
109
109
  "vitest": "^1.6.0"
110
110
  },
111
111
  "dependencies": {
112
- "@apibara/indexer": "2.1.0-beta.40",
113
- "@apibara/protocol": "2.1.0-beta.40",
112
+ "@apibara/indexer": "2.1.0-beta.41",
113
+ "@apibara/protocol": "2.1.0-beta.41",
114
114
  "@rollup/plugin-replace": "^6.0.2",
115
115
  "@rollup/plugin-virtual": "^3.0.2",
116
116
  "c12": "^1.11.1",
@@ -19,6 +19,7 @@ const runtimeDependencies = [
19
19
  // https://socket.io/docs/v4/server-installation/#additional-packages
20
20
  "utf-8-validate",
21
21
  "bufferutil",
22
+ "fsevents",
22
23
  // was giving unresolved import warnings from `node-fetch` library.
23
24
  "encoding",
24
25
  ];
@@ -1,10 +1,53 @@
1
- import { runWithReconnect } from "@apibara/indexer";
1
+ import { ReloadIndexerRequest, runWithReconnect } from "@apibara/indexer";
2
2
  import { createAuthenticatedClient } from "@apibara/protocol";
3
3
  import { getRuntimeDataFromEnv } from "apibara/common";
4
4
  import { defineCommand, runMain } from "citty";
5
+ import type { ConsolaInstance } from "consola";
5
6
  import { blueBright } from "picocolors";
6
7
  import { availableIndexers, createIndexer } from "./internal/app";
7
8
 
9
+ async function startIndexer(indexer: string) {
10
+ let _logger: ConsolaInstance | undefined;
11
+ while (true) {
12
+ try {
13
+ const { processedRuntimeConfig, preset } = getRuntimeDataFromEnv();
14
+
15
+ const { indexer: indexerInstance, logger } =
16
+ (await createIndexer({
17
+ indexerName: indexer,
18
+ processedRuntimeConfig,
19
+ preset,
20
+ })) ?? {};
21
+
22
+ _logger = logger;
23
+
24
+ if (!indexerInstance) {
25
+ return;
26
+ }
27
+
28
+ const client = createAuthenticatedClient(
29
+ indexerInstance.streamConfig,
30
+ indexerInstance.options.streamUrl,
31
+ indexerInstance.options.clientOptions,
32
+ );
33
+
34
+ if (logger) {
35
+ logger.info(`Indexer ${blueBright(indexer)} started`);
36
+ }
37
+
38
+ await runWithReconnect(client, indexerInstance);
39
+
40
+ return;
41
+ } catch (error) {
42
+ if (error instanceof ReloadIndexerRequest) {
43
+ _logger?.info(`Indexer ${blueBright(indexer)} reloaded`);
44
+ continue;
45
+ }
46
+ throw error;
47
+ }
48
+ }
49
+ }
50
+
8
51
  const startCommand = defineCommand({
9
52
  meta: {
10
53
  name: "start",
@@ -19,8 +62,6 @@ const startCommand = defineCommand({
19
62
  async run({ args }) {
20
63
  const { indexers: indexersArgs } = args;
21
64
 
22
- const { processedRuntimeConfig, preset } = getRuntimeDataFromEnv();
23
-
24
65
  let selectedIndexers = availableIndexers;
25
66
  if (indexersArgs) {
26
67
  selectedIndexers = indexersArgs.split(",");
@@ -34,31 +75,7 @@ const startCommand = defineCommand({
34
75
  }
35
76
  }
36
77
 
37
- await Promise.all(
38
- selectedIndexers.map(async (indexer) => {
39
- const { indexer: indexerInstance, logger } =
40
- createIndexer({
41
- indexerName: indexer,
42
- processedRuntimeConfig,
43
- preset,
44
- }) ?? {};
45
- if (!indexerInstance) {
46
- return;
47
- }
48
-
49
- const client = createAuthenticatedClient(
50
- indexerInstance.streamConfig,
51
- indexerInstance.options.streamUrl,
52
- indexerInstance.options.clientOptions,
53
- );
54
-
55
- if (logger) {
56
- logger.info(`Indexer ${blueBright(indexer)} started`);
57
- }
58
-
59
- await runWithReconnect(client, indexerInstance);
60
- }),
61
- );
78
+ await Promise.all(selectedIndexers.map((indexer) => startIndexer(indexer)));
62
79
  },
63
80
  });
64
81
 
@@ -15,7 +15,7 @@ import { createLogger } from "./logger";
15
15
 
16
16
  export const availableIndexers = indexers.map((i) => i.name);
17
17
 
18
- export function createIndexer({
18
+ export async function createIndexer({
19
19
  indexerName,
20
20
  processedRuntimeConfig,
21
21
  preset,
@@ -48,7 +48,7 @@ export function createIndexer({
48
48
 
49
49
  const definition =
50
50
  typeof indexerModule === "function"
51
- ? indexerModule(processedRuntimeConfig)
51
+ ? await indexerModule(processedRuntimeConfig)
52
52
  : indexerModule;
53
53
 
54
54
  let reporter: ConsolaReporter = createLogger({
@@ -48,11 +48,11 @@ const startCommand = defineCommand({
48
48
  });
49
49
  for (const indexer of availableIndexers) {
50
50
  const { indexer: indexerInstance } =
51
- createIndexer({
51
+ (await createIndexer({
52
52
  indexerName: indexer,
53
53
  processedRuntimeConfig,
54
54
  preset,
55
- }) ?? {};
55
+ })) ?? {};
56
56
  if (!indexerInstance) {
57
57
  continue;
58
58
  }
@@ -1,4 +1,4 @@
1
- import { runWithReconnect } from "@apibara/indexer";
1
+ import { ReloadIndexerRequest, runWithReconnect } from "@apibara/indexer";
2
2
  import { createAuthenticatedClient } from "@apibara/protocol";
3
3
  import {
4
4
  checkForUnknownArgs,
@@ -6,7 +6,7 @@ import {
6
6
  getRuntimeDataFromEnv,
7
7
  } from "apibara/common";
8
8
  import { defineCommand, runMain } from "citty";
9
- import consola from "consola";
9
+ import consola, { type ConsolaInstance } from "consola";
10
10
  import { blueBright } from "picocolors";
11
11
  import { register } from "#apibara-internal-virtual/instrumentation";
12
12
  // used when running with node .apibara/build/start.mjs as these values are made static during build time (except userEnvRuntimeConfig)
@@ -44,54 +44,72 @@ const startCommand = defineCommand({
44
44
  const { indexer, preset: argPreset, standalone } = args;
45
45
  await checkForUnknownArgs(args, cmd);
46
46
 
47
- let preset: string | undefined;
48
- let processedRuntimeConfig: Record<string, unknown> | undefined;
47
+ let _logger: ConsolaInstance | undefined;
49
48
 
50
- if (standalone) {
51
- // when user does node .apibara/build/start.mjs
52
- preset = argPreset ?? originalPreset;
53
- processedRuntimeConfig = getProcessedRuntimeConfig({
54
- preset,
55
- presets,
56
- runtimeConfig,
57
- userEnvRuntimeConfig,
58
- });
59
- } else {
60
- // When user does apibara start
61
- const envResult = getRuntimeDataFromEnv();
62
- preset = envResult.preset;
63
- processedRuntimeConfig = envResult.processedRuntimeConfig;
64
- }
49
+ while (true) {
50
+ try {
51
+ let preset: string | undefined;
52
+ let processedRuntimeConfig: Record<string, unknown> | undefined;
65
53
 
66
- const { indexer: indexerInstance, logger } =
67
- createIndexer({
68
- indexerName: indexer,
69
- processedRuntimeConfig,
70
- preset,
71
- }) ?? {};
54
+ if (standalone) {
55
+ // when user does node .apibara/build/start.mjs
56
+ preset = argPreset ?? originalPreset;
57
+ processedRuntimeConfig = getProcessedRuntimeConfig({
58
+ preset,
59
+ presets,
60
+ runtimeConfig,
61
+ userEnvRuntimeConfig,
62
+ });
63
+ } else {
64
+ // When user does apibara start
65
+ const envResult = getRuntimeDataFromEnv();
66
+ preset = envResult.preset;
67
+ processedRuntimeConfig = envResult.processedRuntimeConfig;
68
+ }
72
69
 
73
- if (!indexerInstance) {
74
- consola.error(`Specified indexer "${indexer}" but it was not defined`);
75
- process.exit(1);
76
- }
70
+ const { indexer: indexerInstance, logger } =
71
+ (await createIndexer({
72
+ indexerName: indexer,
73
+ processedRuntimeConfig,
74
+ preset,
75
+ })) ?? {};
77
76
 
78
- const client = createAuthenticatedClient(
79
- indexerInstance.streamConfig,
80
- indexerInstance.options.streamUrl,
81
- indexerInstance.options.clientOptions,
82
- );
77
+ _logger = logger;
83
78
 
84
- if (register) {
85
- consola.start("Registering from instrumentation");
86
- await register();
87
- consola.success("Registered from instrumentation");
88
- }
79
+ if (!indexerInstance) {
80
+ consola.error(
81
+ `Specified indexer "${indexer}" but it was not defined`,
82
+ );
83
+ process.exit(1);
84
+ }
89
85
 
90
- if (logger) {
91
- logger.info(`Indexer ${blueBright(indexer)} started`);
92
- }
86
+ const client = createAuthenticatedClient(
87
+ indexerInstance.streamConfig,
88
+ indexerInstance.options.streamUrl,
89
+ indexerInstance.options.clientOptions,
90
+ );
93
91
 
94
- await runWithReconnect(client, indexerInstance);
92
+ if (register) {
93
+ consola.start("Registering from instrumentation");
94
+ await register();
95
+ consola.success("Registered from instrumentation");
96
+ }
97
+
98
+ if (logger) {
99
+ logger.info(`Indexer ${blueBright(indexer)} started`);
100
+ }
101
+
102
+ await runWithReconnect(client, indexerInstance);
103
+
104
+ return;
105
+ } catch (error) {
106
+ if (error instanceof ReloadIndexerRequest) {
107
+ _logger?.info(`Indexer ${blueBright(indexer)} reloaded`);
108
+ continue;
109
+ }
110
+ throw error;
111
+ }
112
+ }
95
113
  },
96
114
  });
97
115