apibara 2.1.0-beta.4 → 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.
- package/dist/chunks/add.mjs +16 -8
- package/dist/chunks/add.mjs.map +1 -0
- package/dist/chunks/build.mjs +4 -2
- package/dist/chunks/build.mjs.map +1 -0
- package/dist/chunks/dev.mjs +55 -21
- package/dist/chunks/dev.mjs.map +1 -0
- package/dist/chunks/init.mjs +11 -7
- package/dist/chunks/init.mjs.map +1 -0
- package/dist/chunks/prepare.mjs +4 -2
- package/dist/chunks/prepare.mjs.map +1 -0
- package/dist/chunks/start.mjs +16 -4
- package/dist/chunks/start.mjs.map +1 -0
- package/dist/chunks/write-project-info.mjs +51 -0
- package/dist/chunks/write-project-info.mjs.map +1 -0
- package/dist/cli/index.mjs +3 -1
- package/dist/cli/index.mjs.map +1 -0
- package/dist/common/index.d.mts +33 -0
- package/dist/common/index.d.ts +33 -0
- package/dist/common/index.mjs +91 -0
- package/dist/common/index.mjs.map +1 -0
- package/dist/config/index.mjs +1 -0
- package/dist/config/index.mjs.map +1 -0
- package/dist/core/index.mjs +134 -69
- package/dist/core/index.mjs.map +1 -0
- package/dist/create/index.d.mts +2 -1
- package/dist/create/index.d.ts +2 -1
- package/dist/create/index.mjs +168 -139
- package/dist/create/index.mjs.map +1 -0
- package/dist/hooks/index.mjs +6 -1
- package/dist/hooks/index.mjs.map +1 -0
- package/dist/indexer/index.d.ts +1 -0
- package/dist/indexer/index.mjs +1 -0
- package/dist/indexer/plugins.d.ts +1 -0
- package/dist/indexer/plugins.mjs +1 -0
- package/dist/indexer/testing.d.ts +1 -0
- package/dist/indexer/testing.mjs +1 -0
- package/dist/indexer/vcr.d.ts +1 -0
- package/dist/indexer/vcr.mjs +1 -0
- package/dist/rolldown/index.d.mts +7 -0
- package/dist/rolldown/index.d.ts +7 -0
- package/dist/rolldown/index.mjs +141 -0
- package/dist/rolldown/index.mjs.map +1 -0
- package/dist/runtime/dev.mjs +39 -17
- package/dist/runtime/internal/app.d.ts +14 -1
- package/dist/runtime/internal/app.mjs +26 -21
- package/dist/runtime/project-info.d.ts +3 -0
- package/dist/runtime/project-info.mjs +67 -0
- package/dist/runtime/start.mjs +78 -11
- package/dist/shared/apibara.730bb1e4.mjs +18 -0
- package/dist/shared/apibara.730bb1e4.mjs.map +1 -0
- package/dist/types/index.d.mts +24 -20
- package/dist/types/index.d.ts +24 -20
- package/dist/types/index.mjs +1 -0
- package/dist/types/index.mjs.map +1 -0
- package/package.json +33 -16
- package/src/cli/commands/add.ts +16 -7
- package/src/cli/commands/build.ts +5 -2
- package/src/cli/commands/dev.ts +64 -20
- package/src/cli/commands/init.ts +12 -7
- package/src/cli/commands/prepare.ts +4 -3
- package/src/cli/commands/start.ts +18 -3
- package/src/cli/commands/write-project-info.ts +56 -0
- package/src/cli/index.ts +2 -0
- package/src/common/cli.ts +40 -0
- package/src/common/constants.ts +6 -0
- package/src/common/helper.ts +86 -0
- package/src/common/index.ts +3 -0
- package/src/core/apibara.ts +7 -2
- package/src/core/build/build.ts +13 -5
- package/src/core/build/dev.ts +46 -23
- package/src/core/build/error.ts +9 -14
- package/src/core/build/prepare.ts +5 -3
- package/src/core/build/prod.ts +25 -16
- package/src/core/build/types.ts +11 -1
- package/src/core/config/defaults.ts +3 -0
- package/src/core/config/loader.ts +15 -7
- package/src/core/config/resolvers/runtime.resolver.ts +44 -0
- package/src/core/config/update.ts +6 -2
- package/src/core/scan.ts +1 -1
- package/src/create/add.ts +14 -20
- package/src/create/constants.ts +5 -7
- package/src/create/init.ts +8 -5
- package/src/create/templates.ts +144 -116
- package/src/create/types.ts +3 -0
- package/src/create/utils.ts +20 -7
- package/src/hooks/useRuntimeConfig.ts +4 -1
- package/src/indexer/index.ts +1 -0
- package/src/indexer/plugins.ts +1 -0
- package/src/indexer/testing.ts +1 -0
- package/src/indexer/vcr.ts +1 -0
- package/src/rolldown/config.ts +86 -0
- package/src/rolldown/index.ts +2 -0
- package/src/{rollup → rolldown}/plugins/indexers.ts +3 -3
- package/src/rolldown/plugins/instrumentation.ts +68 -0
- package/src/rolldown/plugins/static-config.ts +21 -0
- package/src/runtime/dev.ts +49 -19
- package/src/runtime/internal/app.ts +42 -29
- package/src/runtime/project-info.ts +90 -0
- package/src/runtime/start.ts +91 -11
- package/src/types/config.ts +27 -13
- 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/indexers.d.ts +4 -1
- package/src/types/virtual/instrumentation.d.ts +4 -0
- package/src/types/virtual/static-config.d.ts +4 -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/dist/shared/apibara.1b515d04.mjs +0 -8
- package/src/cli/common.ts +0 -8
- package/src/core/config/resolvers/preset.resolver.ts +0 -9
- package/src/core/config/resolvers/runtime-config.resolver.ts +0 -6
- 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/src/types/virtual/config.d.ts +0 -3
package/dist/chunks/add.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { checkForUnknownArgs } from 'apibara/common';
|
|
1
2
|
import { addIndexer } from 'apibara/create';
|
|
2
3
|
import { defineCommand } from 'citty';
|
|
3
4
|
|
|
@@ -9,36 +10,43 @@ const add = defineCommand({
|
|
|
9
10
|
args: {
|
|
10
11
|
indexerId: {
|
|
11
12
|
type: "positional",
|
|
12
|
-
description: "Indexer ID",
|
|
13
|
+
description: "Indexer ID - must be in kebab-case",
|
|
13
14
|
required: false
|
|
14
15
|
},
|
|
15
16
|
chain: {
|
|
16
17
|
type: "string",
|
|
17
|
-
description: "
|
|
18
|
+
description: "Blockchain - ethereum, beaconchain, starknet"
|
|
18
19
|
},
|
|
19
20
|
network: {
|
|
20
21
|
type: "string",
|
|
21
|
-
description: "Network"
|
|
22
|
+
description: "Network - mainnet, sepolia, other"
|
|
22
23
|
},
|
|
23
24
|
storage: {
|
|
24
25
|
type: "string",
|
|
25
|
-
description: "Storage"
|
|
26
|
+
description: "Storage - postgres, none"
|
|
26
27
|
},
|
|
27
28
|
dnaUrl: {
|
|
28
29
|
type: "string",
|
|
29
|
-
description: "DNA URL"
|
|
30
|
+
description: "DNA URL - https://custom-dna-url.apibara.org"
|
|
31
|
+
},
|
|
32
|
+
dir: {
|
|
33
|
+
type: "string",
|
|
34
|
+
description: "Root directory - apibara project root where apibara.config is located | default: current working directory"
|
|
30
35
|
}
|
|
31
36
|
},
|
|
32
|
-
async run({ args }) {
|
|
33
|
-
|
|
37
|
+
async run({ args, cmd }) {
|
|
38
|
+
await checkForUnknownArgs(args, cmd);
|
|
39
|
+
const { indexerId, chain, network, storage, dnaUrl, dir } = args;
|
|
34
40
|
await addIndexer({
|
|
35
41
|
argIndexerId: indexerId,
|
|
36
42
|
argChain: chain,
|
|
37
43
|
argNetwork: network,
|
|
38
44
|
argStorage: storage,
|
|
39
|
-
argDnaUrl: dnaUrl
|
|
45
|
+
argDnaUrl: dnaUrl,
|
|
46
|
+
argRootDir: dir
|
|
40
47
|
});
|
|
41
48
|
}
|
|
42
49
|
});
|
|
43
50
|
|
|
44
51
|
export { add as default };
|
|
52
|
+
//# sourceMappingURL=add.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.mjs","sources":["../../src/cli/commands/add.ts"],"sourcesContent":["import { checkForUnknownArgs } from \"apibara/common\";\nimport { addIndexer } from \"apibara/create\";\nimport { defineCommand } from \"citty\";\n\nexport default defineCommand({\n meta: {\n name: \"add\",\n description:\n \"apibara add helps you add a new indexer to your project with sensible defaults.\",\n },\n args: {\n indexerId: {\n type: \"positional\",\n description: \"Indexer ID - must be in kebab-case\",\n required: false,\n },\n chain: {\n type: \"string\",\n description: \"Blockchain - ethereum, beaconchain, starknet\",\n },\n network: {\n type: \"string\",\n description: \"Network - mainnet, sepolia, other\",\n },\n storage: {\n type: \"string\",\n description: \"Storage - postgres, none\",\n },\n dnaUrl: {\n type: \"string\",\n description: \"DNA URL - https://custom-dna-url.apibara.org\",\n },\n dir: {\n type: \"string\",\n description:\n \"Root directory - apibara project root where apibara.config is located | default: current working directory\",\n },\n },\n async run({ args, cmd }) {\n await checkForUnknownArgs(args, cmd);\n\n const { indexerId, chain, network, storage, dnaUrl, dir } = args;\n\n await addIndexer({\n argIndexerId: indexerId,\n argChain: chain,\n argNetwork: network,\n argStorage: storage,\n argDnaUrl: dnaUrl,\n argRootDir: dir,\n });\n },\n});\n"],"names":[],"mappings":";;;;AAIA,YAAe,aAAc,CAAA;AAAA,EAC3B,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,KAAA;AAAA,IACN,WACE,EAAA,iFAAA;AAAA,GACJ;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,SAAW,EAAA;AAAA,MACT,IAAM,EAAA,YAAA;AAAA,MACN,WAAa,EAAA,oCAAA;AAAA,MACb,QAAU,EAAA,KAAA;AAAA,KACZ;AAAA,IACA,KAAO,EAAA;AAAA,MACL,IAAM,EAAA,QAAA;AAAA,MACN,WAAa,EAAA,8CAAA;AAAA,KACf;AAAA,IACA,OAAS,EAAA;AAAA,MACP,IAAM,EAAA,QAAA;AAAA,MACN,WAAa,EAAA,mCAAA;AAAA,KACf;AAAA,IACA,OAAS,EAAA;AAAA,MACP,IAAM,EAAA,QAAA;AAAA,MACN,WAAa,EAAA,0BAAA;AAAA,KACf;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,IAAM,EAAA,QAAA;AAAA,MACN,WAAa,EAAA,8CAAA;AAAA,KACf;AAAA,IACA,GAAK,EAAA;AAAA,MACH,IAAM,EAAA,QAAA;AAAA,MACN,WACE,EAAA,4GAAA;AAAA,KACJ;AAAA,GACF;AAAA,EACA,MAAM,GAAA,CAAI,EAAE,IAAA,EAAM,KAAO,EAAA;AACvB,IAAM,MAAA,mBAAA,CAAoB,MAAM,GAAG,CAAA,CAAA;AAEnC,IAAA,MAAM,EAAE,SAAW,EAAA,KAAA,EAAO,SAAS,OAAS,EAAA,MAAA,EAAQ,KAAQ,GAAA,IAAA,CAAA;AAE5D,IAAA,MAAM,UAAW,CAAA;AAAA,MACf,YAAc,EAAA,SAAA;AAAA,MACd,QAAU,EAAA,KAAA;AAAA,MACV,UAAY,EAAA,OAAA;AAAA,MACZ,UAAY,EAAA,OAAA;AAAA,MACZ,SAAW,EAAA,MAAA;AAAA,MACX,UAAY,EAAA,GAAA;AAAA,KACb,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA;;;;"}
|
package/dist/chunks/build.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { commonArgs, checkForUnknownArgs } from 'apibara/common';
|
|
1
2
|
import { createApibara, prepare, writeTypes, build as build$1 } from 'apibara/core';
|
|
2
3
|
import { runtimeDir } from 'apibara/runtime/meta';
|
|
3
4
|
import { defineCommand } from 'citty';
|
|
4
5
|
import { resolve, join } from 'pathe';
|
|
5
|
-
import { c as commonArgs } from '../shared/apibara.1b515d04.mjs';
|
|
6
6
|
|
|
7
7
|
const build = defineCommand({
|
|
8
8
|
meta: {
|
|
@@ -12,7 +12,8 @@ const build = defineCommand({
|
|
|
12
12
|
args: {
|
|
13
13
|
...commonArgs
|
|
14
14
|
},
|
|
15
|
-
async run({ args }) {
|
|
15
|
+
async run({ args, cmd }) {
|
|
16
|
+
await checkForUnknownArgs(args, cmd);
|
|
16
17
|
const rootDir = resolve(args.dir || args._dir || ".");
|
|
17
18
|
const apibara = await createApibara({
|
|
18
19
|
rootDir
|
|
@@ -26,3 +27,4 @@ const build = defineCommand({
|
|
|
26
27
|
});
|
|
27
28
|
|
|
28
29
|
export { build as default };
|
|
30
|
+
//# sourceMappingURL=build.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.mjs","sources":["../../src/cli/commands/build.ts"],"sourcesContent":["import { checkForUnknownArgs, commonArgs } from \"apibara/common\";\nimport { build, createApibara, prepare, writeTypes } from \"apibara/core\";\nimport { runtimeDir } from \"apibara/runtime/meta\";\nimport { defineCommand } from \"citty\";\nimport { join, resolve } from \"pathe\";\n\nexport default defineCommand({\n meta: {\n name: \"build\",\n description: \"Build indexer\",\n },\n args: {\n ...commonArgs,\n },\n async run({ args, cmd }) {\n await checkForUnknownArgs(args, cmd);\n\n const rootDir = resolve((args.dir || args._dir || \".\") as string);\n\n const apibara = await createApibara({\n rootDir,\n });\n\n apibara.options.entry = join(runtimeDir, \"start.mjs\");\n\n await prepare(apibara);\n await writeTypes(apibara);\n await build(apibara);\n await apibara.close();\n },\n});\n"],"names":["build"],"mappings":";;;;;;AAMA,cAAe,aAAc,CAAA;AAAA,EAC3B,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,OAAA;AAAA,IACN,WAAa,EAAA,eAAA;AAAA,GACf;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,GAAG,UAAA;AAAA,GACL;AAAA,EACA,MAAM,GAAA,CAAI,EAAE,IAAA,EAAM,KAAO,EAAA;AACvB,IAAM,MAAA,mBAAA,CAAoB,MAAM,GAAG,CAAA,CAAA;AAEnC,IAAA,MAAM,UAAU,OAAS,CAAA,IAAA,CAAK,GAAO,IAAA,IAAA,CAAK,QAAQ,GAAc,CAAA,CAAA;AAEhE,IAAM,MAAA,OAAA,GAAU,MAAM,aAAc,CAAA;AAAA,MAClC,OAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,OAAA,CAAQ,OAAQ,CAAA,KAAA,GAAQ,IAAK,CAAA,UAAA,EAAY,WAAW,CAAA,CAAA;AAEpD,IAAA,MAAM,QAAQ,OAAO,CAAA,CAAA;AACrB,IAAA,MAAM,WAAW,OAAO,CAAA,CAAA;AACxB,IAAA,MAAMA,QAAM,OAAO,CAAA,CAAA;AACnB,IAAA,MAAM,QAAQ,KAAM,EAAA,CAAA;AAAA,GACtB;AACF,CAAC,CAAA;;;;"}
|
package/dist/chunks/dev.mjs
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
+
import { commonArgs, checkForUnknownArgs } from 'apibara/common';
|
|
2
3
|
import { createApibara, prepare, writeTypes, build } from 'apibara/core';
|
|
3
4
|
import { runtimeDir } from 'apibara/runtime/meta';
|
|
4
5
|
import { defineCommand } from 'citty';
|
|
5
6
|
import { colors } from 'consola/utils';
|
|
6
7
|
import { resolve, join } from 'pathe';
|
|
7
|
-
import {
|
|
8
|
+
import { b as blueBright, g as gray } from '../shared/apibara.730bb1e4.mjs';
|
|
9
|
+
import 'picocolors';
|
|
8
10
|
|
|
9
|
-
const hmrKeyRe = /^runtimeConfig
|
|
11
|
+
const hmrKeyRe = /^(runtimeConfig\.|presets\.|preset$)/;
|
|
10
12
|
const dev = defineCommand({
|
|
11
13
|
meta: {
|
|
12
14
|
name: "dev",
|
|
@@ -21,10 +23,22 @@ const dev = defineCommand({
|
|
|
21
23
|
preset: {
|
|
22
24
|
type: "string",
|
|
23
25
|
description: "Preset to use"
|
|
26
|
+
},
|
|
27
|
+
"always-reindex": {
|
|
28
|
+
type: "boolean",
|
|
29
|
+
default: false,
|
|
30
|
+
description: "Reindex the indexers from the starting block on every restart | default: `false`"
|
|
24
31
|
}
|
|
25
32
|
},
|
|
26
|
-
async run({ args }) {
|
|
33
|
+
async run({ args, data, cmd, rawArgs }) {
|
|
34
|
+
await checkForUnknownArgs(args, cmd);
|
|
27
35
|
const rootDir = resolve(args.dir || args._dir || ".");
|
|
36
|
+
if (args["always-reindex"]) {
|
|
37
|
+
process.env.APIBARA_ALWAYS_REINDEX = "true";
|
|
38
|
+
}
|
|
39
|
+
const selectedIndexers = new Set(
|
|
40
|
+
args.indexers?.split(",").map((i) => i.trim()).sort() ?? []
|
|
41
|
+
);
|
|
28
42
|
let apibara;
|
|
29
43
|
let childProcess;
|
|
30
44
|
const reload = async () => {
|
|
@@ -37,7 +51,8 @@ const dev = defineCommand({
|
|
|
37
51
|
}
|
|
38
52
|
apibara = await createApibara(
|
|
39
53
|
{
|
|
40
|
-
rootDir
|
|
54
|
+
rootDir,
|
|
55
|
+
preset: args.preset
|
|
41
56
|
},
|
|
42
57
|
{
|
|
43
58
|
watch: true,
|
|
@@ -48,53 +63,72 @@ const dev = defineCommand({
|
|
|
48
63
|
return;
|
|
49
64
|
}
|
|
50
65
|
apibara.logger.info(
|
|
51
|
-
`Config updated:
|
|
52
|
-
|
|
66
|
+
`Config updated:
|
|
67
|
+
${diff.map((entry) => ` ${entry.toString()}`).join("\n")}`
|
|
53
68
|
);
|
|
54
|
-
await (diff.every((e) => hmrKeyRe.test(e.key)) ?
|
|
69
|
+
await (diff.every((e) => hmrKeyRe.test(e.key)) ? (
|
|
70
|
+
// in hot reload we only update the runtime values & restart indexers,no build step, apibara instance remains the same
|
|
71
|
+
apibara.updateConfig(newConfig.config || {})
|
|
72
|
+
) : reload());
|
|
55
73
|
}
|
|
56
74
|
}
|
|
57
75
|
},
|
|
58
76
|
true
|
|
59
77
|
);
|
|
60
|
-
apibara.hooks.hookOnce("restart",
|
|
78
|
+
apibara.hooks.hookOnce("restart", async () => {
|
|
79
|
+
await reload();
|
|
80
|
+
});
|
|
61
81
|
apibara.options.entry = join(runtimeDir, "dev.mjs");
|
|
62
82
|
await prepare(apibara);
|
|
63
83
|
await writeTypes(apibara);
|
|
64
84
|
await build(apibara);
|
|
65
|
-
apibara.hooks.hook("dev:restart", () => {
|
|
85
|
+
apibara.hooks.hook("dev:restart", async () => {
|
|
66
86
|
if (childProcess) {
|
|
67
87
|
apibara.logger.info("Change detected, stopping indexers to restart");
|
|
68
|
-
childProcess
|
|
88
|
+
await killProcess(childProcess);
|
|
69
89
|
childProcess = void 0;
|
|
70
90
|
}
|
|
71
91
|
});
|
|
72
|
-
apibara.hooks.hook("dev:reload", () => {
|
|
92
|
+
apibara.hooks.hook("dev:reload", async () => {
|
|
73
93
|
if (childProcess) {
|
|
74
|
-
childProcess
|
|
94
|
+
await killProcess(childProcess);
|
|
95
|
+
childProcess = void 0;
|
|
96
|
+
apibara.logger.info("Restarting indexers");
|
|
75
97
|
} else {
|
|
76
|
-
apibara.logger.
|
|
98
|
+
apibara.logger.info("Starting indexers");
|
|
99
|
+
const indexersText = apibara.indexers.map(
|
|
100
|
+
(i) => selectedIndexers.has(i.name) || selectedIndexers.size === 0 ? blueBright(i.name) : gray(i.name)
|
|
101
|
+
).join(", ");
|
|
102
|
+
apibara.logger.info("Indexers:", indexersText);
|
|
77
103
|
}
|
|
78
104
|
const childArgs = [
|
|
79
105
|
resolve(apibara.options.outputDir || "./.apibara/build", "dev.mjs"),
|
|
80
106
|
"start",
|
|
81
|
-
...args.indexers ? ["--indexers", args.indexers] : []
|
|
82
|
-
...args.preset ? ["--preset", args.preset] : []
|
|
107
|
+
...args.indexers ? ["--indexers", args.indexers] : []
|
|
83
108
|
];
|
|
84
109
|
childProcess = spawn("node", childArgs, {
|
|
85
110
|
stdio: "inherit"
|
|
86
111
|
});
|
|
87
|
-
childProcess.on("close", (code) => {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
)
|
|
92
|
-
|
|
112
|
+
childProcess.on("close", (code, signal) => {
|
|
113
|
+
childProcess = void 0;
|
|
114
|
+
console.log();
|
|
115
|
+
apibara.logger.info(
|
|
116
|
+
`Indexers process exited${code !== null ? ` with code ${colors.red(code)}` : ""}`
|
|
117
|
+
);
|
|
93
118
|
});
|
|
94
119
|
});
|
|
95
120
|
};
|
|
96
121
|
await reload();
|
|
97
122
|
}
|
|
98
123
|
});
|
|
124
|
+
async function killProcess(childProcess) {
|
|
125
|
+
if (childProcess) {
|
|
126
|
+
await new Promise((resolve2) => {
|
|
127
|
+
childProcess.once("exit", resolve2);
|
|
128
|
+
childProcess.kill();
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
99
132
|
|
|
100
133
|
export { dev as default };
|
|
134
|
+
//# sourceMappingURL=dev.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.mjs","sources":["../../src/cli/commands/dev.ts"],"sourcesContent":["import { type ChildProcess, spawn } from \"node:child_process\";\nimport { checkForUnknownArgs, commonArgs } from \"apibara/common\";\nimport { build, createApibara, prepare, writeTypes } from \"apibara/core\";\nimport { runtimeDir } from \"apibara/runtime/meta\";\nimport type { Apibara } from \"apibara/types\";\nimport { defineCommand } from \"citty\";\nimport { colors } from \"consola/utils\";\nimport { join, resolve } from \"pathe\";\nimport { blueBright, gray } from \"../../create/colors\";\n\n// Hot module reloading key regex\n// for only runtimeConfig.*, presets.* keys & preset key\nconst hmrKeyRe = /^(runtimeConfig\\.|presets\\.|preset$)/;\n\nexport default defineCommand({\n meta: {\n name: \"dev\",\n description: \"Start the development server\",\n },\n args: {\n ...commonArgs,\n indexers: {\n type: \"string\",\n description: \"Comma-separated list of indexers to run\",\n },\n preset: {\n type: \"string\",\n description: \"Preset to use\",\n },\n \"always-reindex\": {\n type: \"boolean\",\n default: false,\n description:\n \"Reindex the indexers from the starting block on every restart | default: `false`\",\n },\n },\n async run({ args, data, cmd, rawArgs }) {\n await checkForUnknownArgs(args, cmd);\n\n const rootDir = resolve((args.dir || args._dir || \".\") as string);\n\n if (args[\"always-reindex\"]) {\n process.env.APIBARA_ALWAYS_REINDEX = \"true\";\n }\n\n const selectedIndexers = new Set(\n args.indexers\n ?.split(\",\")\n .map((i) => i.trim())\n .sort() ?? [],\n );\n\n let apibara: Apibara;\n let childProcess: ChildProcess | undefined;\n\n const reload = async () => {\n if (apibara) {\n apibara.logger.info(\"Restarting dev server\");\n if (\"unwatch\" in apibara.options._c12) {\n await apibara.options._c12.unwatch();\n }\n\n await apibara.close();\n }\n\n apibara = await createApibara(\n {\n rootDir,\n preset: args.preset,\n },\n {\n watch: true,\n c12: {\n async onUpdate({ getDiff, newConfig }) {\n const diff = getDiff();\n\n if (diff.length === 0) {\n return; // No changes\n }\n\n apibara.logger.info(\n `Config updated: \\n${diff.map((entry) => ` ${entry.toString()}`).join(\"\\n\")}`,\n );\n\n await (diff.every((e) => hmrKeyRe.test(e.key))\n ? // in hot reload we only update the runtime values & restart indexers,no build step, apibara instance remains the same\n apibara.updateConfig(newConfig.config || {}) // Hot reload\n : reload()); // Full reload\n },\n },\n },\n true,\n );\n\n apibara.hooks.hookOnce(\"restart\", async () => {\n await reload();\n });\n\n apibara.options.entry = join(runtimeDir, \"dev.mjs\");\n\n await prepare(apibara);\n await writeTypes(apibara);\n await build(apibara);\n\n apibara.hooks.hook(\"dev:restart\", async () => {\n if (childProcess) {\n apibara.logger.info(\"Change detected, stopping indexers to restart\");\n await killProcess(childProcess);\n childProcess = undefined;\n }\n });\n\n apibara.hooks.hook(\"dev:reload\", async () => {\n if (childProcess) {\n await killProcess(childProcess);\n childProcess = undefined;\n apibara.logger.info(\"Restarting indexers\");\n } else {\n apibara.logger.info(\"Starting indexers\");\n\n const indexersText = apibara.indexers\n .map((i) =>\n selectedIndexers.has(i.name) || selectedIndexers.size === 0\n ? blueBright(i.name)\n : gray(i.name),\n )\n .join(\", \");\n apibara.logger.info(\"Indexers:\", indexersText);\n }\n\n const childArgs = [\n resolve(apibara.options.outputDir || \"./.apibara/build\", \"dev.mjs\"),\n \"start\",\n ...(args.indexers ? [\"--indexers\", args.indexers] : []),\n ];\n\n childProcess = spawn(\"node\", childArgs, {\n stdio: \"inherit\",\n });\n\n childProcess.on(\"close\", (code, signal) => {\n childProcess = undefined;\n console.log();\n apibara.logger.info(\n `Indexers process exited${\n code !== null ? ` with code ${colors.red(code)}` : \"\"\n }`,\n );\n });\n });\n };\n\n await reload();\n },\n});\n\nasync function killProcess(childProcess: ChildProcess | undefined) {\n if (childProcess) {\n await new Promise((resolve) => {\n childProcess.once(\"exit\", resolve);\n childProcess.kill();\n });\n }\n}\n"],"names":["resolve"],"mappings":"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"}
|
package/dist/chunks/init.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { checkForUnknownArgs } from 'apibara/common';
|
|
1
2
|
import { initializeProject } from 'apibara/create';
|
|
2
3
|
import { defineCommand } from 'citty';
|
|
3
4
|
|
|
@@ -14,24 +15,27 @@ const init = defineCommand({
|
|
|
14
15
|
},
|
|
15
16
|
language: {
|
|
16
17
|
type: "string",
|
|
17
|
-
description: "Language to use: typescript, ts or javascript, js",
|
|
18
|
+
description: "Language to use: typescript, ts or javascript, js | default: `ts`",
|
|
18
19
|
default: "ts",
|
|
19
20
|
alias: "l"
|
|
20
21
|
},
|
|
21
|
-
|
|
22
|
+
"create-indexer": {
|
|
22
23
|
type: "boolean",
|
|
23
|
-
|
|
24
|
-
default:
|
|
24
|
+
name: "create-indexer",
|
|
25
|
+
default: true,
|
|
26
|
+
description: "TODO"
|
|
25
27
|
}
|
|
26
28
|
},
|
|
27
|
-
async run({ args }) {
|
|
28
|
-
|
|
29
|
+
async run({ args, cmd }) {
|
|
30
|
+
await checkForUnknownArgs(args, cmd);
|
|
31
|
+
const { dir: targetDir, "create-indexer": createIndexer, language } = args;
|
|
29
32
|
await initializeProject({
|
|
30
33
|
argTargetDir: targetDir,
|
|
31
34
|
argLanguage: language,
|
|
32
|
-
argNoCreateIndexer:
|
|
35
|
+
argNoCreateIndexer: !createIndexer
|
|
33
36
|
});
|
|
34
37
|
}
|
|
35
38
|
});
|
|
36
39
|
|
|
37
40
|
export { init as default };
|
|
41
|
+
//# sourceMappingURL=init.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.mjs","sources":["../../src/cli/commands/init.ts"],"sourcesContent":["import { checkForUnknownArgs } from \"apibara/common\";\nimport { initializeProject } from \"apibara/create\";\nimport { defineCommand } from \"citty\";\n\nexport default defineCommand({\n meta: {\n name: \"init\",\n description: \"Initialize a new Apibara project\",\n },\n args: {\n dir: {\n type: \"positional\",\n description: \"Target path to initialize the project\",\n required: true,\n },\n language: {\n type: \"string\",\n description:\n \"Language to use: typescript, ts or javascript, js | default: `ts`\",\n default: \"ts\",\n alias: \"l\",\n },\n \"create-indexer\": {\n type: \"boolean\",\n name: \"create-indexer\",\n default: true,\n description: \"TODO\",\n },\n },\n async run({ args, cmd }) {\n await checkForUnknownArgs(args, cmd);\n\n const { dir: targetDir, \"create-indexer\": createIndexer, language } = args;\n\n await initializeProject({\n argTargetDir: targetDir,\n argLanguage: language,\n argNoCreateIndexer: !createIndexer,\n });\n },\n});\n"],"names":[],"mappings":";;;;AAIA,aAAe,aAAc,CAAA;AAAA,EAC3B,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,MAAA;AAAA,IACN,WAAa,EAAA,kCAAA;AAAA,GACf;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,GAAK,EAAA;AAAA,MACH,IAAM,EAAA,YAAA;AAAA,MACN,WAAa,EAAA,uCAAA;AAAA,MACb,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA,IACA,QAAU,EAAA;AAAA,MACR,IAAM,EAAA,QAAA;AAAA,MACN,WACE,EAAA,mEAAA;AAAA,MACF,OAAS,EAAA,IAAA;AAAA,MACT,KAAO,EAAA,GAAA;AAAA,KACT;AAAA,IACA,gBAAkB,EAAA;AAAA,MAChB,IAAM,EAAA,SAAA;AAAA,MACN,IAAM,EAAA,gBAAA;AAAA,MACN,OAAS,EAAA,IAAA;AAAA,MACT,WAAa,EAAA,MAAA;AAAA,KACf;AAAA,GACF;AAAA,EACA,MAAM,GAAA,CAAI,EAAE,IAAA,EAAM,KAAO,EAAA;AACvB,IAAM,MAAA,mBAAA,CAAoB,MAAM,GAAG,CAAA,CAAA;AAEnC,IAAA,MAAM,EAAE,GAAK,EAAA,SAAA,EAAW,gBAAkB,EAAA,aAAA,EAAe,UAAa,GAAA,IAAA,CAAA;AAEtE,IAAA,MAAM,iBAAkB,CAAA;AAAA,MACtB,YAAc,EAAA,SAAA;AAAA,MACd,WAAa,EAAA,QAAA;AAAA,MACb,oBAAoB,CAAC,aAAA;AAAA,KACtB,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA;;;;"}
|
package/dist/chunks/prepare.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { commonArgs, checkForUnknownArgs } from 'apibara/common';
|
|
1
2
|
import { createApibara, writeTypes } from 'apibara/core';
|
|
2
3
|
import { defineCommand } from 'citty';
|
|
3
4
|
import { resolve } from 'pathe';
|
|
4
|
-
import { c as commonArgs } from '../shared/apibara.1b515d04.mjs';
|
|
5
5
|
|
|
6
6
|
const prepare = defineCommand({
|
|
7
7
|
meta: {
|
|
@@ -11,7 +11,8 @@ const prepare = defineCommand({
|
|
|
11
11
|
args: {
|
|
12
12
|
...commonArgs
|
|
13
13
|
},
|
|
14
|
-
async run({ args }) {
|
|
14
|
+
async run({ args, cmd }) {
|
|
15
|
+
await checkForUnknownArgs(args, cmd);
|
|
15
16
|
const rootDir = resolve(args.dir || ".");
|
|
16
17
|
const apibara = await createApibara({ rootDir });
|
|
17
18
|
await writeTypes(apibara);
|
|
@@ -19,3 +20,4 @@ const prepare = defineCommand({
|
|
|
19
20
|
});
|
|
20
21
|
|
|
21
22
|
export { prepare as default };
|
|
23
|
+
//# sourceMappingURL=prepare.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare.mjs","sources":["../../src/cli/commands/prepare.ts"],"sourcesContent":["import { checkForUnknownArgs, commonArgs } from \"apibara/common\";\nimport { createApibara, writeTypes } from \"apibara/core\";\nimport { defineCommand } from \"citty\";\nimport { resolve } from \"pathe\";\n\nexport default defineCommand({\n meta: {\n name: \"prepare\",\n description: \"Generate types for the project\",\n },\n args: {\n ...commonArgs,\n },\n async run({ args, cmd }) {\n await checkForUnknownArgs(args, cmd);\n\n const rootDir = resolve((args.dir || \".\") as string);\n const apibara = await createApibara({ rootDir });\n await writeTypes(apibara);\n },\n});\n"],"names":[],"mappings":";;;;;AAKA,gBAAe,aAAc,CAAA;AAAA,EAC3B,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,SAAA;AAAA,IACN,WAAa,EAAA,gCAAA;AAAA,GACf;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,GAAG,UAAA;AAAA,GACL;AAAA,EACA,MAAM,GAAA,CAAI,EAAE,IAAA,EAAM,KAAO,EAAA;AACvB,IAAM,MAAA,mBAAA,CAAoB,MAAM,GAAG,CAAA,CAAA;AAEnC,IAAA,MAAM,OAAU,GAAA,OAAA,CAAS,IAAK,CAAA,GAAA,IAAO,GAAc,CAAA,CAAA;AACnD,IAAA,MAAM,OAAU,GAAA,MAAM,aAAc,CAAA,EAAE,SAAS,CAAA,CAAA;AAC/C,IAAA,MAAM,WAAW,OAAO,CAAA,CAAA;AAAA,GAC1B;AACF,CAAC,CAAA;;;;"}
|
package/dist/chunks/start.mjs
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
+
import { commonArgs, checkForUnknownArgs } from 'apibara/common';
|
|
2
3
|
import { createApibara } from 'apibara/core';
|
|
3
4
|
import { defineCommand } from 'citty';
|
|
5
|
+
import { colors } from 'consola/utils';
|
|
4
6
|
import fse from 'fs-extra';
|
|
5
7
|
import { resolve } from 'pathe';
|
|
6
|
-
import { c as commonArgs } from '../shared/apibara.1b515d04.mjs';
|
|
7
8
|
|
|
8
9
|
const start = defineCommand({
|
|
9
10
|
meta: {
|
|
@@ -22,11 +23,13 @@ const start = defineCommand({
|
|
|
22
23
|
description: "The preset to use"
|
|
23
24
|
}
|
|
24
25
|
},
|
|
25
|
-
async run({ args }) {
|
|
26
|
+
async run({ args, cmd }) {
|
|
26
27
|
const { indexer, preset } = args;
|
|
27
28
|
const rootDir = resolve(args.dir || args._dir || ".");
|
|
29
|
+
await checkForUnknownArgs(args, cmd);
|
|
28
30
|
const apibara = await createApibara({
|
|
29
|
-
rootDir
|
|
31
|
+
rootDir,
|
|
32
|
+
preset
|
|
30
33
|
});
|
|
31
34
|
apibara.logger.start(
|
|
32
35
|
`Starting indexer ${indexer}${preset ? ` with preset ${preset}` : ""}`
|
|
@@ -45,12 +48,21 @@ const start = defineCommand({
|
|
|
45
48
|
"start",
|
|
46
49
|
"--indexer",
|
|
47
50
|
indexer,
|
|
51
|
+
// important: this is required to run the indexer with apibara cli to load runtime values correctly
|
|
52
|
+
"--no-standalone",
|
|
48
53
|
...preset ? ["--preset", preset] : []
|
|
49
54
|
];
|
|
50
|
-
spawn("node", childArgs, {
|
|
55
|
+
const childProcess = spawn("node", childArgs, {
|
|
51
56
|
stdio: "inherit"
|
|
52
57
|
});
|
|
58
|
+
childProcess.on("close", (code, signal) => {
|
|
59
|
+
console.log();
|
|
60
|
+
apibara.logger.info(
|
|
61
|
+
`Indexers process exited${code !== null ? ` with code ${colors.red(code)}` : ""}`
|
|
62
|
+
);
|
|
63
|
+
});
|
|
53
64
|
}
|
|
54
65
|
});
|
|
55
66
|
|
|
56
67
|
export { start as default };
|
|
68
|
+
//# sourceMappingURL=start.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.mjs","sources":["../../src/cli/commands/start.ts"],"sourcesContent":["import { spawn } from \"node:child_process\";\nimport { checkForUnknownArgs, commonArgs } from \"apibara/common\";\nimport { createApibara } from \"apibara/core\";\nimport { defineCommand } from \"citty\";\nimport { colors } from \"consola/utils\";\nimport fse from \"fs-extra\";\nimport { resolve } from \"pathe\";\n\nexport default defineCommand({\n meta: {\n name: \"start\",\n description: \"Start one indexer\",\n },\n args: {\n ...commonArgs,\n indexer: {\n type: \"string\",\n description: \"The indexer to start\",\n required: true,\n },\n preset: {\n type: \"string\",\n description: \"The preset to use\",\n },\n },\n async run({ args, cmd }) {\n const { indexer, preset } = args;\n const rootDir = resolve((args.dir || args._dir || \".\") as string);\n\n await checkForUnknownArgs(args, cmd);\n\n const apibara = await createApibara({\n rootDir,\n preset,\n });\n\n apibara.logger.start(\n `Starting indexer ${indexer}${preset ? ` with preset ${preset}` : \"\"}`,\n );\n\n const outputDir = apibara.options.outputDir || \"./.apibara/build\";\n const entry = resolve(outputDir, \"start.mjs\");\n\n if (!fse.existsSync(entry)) {\n apibara.logger.error(\n `Output directory ${outputDir} does not exist. Try building the indexer with \"apibara build\" first.`,\n );\n return process.exit(1);\n }\n\n await apibara.close();\n\n const childArgs = [\n entry,\n \"start\",\n \"--indexer\",\n indexer,\n // important: this is required to run the indexer with apibara cli to load runtime values correctly\n \"--no-standalone\",\n ...(preset ? [\"--preset\", preset] : []),\n ];\n\n const childProcess = spawn(\"node\", childArgs, {\n stdio: \"inherit\",\n });\n\n childProcess.on(\"close\", (code, signal) => {\n console.log();\n apibara.logger.info(\n `Indexers process exited${\n code !== null ? ` with code ${colors.red(code)}` : \"\"\n }`,\n );\n });\n },\n});\n"],"names":[],"mappings":";;;;;;;;AAQA,cAAe,aAAc,CAAA;AAAA,EAC3B,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,OAAA;AAAA,IACN,WAAa,EAAA,mBAAA;AAAA,GACf;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,GAAG,UAAA;AAAA,IACH,OAAS,EAAA;AAAA,MACP,IAAM,EAAA,QAAA;AAAA,MACN,WAAa,EAAA,sBAAA;AAAA,MACb,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,IAAM,EAAA,QAAA;AAAA,MACN,WAAa,EAAA,mBAAA;AAAA,KACf;AAAA,GACF;AAAA,EACA,MAAM,GAAA,CAAI,EAAE,IAAA,EAAM,KAAO,EAAA;AACvB,IAAM,MAAA,EAAE,OAAS,EAAA,MAAA,EAAW,GAAA,IAAA,CAAA;AAC5B,IAAA,MAAM,UAAU,OAAS,CAAA,IAAA,CAAK,GAAO,IAAA,IAAA,CAAK,QAAQ,GAAc,CAAA,CAAA;AAEhE,IAAM,MAAA,mBAAA,CAAoB,MAAM,GAAG,CAAA,CAAA;AAEnC,IAAM,MAAA,OAAA,GAAU,MAAM,aAAc,CAAA;AAAA,MAClC,OAAA;AAAA,MACA,MAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,OAAA,CAAQ,MAAO,CAAA,KAAA;AAAA,MACb,oBAAoB,OAAO,CAAA,EAAG,SAAS,CAAgB,aAAA,EAAA,MAAM,KAAK,EAAE,CAAA,CAAA;AAAA,KACtE,CAAA;AAEA,IAAM,MAAA,SAAA,GAAY,OAAQ,CAAA,OAAA,CAAQ,SAAa,IAAA,kBAAA,CAAA;AAC/C,IAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,SAAA,EAAW,WAAW,CAAA,CAAA;AAE5C,IAAA,IAAI,CAAC,GAAA,CAAI,UAAW,CAAA,KAAK,CAAG,EAAA;AAC1B,MAAA,OAAA,CAAQ,MAAO,CAAA,KAAA;AAAA,QACb,oBAAoB,SAAS,CAAA,qEAAA,CAAA;AAAA,OAC/B,CAAA;AACA,MAAO,OAAA,OAAA,CAAQ,KAAK,CAAC,CAAA,CAAA;AAAA,KACvB;AAEA,IAAA,MAAM,QAAQ,KAAM,EAAA,CAAA;AAEpB,IAAA,MAAM,SAAY,GAAA;AAAA,MAChB,KAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,OAAA;AAAA;AAAA,MAEA,iBAAA;AAAA,MACA,GAAI,MAAS,GAAA,CAAC,UAAY,EAAA,MAAM,IAAI,EAAC;AAAA,KACvC,CAAA;AAEA,IAAM,MAAA,YAAA,GAAe,KAAM,CAAA,MAAA,EAAQ,SAAW,EAAA;AAAA,MAC5C,KAAO,EAAA,SAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,YAAA,CAAa,EAAG,CAAA,OAAA,EAAS,CAAC,IAAA,EAAM,MAAW,KAAA;AACzC,MAAA,OAAA,CAAQ,GAAI,EAAA,CAAA;AACZ,MAAA,OAAA,CAAQ,MAAO,CAAA,IAAA;AAAA,QACb,CAAA,uBAAA,EACE,SAAS,IAAO,GAAA,CAAA,WAAA,EAAc,OAAO,GAAI,CAAA,IAAI,CAAC,CAAA,CAAA,GAAK,EACrD,CAAA,CAAA;AAAA,OACF,CAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA;;;;"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { commonArgs, checkForUnknownArgs } from 'apibara/common';
|
|
4
|
+
import { createApibara, prepare, writeTypes, build } from 'apibara/core';
|
|
5
|
+
import { runtimeDir } from 'apibara/runtime/meta';
|
|
6
|
+
import { defineCommand } from 'citty';
|
|
7
|
+
import consola from 'consola';
|
|
8
|
+
import { resolve } from 'pathe';
|
|
9
|
+
|
|
10
|
+
const writeProjectInfo = defineCommand({
|
|
11
|
+
meta: {
|
|
12
|
+
name: "write-project-info",
|
|
13
|
+
description: "Write json-encoded information about the project."
|
|
14
|
+
},
|
|
15
|
+
args: {
|
|
16
|
+
...commonArgs
|
|
17
|
+
},
|
|
18
|
+
async run({ args, cmd }) {
|
|
19
|
+
await checkForUnknownArgs(args, cmd);
|
|
20
|
+
consola.start("Generating `project-info.json`");
|
|
21
|
+
const rootDir = resolve(args.dir || ".");
|
|
22
|
+
const apibara = await createApibara({ rootDir, disableLogs: true });
|
|
23
|
+
apibara.options.entry = join(runtimeDir, "project-info.mjs");
|
|
24
|
+
await prepare(apibara);
|
|
25
|
+
await writeTypes(apibara);
|
|
26
|
+
await build(apibara);
|
|
27
|
+
const childArgs = [
|
|
28
|
+
resolve(
|
|
29
|
+
apibara.options.outputDir || "./.apibara/build",
|
|
30
|
+
"project-info.mjs"
|
|
31
|
+
),
|
|
32
|
+
"start",
|
|
33
|
+
"--build-dir",
|
|
34
|
+
apibara.options.buildDir
|
|
35
|
+
];
|
|
36
|
+
const child = spawn("node", childArgs, {
|
|
37
|
+
stdio: "inherit"
|
|
38
|
+
});
|
|
39
|
+
child.on("close", (code) => {
|
|
40
|
+
if (code === 0) {
|
|
41
|
+
consola.success("Project info written to `.apibara/project-info.json`");
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
child.on("error", (error) => {
|
|
45
|
+
consola.error(`Failed to write project info: ${error.message}`, error);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
export { writeProjectInfo as default };
|
|
51
|
+
//# sourceMappingURL=write-project-info.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-project-info.mjs","sources":["../../src/cli/commands/write-project-info.ts"],"sourcesContent":["import { spawn } from \"node:child_process\";\nimport { join } from \"node:path\";\nimport { checkForUnknownArgs, commonArgs } from \"apibara/common\";\nimport { build, createApibara, prepare, writeTypes } from \"apibara/core\";\nimport { runtimeDir } from \"apibara/runtime/meta\";\nimport { defineCommand } from \"citty\";\nimport consola from \"consola\";\nimport { resolve } from \"pathe\";\n\nexport default defineCommand({\n meta: {\n name: \"write-project-info\",\n description: \"Write json-encoded information about the project.\",\n },\n args: {\n ...commonArgs,\n },\n async run({ args, cmd }) {\n await checkForUnknownArgs(args, cmd);\n\n consola.start(\"Generating `project-info.json`\");\n\n const rootDir = resolve((args.dir || \".\") as string);\n const apibara = await createApibara({ rootDir, disableLogs: true });\n\n apibara.options.entry = join(runtimeDir, \"project-info.mjs\");\n\n await prepare(apibara);\n await writeTypes(apibara);\n await build(apibara);\n\n const childArgs = [\n resolve(\n apibara.options.outputDir || \"./.apibara/build\",\n \"project-info.mjs\",\n ),\n \"start\",\n \"--build-dir\",\n apibara.options.buildDir,\n ];\n\n const child = spawn(\"node\", childArgs, {\n stdio: \"inherit\",\n });\n\n child.on(\"close\", (code) => {\n if (code === 0) {\n consola.success(\"Project info written to `.apibara/project-info.json`\");\n }\n });\n\n child.on(\"error\", (error) => {\n consola.error(`Failed to write project info: ${error.message}`, error);\n });\n },\n});\n"],"names":[],"mappings":";;;;;;;;;AASA,yBAAe,aAAc,CAAA;AAAA,EAC3B,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,oBAAA;AAAA,IACN,WAAa,EAAA,mDAAA;AAAA,GACf;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,GAAG,UAAA;AAAA,GACL;AAAA,EACA,MAAM,GAAA,CAAI,EAAE,IAAA,EAAM,KAAO,EAAA;AACvB,IAAM,MAAA,mBAAA,CAAoB,MAAM,GAAG,CAAA,CAAA;AAEnC,IAAA,OAAA,CAAQ,MAAM,gCAAgC,CAAA,CAAA;AAE9C,IAAA,MAAM,OAAU,GAAA,OAAA,CAAS,IAAK,CAAA,GAAA,IAAO,GAAc,CAAA,CAAA;AACnD,IAAA,MAAM,UAAU,MAAM,aAAA,CAAc,EAAE,OAAS,EAAA,WAAA,EAAa,MAAM,CAAA,CAAA;AAElE,IAAA,OAAA,CAAQ,OAAQ,CAAA,KAAA,GAAQ,IAAK,CAAA,UAAA,EAAY,kBAAkB,CAAA,CAAA;AAE3D,IAAA,MAAM,QAAQ,OAAO,CAAA,CAAA;AACrB,IAAA,MAAM,WAAW,OAAO,CAAA,CAAA;AACxB,IAAA,MAAM,MAAM,OAAO,CAAA,CAAA;AAEnB,IAAA,MAAM,SAAY,GAAA;AAAA,MAChB,OAAA;AAAA,QACE,OAAA,CAAQ,QAAQ,SAAa,IAAA,kBAAA;AAAA,QAC7B,kBAAA;AAAA,OACF;AAAA,MACA,OAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAQ,OAAQ,CAAA,QAAA;AAAA,KAClB,CAAA;AAEA,IAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,MAAA,EAAQ,SAAW,EAAA;AAAA,MACrC,KAAO,EAAA,SAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,KAAA,CAAA,EAAA,CAAG,OAAS,EAAA,CAAC,IAAS,KAAA;AAC1B,MAAA,IAAI,SAAS,CAAG,EAAA;AACd,QAAA,OAAA,CAAQ,QAAQ,sDAAsD,CAAA,CAAA;AAAA,OACxE;AAAA,KACD,CAAA,CAAA;AAED,IAAM,KAAA,CAAA,EAAA,CAAG,OAAS,EAAA,CAAC,KAAU,KAAA;AAC3B,MAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,8BAAA,EAAiC,KAAM,CAAA,OAAO,IAAI,KAAK,CAAA,CAAA;AAAA,KACtE,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA;;;;"}
|
package/dist/cli/index.mjs
CHANGED
|
@@ -13,9 +13,11 @@ const mainCli = defineCommand({
|
|
|
13
13
|
start: () => import('../chunks/start.mjs').then((r) => r.default),
|
|
14
14
|
prepare: () => import('../chunks/prepare.mjs').then((r) => r.default),
|
|
15
15
|
init: () => import('../chunks/init.mjs').then((r) => r.default),
|
|
16
|
-
add: () => import('../chunks/add.mjs').then((r) => r.default)
|
|
16
|
+
add: () => import('../chunks/add.mjs').then((r) => r.default),
|
|
17
|
+
"write-project-info": () => import('../chunks/write-project-info.mjs').then((r) => r.default)
|
|
17
18
|
}
|
|
18
19
|
});
|
|
19
20
|
runMain(mainCli);
|
|
20
21
|
|
|
21
22
|
export { mainCli };
|
|
23
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/cli/index.ts"],"sourcesContent":["import { defineCommand, runMain } from \"citty\";\n\nexport const mainCli = defineCommand({\n meta: {\n name: \"apibara\",\n description: \"Apibara CLI\",\n version: \"2.0.0\",\n },\n subCommands: {\n dev: () => import(\"./commands/dev\").then((r) => r.default),\n build: () => import(\"./commands/build\").then((r) => r.default),\n start: () => import(\"./commands/start\").then((r) => r.default),\n prepare: () => import(\"./commands/prepare\").then((r) => r.default),\n init: () => import(\"./commands/init\").then((r) => r.default),\n add: () => import(\"./commands/add\").then((r) => r.default),\n \"write-project-info\": () =>\n import(\"./commands/write-project-info\").then((r) => r.default),\n },\n});\n\nrunMain(mainCli);\n"],"names":[],"mappings":";;;AAEO,MAAM,UAAU,aAAc,CAAA;AAAA,EACnC,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,SAAA;AAAA,IACN,WAAa,EAAA,aAAA;AAAA,IACb,OAAS,EAAA,OAAA;AAAA,GACX;AAAA,EACA,WAAa,EAAA;AAAA,IACX,GAAA,EAAK,MAAM,OAAO,mBAAgB,EAAE,IAAK,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,OAAO,CAAA;AAAA,IACzD,KAAA,EAAO,MAAM,OAAO,qBAAkB,EAAE,IAAK,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,OAAO,CAAA;AAAA,IAC7D,KAAA,EAAO,MAAM,OAAO,qBAAkB,EAAE,IAAK,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,OAAO,CAAA;AAAA,IAC7D,OAAA,EAAS,MAAM,OAAO,uBAAoB,EAAE,IAAK,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,OAAO,CAAA;AAAA,IACjE,IAAA,EAAM,MAAM,OAAO,oBAAiB,EAAE,IAAK,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,OAAO,CAAA;AAAA,IAC3D,GAAA,EAAK,MAAM,OAAO,mBAAgB,EAAE,IAAK,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,OAAO,CAAA;AAAA,IACzD,oBAAA,EAAsB,MACpB,OAAO,kCAA+B,EAAE,IAAK,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,OAAO,CAAA;AAAA,GACjE;AACF,CAAC,EAAA;AAED,OAAA,CAAQ,OAAO,CAAA;;;;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ArgsDef, ParsedArgs, CommandDef } from 'citty';
|
|
2
|
+
|
|
3
|
+
declare const ENV_INTERNAL_APIBARA_RUNTIME = "_APIBARA_RUNTIME";
|
|
4
|
+
declare const ENV_INTERNAL_APIBARA_PRESET = "_APIBARA_PRESET";
|
|
5
|
+
declare const ENV_INTERNAL_APIBARA_PRESETS = "_APIBARA_PRESETS";
|
|
6
|
+
declare const ENV_INTERNAL_APIBARA_PROCESSED_RUNTIME = "_APIBARA_PROCESSED_RUNTIME";
|
|
7
|
+
declare const USER_ENV_APIBARA_RUNTIME_CONFIG = "APIBARA_RUNTIME_CONFIG";
|
|
8
|
+
|
|
9
|
+
declare function getRuntimeDataFromEnv(): {
|
|
10
|
+
userEnvRuntimeConfig: Record<string, unknown> | undefined;
|
|
11
|
+
processedRuntimeConfig: Record<string, unknown>;
|
|
12
|
+
preset: string | undefined;
|
|
13
|
+
presets: Record<string, unknown> | undefined;
|
|
14
|
+
runtimeConfig: Record<string, unknown> | undefined;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Get the merged runtime config from the user env overrided runtime config, presets and defaults.
|
|
18
|
+
* Priority (Highest to lowest):
|
|
19
|
+
* 1. User env overrided runtime config
|
|
20
|
+
* 2. Preset
|
|
21
|
+
* 3. Defaults
|
|
22
|
+
*/
|
|
23
|
+
declare function getProcessedRuntimeConfig({ preset, presets, runtimeConfig, userEnvRuntimeConfig, }: {
|
|
24
|
+
preset?: string;
|
|
25
|
+
presets?: Record<string, unknown>;
|
|
26
|
+
runtimeConfig?: Record<string, unknown>;
|
|
27
|
+
userEnvRuntimeConfig?: Record<string, unknown>;
|
|
28
|
+
}): Record<string, unknown>;
|
|
29
|
+
|
|
30
|
+
declare const commonArgs: ArgsDef;
|
|
31
|
+
declare const checkForUnknownArgs: <T extends ArgsDef = ArgsDef>(args: ParsedArgs<T>, cmd: CommandDef<T>) => Promise<void>;
|
|
32
|
+
|
|
33
|
+
export { ENV_INTERNAL_APIBARA_PRESET, ENV_INTERNAL_APIBARA_PRESETS, ENV_INTERNAL_APIBARA_PROCESSED_RUNTIME, ENV_INTERNAL_APIBARA_RUNTIME, USER_ENV_APIBARA_RUNTIME_CONFIG, checkForUnknownArgs, commonArgs, getProcessedRuntimeConfig, getRuntimeDataFromEnv };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ArgsDef, ParsedArgs, CommandDef } from 'citty';
|
|
2
|
+
|
|
3
|
+
declare const ENV_INTERNAL_APIBARA_RUNTIME = "_APIBARA_RUNTIME";
|
|
4
|
+
declare const ENV_INTERNAL_APIBARA_PRESET = "_APIBARA_PRESET";
|
|
5
|
+
declare const ENV_INTERNAL_APIBARA_PRESETS = "_APIBARA_PRESETS";
|
|
6
|
+
declare const ENV_INTERNAL_APIBARA_PROCESSED_RUNTIME = "_APIBARA_PROCESSED_RUNTIME";
|
|
7
|
+
declare const USER_ENV_APIBARA_RUNTIME_CONFIG = "APIBARA_RUNTIME_CONFIG";
|
|
8
|
+
|
|
9
|
+
declare function getRuntimeDataFromEnv(): {
|
|
10
|
+
userEnvRuntimeConfig: Record<string, unknown> | undefined;
|
|
11
|
+
processedRuntimeConfig: Record<string, unknown>;
|
|
12
|
+
preset: string | undefined;
|
|
13
|
+
presets: Record<string, unknown> | undefined;
|
|
14
|
+
runtimeConfig: Record<string, unknown> | undefined;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Get the merged runtime config from the user env overrided runtime config, presets and defaults.
|
|
18
|
+
* Priority (Highest to lowest):
|
|
19
|
+
* 1. User env overrided runtime config
|
|
20
|
+
* 2. Preset
|
|
21
|
+
* 3. Defaults
|
|
22
|
+
*/
|
|
23
|
+
declare function getProcessedRuntimeConfig({ preset, presets, runtimeConfig, userEnvRuntimeConfig, }: {
|
|
24
|
+
preset?: string;
|
|
25
|
+
presets?: Record<string, unknown>;
|
|
26
|
+
runtimeConfig?: Record<string, unknown>;
|
|
27
|
+
userEnvRuntimeConfig?: Record<string, unknown>;
|
|
28
|
+
}): Record<string, unknown>;
|
|
29
|
+
|
|
30
|
+
declare const commonArgs: ArgsDef;
|
|
31
|
+
declare const checkForUnknownArgs: <T extends ArgsDef = ArgsDef>(args: ParsedArgs<T>, cmd: CommandDef<T>) => Promise<void>;
|
|
32
|
+
|
|
33
|
+
export { ENV_INTERNAL_APIBARA_PRESET, ENV_INTERNAL_APIBARA_PRESETS, ENV_INTERNAL_APIBARA_PROCESSED_RUNTIME, ENV_INTERNAL_APIBARA_RUNTIME, USER_ENV_APIBARA_RUNTIME_CONFIG, checkForUnknownArgs, commonArgs, getProcessedRuntimeConfig, getRuntimeDataFromEnv };
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import defu from 'defu';
|
|
2
|
+
import { renderUsage } from 'citty';
|
|
3
|
+
import consola from 'consola';
|
|
4
|
+
|
|
5
|
+
const ENV_INTERNAL_APIBARA_RUNTIME = "_APIBARA_RUNTIME";
|
|
6
|
+
const ENV_INTERNAL_APIBARA_PRESET = "_APIBARA_PRESET";
|
|
7
|
+
const ENV_INTERNAL_APIBARA_PRESETS = "_APIBARA_PRESETS";
|
|
8
|
+
const ENV_INTERNAL_APIBARA_PROCESSED_RUNTIME = "_APIBARA_PROCESSED_RUNTIME";
|
|
9
|
+
const USER_ENV_APIBARA_RUNTIME_CONFIG = "APIBARA_RUNTIME_CONFIG";
|
|
10
|
+
|
|
11
|
+
function getRuntimeDataFromEnv() {
|
|
12
|
+
const processedRuntimeConfig = JSON.parse(
|
|
13
|
+
process.env[ENV_INTERNAL_APIBARA_PROCESSED_RUNTIME] ?? "{}"
|
|
14
|
+
);
|
|
15
|
+
const preset = process.env[ENV_INTERNAL_APIBARA_PRESET];
|
|
16
|
+
const presets = JSON.parse(
|
|
17
|
+
process.env[ENV_INTERNAL_APIBARA_PRESETS] ?? "{}"
|
|
18
|
+
);
|
|
19
|
+
const runtimeConfig = JSON.parse(
|
|
20
|
+
process.env[ENV_INTERNAL_APIBARA_RUNTIME] ?? "{}"
|
|
21
|
+
);
|
|
22
|
+
const userEnvRuntimeConfig = JSON.parse(
|
|
23
|
+
process.env[USER_ENV_APIBARA_RUNTIME_CONFIG] ?? "{}"
|
|
24
|
+
);
|
|
25
|
+
return {
|
|
26
|
+
userEnvRuntimeConfig,
|
|
27
|
+
processedRuntimeConfig,
|
|
28
|
+
preset,
|
|
29
|
+
presets,
|
|
30
|
+
runtimeConfig
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function getProcessedRuntimeConfig({
|
|
34
|
+
preset,
|
|
35
|
+
presets,
|
|
36
|
+
runtimeConfig,
|
|
37
|
+
userEnvRuntimeConfig
|
|
38
|
+
}) {
|
|
39
|
+
let _runtimeConfig = { ...runtimeConfig };
|
|
40
|
+
if (preset) {
|
|
41
|
+
if (presets === void 0) {
|
|
42
|
+
throw new Error(
|
|
43
|
+
`Specified preset "${preset}" but no presets were defined`
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
if (presets[preset] === void 0) {
|
|
47
|
+
throw new Error(`Specified preset "${preset}" but it was not defined`);
|
|
48
|
+
}
|
|
49
|
+
const presetValue = presets[preset];
|
|
50
|
+
_runtimeConfig = defu(presetValue.runtimeConfig, _runtimeConfig);
|
|
51
|
+
}
|
|
52
|
+
if (userEnvRuntimeConfig) {
|
|
53
|
+
try {
|
|
54
|
+
_runtimeConfig = defu(userEnvRuntimeConfig, _runtimeConfig);
|
|
55
|
+
} catch (error) {
|
|
56
|
+
throw new Error(
|
|
57
|
+
"Failed to parse runtime config from process.env.APIBARA_RUNTIME_CONFIG. Please ensure it is a valid JSON string.",
|
|
58
|
+
{ cause: error }
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return _runtimeConfig;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const commonArgs = {
|
|
66
|
+
dir: {
|
|
67
|
+
type: "string",
|
|
68
|
+
description: "project root directory"
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const checkForUnknownArgs = async (args, cmd) => {
|
|
72
|
+
const definedArgs = [];
|
|
73
|
+
if (cmd.args) {
|
|
74
|
+
for (const [argName, argDef] of Object.entries(cmd.args)) {
|
|
75
|
+
definedArgs.push(argName);
|
|
76
|
+
if (argDef.alias) {
|
|
77
|
+
definedArgs.push(argDef.alias);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const providedArgs = Object.keys(args).filter((arg) => arg !== "_");
|
|
82
|
+
const wrongArgs = providedArgs.filter((arg) => !definedArgs.includes(arg));
|
|
83
|
+
if (wrongArgs.length > 0) {
|
|
84
|
+
consola.error(`Unknown arguments: ${wrongArgs.join(", ")}`);
|
|
85
|
+
consola.info(await renderUsage(cmd));
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export { ENV_INTERNAL_APIBARA_PRESET, ENV_INTERNAL_APIBARA_PRESETS, ENV_INTERNAL_APIBARA_PROCESSED_RUNTIME, ENV_INTERNAL_APIBARA_RUNTIME, USER_ENV_APIBARA_RUNTIME_CONFIG, checkForUnknownArgs, commonArgs, getProcessedRuntimeConfig, getRuntimeDataFromEnv };
|
|
91
|
+
//# sourceMappingURL=index.mjs.map
|