@graphprotocol/graph-cli 0.37.3 → 0.37.4-alpha-20230117095424-b5750b1
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/CHANGELOG.md +8 -0
- package/dist/bin.js +6 -0
- package/dist/cli.js +26 -0
- package/dist/codegen/schema.js +244 -0
- package/dist/codegen/schema.test.js +455 -0
- package/dist/codegen/template.js +66 -0
- package/dist/codegen/types/conversions.js +335 -0
- package/dist/codegen/types/index.js +71 -0
- package/dist/codegen/types/index.test.js +563 -0
- package/dist/codegen/typescript.js +200 -0
- package/dist/codegen/util.js +40 -0
- package/dist/codegen/util.test.js +93 -0
- package/dist/command-helpers/abi.js +76 -0
- package/dist/command-helpers/auth.js +76 -0
- package/dist/command-helpers/compiler.js +66 -0
- package/dist/command-helpers/data-sources.js +29 -0
- package/dist/command-helpers/fs.js +9 -0
- package/dist/command-helpers/gluegun.js +48 -0
- package/dist/command-helpers/ipfs.js +5 -0
- package/dist/command-helpers/jsonrpc.js +27 -0
- package/dist/command-helpers/network.js +90 -0
- package/dist/command-helpers/network.test.js +86 -0
- package/dist/command-helpers/node.js +40 -0
- package/dist/command-helpers/scaffold.js +110 -0
- package/dist/command-helpers/spinner.js +80 -0
- package/dist/command-helpers/studio.js +14 -0
- package/dist/command-helpers/studio.test.js +41 -0
- package/dist/command-helpers/subgraph.js +22 -0
- package/dist/command-helpers/version.js +66 -0
- package/dist/command-helpers/version.test.js +186 -0
- package/dist/commands/add.js +187 -0
- package/dist/commands/auth.js +122 -0
- package/dist/commands/build.js +136 -0
- package/dist/commands/codegen.js +128 -0
- package/dist/commands/create.js +94 -0
- package/dist/commands/deploy.js +335 -0
- package/dist/commands/init.js +800 -0
- package/dist/commands/local.js +380 -0
- package/dist/commands/remove.js +95 -0
- package/dist/commands/test.js +293 -0
- package/dist/compiler/asc.js +83 -0
- package/dist/compiler/index.js +466 -0
- package/dist/debug.js +16 -0
- package/dist/migrations/mapping_api_version_0_0_1.js +83 -0
- package/dist/migrations/mapping_api_version_0_0_2.js +83 -0
- package/dist/migrations/mapping_api_version_0_0_3.js +83 -0
- package/dist/migrations/mapping_api_version_0_0_4.js +85 -0
- package/dist/migrations/mapping_api_version_0_0_5.js +85 -0
- package/dist/migrations/spec_version_0_0_2.js +45 -0
- package/dist/migrations/spec_version_0_0_3.js +50 -0
- package/dist/migrations/util/load-manifest.js +16 -0
- package/dist/migrations/util/versions.js +28 -0
- package/dist/migrations.js +54 -0
- package/{src → dist}/protocols/arweave/manifest.graphql +0 -0
- package/{src/protocols/arweave/scaffold/manifest.ts → dist/protocols/arweave/scaffold/manifest.js} +7 -3
- package/{src/protocols/arweave/scaffold/mapping.ts → dist/protocols/arweave/scaffold/mapping.js} +5 -2
- package/dist/protocols/arweave/subgraph.js +23 -0
- package/dist/protocols/contract.js +2 -0
- package/{src → dist}/protocols/cosmos/manifest.graphql +0 -0
- package/dist/protocols/cosmos/scaffold/manifest.js +15 -0
- package/{src/protocols/cosmos/scaffold/mapping.ts → dist/protocols/cosmos/scaffold/mapping.js} +5 -2
- package/dist/protocols/cosmos/subgraph.js +28 -0
- package/dist/protocols/ethereum/abi.js +138 -0
- package/dist/protocols/ethereum/codegen/abi.js +474 -0
- package/dist/protocols/ethereum/codegen/abi.test.js +325 -0
- package/dist/protocols/ethereum/codegen/template.js +52 -0
- package/dist/protocols/ethereum/contract.js +22 -0
- package/{src → dist}/protocols/ethereum/manifest.graphql +0 -0
- package/dist/protocols/ethereum/scaffold/manifest.js +32 -0
- package/{src/protocols/ethereum/scaffold/mapping.ts → dist/protocols/ethereum/scaffold/mapping.js} +18 -29
- package/dist/protocols/ethereum/subgraph.js +172 -0
- package/dist/protocols/ethereum/type-generator.js +123 -0
- package/dist/protocols/index.js +266 -0
- package/dist/protocols/ipfs/codegen/file_template.js +53 -0
- package/dist/protocols/near/contract.js +41 -0
- package/{src → dist}/protocols/near/manifest.graphql +0 -0
- package/dist/protocols/near/scaffold/manifest.js +16 -0
- package/{src/protocols/near/scaffold/mapping.ts → dist/protocols/near/scaffold/mapping.js} +5 -2
- package/dist/protocols/near/subgraph.js +23 -0
- package/dist/protocols/subgraph.js +2 -0
- package/{src → dist}/protocols/substreams/manifest.graphql +0 -0
- package/dist/protocols/substreams/scaffold/manifest.js +12 -0
- package/dist/protocols/substreams/subgraph.js +23 -0
- package/{src/scaffold/cosmos.test.ts → dist/scaffold/cosmos.test.js} +21 -22
- package/{src/scaffold/ethereum.test.ts → dist/scaffold/ethereum.test.js} +85 -101
- package/dist/scaffold/index.js +133 -0
- package/dist/scaffold/mapping.js +57 -0
- package/{src/scaffold/near.test.ts → dist/scaffold/near.test.js} +22 -23
- package/dist/scaffold/schema.js +86 -0
- package/dist/scaffold/tests.js +179 -0
- package/dist/schema.js +54 -0
- package/dist/subgraph.js +243 -0
- package/dist/type-generator.js +225 -0
- package/dist/validation/contract.js +44 -0
- package/dist/validation/index.js +10 -0
- package/dist/validation/manifest.js +266 -0
- package/dist/validation/schema.js +768 -0
- package/dist/validation/schema.test.js +35 -0
- package/dist/watcher.js +79 -0
- package/package.json +5 -1
- package/babel.config.js +0 -3
- package/jest.config.js +0 -175
- package/src/bin.ts +0 -6
- package/src/cli.ts +0 -30
- package/src/codegen/schema.test.ts +0 -460
- package/src/codegen/schema.ts +0 -299
- package/src/codegen/template.ts +0 -45
- package/src/codegen/types/conversions.ts +0 -358
- package/src/codegen/types/index.test.ts +0 -715
- package/src/codegen/types/index.ts +0 -111
- package/src/codegen/typescript.ts +0 -224
- package/src/codegen/util.test.ts +0 -112
- package/src/codegen/util.ts +0 -54
- package/src/command-helpers/abi.ts +0 -99
- package/src/command-helpers/auth.ts +0 -46
- package/src/command-helpers/compiler.ts +0 -60
- package/src/command-helpers/data-sources.ts +0 -36
- package/src/command-helpers/fs.ts +0 -5
- package/src/command-helpers/gluegun.ts +0 -52
- package/src/command-helpers/ipfs-http-client.d.ts +0 -1
- package/src/command-helpers/ipfs.ts +0 -3
- package/src/command-helpers/jsonrpc.ts +0 -22
- package/src/command-helpers/network.test.ts +0 -85
- package/src/command-helpers/network.ts +0 -133
- package/src/command-helpers/node.ts +0 -46
- package/src/command-helpers/scaffold.ts +0 -174
- package/src/command-helpers/spinner.ts +0 -60
- package/src/command-helpers/studio.test.ts +0 -84
- package/src/command-helpers/studio.ts +0 -25
- package/src/command-helpers/subgraph.ts +0 -21
- package/src/command-helpers/version.test.ts +0 -241
- package/src/command-helpers/version.ts +0 -53
- package/src/commands/add.ts +0 -220
- package/src/commands/auth.ts +0 -138
- package/src/commands/binary-install-raw.d.ts +0 -1
- package/src/commands/build.ts +0 -147
- package/src/commands/codegen.ts +0 -123
- package/src/commands/create.ts +0 -109
- package/src/commands/deploy.ts +0 -388
- package/src/commands/init.ts +0 -1060
- package/src/commands/local.ts +0 -539
- package/src/commands/remove.ts +0 -110
- package/src/commands/test.ts +0 -369
- package/src/compiler/asc.ts +0 -77
- package/src/compiler/index.ts +0 -677
- package/src/debug.ts +0 -15
- package/src/migrations/mapping_api_version_0_0_1.ts +0 -75
- package/src/migrations/mapping_api_version_0_0_2.ts +0 -75
- package/src/migrations/mapping_api_version_0_0_3.ts +0 -75
- package/src/migrations/mapping_api_version_0_0_4.ts +0 -77
- package/src/migrations/mapping_api_version_0_0_5.ts +0 -77
- package/src/migrations/spec_version_0_0_2.ts +0 -24
- package/src/migrations/spec_version_0_0_3.ts +0 -29
- package/src/migrations/util/load-manifest.ts +0 -10
- package/src/migrations/util/versions.ts +0 -27
- package/src/migrations.ts +0 -33
- package/src/protocols/arweave/subgraph.ts +0 -22
- package/src/protocols/contract.ts +0 -9
- package/src/protocols/cosmos/scaffold/manifest.ts +0 -11
- package/src/protocols/cosmos/subgraph.ts +0 -27
- package/src/protocols/ethereum/abi.ts +0 -153
- package/src/protocols/ethereum/codegen/abi.test.ts +0 -330
- package/src/protocols/ethereum/codegen/abi.ts +0 -719
- package/src/protocols/ethereum/codegen/template.ts +0 -41
- package/src/protocols/ethereum/contract.ts +0 -24
- package/src/protocols/ethereum/scaffold/manifest.ts +0 -28
- package/src/protocols/ethereum/subgraph.ts +0 -189
- package/src/protocols/ethereum/type-generator.ts +0 -191
- package/src/protocols/index.ts +0 -287
- package/src/protocols/ipfs/codegen/file_template.ts +0 -43
- package/src/protocols/near/contract.ts +0 -47
- package/src/protocols/near/scaffold/manifest.ts +0 -13
- package/src/protocols/near/subgraph.ts +0 -22
- package/src/protocols/subgraph.ts +0 -12
- package/src/protocols/substreams/scaffold/manifest.ts +0 -8
- package/src/protocols/substreams/subgraph.ts +0 -22
- package/src/scaffold/index.ts +0 -172
- package/src/scaffold/mapping.ts +0 -44
- package/src/scaffold/schema.ts +0 -89
- package/src/scaffold/tests.ts +0 -217
- package/src/schema.ts +0 -26
- package/src/subgraph.ts +0 -302
- package/src/type-generator.ts +0 -266
- package/src/validation/contract.ts +0 -51
- package/src/validation/index.ts +0 -5
- package/src/validation/manifest.ts +0 -360
- package/src/validation/schema.test.ts +0 -38
- package/src/validation/schema.ts +0 -957
- package/src/watcher.ts +0 -96
- package/tests/cli/globalSetup.ts +0 -8
- package/tests/cli/globalTeardown.ts +0 -8
- package/tests/cli/init/ethereum/abis/Marketplace.json +0 -408
- package/tests/cli/init/ethereum/abis/OverloadedElements.json +0 -91
- package/tests/cli/init/ethereum/abis/SoloMargin.json +0 -2729
- package/tests/cli/init/ethereum/from-contract-with-abi-and-structs.stderr +0 -14
- package/tests/cli/init/ethereum/from-contract-with-abi-and-structs.stdout +0 -12
- package/tests/cli/init/ethereum/from-contract-with-abi.stderr +0 -14
- package/tests/cli/init/ethereum/from-contract-with-abi.stdout +0 -12
- package/tests/cli/init/ethereum/from-contract-with-overloaded-elements.stderr +0 -14
- package/tests/cli/init/ethereum/from-contract-with-overloaded-elements.stdout +0 -12
- package/tests/cli/init/ethereum/from-contract.stderr +0 -16
- package/tests/cli/init/ethereum/from-contract.stdout +0 -12
- package/tests/cli/init/ethereum/from-example.stderr +0 -12
- package/tests/cli/init/ethereum/from-example.stdout +0 -12
- package/tests/cli/init/near/from-contract.stderr +0 -14
- package/tests/cli/init/near/from-contract.stdout +0 -12
- package/tests/cli/init.test.ts +0 -157
- package/tests/cli/spawn-command.d.ts +0 -7
- package/tests/cli/util.ts +0 -132
- package/tests/cli/validation/abi-not-found/Abi.json +0 -7
- package/tests/cli/validation/abi-not-found/mapping.ts +0 -0
- package/tests/cli/validation/abi-not-found/schema.graphql +0 -3
- package/tests/cli/validation/abi-not-found/subgraph.yaml +0 -42
- package/tests/cli/validation/abi-not-found copy.stderr +0 -13
- package/tests/cli/validation/big-decimal-is-valid/Abi.json +0 -7
- package/tests/cli/validation/big-decimal-is-valid/mapping.ts +0 -0
- package/tests/cli/validation/big-decimal-is-valid/schema.graphql +0 -4
- package/tests/cli/validation/big-decimal-is-valid/subgraph.yaml +0 -23
- package/tests/cli/validation/call-function-not-found/Abi.json +0 -57
- package/tests/cli/validation/call-function-not-found/mapping.ts +0 -0
- package/tests/cli/validation/call-function-not-found/schema.graphql +0 -3
- package/tests/cli/validation/call-function-not-found/subgraph.yaml +0 -22
- package/tests/cli/validation/call-function-not-found.stderr +0 -10
- package/tests/cli/validation/call-handler-with-tuple/Abi.json +0 -24
- package/tests/cli/validation/call-handler-with-tuple/generated/schema.ts +0 -44
- package/tests/cli/validation/call-handler-with-tuple/mapping.ts +0 -0
- package/tests/cli/validation/call-handler-with-tuple/schema.graphql +0 -3
- package/tests/cli/validation/call-handler-with-tuple/subgraph.yaml +0 -22
- package/tests/cli/validation/call-handler-with-tuple.stderr +0 -24
- package/tests/cli/validation/conflicting-network-names/Abi.json +0 -7
- package/tests/cli/validation/conflicting-network-names/mapping.ts +0 -0
- package/tests/cli/validation/conflicting-network-names/schema.graphql +0 -3
- package/tests/cli/validation/conflicting-network-names/subgraph.yaml +0 -41
- package/tests/cli/validation/conflicting-network-names.stderr +0 -10
- package/tests/cli/validation/conflicting-protocol-names/Abi.json +0 -7
- package/tests/cli/validation/conflicting-protocol-names/mapping.ts +0 -0
- package/tests/cli/validation/conflicting-protocol-names/schema.graphql +0 -3
- package/tests/cli/validation/conflicting-protocol-names/subgraph.yaml +0 -41
- package/tests/cli/validation/conflicting-protocol-names.stderr +0 -10
- package/tests/cli/validation/derived-from-target-type-missing/Abi.json +0 -6
- package/tests/cli/validation/derived-from-target-type-missing/mapping.ts +0 -0
- package/tests/cli/validation/derived-from-target-type-missing/schema.graphql +0 -4
- package/tests/cli/validation/derived-from-target-type-missing/subgraph.yaml +0 -22
- package/tests/cli/validation/derived-from-target-type-missing.stderr +0 -5
- package/tests/cli/validation/derived-from-with-interface/Gravity.json +0 -1
- package/tests/cli/validation/derived-from-with-interface/mapping.ts +0 -22
- package/tests/cli/validation/derived-from-with-interface/schema.graphql +0 -19
- package/tests/cli/validation/derived-from-with-interface/subgraph.yaml +0 -25
- package/tests/cli/validation/duplicate-data-source-name/Abi.json +0 -7
- package/tests/cli/validation/duplicate-data-source-name/mapping.ts +0 -0
- package/tests/cli/validation/duplicate-data-source-name/schema.graphql +0 -4
- package/tests/cli/validation/duplicate-data-source-name/subgraph.yaml +0 -40
- package/tests/cli/validation/duplicate-data-source-name.stderr +0 -5
- package/tests/cli/validation/duplicate-template-name/Abi.json +0 -7
- package/tests/cli/validation/duplicate-template-name/mapping.ts +0 -0
- package/tests/cli/validation/duplicate-template-name/schema.graphql +0 -4
- package/tests/cli/validation/duplicate-template-name/subgraph.yaml +0 -59
- package/tests/cli/validation/duplicate-template-name.stderr +0 -5
- package/tests/cli/validation/entity-field-args/Abi.json +0 -7
- package/tests/cli/validation/entity-field-args/mapping.ts +0 -0
- package/tests/cli/validation/entity-field-args/schema.graphql +0 -4
- package/tests/cli/validation/entity-field-args/subgraph.yaml +0 -22
- package/tests/cli/validation/entity-field-args.stderr +0 -5
- package/tests/cli/validation/ethereum-contract-without-handlers/Abi.json +0 -7
- package/tests/cli/validation/ethereum-contract-without-handlers/mapping.ts +0 -0
- package/tests/cli/validation/ethereum-contract-without-handlers/schema.graphql +0 -3
- package/tests/cli/validation/ethereum-contract-without-handlers/subgraph.yaml +0 -19
- package/tests/cli/validation/ethereum-contract-without-handlers.stderr +0 -6
- package/tests/cli/validation/event-not-found/Abi.json +0 -7
- package/tests/cli/validation/event-not-found/mapping.ts +0 -0
- package/tests/cli/validation/event-not-found/schema.graphql +0 -3
- package/tests/cli/validation/event-not-found/subgraph.yaml +0 -40
- package/tests/cli/validation/event-not-found.stderr +0 -12
- package/tests/cli/validation/example-values-found/Abi.json +0 -7
- package/tests/cli/validation/example-values-found/generated/ExampleSubgraph/ExampleContract.ts +0 -35
- package/tests/cli/validation/example-values-found/generated/schema.ts +0 -44
- package/tests/cli/validation/example-values-found/mapping.ts +0 -0
- package/tests/cli/validation/example-values-found/schema.graphql +0 -3
- package/tests/cli/validation/example-values-found/subgraph.yaml +0 -24
- package/tests/cli/validation/example-values-found.stderr +0 -34
- package/tests/cli/validation/invalid-abis/InvalidAbi.json +0 -1
- package/tests/cli/validation/invalid-abis/mapping.ts +0 -0
- package/tests/cli/validation/invalid-abis/schema.graphql +0 -3
- package/tests/cli/validation/invalid-abis/subgraph.yaml +0 -22
- package/tests/cli/validation/invalid-abis.stderr +0 -5
- package/tests/cli/validation/invalid-contract-addresses/Abi.json +0 -7
- package/tests/cli/validation/invalid-contract-addresses/mapping.ts +0 -0
- package/tests/cli/validation/invalid-contract-addresses/schema.graphql +0 -3
- package/tests/cli/validation/invalid-contract-addresses/subgraph.yaml +0 -58
- package/tests/cli/validation/invalid-contract-addresses.stderr +0 -14
- package/tests/cli/validation/invalid-data-source-template/mapping.ts +0 -0
- package/tests/cli/validation/invalid-data-source-template/schema.graphql +0 -3
- package/tests/cli/validation/invalid-data-source-template/subgraph.yaml +0 -32
- package/tests/cli/validation/invalid-data-source-template.stderr +0 -30
- package/tests/cli/validation/invalid-entity-field-types/Abi.json +0 -7
- package/tests/cli/validation/invalid-entity-field-types/mapping.ts +0 -0
- package/tests/cli/validation/invalid-entity-field-types/schema.graphql +0 -157
- package/tests/cli/validation/invalid-entity-field-types/subgraph.yaml +0 -22
- package/tests/cli/validation/invalid-entity-field-types.stderr +0 -148
- package/tests/cli/validation/invalid-fulltext-directive/Abi.json +0 -7
- package/tests/cli/validation/invalid-fulltext-directive/mapping.ts +0 -0
- package/tests/cli/validation/invalid-fulltext-directive/schema.graphql +0 -140
- package/tests/cli/validation/invalid-fulltext-directive/subgraph.yaml +0 -22
- package/tests/cli/validation/invalid-fulltext-directive.stderr +0 -32
- package/tests/cli/validation/invalid-graphql-schema/Abi.json +0 -7
- package/tests/cli/validation/invalid-graphql-schema/mapping.ts +0 -0
- package/tests/cli/validation/invalid-graphql-schema/schema.graphql +0 -8
- package/tests/cli/validation/invalid-graphql-schema/subgraph.yaml +0 -22
- package/tests/cli/validation/invalid-graphql-schema.stderr +0 -25
- package/tests/cli/validation/invalid-manifest/subgraph.yaml +0 -13
- package/tests/cli/validation/invalid-manifest-cannot-infer-protocol/subgraph.yaml +0 -12
- package/tests/cli/validation/invalid-manifest-cannot-infer-protocol.stderr +0 -5
- package/tests/cli/validation/invalid-manifest.stderr +0 -28
- package/tests/cli/validation/missing-entity-id/Abi.json +0 -7
- package/tests/cli/validation/missing-entity-id/mapping.ts +0 -0
- package/tests/cli/validation/missing-entity-id/schema.graphql +0 -3
- package/tests/cli/validation/missing-entity-id/subgraph.yaml +0 -22
- package/tests/cli/validation/missing-entity-id/types/ExampleSubgraph/ExampleContract.ts +0 -35
- package/tests/cli/validation/missing-entity-id/types/schema.ts +0 -27
- package/tests/cli/validation/missing-entity-id.stderr +0 -5
- package/tests/cli/validation/missing-or-invalid-derived-from-fields/Abi.json +0 -7
- package/tests/cli/validation/missing-or-invalid-derived-from-fields/mapping.ts +0 -0
- package/tests/cli/validation/missing-or-invalid-derived-from-fields/schema.graphql +0 -40
- package/tests/cli/validation/missing-or-invalid-derived-from-fields/subgraph.yaml +0 -22
- package/tests/cli/validation/missing-or-invalid-derived-from-fields.stderr +0 -10
- package/tests/cli/validation/missing-or-invalid-derived-from-fields.stdout +0 -0
- package/tests/cli/validation/near-is-valid/mapping.ts +0 -0
- package/tests/cli/validation/near-is-valid/schema.graphql +0 -8
- package/tests/cli/validation/near-is-valid/subgraph.yaml +0 -30
- package/tests/cli/validation/nested-template-nice-error/Abi.json +0 -7
- package/tests/cli/validation/nested-template-nice-error/mapping.ts +0 -0
- package/tests/cli/validation/nested-template-nice-error/schema.graphql +0 -3
- package/tests/cli/validation/nested-template-nice-error/subgraph.yaml +0 -35
- package/tests/cli/validation/nested-template-nice-error.stderr +0 -5
- package/tests/cli/validation/no-network-names/Abi.json +0 -7
- package/tests/cli/validation/no-network-names/mapping.ts +0 -0
- package/tests/cli/validation/no-network-names/schema.graphql +0 -3
- package/tests/cli/validation/no-network-names/subgraph.yaml +0 -40
- package/tests/cli/validation/no-network-names.stderr +0 -34
- package/tests/cli/validation/source-without-address-is-valid/Abi.json +0 -7
- package/tests/cli/validation/source-without-address-is-valid/generated/ExampleSubgraph/ExampleContract.ts +0 -35
- package/tests/cli/validation/source-without-address-is-valid/mapping.ts +0 -0
- package/tests/cli/validation/source-without-address-is-valid/schema.graphql +0 -3
- package/tests/cli/validation/source-without-address-is-valid/subgraph.yaml +0 -23
- package/tests/cli/validation/source-without-address-is-valid.stderr +0 -24
- package/tests/cli/validation/topic0-is-valid/Abi.json +0 -7
- package/tests/cli/validation/topic0-is-valid/mapping.ts +0 -0
- package/tests/cli/validation/topic0-is-valid/schema.graphql +0 -4
- package/tests/cli/validation/topic0-is-valid/subgraph.yaml +0 -24
- package/tests/cli/validation.test.ts +0 -226
- package/tsconfig.build.json +0 -4
- package/tsconfig.json +0 -19
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import immutable from 'immutable';
|
|
2
|
-
import * as tsCodegen from '../../../codegen/typescript';
|
|
3
|
-
|
|
4
|
-
export default class EthereumTemplateCodeGen {
|
|
5
|
-
constructor(public template: immutable.Map<any, any>) {
|
|
6
|
-
this.template = template;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
generateModuleImports() {
|
|
10
|
-
return ['Address'];
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
generateCreateMethod() {
|
|
14
|
-
const name = this.template.get('name');
|
|
15
|
-
|
|
16
|
-
return tsCodegen.staticMethod(
|
|
17
|
-
'create',
|
|
18
|
-
[tsCodegen.param('address', tsCodegen.namedType('Address'))],
|
|
19
|
-
tsCodegen.namedType('void'),
|
|
20
|
-
`
|
|
21
|
-
DataSourceTemplate.create('${name}', [address.toHex()])
|
|
22
|
-
`,
|
|
23
|
-
);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
generateCreateWithContextMethod() {
|
|
27
|
-
const name = this.template.get('name');
|
|
28
|
-
|
|
29
|
-
return tsCodegen.staticMethod(
|
|
30
|
-
'createWithContext',
|
|
31
|
-
[
|
|
32
|
-
tsCodegen.param('address', tsCodegen.namedType('Address')),
|
|
33
|
-
tsCodegen.param('context', tsCodegen.namedType('DataSourceContext')),
|
|
34
|
-
],
|
|
35
|
-
tsCodegen.namedType('void'),
|
|
36
|
-
`
|
|
37
|
-
DataSourceTemplate.createWithContext('${name}', [address.toHex()], context)
|
|
38
|
-
`,
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Contract } from '../contract';
|
|
2
|
-
|
|
3
|
-
export default class EthereumContract implements Contract {
|
|
4
|
-
static identifierName() {
|
|
5
|
-
return 'address';
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
constructor(private address: string) {
|
|
9
|
-
this.address = address;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
validate() {
|
|
13
|
-
const pattern = /^(0x)?[0-9a-fA-F]{40}$/;
|
|
14
|
-
|
|
15
|
-
const errorMessage = "Must be 40 hexadecimal characters, with an optional '0x' prefix.";
|
|
16
|
-
|
|
17
|
-
const valid = pattern.test(this.address);
|
|
18
|
-
|
|
19
|
-
return {
|
|
20
|
-
valid,
|
|
21
|
-
error: valid ? null : errorMessage,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { strings } from 'gluegun';
|
|
2
|
-
import { abiEvents } from '../../../scaffold/schema';
|
|
3
|
-
import ABI from '../abi';
|
|
4
|
-
|
|
5
|
-
export const source = ({ contract, contractName }: { contract: string; contractName: string }) => `
|
|
6
|
-
address: '${contract}'
|
|
7
|
-
abi: ${contractName}`;
|
|
8
|
-
|
|
9
|
-
export const mapping = ({ abi, contractName }: { abi: ABI; contractName: string }) => `
|
|
10
|
-
kind: ethereum/events
|
|
11
|
-
apiVersion: 0.0.7
|
|
12
|
-
language: wasm/assemblyscript
|
|
13
|
-
entities:
|
|
14
|
-
${abiEvents(abi)
|
|
15
|
-
.map(event => `- ${event.get('_alias')}`)
|
|
16
|
-
.join('\n ')}
|
|
17
|
-
abis:
|
|
18
|
-
- name: ${contractName}
|
|
19
|
-
file: ./abis/${contractName}.json
|
|
20
|
-
eventHandlers:
|
|
21
|
-
${abiEvents(abi)
|
|
22
|
-
.map(
|
|
23
|
-
event => `
|
|
24
|
-
- event: ${ABI.eventSignature(event)}
|
|
25
|
-
handler: handle${event.get('_alias')}`,
|
|
26
|
-
)
|
|
27
|
-
.join('')}
|
|
28
|
-
file: ./src/${strings.kebabCase(contractName)}.ts`;
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
import immutable from 'immutable';
|
|
2
|
-
import * as DataSourcesExtractor from '../../command-helpers/data-sources';
|
|
3
|
-
import { Subgraph, SubgraphOptions } from '../subgraph';
|
|
4
|
-
import ABI from './abi';
|
|
5
|
-
|
|
6
|
-
export default class EthereumSubgraph implements Subgraph {
|
|
7
|
-
public manifest: SubgraphOptions['manifest'];
|
|
8
|
-
public resolveFile: SubgraphOptions['resolveFile'];
|
|
9
|
-
public protocol: SubgraphOptions['protocol'];
|
|
10
|
-
|
|
11
|
-
constructor(options: SubgraphOptions) {
|
|
12
|
-
this.manifest = options.manifest;
|
|
13
|
-
this.resolveFile = options.resolveFile;
|
|
14
|
-
this.protocol = options.protocol;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
validateManifest() {
|
|
18
|
-
return this.validateAbis().concat(this.validateEvents()).concat(this.validateCallFunctions());
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
validateAbis() {
|
|
22
|
-
const dataSourcesAndTemplates = DataSourcesExtractor.fromManifest(this.manifest, this.protocol);
|
|
23
|
-
|
|
24
|
-
return dataSourcesAndTemplates.reduce(
|
|
25
|
-
(errors: any[], dataSourceOrTemplate: any) =>
|
|
26
|
-
errors.concat(
|
|
27
|
-
this.validateDataSourceAbis(
|
|
28
|
-
dataSourceOrTemplate.get('dataSource'),
|
|
29
|
-
dataSourceOrTemplate.get('path'),
|
|
30
|
-
),
|
|
31
|
-
),
|
|
32
|
-
immutable.List(),
|
|
33
|
-
);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
validateDataSourceAbis(dataSource: any, path: string) {
|
|
37
|
-
// Validate that the the "source > abi" reference of all data sources
|
|
38
|
-
// points to an existing ABI in the data source ABIs
|
|
39
|
-
const abiName = dataSource.getIn(['source', 'abi']);
|
|
40
|
-
const abiNames = dataSource.getIn(['mapping', 'abis']).map((abi: any) => abi.get('name'));
|
|
41
|
-
const nameErrors = abiNames.includes(abiName)
|
|
42
|
-
? immutable.List()
|
|
43
|
-
: immutable.fromJS([
|
|
44
|
-
{
|
|
45
|
-
path: [...path, 'source', 'abi'],
|
|
46
|
-
message: `\
|
|
47
|
-
ABI name '${abiName}' not found in mapping > abis.
|
|
48
|
-
Available ABIs:
|
|
49
|
-
${abiNames
|
|
50
|
-
.sort()
|
|
51
|
-
.map((name: string) => `- ${name}`)
|
|
52
|
-
.join('\n')}`,
|
|
53
|
-
},
|
|
54
|
-
]);
|
|
55
|
-
|
|
56
|
-
// Validate that all ABI files are valid
|
|
57
|
-
const fileErrors = dataSource
|
|
58
|
-
.getIn(['mapping', 'abis'])
|
|
59
|
-
.reduce((errors: any[], abi: any, abiIndex: number) => {
|
|
60
|
-
try {
|
|
61
|
-
ABI.load(abi.get('name'), this.resolveFile(abi.get('file')));
|
|
62
|
-
return errors;
|
|
63
|
-
} catch (e) {
|
|
64
|
-
return errors.push(
|
|
65
|
-
immutable.fromJS({
|
|
66
|
-
path: [...path, 'mapping', 'abis', abiIndex, 'file'],
|
|
67
|
-
message: e.message,
|
|
68
|
-
}),
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
}, immutable.List());
|
|
72
|
-
|
|
73
|
-
return nameErrors.concat(fileErrors);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
validateEvents() {
|
|
77
|
-
const dataSourcesAndTemplates = DataSourcesExtractor.fromManifest(this.manifest, this.protocol);
|
|
78
|
-
|
|
79
|
-
return dataSourcesAndTemplates.reduce((errors: any[], dataSourceOrTemplate: any) => {
|
|
80
|
-
return errors.concat(
|
|
81
|
-
this.validateDataSourceEvents(
|
|
82
|
-
dataSourceOrTemplate.get('dataSource'),
|
|
83
|
-
dataSourceOrTemplate.get('path'),
|
|
84
|
-
),
|
|
85
|
-
);
|
|
86
|
-
}, immutable.List());
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
validateDataSourceEvents(dataSource: any, path: string) {
|
|
90
|
-
let abi: ABI;
|
|
91
|
-
try {
|
|
92
|
-
// Resolve the source ABI name into a real ABI object
|
|
93
|
-
const abiName = dataSource.getIn(['source', 'abi']);
|
|
94
|
-
const abiEntry = dataSource
|
|
95
|
-
.getIn(['mapping', 'abis'])
|
|
96
|
-
.find((abi: any) => abi.get('name') === abiName);
|
|
97
|
-
abi = ABI.load(abiEntry.get('name'), this.resolveFile(abiEntry.get('file')));
|
|
98
|
-
} catch (_) {
|
|
99
|
-
// Ignore errors silently; we can't really say anything about
|
|
100
|
-
// the events if the ABI can't even be loaded
|
|
101
|
-
return immutable.List();
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Obtain event signatures from the mapping
|
|
105
|
-
const manifestEvents = dataSource
|
|
106
|
-
.getIn(['mapping', 'eventHandlers'], immutable.List())
|
|
107
|
-
.map((handler: any) => handler.get('event'));
|
|
108
|
-
|
|
109
|
-
// Obtain event signatures from the ABI
|
|
110
|
-
const abiEvents = abi.eventSignatures();
|
|
111
|
-
|
|
112
|
-
// Add errors for every manifest event signature that is not
|
|
113
|
-
// present in the ABI
|
|
114
|
-
return manifestEvents.reduce(
|
|
115
|
-
(errors: any[], manifestEvent: any, index: number) =>
|
|
116
|
-
abiEvents.includes(manifestEvent)
|
|
117
|
-
? errors
|
|
118
|
-
: errors.push(
|
|
119
|
-
immutable.fromJS({
|
|
120
|
-
path: [...path, 'eventHandlers', index],
|
|
121
|
-
message: `\
|
|
122
|
-
Event with signature '${manifestEvent}' not present in ABI '${abi.name}'.
|
|
123
|
-
Available events:
|
|
124
|
-
${abiEvents
|
|
125
|
-
.sort()
|
|
126
|
-
.map(event => `- ${event}`)
|
|
127
|
-
.join('\n')}`,
|
|
128
|
-
}),
|
|
129
|
-
),
|
|
130
|
-
immutable.List(),
|
|
131
|
-
);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
validateCallFunctions() {
|
|
135
|
-
return this.manifest
|
|
136
|
-
.get('dataSources')
|
|
137
|
-
.filter((dataSource: any) => this.protocol.isValidKindName(dataSource.get('kind')))
|
|
138
|
-
.reduce((errors: any[], dataSource: any, dataSourceIndex: string) => {
|
|
139
|
-
const path = ['dataSources', dataSourceIndex, 'callHandlers'];
|
|
140
|
-
|
|
141
|
-
let abi: ABI;
|
|
142
|
-
try {
|
|
143
|
-
// Resolve the source ABI name into a real ABI object
|
|
144
|
-
const abiName = dataSource.getIn(['source', 'abi']);
|
|
145
|
-
const abiEntry = dataSource
|
|
146
|
-
.getIn(['mapping', 'abis'])
|
|
147
|
-
.find((abi: any) => abi.get('name') === abiName);
|
|
148
|
-
abi = ABI.load(abiEntry.get('name'), this.resolveFile(abiEntry.get('file')));
|
|
149
|
-
} catch (e) {
|
|
150
|
-
// Ignore errors silently; we can't really say anything about
|
|
151
|
-
// the call functions if the ABI can't even be loaded
|
|
152
|
-
return errors;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
// Obtain event signatures from the mapping
|
|
156
|
-
const manifestFunctions = dataSource
|
|
157
|
-
.getIn(['mapping', 'callHandlers'], immutable.List())
|
|
158
|
-
.map((handler: any) => handler.get('function'));
|
|
159
|
-
|
|
160
|
-
// Obtain event signatures from the ABI
|
|
161
|
-
const abiFunctions = abi.callFunctionSignatures();
|
|
162
|
-
|
|
163
|
-
// Add errors for every manifest event signature that is not
|
|
164
|
-
// present in the ABI
|
|
165
|
-
return manifestFunctions.reduce(
|
|
166
|
-
(errors: any[], manifestFunction: any, index: number) =>
|
|
167
|
-
abiFunctions.includes(manifestFunction)
|
|
168
|
-
? errors
|
|
169
|
-
: errors.push(
|
|
170
|
-
immutable.fromJS({
|
|
171
|
-
path: [...path, index],
|
|
172
|
-
message: `\
|
|
173
|
-
Call function with signature '${manifestFunction}' not present in ABI '${abi.name}'.
|
|
174
|
-
Available call functions:
|
|
175
|
-
${abiFunctions
|
|
176
|
-
.sort()
|
|
177
|
-
.map(tx => `- ${tx}`)
|
|
178
|
-
.join('\n')}`,
|
|
179
|
-
}),
|
|
180
|
-
),
|
|
181
|
-
errors,
|
|
182
|
-
);
|
|
183
|
-
}, immutable.List());
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
handlerTypes() {
|
|
187
|
-
return immutable.List(['blockHandlers', 'callHandlers', 'eventHandlers']);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import fs from 'fs-extra';
|
|
3
|
-
import immutable from 'immutable';
|
|
4
|
-
import prettier from 'prettier';
|
|
5
|
-
import { GENERATED_FILE_NOTE } from '../../codegen/typescript';
|
|
6
|
-
import { displayPath } from '../../command-helpers/fs';
|
|
7
|
-
import { Spinner, step, withSpinner } from '../../command-helpers/spinner';
|
|
8
|
-
import { TypeGeneratorOptions } from '../../type-generator';
|
|
9
|
-
import ABI from './abi';
|
|
10
|
-
|
|
11
|
-
export default class EthereumTypeGenerator {
|
|
12
|
-
private sourceDir: TypeGeneratorOptions['sourceDir'];
|
|
13
|
-
private outputDir: TypeGeneratorOptions['outputDir'];
|
|
14
|
-
|
|
15
|
-
constructor(options: TypeGeneratorOptions) {
|
|
16
|
-
this.sourceDir = options.sourceDir;
|
|
17
|
-
this.outputDir = options.outputDir;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
async loadABIs(subgraph: immutable.Map<any, any>) {
|
|
21
|
-
return await withSpinner(
|
|
22
|
-
'Load contract ABIs',
|
|
23
|
-
'Failed to load contract ABIs',
|
|
24
|
-
`Warnings while loading contract ABIs`,
|
|
25
|
-
async spinner => {
|
|
26
|
-
try {
|
|
27
|
-
return subgraph
|
|
28
|
-
.get('dataSources')
|
|
29
|
-
.reduce(
|
|
30
|
-
(abis: any[], dataSource: any) =>
|
|
31
|
-
dataSource
|
|
32
|
-
.getIn(['mapping', 'abis'])
|
|
33
|
-
.reduce(
|
|
34
|
-
(abis: any[], abi: any) =>
|
|
35
|
-
abis.push(
|
|
36
|
-
this._loadABI(dataSource, abi.get('name'), abi.get('file'), spinner),
|
|
37
|
-
),
|
|
38
|
-
abis,
|
|
39
|
-
),
|
|
40
|
-
immutable.List(),
|
|
41
|
-
);
|
|
42
|
-
} catch (e) {
|
|
43
|
-
throw Error(`Failed to load contract ABIs: ${e.message}`);
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
_loadABI(dataSource: any, name: string, maybeRelativePath: string, spinner: Spinner) {
|
|
50
|
-
try {
|
|
51
|
-
if (this.sourceDir) {
|
|
52
|
-
const absolutePath = path.resolve(this.sourceDir, maybeRelativePath);
|
|
53
|
-
step(spinner, `Load contract ABI from`, displayPath(absolutePath));
|
|
54
|
-
return { dataSource, abi: ABI.load(name, absolutePath) };
|
|
55
|
-
}
|
|
56
|
-
return { dataSource, abi: ABI.load(name, maybeRelativePath) };
|
|
57
|
-
} catch (e) {
|
|
58
|
-
throw Error(`Failed to load contract ABI: ${e.message}`);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
async loadDataSourceTemplateABIs(subgraph: immutable.Map<any, any>) {
|
|
63
|
-
return await withSpinner(
|
|
64
|
-
`Load data source template ABIs`,
|
|
65
|
-
`Failed to load data source template ABIs`,
|
|
66
|
-
`Warnings while loading data source template ABIs`,
|
|
67
|
-
async spinner => {
|
|
68
|
-
const abis = [];
|
|
69
|
-
for (const template of subgraph.get('templates', immutable.List())) {
|
|
70
|
-
for (const abi of template.getIn(['mapping', 'abis'])) {
|
|
71
|
-
abis.push(
|
|
72
|
-
this._loadDataSourceTemplateABI(template, abi.get('name'), abi.get('file'), spinner),
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return abis;
|
|
77
|
-
},
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
_loadDataSourceTemplateABI(
|
|
82
|
-
template: any,
|
|
83
|
-
name: string,
|
|
84
|
-
maybeRelativePath: string,
|
|
85
|
-
spinner: Spinner,
|
|
86
|
-
) {
|
|
87
|
-
try {
|
|
88
|
-
if (this.sourceDir) {
|
|
89
|
-
const absolutePath = path.resolve(this.sourceDir, maybeRelativePath);
|
|
90
|
-
step(spinner, `Load data source template ABI from`, displayPath(absolutePath));
|
|
91
|
-
return { template, abi: ABI.load(name, absolutePath) };
|
|
92
|
-
}
|
|
93
|
-
return { template, abi: ABI.load(name, maybeRelativePath) };
|
|
94
|
-
} catch (e) {
|
|
95
|
-
throw Error(`Failed to load data source template ABI: ${e.message}`);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
generateTypesForABIs(abis: any[]) {
|
|
100
|
-
return withSpinner(
|
|
101
|
-
`Generate types for contract ABIs`,
|
|
102
|
-
`Failed to generate types for contract ABIs`,
|
|
103
|
-
`Warnings while generating types for contract ABIs`,
|
|
104
|
-
async spinner => {
|
|
105
|
-
return await Promise.all(
|
|
106
|
-
abis.map(async abi => await this._generateTypesForABI(abi, spinner)),
|
|
107
|
-
);
|
|
108
|
-
},
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
async _generateTypesForABI(abi: any, spinner: Spinner) {
|
|
113
|
-
try {
|
|
114
|
-
step(
|
|
115
|
-
spinner,
|
|
116
|
-
`Generate types for contract ABI:`,
|
|
117
|
-
`${abi.abi.name} (${displayPath(abi.abi.file)})`,
|
|
118
|
-
);
|
|
119
|
-
|
|
120
|
-
const codeGenerator = abi.abi.codeGenerator();
|
|
121
|
-
const code = prettier.format(
|
|
122
|
-
[
|
|
123
|
-
GENERATED_FILE_NOTE,
|
|
124
|
-
...codeGenerator.generateModuleImports(),
|
|
125
|
-
...codeGenerator.generateTypes(),
|
|
126
|
-
].join('\n'),
|
|
127
|
-
{
|
|
128
|
-
parser: 'typescript',
|
|
129
|
-
},
|
|
130
|
-
);
|
|
131
|
-
|
|
132
|
-
const outputFile = path.join(
|
|
133
|
-
this.outputDir,
|
|
134
|
-
abi.dataSource.get('name'),
|
|
135
|
-
`${abi.abi.name}.ts`,
|
|
136
|
-
);
|
|
137
|
-
step(spinner, `Write types to`, displayPath(outputFile));
|
|
138
|
-
await fs.mkdirs(path.dirname(outputFile));
|
|
139
|
-
await fs.writeFile(outputFile, code);
|
|
140
|
-
} catch (e) {
|
|
141
|
-
throw Error(`Failed to generate types for contract ABI: ${e.message}`);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
async generateTypesForDataSourceTemplateABIs(abis: any[]) {
|
|
146
|
-
return await withSpinner(
|
|
147
|
-
`Generate types for data source template ABIs`,
|
|
148
|
-
`Failed to generate types for data source template ABIs`,
|
|
149
|
-
`Warnings while generating types for data source template ABIs`,
|
|
150
|
-
async spinner => {
|
|
151
|
-
return await Promise.all(
|
|
152
|
-
abis.map(async abi => await this._generateTypesForDataSourceTemplateABI(abi, spinner)),
|
|
153
|
-
);
|
|
154
|
-
},
|
|
155
|
-
);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
async _generateTypesForDataSourceTemplateABI(abi: any, spinner: Spinner) {
|
|
159
|
-
try {
|
|
160
|
-
step(
|
|
161
|
-
spinner,
|
|
162
|
-
`Generate types for data source template ABI:`,
|
|
163
|
-
`${abi.template.get('name')} > ${abi.abi.name} (${displayPath(abi.abi.file)})`,
|
|
164
|
-
);
|
|
165
|
-
|
|
166
|
-
const codeGenerator = abi.abi.codeGenerator();
|
|
167
|
-
const code = prettier.format(
|
|
168
|
-
[
|
|
169
|
-
GENERATED_FILE_NOTE,
|
|
170
|
-
...codeGenerator.generateModuleImports(),
|
|
171
|
-
...codeGenerator.generateTypes(),
|
|
172
|
-
].join('\n'),
|
|
173
|
-
{
|
|
174
|
-
parser: 'typescript',
|
|
175
|
-
},
|
|
176
|
-
);
|
|
177
|
-
|
|
178
|
-
const outputFile = path.join(
|
|
179
|
-
this.outputDir,
|
|
180
|
-
'templates',
|
|
181
|
-
abi.template.get('name'),
|
|
182
|
-
`${abi.abi.name}.ts`,
|
|
183
|
-
);
|
|
184
|
-
step(spinner, `Write types to`, displayPath(outputFile));
|
|
185
|
-
await fs.mkdirs(path.dirname(outputFile));
|
|
186
|
-
await fs.writeFile(outputFile, code);
|
|
187
|
-
} catch (e) {
|
|
188
|
-
throw Error(`Failed to generate types for data source template ABI: ${e.message}`);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|