@graphprotocol/graph-cli 0.37.3 → 0.37.4

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.
Files changed (267) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.json +5 -1
  3. package/babel.config.js +0 -3
  4. package/jest.config.js +0 -175
  5. package/src/bin.ts +0 -6
  6. package/src/cli.ts +0 -30
  7. package/src/codegen/schema.test.ts +0 -460
  8. package/src/codegen/schema.ts +0 -299
  9. package/src/codegen/template.ts +0 -45
  10. package/src/codegen/types/conversions.ts +0 -358
  11. package/src/codegen/types/index.test.ts +0 -715
  12. package/src/codegen/types/index.ts +0 -111
  13. package/src/codegen/typescript.ts +0 -224
  14. package/src/codegen/util.test.ts +0 -112
  15. package/src/codegen/util.ts +0 -54
  16. package/src/command-helpers/abi.ts +0 -99
  17. package/src/command-helpers/auth.ts +0 -46
  18. package/src/command-helpers/compiler.ts +0 -60
  19. package/src/command-helpers/data-sources.ts +0 -36
  20. package/src/command-helpers/fs.ts +0 -5
  21. package/src/command-helpers/gluegun.ts +0 -52
  22. package/src/command-helpers/ipfs-http-client.d.ts +0 -1
  23. package/src/command-helpers/ipfs.ts +0 -3
  24. package/src/command-helpers/jsonrpc.ts +0 -22
  25. package/src/command-helpers/network.test.ts +0 -85
  26. package/src/command-helpers/network.ts +0 -133
  27. package/src/command-helpers/node.ts +0 -46
  28. package/src/command-helpers/scaffold.ts +0 -174
  29. package/src/command-helpers/spinner.ts +0 -60
  30. package/src/command-helpers/studio.test.ts +0 -84
  31. package/src/command-helpers/studio.ts +0 -25
  32. package/src/command-helpers/subgraph.ts +0 -21
  33. package/src/command-helpers/version.test.ts +0 -241
  34. package/src/command-helpers/version.ts +0 -53
  35. package/src/commands/add.ts +0 -220
  36. package/src/commands/auth.ts +0 -138
  37. package/src/commands/binary-install-raw.d.ts +0 -1
  38. package/src/commands/build.ts +0 -147
  39. package/src/commands/codegen.ts +0 -123
  40. package/src/commands/create.ts +0 -109
  41. package/src/commands/deploy.ts +0 -388
  42. package/src/commands/init.ts +0 -1060
  43. package/src/commands/local.ts +0 -539
  44. package/src/commands/remove.ts +0 -110
  45. package/src/commands/test.ts +0 -369
  46. package/src/compiler/asc.ts +0 -77
  47. package/src/compiler/index.ts +0 -677
  48. package/src/debug.ts +0 -15
  49. package/src/migrations/mapping_api_version_0_0_1.ts +0 -75
  50. package/src/migrations/mapping_api_version_0_0_2.ts +0 -75
  51. package/src/migrations/mapping_api_version_0_0_3.ts +0 -75
  52. package/src/migrations/mapping_api_version_0_0_4.ts +0 -77
  53. package/src/migrations/mapping_api_version_0_0_5.ts +0 -77
  54. package/src/migrations/spec_version_0_0_2.ts +0 -24
  55. package/src/migrations/spec_version_0_0_3.ts +0 -29
  56. package/src/migrations/util/load-manifest.ts +0 -10
  57. package/src/migrations/util/versions.ts +0 -27
  58. package/src/migrations.ts +0 -33
  59. package/src/protocols/arweave/manifest.graphql +0 -57
  60. package/src/protocols/arweave/scaffold/manifest.ts +0 -14
  61. package/src/protocols/arweave/scaffold/mapping.ts +0 -49
  62. package/src/protocols/arweave/subgraph.ts +0 -22
  63. package/src/protocols/contract.ts +0 -9
  64. package/src/protocols/cosmos/manifest.graphql +0 -76
  65. package/src/protocols/cosmos/scaffold/manifest.ts +0 -11
  66. package/src/protocols/cosmos/scaffold/mapping.ts +0 -35
  67. package/src/protocols/cosmos/subgraph.ts +0 -27
  68. package/src/protocols/ethereum/abi.ts +0 -153
  69. package/src/protocols/ethereum/codegen/abi.test.ts +0 -330
  70. package/src/protocols/ethereum/codegen/abi.ts +0 -719
  71. package/src/protocols/ethereum/codegen/template.ts +0 -41
  72. package/src/protocols/ethereum/contract.ts +0 -24
  73. package/src/protocols/ethereum/manifest.graphql +0 -94
  74. package/src/protocols/ethereum/scaffold/manifest.ts +0 -28
  75. package/src/protocols/ethereum/scaffold/mapping.ts +0 -76
  76. package/src/protocols/ethereum/subgraph.ts +0 -189
  77. package/src/protocols/ethereum/type-generator.ts +0 -191
  78. package/src/protocols/index.ts +0 -287
  79. package/src/protocols/ipfs/codegen/file_template.ts +0 -43
  80. package/src/protocols/near/contract.ts +0 -47
  81. package/src/protocols/near/manifest.graphql +0 -64
  82. package/src/protocols/near/scaffold/manifest.ts +0 -13
  83. package/src/protocols/near/scaffold/mapping.ts +0 -35
  84. package/src/protocols/near/subgraph.ts +0 -22
  85. package/src/protocols/subgraph.ts +0 -12
  86. package/src/protocols/substreams/manifest.graphql +0 -45
  87. package/src/protocols/substreams/scaffold/manifest.ts +0 -8
  88. package/src/protocols/substreams/subgraph.ts +0 -22
  89. package/src/scaffold/cosmos.test.ts +0 -83
  90. package/src/scaffold/ethereum.test.ts +0 -512
  91. package/src/scaffold/index.ts +0 -172
  92. package/src/scaffold/mapping.ts +0 -44
  93. package/src/scaffold/near.test.ts +0 -86
  94. package/src/scaffold/schema.ts +0 -89
  95. package/src/scaffold/tests.ts +0 -217
  96. package/src/schema.ts +0 -26
  97. package/src/subgraph.ts +0 -302
  98. package/src/type-generator.ts +0 -266
  99. package/src/validation/contract.ts +0 -51
  100. package/src/validation/index.ts +0 -5
  101. package/src/validation/manifest.ts +0 -360
  102. package/src/validation/schema.test.ts +0 -38
  103. package/src/validation/schema.ts +0 -957
  104. package/src/watcher.ts +0 -96
  105. package/tests/cli/globalSetup.ts +0 -8
  106. package/tests/cli/globalTeardown.ts +0 -8
  107. package/tests/cli/init/ethereum/abis/Marketplace.json +0 -408
  108. package/tests/cli/init/ethereum/abis/OverloadedElements.json +0 -91
  109. package/tests/cli/init/ethereum/abis/SoloMargin.json +0 -2729
  110. package/tests/cli/init/ethereum/from-contract-with-abi-and-structs.stderr +0 -14
  111. package/tests/cli/init/ethereum/from-contract-with-abi-and-structs.stdout +0 -12
  112. package/tests/cli/init/ethereum/from-contract-with-abi.stderr +0 -14
  113. package/tests/cli/init/ethereum/from-contract-with-abi.stdout +0 -12
  114. package/tests/cli/init/ethereum/from-contract-with-overloaded-elements.stderr +0 -14
  115. package/tests/cli/init/ethereum/from-contract-with-overloaded-elements.stdout +0 -12
  116. package/tests/cli/init/ethereum/from-contract.stderr +0 -16
  117. package/tests/cli/init/ethereum/from-contract.stdout +0 -12
  118. package/tests/cli/init/ethereum/from-example.stderr +0 -12
  119. package/tests/cli/init/ethereum/from-example.stdout +0 -12
  120. package/tests/cli/init/near/from-contract.stderr +0 -14
  121. package/tests/cli/init/near/from-contract.stdout +0 -12
  122. package/tests/cli/init.test.ts +0 -157
  123. package/tests/cli/spawn-command.d.ts +0 -7
  124. package/tests/cli/util.ts +0 -132
  125. package/tests/cli/validation/abi-not-found/Abi.json +0 -7
  126. package/tests/cli/validation/abi-not-found/mapping.ts +0 -0
  127. package/tests/cli/validation/abi-not-found/schema.graphql +0 -3
  128. package/tests/cli/validation/abi-not-found/subgraph.yaml +0 -42
  129. package/tests/cli/validation/abi-not-found copy.stderr +0 -13
  130. package/tests/cli/validation/big-decimal-is-valid/Abi.json +0 -7
  131. package/tests/cli/validation/big-decimal-is-valid/mapping.ts +0 -0
  132. package/tests/cli/validation/big-decimal-is-valid/schema.graphql +0 -4
  133. package/tests/cli/validation/big-decimal-is-valid/subgraph.yaml +0 -23
  134. package/tests/cli/validation/call-function-not-found/Abi.json +0 -57
  135. package/tests/cli/validation/call-function-not-found/mapping.ts +0 -0
  136. package/tests/cli/validation/call-function-not-found/schema.graphql +0 -3
  137. package/tests/cli/validation/call-function-not-found/subgraph.yaml +0 -22
  138. package/tests/cli/validation/call-function-not-found.stderr +0 -10
  139. package/tests/cli/validation/call-handler-with-tuple/Abi.json +0 -24
  140. package/tests/cli/validation/call-handler-with-tuple/generated/schema.ts +0 -44
  141. package/tests/cli/validation/call-handler-with-tuple/mapping.ts +0 -0
  142. package/tests/cli/validation/call-handler-with-tuple/schema.graphql +0 -3
  143. package/tests/cli/validation/call-handler-with-tuple/subgraph.yaml +0 -22
  144. package/tests/cli/validation/call-handler-with-tuple.stderr +0 -24
  145. package/tests/cli/validation/conflicting-network-names/Abi.json +0 -7
  146. package/tests/cli/validation/conflicting-network-names/mapping.ts +0 -0
  147. package/tests/cli/validation/conflicting-network-names/schema.graphql +0 -3
  148. package/tests/cli/validation/conflicting-network-names/subgraph.yaml +0 -41
  149. package/tests/cli/validation/conflicting-network-names.stderr +0 -10
  150. package/tests/cli/validation/conflicting-protocol-names/Abi.json +0 -7
  151. package/tests/cli/validation/conflicting-protocol-names/mapping.ts +0 -0
  152. package/tests/cli/validation/conflicting-protocol-names/schema.graphql +0 -3
  153. package/tests/cli/validation/conflicting-protocol-names/subgraph.yaml +0 -41
  154. package/tests/cli/validation/conflicting-protocol-names.stderr +0 -10
  155. package/tests/cli/validation/derived-from-target-type-missing/Abi.json +0 -6
  156. package/tests/cli/validation/derived-from-target-type-missing/mapping.ts +0 -0
  157. package/tests/cli/validation/derived-from-target-type-missing/schema.graphql +0 -4
  158. package/tests/cli/validation/derived-from-target-type-missing/subgraph.yaml +0 -22
  159. package/tests/cli/validation/derived-from-target-type-missing.stderr +0 -5
  160. package/tests/cli/validation/derived-from-with-interface/Gravity.json +0 -1
  161. package/tests/cli/validation/derived-from-with-interface/mapping.ts +0 -22
  162. package/tests/cli/validation/derived-from-with-interface/schema.graphql +0 -19
  163. package/tests/cli/validation/derived-from-with-interface/subgraph.yaml +0 -25
  164. package/tests/cli/validation/duplicate-data-source-name/Abi.json +0 -7
  165. package/tests/cli/validation/duplicate-data-source-name/mapping.ts +0 -0
  166. package/tests/cli/validation/duplicate-data-source-name/schema.graphql +0 -4
  167. package/tests/cli/validation/duplicate-data-source-name/subgraph.yaml +0 -40
  168. package/tests/cli/validation/duplicate-data-source-name.stderr +0 -5
  169. package/tests/cli/validation/duplicate-template-name/Abi.json +0 -7
  170. package/tests/cli/validation/duplicate-template-name/mapping.ts +0 -0
  171. package/tests/cli/validation/duplicate-template-name/schema.graphql +0 -4
  172. package/tests/cli/validation/duplicate-template-name/subgraph.yaml +0 -59
  173. package/tests/cli/validation/duplicate-template-name.stderr +0 -5
  174. package/tests/cli/validation/entity-field-args/Abi.json +0 -7
  175. package/tests/cli/validation/entity-field-args/mapping.ts +0 -0
  176. package/tests/cli/validation/entity-field-args/schema.graphql +0 -4
  177. package/tests/cli/validation/entity-field-args/subgraph.yaml +0 -22
  178. package/tests/cli/validation/entity-field-args.stderr +0 -5
  179. package/tests/cli/validation/ethereum-contract-without-handlers/Abi.json +0 -7
  180. package/tests/cli/validation/ethereum-contract-without-handlers/mapping.ts +0 -0
  181. package/tests/cli/validation/ethereum-contract-without-handlers/schema.graphql +0 -3
  182. package/tests/cli/validation/ethereum-contract-without-handlers/subgraph.yaml +0 -19
  183. package/tests/cli/validation/ethereum-contract-without-handlers.stderr +0 -6
  184. package/tests/cli/validation/event-not-found/Abi.json +0 -7
  185. package/tests/cli/validation/event-not-found/mapping.ts +0 -0
  186. package/tests/cli/validation/event-not-found/schema.graphql +0 -3
  187. package/tests/cli/validation/event-not-found/subgraph.yaml +0 -40
  188. package/tests/cli/validation/event-not-found.stderr +0 -12
  189. package/tests/cli/validation/example-values-found/Abi.json +0 -7
  190. package/tests/cli/validation/example-values-found/generated/ExampleSubgraph/ExampleContract.ts +0 -35
  191. package/tests/cli/validation/example-values-found/generated/schema.ts +0 -44
  192. package/tests/cli/validation/example-values-found/mapping.ts +0 -0
  193. package/tests/cli/validation/example-values-found/schema.graphql +0 -3
  194. package/tests/cli/validation/example-values-found/subgraph.yaml +0 -24
  195. package/tests/cli/validation/example-values-found.stderr +0 -34
  196. package/tests/cli/validation/invalid-abis/InvalidAbi.json +0 -1
  197. package/tests/cli/validation/invalid-abis/mapping.ts +0 -0
  198. package/tests/cli/validation/invalid-abis/schema.graphql +0 -3
  199. package/tests/cli/validation/invalid-abis/subgraph.yaml +0 -22
  200. package/tests/cli/validation/invalid-abis.stderr +0 -5
  201. package/tests/cli/validation/invalid-contract-addresses/Abi.json +0 -7
  202. package/tests/cli/validation/invalid-contract-addresses/mapping.ts +0 -0
  203. package/tests/cli/validation/invalid-contract-addresses/schema.graphql +0 -3
  204. package/tests/cli/validation/invalid-contract-addresses/subgraph.yaml +0 -58
  205. package/tests/cli/validation/invalid-contract-addresses.stderr +0 -14
  206. package/tests/cli/validation/invalid-data-source-template/mapping.ts +0 -0
  207. package/tests/cli/validation/invalid-data-source-template/schema.graphql +0 -3
  208. package/tests/cli/validation/invalid-data-source-template/subgraph.yaml +0 -32
  209. package/tests/cli/validation/invalid-data-source-template.stderr +0 -30
  210. package/tests/cli/validation/invalid-entity-field-types/Abi.json +0 -7
  211. package/tests/cli/validation/invalid-entity-field-types/mapping.ts +0 -0
  212. package/tests/cli/validation/invalid-entity-field-types/schema.graphql +0 -157
  213. package/tests/cli/validation/invalid-entity-field-types/subgraph.yaml +0 -22
  214. package/tests/cli/validation/invalid-entity-field-types.stderr +0 -148
  215. package/tests/cli/validation/invalid-fulltext-directive/Abi.json +0 -7
  216. package/tests/cli/validation/invalid-fulltext-directive/mapping.ts +0 -0
  217. package/tests/cli/validation/invalid-fulltext-directive/schema.graphql +0 -140
  218. package/tests/cli/validation/invalid-fulltext-directive/subgraph.yaml +0 -22
  219. package/tests/cli/validation/invalid-fulltext-directive.stderr +0 -32
  220. package/tests/cli/validation/invalid-graphql-schema/Abi.json +0 -7
  221. package/tests/cli/validation/invalid-graphql-schema/mapping.ts +0 -0
  222. package/tests/cli/validation/invalid-graphql-schema/schema.graphql +0 -8
  223. package/tests/cli/validation/invalid-graphql-schema/subgraph.yaml +0 -22
  224. package/tests/cli/validation/invalid-graphql-schema.stderr +0 -25
  225. package/tests/cli/validation/invalid-manifest/subgraph.yaml +0 -13
  226. package/tests/cli/validation/invalid-manifest-cannot-infer-protocol/subgraph.yaml +0 -12
  227. package/tests/cli/validation/invalid-manifest-cannot-infer-protocol.stderr +0 -5
  228. package/tests/cli/validation/invalid-manifest.stderr +0 -28
  229. package/tests/cli/validation/missing-entity-id/Abi.json +0 -7
  230. package/tests/cli/validation/missing-entity-id/mapping.ts +0 -0
  231. package/tests/cli/validation/missing-entity-id/schema.graphql +0 -3
  232. package/tests/cli/validation/missing-entity-id/subgraph.yaml +0 -22
  233. package/tests/cli/validation/missing-entity-id/types/ExampleSubgraph/ExampleContract.ts +0 -35
  234. package/tests/cli/validation/missing-entity-id/types/schema.ts +0 -27
  235. package/tests/cli/validation/missing-entity-id.stderr +0 -5
  236. package/tests/cli/validation/missing-or-invalid-derived-from-fields/Abi.json +0 -7
  237. package/tests/cli/validation/missing-or-invalid-derived-from-fields/mapping.ts +0 -0
  238. package/tests/cli/validation/missing-or-invalid-derived-from-fields/schema.graphql +0 -40
  239. package/tests/cli/validation/missing-or-invalid-derived-from-fields/subgraph.yaml +0 -22
  240. package/tests/cli/validation/missing-or-invalid-derived-from-fields.stderr +0 -10
  241. package/tests/cli/validation/missing-or-invalid-derived-from-fields.stdout +0 -0
  242. package/tests/cli/validation/near-is-valid/mapping.ts +0 -0
  243. package/tests/cli/validation/near-is-valid/schema.graphql +0 -8
  244. package/tests/cli/validation/near-is-valid/subgraph.yaml +0 -30
  245. package/tests/cli/validation/nested-template-nice-error/Abi.json +0 -7
  246. package/tests/cli/validation/nested-template-nice-error/mapping.ts +0 -0
  247. package/tests/cli/validation/nested-template-nice-error/schema.graphql +0 -3
  248. package/tests/cli/validation/nested-template-nice-error/subgraph.yaml +0 -35
  249. package/tests/cli/validation/nested-template-nice-error.stderr +0 -5
  250. package/tests/cli/validation/no-network-names/Abi.json +0 -7
  251. package/tests/cli/validation/no-network-names/mapping.ts +0 -0
  252. package/tests/cli/validation/no-network-names/schema.graphql +0 -3
  253. package/tests/cli/validation/no-network-names/subgraph.yaml +0 -40
  254. package/tests/cli/validation/no-network-names.stderr +0 -34
  255. package/tests/cli/validation/source-without-address-is-valid/Abi.json +0 -7
  256. package/tests/cli/validation/source-without-address-is-valid/generated/ExampleSubgraph/ExampleContract.ts +0 -35
  257. package/tests/cli/validation/source-without-address-is-valid/mapping.ts +0 -0
  258. package/tests/cli/validation/source-without-address-is-valid/schema.graphql +0 -3
  259. package/tests/cli/validation/source-without-address-is-valid/subgraph.yaml +0 -23
  260. package/tests/cli/validation/source-without-address-is-valid.stderr +0 -24
  261. package/tests/cli/validation/topic0-is-valid/Abi.json +0 -7
  262. package/tests/cli/validation/topic0-is-valid/mapping.ts +0 -0
  263. package/tests/cli/validation/topic0-is-valid/schema.graphql +0 -4
  264. package/tests/cli/validation/topic0-is-valid/subgraph.yaml +0 -24
  265. package/tests/cli/validation.test.ts +0 -226
  266. package/tsconfig.build.json +0 -4
  267. package/tsconfig.json +0 -19
@@ -1,460 +0,0 @@
1
- import * as graphql from 'graphql/language';
2
- import immutable from 'immutable';
3
- import prettier from 'prettier';
4
- import Schema from '../schema';
5
- import SchemaCodeGenerator from './schema';
6
- import {
7
- ArrayType,
8
- Class,
9
- Method,
10
- NamedType,
11
- NullableType,
12
- Param,
13
- StaticMethod,
14
- } from './typescript';
15
-
16
- const formatTS = (code: string) => prettier.format(code, { parser: 'typescript', semi: false });
17
-
18
- const createSchemaCodeGen = (schema: string) =>
19
- new SchemaCodeGenerator(new Schema('', schema, immutable.fromJS(graphql.parse(schema))));
20
-
21
- const testEntity = (generatedTypes: any[], expectedEntity: any) => {
22
- const entity = generatedTypes.find(type => type.name === expectedEntity.name);
23
-
24
- expect(entity instanceof Class).toBe(true);
25
- expect(entity.extends).toBe('Entity');
26
- expect(entity.export).toBe(true);
27
-
28
- const { members, methods } = entity;
29
-
30
- expect(members).toStrictEqual(expectedEntity.members);
31
-
32
- for (const expectedMethod of expectedEntity.methods) {
33
- const method = methods.find((method: any) => method.name === expectedMethod.name);
34
-
35
- expectedMethod.static
36
- ? expect(method instanceof StaticMethod).toBe(true)
37
- : expect(method instanceof Method).toBe(true);
38
-
39
- expect(method.params).toStrictEqual(expectedMethod.params);
40
- expect(method.returnType).toStrictEqual(expectedMethod.returnType);
41
- expect(formatTS(method.body)).toBe(formatTS(expectedMethod.body));
42
- }
43
-
44
- expect(methods.length).toBe(expectedEntity.methods.length);
45
- };
46
-
47
- describe('Schema code generator', () => {
48
- test('Should generate nothing for non entity types', () => {
49
- const codegen = createSchemaCodeGen(`
50
- type Foo {
51
- foobar: Int
52
- }
53
-
54
- type Bar {
55
- barfoo: Int
56
- }
57
- `);
58
-
59
- expect(codegen.generateTypes().size).toBe(0);
60
- });
61
-
62
- describe('Should generate correct classes for each entity', () => {
63
- const codegen = createSchemaCodeGen(`
64
- # just to be sure nothing will be generated from non-entity types alongside regular ones
65
- type Foo {
66
- foobar: Int
67
- }
68
-
69
- type Account @entity {
70
- id: ID!
71
-
72
- # two non primitive types
73
- description: String
74
- name: String!
75
-
76
- # two primitive types (i32)
77
- age: Int
78
- count: Int!
79
-
80
- # derivedFrom
81
- wallets: [Wallet!] @derivedFrom(field: "account")
82
- }
83
-
84
- type Wallet @entity {
85
- id: ID!
86
- amount: BigInt!
87
- account: Account!
88
- }
89
- `);
90
-
91
- const generatedTypes = codegen.generateTypes();
92
-
93
- test('Foo is NOT an entity', () => {
94
- const foo = generatedTypes.find((type: any) => type.name === 'Foo');
95
- expect(foo).toBe(undefined);
96
- // Account and Wallet
97
- expect(generatedTypes.size).toBe(2);
98
- });
99
-
100
- test('Account is an entity with the correct methods', () => {
101
- testEntity(generatedTypes, {
102
- name: 'Account',
103
- members: [],
104
- methods: [
105
- {
106
- name: 'constructor',
107
- params: [new Param('id', new NamedType('string'))],
108
- returnType: undefined,
109
- body: `
110
- super()
111
- this.set('id', Value.fromString(id))
112
- `,
113
- },
114
- {
115
- name: 'save',
116
- params: [],
117
- returnType: new NamedType('void'),
118
- body: `
119
- let id = this.get('id')
120
- assert(id != null, 'Cannot save Account entity without an ID')
121
- if (id) {
122
- assert(
123
- id.kind == ValueKind.STRING,
124
- \`Entities of type Account must have an ID of type String but the id '\${id.displayData()}' is of type \${id.displayKind()}\`)
125
- store.set('Account', id.toString(), this)
126
- }
127
- `,
128
- },
129
- {
130
- name: 'load',
131
- static: true,
132
- params: [new Param('id', new NamedType('string'))],
133
- returnType: new NullableType(new NamedType('Account')),
134
- body: `
135
- return changetype<Account | null>(store.get('Account', id))
136
- `,
137
- },
138
- {
139
- name: 'get id',
140
- params: [],
141
- returnType: new NamedType('string'),
142
- body: `
143
- let value = this.get('id')
144
- return value!.toString()
145
- `,
146
- },
147
- {
148
- name: 'set id',
149
- params: [new Param('value', new NamedType('string'))],
150
- returnType: undefined,
151
- body: `
152
- this.set('id', Value.fromString(value))
153
- `,
154
- },
155
- {
156
- name: 'get description',
157
- params: [],
158
- returnType: new NullableType(new NamedType('string')),
159
- body: `
160
- let value = this.get('description')
161
- if (!value || value.kind == ValueKind.NULL) {
162
- return null
163
- } else {
164
- return value.toString()
165
- }
166
- `,
167
- },
168
- {
169
- name: 'set description',
170
- params: [new Param('value', new NullableType(new NamedType('string')))],
171
- returnType: undefined,
172
- body: `
173
- if (!value) {
174
- this.unset('description')
175
- } else {
176
- this.set('description', Value.fromString(<string>value))
177
- }
178
- `,
179
- },
180
- {
181
- name: 'get name',
182
- params: [],
183
- returnType: new NamedType('string'),
184
- body: `
185
- let value = this.get('name')
186
- return value!.toString()
187
- `,
188
- },
189
- {
190
- name: 'set name',
191
- params: [new Param('value', new NamedType('string'))],
192
- returnType: undefined,
193
- body: `
194
- this.set('name', Value.fromString(value))
195
- `,
196
- },
197
- {
198
- name: 'get age',
199
- params: [],
200
- returnType: new NamedType('i32'),
201
- body: `
202
- let value = this.get('age')
203
- return value!.toI32()
204
- `,
205
- },
206
- {
207
- name: 'set age',
208
- params: [new Param('value', new NamedType('i32'))],
209
- returnType: undefined,
210
- body: `
211
- this.set('age', Value.fromI32(value))
212
- `,
213
- },
214
- {
215
- name: 'get count',
216
- params: [],
217
- returnType: new NamedType('i32'),
218
- body: `
219
- let value = this.get('count')
220
- return value!.toI32()
221
- `,
222
- },
223
- {
224
- name: 'set count',
225
- params: [new Param('value', new NamedType('i32'))],
226
- returnType: undefined,
227
- body: `
228
- this.set('count', Value.fromI32(value))
229
- `,
230
- },
231
- {
232
- name: 'get wallets',
233
- params: [],
234
- returnType: new NullableType(new ArrayType(new NamedType('string'))),
235
- body: `
236
- let value = this.get('wallets')
237
- if (!value || value.kind == ValueKind.NULL) {
238
- return null
239
- } else {
240
- return value.toStringArray()
241
- }
242
- `,
243
- },
244
- {
245
- name: 'set wallets',
246
- params: [new Param('value', new NullableType(new ArrayType(new NamedType('string'))))],
247
- returnType: undefined,
248
- body: `
249
- if (!value) {
250
- this.unset('wallets')
251
- } else {
252
- this.set('wallets', Value.fromStringArray(<Array<string>>value))
253
- }
254
- `,
255
- },
256
- ],
257
- });
258
- });
259
-
260
- test('Wallet is an entity with the correct methods', () => {
261
- testEntity(generatedTypes, {
262
- name: 'Wallet',
263
- members: [],
264
- methods: [
265
- {
266
- name: 'constructor',
267
- params: [new Param('id', new NamedType('string'))],
268
- returnType: undefined,
269
- body: `
270
- super()
271
- this.set('id', Value.fromString(id))
272
- `,
273
- },
274
- {
275
- name: 'save',
276
- params: [],
277
- returnType: new NamedType('void'),
278
- body: `
279
- let id = this.get('id')
280
- assert(id != null, 'Cannot save Wallet entity without an ID')
281
- if (id) {
282
- assert(
283
- id.kind == ValueKind.STRING,
284
- \`Entities of type Wallet must have an ID of type String but the id '\${id.displayData()}' is of type \${id.displayKind()}\`)
285
- store.set('Wallet', id.toString(), this)
286
- }
287
- `,
288
- },
289
- {
290
- name: 'load',
291
- static: true,
292
- params: [new Param('id', new NamedType('string'))],
293
- returnType: new NullableType(new NamedType('Wallet')),
294
- body: `
295
- return changetype<Wallet | null>(store.get('Wallet', id))
296
- `,
297
- },
298
- {
299
- name: 'get id',
300
- params: [],
301
- returnType: new NamedType('string'),
302
- body: `
303
- let value = this.get('id')
304
- return value!.toString()
305
- `,
306
- },
307
- {
308
- name: 'set id',
309
- params: [new Param('value', new NamedType('string'))],
310
- returnType: undefined,
311
- body: `
312
- this.set('id', Value.fromString(value))
313
- `,
314
- },
315
- {
316
- name: 'get amount',
317
- params: [],
318
- returnType: new NamedType('BigInt'),
319
- body: `
320
- let value = this.get('amount')
321
- return value!.toBigInt()
322
- `,
323
- },
324
- {
325
- name: 'set amount',
326
- params: [new Param('value', new NamedType('BigInt'))],
327
- returnType: undefined,
328
- body: `
329
- this.set('amount', Value.fromBigInt(value))
330
- `,
331
- },
332
- {
333
- name: 'get account',
334
- params: [],
335
- returnType: new NamedType('string'),
336
- body: `
337
- let value = this.get('account')
338
- return value!.toString()
339
- `,
340
- },
341
- {
342
- name: 'set account',
343
- params: [new Param('value', new NamedType('string'))],
344
- returnType: undefined,
345
- body: `
346
- this.set('account', Value.fromString(value))
347
- `,
348
- },
349
- ],
350
- });
351
- });
352
- });
353
-
354
- test('Should handle references with Bytes id types', () => {
355
- const codegen = createSchemaCodeGen(`
356
- interface Employee {
357
- id: Bytes!
358
- name: String!
359
- }
360
-
361
- type Worker implements Employee @entity {
362
- id: Bytes!
363
- name: String!
364
- }
365
-
366
- type Task @entity {
367
- id: Bytes!
368
- employee: Employee!
369
- worker: Worker!
370
- }
371
- `);
372
-
373
- const generatedTypes = codegen.generateTypes();
374
- testEntity(generatedTypes, {
375
- name: 'Task',
376
- members: [],
377
- methods: [
378
- {
379
- name: 'constructor',
380
- params: [new Param('id', new NamedType('Bytes'))],
381
- returnType: undefined,
382
- body: "\n super()\n this.set('id', Value.fromBytes(id))\n ",
383
- },
384
- {
385
- name: 'save',
386
- params: [],
387
- returnType: new NamedType('void'),
388
- body:
389
- '\n' +
390
- " let id = this.get('id')\n" +
391
- ' assert(id != null,\n' +
392
- " 'Cannot save Task entity without an ID')\n" +
393
- ' if (id) {\n' +
394
- ' assert(id.kind == ValueKind.BYTES,\n' +
395
- " `Entities of type Task must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`)\n" +
396
- " store.set('Task', id.toBytes().toHexString(), this)\n" +
397
- ' }',
398
- },
399
- {
400
- name: 'load',
401
- static: true,
402
- params: [new Param('id', new NamedType('Bytes'))],
403
- returnType: new NullableType(new NamedType('Task')),
404
- body:
405
- '\n' +
406
- " return changetype<Task | null>(store.get('Task', id.toHexString()))\n" +
407
- ' ',
408
- },
409
- {
410
- name: 'get id',
411
- params: [],
412
- returnType: new NamedType('Bytes'),
413
- body:
414
- '\n' +
415
- " let value = this.get('id')\n" +
416
- ' return value!.toBytes()\n' +
417
- ' ',
418
- },
419
- {
420
- name: 'set id',
421
- params: [new Param('value', new NamedType('Bytes'))],
422
- returnType: undefined,
423
- body: "\n this.set('id', Value.fromBytes(value))\n ",
424
- },
425
- {
426
- name: 'get employee',
427
- params: [],
428
- returnType: new NamedType('Bytes'),
429
- body:
430
- '\n' +
431
- " let value = this.get('employee')\n" +
432
- ' return value!.toBytes()\n' +
433
- ' ',
434
- },
435
- {
436
- name: 'set employee',
437
- params: [new Param('value', new NamedType('Bytes'))],
438
- returnType: undefined,
439
- body: "\n this.set('employee', Value.fromBytes(value))\n ",
440
- },
441
- {
442
- name: 'get worker',
443
- params: [],
444
- returnType: new NamedType('Bytes'),
445
- body:
446
- '\n' +
447
- " let value = this.get('worker')\n" +
448
- ' return value!.toBytes()\n' +
449
- ' ',
450
- },
451
- {
452
- name: 'set worker',
453
- params: [new Param('value', new NamedType('Bytes'))],
454
- returnType: undefined,
455
- body: "\n this.set('worker', Value.fromBytes(value))\n ",
456
- },
457
- ],
458
- });
459
- });
460
- });