@toptal/davinci-graphql-codegen 0.2.13-alpha-fx-2996-add-error-message-for-missing-engine.12 → 0.2.13

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 CHANGED
@@ -1,5 +1,14 @@
1
1
  # @toptal/davinci-graphql-codegen
2
2
 
3
+ ## 0.2.13
4
+
5
+ ### Patch Changes
6
+
7
+ - [#1541](https://github.com/toptal/davinci/pull/1541) [`397a53c9`](https://github.com/toptal/davinci/commit/397a53c9add9f7e8d485648b51cd22676d97c78f) Thanks [@TomasSlama](https://github.com/TomasSlama)! - ---
8
+ - Update documentation about prefering individual davinci packages usage
9
+ - Updated dependencies [[`397a53c9`](https://github.com/toptal/davinci/commit/397a53c9add9f7e8d485648b51cd22676d97c78f)]:
10
+ - @toptal/davinci-monorepo@6.6.5
11
+
3
12
  ## 0.2.12
4
13
 
5
14
  ### Patch Changes
package/README.md CHANGED
@@ -41,7 +41,7 @@ _<sup>1</sup> *This structure might be subject to change in a future iteration o
41
41
  After creating the package and applying the default configurations you should add Davinci as a dependency of `@toptal/modularity-template-graphql` (it's how we name this package within our monorepo to resolve to `libs/graphql`) and add this `script` to your `package.json`:
42
42
 
43
43
  ```
44
- "generate-schema": "davinci graphql-codegen generate-schema"
44
+ "generate-schema": "davinci-graphql-codegen generate-schema"
45
45
  ```
46
46
 
47
47
  When you run the above command, it will iterate over the `schemas` you have configured in your `codegen.json` and then create those schemas locally for you to commit to your repo, and then make use of them for generating operation types.
@@ -51,7 +51,7 @@ When you run the above command, it will iterate over the `schemas` you have conf
51
51
  In order to generate operation types for your GraphQL Gateway, you'd need to add this `script` to your `package.json`.
52
52
 
53
53
  ```
54
- "generate-operations": "davinci graphql-codegen generate-operations"
54
+ "generate-operations": "davinci-graphql-codegen generate-operations"
55
55
  ```
56
56
 
57
57
  Then create a `codegen.json` file at the root folder of your package that contains the following data/structure:
@@ -76,7 +76,7 @@ GraphQL Codegen is an extensible and configurable tool that gives you the abilit
76
76
  You can customize the `codegen.json` file that GraphQL Codegen is going to look for. You can do so via CLI with the following command:
77
77
 
78
78
  ```
79
- yarn davinci graphql-codegen generate-schema --config=./graphql/codegen-schema.json
79
+ yarn davinci-graphql-codegen generate-schema --config=./graphql/codegen-schema.json
80
80
  ```
81
81
 
82
82
  The above script will search for `codegen-schema.json` within `./graphql`.
@@ -86,7 +86,7 @@ The above script will search for `codegen-schema.json` within `./graphql`.
86
86
  When generating operations, we have set a default setting that generates your operation types within a file named the same as where your query or mutation is and it will have the `.ts` extension. This is due to that the default extension for your queries or mutations should be `.graphql`. But you might have your query within a `.ts` file that comes with, for instance, a hook that makes use of this query, and if you'd run GraphQL Codegen Operations as is, you'll have that `.ts` file ovewriten. But you can avoid this conflict via CLI with the following command:
87
87
 
88
88
  ```
89
- davinci graphql-codegen generate-operations --extension=.types.ts
89
+ davinci-graphql-codegen generate-operations --extension=.types.ts
90
90
  ```
91
91
 
92
92
  The above script will tell GraphQL Codegen that when generating operations, you'd like it to generate your types with the `.types.ts` extension so it won't conflict with your already existing `.ts` file which contains more than your query or mutation.
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@toptal/davinci-graphql-codegen",
3
+ "version": "0.2.13",
4
+ "description": "Codegen",
5
+ "author": "Toptal",
6
+ "license": "ISC",
7
+ "homepage": "https://github.com/toptal/davinci/tree/master/packages/graphql-codegen#readme",
8
+ "publishConfig": {
9
+ "access": "public"
10
+ },
11
+ "bin": {
12
+ "davinci-graphql-codegen": "./bin/davinci-graphql-codegen.js"
13
+ },
14
+ "main": "./src/index.js",
15
+ "scripts": {
16
+ "build:package": "../../bin/build-package.js",
17
+ "prepublishOnly": "../../bin/prepublish.js",
18
+ "test": "echo \"Error: no test specified\" && exit 1"
19
+ },
20
+ "sideEffects": false,
21
+ "dependencies": {
22
+ "@google-cloud/storage": "^6.2.3",
23
+ "@graphql-codegen/add": "^3.1.0",
24
+ "@graphql-codegen/cli": "^2.11.3",
25
+ "@graphql-codegen/introspection": "^2.2.0",
26
+ "@graphql-codegen/near-operation-file-preset": "^2.2.8",
27
+ "@graphql-codegen/typed-document-node": "^2.3.2",
28
+ "@graphql-codegen/typescript": "^2.2.2",
29
+ "@graphql-codegen/typescript-operations": "^2.3.5",
30
+ "@graphql-codegen/typescript-resolvers": "^2.2.1",
31
+ "@graphql-typed-document-node/core": "^3.1.0",
32
+ "@toptal/davinci-cli-shared": "^1.6.0",
33
+ "@toptal/davinci-monorepo": "6.6.5",
34
+ "chalk": "^4.1.2",
35
+ "graphql": "^15.7.1"
36
+ }
37
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toptal/davinci-graphql-codegen",
3
- "version": "0.2.13-alpha-fx-2996-add-error-message-for-missing-engine.12+227d5ea7",
3
+ "version": "0.2.13",
4
4
  "description": "Codegen",
5
5
  "author": "Toptal",
6
6
  "license": "ISC",
@@ -29,10 +29,9 @@
29
29
  "@graphql-codegen/typescript-operations": "^2.3.5",
30
30
  "@graphql-codegen/typescript-resolvers": "^2.2.1",
31
31
  "@graphql-typed-document-node/core": "^3.1.0",
32
- "@toptal/davinci-cli-shared": "1.6.1-alpha-fx-2996-add-error-message-for-missing-engine.21+227d5ea7",
33
- "@toptal/davinci-monorepo": "6.6.5-alpha-fx-2996-add-error-message-for-missing-engine.12+227d5ea7",
32
+ "@toptal/davinci-cli-shared": "^1.6.0",
33
+ "@toptal/davinci-monorepo": "6.6.5",
34
34
  "chalk": "^4.1.2",
35
35
  "graphql": "^15.7.1"
36
- },
37
- "gitHead": "227d5ea750c2b2ce9f4abd1ff33bbe1838ae9d28"
36
+ }
38
37
  }
@@ -0,0 +1,59 @@
1
+ jest.mock('@toptal/davinci-monorepo', () => ({
2
+ commands: [],
3
+ utils: { checkIfMonorepo: jest.fn() },
4
+ }))
5
+
6
+ jest.mock('./get-monorepo-schema-path', () =>
7
+ jest.fn(() => ({
8
+ target: 'talent',
9
+ schemaPath: '@toptal/modularity-template-graphql',
10
+ schemaPathResolution:
11
+ 'home/users/alexvcasillas/toptal/libs/graphql/schema.graphql',
12
+ }))
13
+ )
14
+
15
+ jest.mock('./get-monolith-schema-path', () =>
16
+ jest.fn(() => ({
17
+ target: 'src/modules/graphql',
18
+ schemaPath: 'src/modules/graphql',
19
+ schemaPathResolution:
20
+ 'home/users/alexvcasillas/toptal/screening-wizard/src/modules/graphql/schema.graphql',
21
+ }))
22
+ )
23
+
24
+ const {
25
+ utils: { checkIfMonorepo },
26
+ } = require('@toptal/davinci-monorepo')
27
+
28
+ const getSchemaPath = require('./get-schema-path')
29
+
30
+ const monorepoSchema = '@toptal/modularity-template-graphql/talent'
31
+ const monolithSchema = 'src/modules/graphql'
32
+
33
+ describe('getSchemaPath', () => {
34
+ it('returns target, schemaPath and schemaPathResolution for monorepo', () => {
35
+ checkIfMonorepo.mockReturnValue(() => true)
36
+
37
+ const { target, schemaPath, schemaPathResolution } =
38
+ getSchemaPath(monorepoSchema)
39
+
40
+ expect(target).toBe('talent')
41
+ expect(schemaPath).toBe('@toptal/modularity-template-graphql')
42
+ expect(schemaPathResolution).toBe(
43
+ 'home/users/alexvcasillas/toptal/libs/graphql/schema.graphql'
44
+ )
45
+ })
46
+
47
+ it('returns target, schemaPath and schemaPathResolution for monolith', () => {
48
+ checkIfMonorepo.mockReturnValue(false)
49
+
50
+ const { target, schemaPath, schemaPathResolution } =
51
+ getSchemaPath(monolithSchema)
52
+
53
+ expect(target).toBe('src/modules/graphql')
54
+ expect(schemaPath).toBe('src/modules/graphql')
55
+ expect(schemaPathResolution).toBe(
56
+ 'home/users/alexvcasillas/toptal/screening-wizard/src/modules/graphql/schema.graphql'
57
+ )
58
+ })
59
+ })
@@ -0,0 +1,29 @@
1
+ const {
2
+ isSchemaFromBucket,
3
+ isSchemaFromHttp,
4
+ isLocalSchema,
5
+ } = require('./detect-schema-source')
6
+
7
+ const gsBucketSchema = 'gs://toptal.net/gateway/graphql/talent'
8
+ const httpSchema = 'https://toptal.net/gateway/graphql/talent'
9
+ const localSchema = '../../graphql/talent'
10
+
11
+ describe('Detect Schema Sources', () => {
12
+ it('detects that schema is from GS Bucket', () => {
13
+ expect(isSchemaFromBucket(gsBucketSchema)).toBe(true)
14
+ expect(isSchemaFromHttp(gsBucketSchema)).toBe(false)
15
+ expect(isLocalSchema(gsBucketSchema)).toBe(false)
16
+ })
17
+
18
+ it('detects that schema is from http', () => {
19
+ expect(isSchemaFromBucket(httpSchema)).toBe(false)
20
+ expect(isSchemaFromHttp(httpSchema)).toBe(true)
21
+ expect(isLocalSchema(httpSchema)).toBe(false)
22
+ })
23
+
24
+ it('detects that schema is from local folder', () => {
25
+ expect(isSchemaFromBucket(localSchema)).toBe(false)
26
+ expect(isSchemaFromHttp(localSchema)).toBe(false)
27
+ expect(isLocalSchema(localSchema)).toBe(true)
28
+ })
29
+ })
@@ -0,0 +1,12 @@
1
+ const parseGSURI = require('./parse-gs-uri')
2
+
3
+ const bucketURI = 'gs://gqlgw-introspection/staging_talent_schema.graphql'
4
+
5
+ describe('Parse Google Storage Bucket URI', () => {
6
+ it('parses a Google Storage Bucket URI correctly', () => {
7
+ const { bucketName, fileName } = parseGSURI(bucketURI)
8
+
9
+ expect(bucketName).toBe('gqlgw-introspection')
10
+ expect(fileName).toBe('staging_talent_schema.graphql')
11
+ })
12
+ })
@@ -0,0 +1,10 @@
1
+ const processArgs = require('./process-args')
2
+
3
+ describe('Argument processor', () => {
4
+ it('process arguments correctly', () => {
5
+ const args = processArgs(['generate-operations', '--projectId=toptal'])
6
+
7
+ expect(args.operation).toBe('generate-operations')
8
+ expect(args.projectId).toBe('toptal')
9
+ })
10
+ })
@@ -0,0 +1,15 @@
1
+ const toArray = require('./to-array')
2
+
3
+ describe('toArray', () => {
4
+ it("converts a value into an array if it's not one", () => {
5
+ const asArray = toArray('hello')
6
+
7
+ expect(Array.isArray(asArray)).toBe(true)
8
+ })
9
+
10
+ it("returns the array as is if it's an array", () => {
11
+ const asArray = toArray(['hello', 'there'])
12
+
13
+ expect(Array.isArray(asArray)).toBe(true)
14
+ })
15
+ })