From 51694116d47ec52fc938d3b32abc6b03d3896ce1 Mon Sep 17 00:00:00 2001 From: Francesco Ceccon Date: Wed, 27 Nov 2024 10:27:12 +0100 Subject: [PATCH 1/2] cli: add shebang banner to cli module --- change/apibara-f4d98eff-8f08-4f04-bf68-8ac249c3c0e7.json | 7 +++++++ packages/cli/build.config.ts | 6 ++++++ 2 files changed, 13 insertions(+) create mode 100644 change/apibara-f4d98eff-8f08-4f04-bf68-8ac249c3c0e7.json diff --git a/change/apibara-f4d98eff-8f08-4f04-bf68-8ac249c3c0e7.json b/change/apibara-f4d98eff-8f08-4f04-bf68-8ac249c3c0e7.json new file mode 100644 index 00000000..9068be25 --- /dev/null +++ b/change/apibara-f4d98eff-8f08-4f04-bf68-8ac249c3c0e7.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "cli: add shebang banner to cli module", + "packageName": "apibara", + "email": "francesco@ceccon.me", + "dependentChangeType": "patch" +} diff --git a/packages/cli/build.config.ts b/packages/cli/build.config.ts index 36c5ac7a..94bc0d1d 100644 --- a/packages/cli/build.config.ts +++ b/packages/cli/build.config.ts @@ -41,4 +41,10 @@ export default defineBuildConfig({ "apibara/runtime/meta", ...modules.map((module) => `apibara/${module}`), ], + rollup: { + output: { + banner: ({ fileName }) => + fileName === "cli/index.mjs" ? "#!/usr/bin/env node" : undefined, + }, + }, }); From 413fd1e498a3a43529853d7266577e1710dd71d3 Mon Sep 17 00:00:00 2001 From: Francesco Ceccon Date: Wed, 27 Nov 2024 10:36:16 +0100 Subject: [PATCH 2/2] cli: hash indexers to allow special characters in name --- .../indexers/{evm.indexer.ts => 1-evm.indexer.ts} | 0 .../{starknet.indexer.ts => 2-starknet.indexer.ts} | 0 packages/cli/package.json | 1 + packages/cli/src/rollup/plugins/indexers.ts | 5 +++-- pnpm-lock.yaml | 13 ++++++++----- 5 files changed, 12 insertions(+), 7 deletions(-) rename examples/cli/indexers/{evm.indexer.ts => 1-evm.indexer.ts} (100%) rename examples/cli/indexers/{starknet.indexer.ts => 2-starknet.indexer.ts} (100%) diff --git a/examples/cli/indexers/evm.indexer.ts b/examples/cli/indexers/1-evm.indexer.ts similarity index 100% rename from examples/cli/indexers/evm.indexer.ts rename to examples/cli/indexers/1-evm.indexer.ts diff --git a/examples/cli/indexers/starknet.indexer.ts b/examples/cli/indexers/2-starknet.indexer.ts similarity index 100% rename from examples/cli/indexers/starknet.indexer.ts rename to examples/cli/indexers/2-starknet.indexer.ts diff --git a/packages/cli/package.json b/packages/cli/package.json index 942779cc..dbc3b7a0 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -99,6 +99,7 @@ "hookable": "^5.5.3", "klona": "^2.0.6", "magic-string": "^0.30.12", + "ohash": "^1.1.4", "pathe": "^1.1.2", "perfect-debounce": "^1.0.0", "pkg-types": "^1.1.3", diff --git a/packages/cli/src/rollup/plugins/indexers.ts b/packages/cli/src/rollup/plugins/indexers.ts index 047f86e8..4da2a221 100644 --- a/packages/cli/src/rollup/plugins/indexers.ts +++ b/packages/cli/src/rollup/plugins/indexers.ts @@ -1,15 +1,16 @@ import virtual from "@rollup/plugin-virtual"; import type { Apibara } from "apibara/types"; +import { hash } from "ohash"; export function indexers(apibara: Apibara) { const indexers = [...new Set(apibara.indexers)]; return virtual({ "#apibara-internal-virtual/indexers": ` - ${indexers.map((i) => `import ${i.name} from '${i.indexer}';`).join("\n")} + ${indexers.map((i) => `import _${hash(i)} from '${i.indexer}';`).join("\n")} export const indexers = [ - ${indexers.map((i) => `{ name: "${i.name}", indexer: ${i.name} }`).join(",\n")} + ${indexers.map((i) => `{ name: "${i.name}", indexer: _${hash(i)} }`).join(",\n")} ]; `, }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 504abf34..b8bd0004 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -373,6 +373,9 @@ importers: magic-string: specifier: ^0.30.12 version: 0.30.12 + ohash: + specifier: ^1.1.4 + version: 1.1.4 pathe: specifier: ^1.1.2 version: 1.1.2 @@ -2735,8 +2738,8 @@ packages: obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - ohash@1.1.3: - resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + ohash@1.1.4: + resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -4740,7 +4743,7 @@ snapshots: giget: 1.2.3 jiti: 1.21.6 mlly: 1.7.1 - ohash: 1.1.3 + ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 pkg-types: 1.1.3 @@ -5213,7 +5216,7 @@ snapshots: defu: 6.1.4 node-fetch-native: 1.6.4 nypm: 0.3.9 - ohash: 1.1.3 + ohash: 1.1.4 pathe: 1.1.2 tar: 6.2.1 @@ -5591,7 +5594,7 @@ snapshots: obuf@1.1.2: {} - ohash@1.1.3: {} + ohash@1.1.4: {} once@1.4.0: dependencies: