@toptal/davinci-graphql-codegen 0.1.2-alpha-feature-comm-745-monolith-support.39 → 0.2.0
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 +17 -0
- package/dist-package/package.json +37 -0
- package/package.json +4 -5
- package/src/services/get-monolith-schema-path.js +4 -4
- package/src/services/get-schema-path.test.js +61 -0
- package/src/utils/detect-schema-source.test.js +29 -0
- package/src/utils/parse-gs-uri.test.js +12 -0
- package/src/utils/process-args.test.js +10 -0
- package/src/utils/to-array.test.js +15 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @toptal/davinci-graphql-codegen
|
|
2
2
|
|
|
3
|
+
## 0.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#1184](https://github.com/toptal/davinci/pull/1184) [`7dd8b681`](https://github.com/toptal/davinci/commit/7dd8b68177d595538dd8d5cff5c0654d92d68659) Thanks [@alexvcasillas](https://github.com/alexvcasillas)! - - Support for Monolith projects that don't rely on yarn workspaces and packages.
|
|
8
|
+
- Allow searching for codegen.json in a custom directory.
|
|
9
|
+
- Allow configuring the generated operations file extension and defaults to `.ts`.
|
|
10
|
+
|
|
11
|
+
* [#1184](https://github.com/toptal/davinci/pull/1184) [`7dd8b681`](https://github.com/toptal/davinci/commit/7dd8b68177d595538dd8d5cff5c0654d92d68659) Thanks [@alexvcasillas](https://github.com/alexvcasillas)! - - Allow searching for custom codegen.json configuration file.
|
|
12
|
+
- Move `checkIfMonorepo` from engine to monorepo package.
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Updated dependencies [[`7dd8b681`](https://github.com/toptal/davinci/commit/7dd8b68177d595538dd8d5cff5c0654d92d68659)]:
|
|
17
|
+
- @toptal/davinci-cli-shared@1.5.1
|
|
18
|
+
- @toptal/davinci-monorepo@6.4.2
|
|
19
|
+
|
|
3
20
|
## 0.1.1
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@toptal/davinci-graphql-codegen",
|
|
3
|
+
"version": "0.2.0",
|
|
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": "^5.16.1",
|
|
23
|
+
"@graphql-codegen/add": "^3.1.0",
|
|
24
|
+
"@graphql-codegen/cli": "^2.2.0",
|
|
25
|
+
"@graphql-codegen/introspection": "^2.1.0",
|
|
26
|
+
"@graphql-codegen/near-operation-file-preset": "^2.2.8",
|
|
27
|
+
"@graphql-codegen/typed-document-node": "^2.2.7",
|
|
28
|
+
"@graphql-codegen/typescript": "^2.2.2",
|
|
29
|
+
"@graphql-codegen/typescript-operations": "^2.1.4",
|
|
30
|
+
"@graphql-codegen/typescript-resolvers": "^2.2.1",
|
|
31
|
+
"@graphql-typed-document-node/core": "^3.1.0",
|
|
32
|
+
"@toptal/davinci-cli-shared": "^1.5.1",
|
|
33
|
+
"@toptal/davinci-monorepo": "6.4.2",
|
|
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.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Codegen",
|
|
5
5
|
"author": "Toptal",
|
|
6
6
|
"license": "ISC",
|
|
@@ -29,10 +29,9 @@
|
|
|
29
29
|
"@graphql-codegen/typescript-operations": "^2.1.4",
|
|
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.5.1
|
|
33
|
-
"@toptal/davinci-monorepo": "6.4.2
|
|
32
|
+
"@toptal/davinci-cli-shared": "^1.5.1",
|
|
33
|
+
"@toptal/davinci-monorepo": "6.4.2",
|
|
34
34
|
"chalk": "^4.1.2",
|
|
35
35
|
"graphql": "^15.7.1"
|
|
36
|
-
}
|
|
37
|
-
"gitHead": "090116c4add42ab28ee748f29af64ad63f2a70d0"
|
|
36
|
+
}
|
|
38
37
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
const getRelativeFilePath = require('../utils/get-relative-file-path')
|
|
2
2
|
|
|
3
3
|
const getMonolithSchemaPath = schemaPath => {
|
|
4
|
-
const
|
|
4
|
+
const schemaPathResolution = getRelativeFilePath(
|
|
5
|
+
`${schemaPath}/schema.graphql`
|
|
6
|
+
)
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return { target, schemaPath, schemaPathResolution }
|
|
8
|
+
return { target: schemaPath, schemaPath, schemaPathResolution }
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
module.exports = getMonolithSchemaPath
|
|
@@ -0,0 +1,61 @@
|
|
|
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 } = getSchemaPath(
|
|
38
|
+
monorepoSchema
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
expect(target).toBe('talent')
|
|
42
|
+
expect(schemaPath).toBe('@toptal/modularity-template-graphql')
|
|
43
|
+
expect(schemaPathResolution).toBe(
|
|
44
|
+
'home/users/alexvcasillas/toptal/libs/graphql/schema.graphql'
|
|
45
|
+
)
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
it('returns target, schemaPath and schemaPathResolution for monolith', () => {
|
|
49
|
+
checkIfMonorepo.mockReturnValue(false)
|
|
50
|
+
|
|
51
|
+
const { target, schemaPath, schemaPathResolution } = getSchemaPath(
|
|
52
|
+
monolithSchema
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
expect(target).toBe('src/modules/graphql')
|
|
56
|
+
expect(schemaPath).toBe('src/modules/graphql')
|
|
57
|
+
expect(schemaPathResolution).toBe(
|
|
58
|
+
'home/users/alexvcasillas/toptal/screening-wizard/src/modules/graphql/schema.graphql'
|
|
59
|
+
)
|
|
60
|
+
})
|
|
61
|
+
})
|
|
@@ -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
|
+
})
|