@contember/graphql-client-tenant 2.2.0-alpha.3 → 2.2.0-alpha.6
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/dist/development/index.cjs +12 -0
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +12 -0
- package/dist/development/index.js.map +1 -1
- package/dist/development/src/generated/EnumInputMetadata.cjs +1 -0
- package/dist/development/src/generated/EnumInputMetadata.cjs.map +1 -1
- package/dist/development/src/generated/EnumInputMetadata.js +1 -0
- package/dist/development/src/generated/EnumInputMetadata.js.map +1 -1
- package/dist/development/src/generated/fetchers/ConfigFetcher.cjs +5 -0
- package/dist/development/src/generated/fetchers/ConfigFetcher.cjs.map +1 -1
- package/dist/development/src/generated/fetchers/ConfigFetcher.js +5 -0
- package/dist/development/src/generated/fetchers/ConfigFetcher.js.map +1 -1
- package/dist/development/src/generated/fetchers/ConfigPanelFetcher.cjs +21 -0
- package/dist/development/src/generated/fetchers/ConfigPanelFetcher.cjs.map +1 -0
- package/dist/development/src/generated/fetchers/ConfigPanelFetcher.js +21 -0
- package/dist/development/src/generated/fetchers/ConfigPanelFetcher.js.map +1 -0
- package/dist/development/src/generated/fetchers/EnablePersonErrorFetcher.cjs +21 -0
- package/dist/development/src/generated/fetchers/EnablePersonErrorFetcher.cjs.map +1 -0
- package/dist/development/src/generated/fetchers/EnablePersonErrorFetcher.js +21 -0
- package/dist/development/src/generated/fetchers/EnablePersonErrorFetcher.js.map +1 -0
- package/dist/development/src/generated/fetchers/EnablePersonResponseFetcher.cjs +26 -0
- package/dist/development/src/generated/fetchers/EnablePersonResponseFetcher.cjs.map +1 -0
- package/dist/development/src/generated/fetchers/EnablePersonResponseFetcher.js +26 -0
- package/dist/development/src/generated/fetchers/EnablePersonResponseFetcher.js.map +1 -0
- package/dist/development/src/generated/fetchers/IDPOptionsOutputFetcher.cjs +3 -2
- package/dist/development/src/generated/fetchers/IDPOptionsOutputFetcher.cjs.map +1 -1
- package/dist/development/src/generated/fetchers/IDPOptionsOutputFetcher.js +3 -2
- package/dist/development/src/generated/fetchers/IDPOptionsOutputFetcher.js.map +1 -1
- package/dist/development/src/generated/fetchers/IdentityGlobalPermissionsFetcher.cjs +10 -2
- package/dist/development/src/generated/fetchers/IdentityGlobalPermissionsFetcher.cjs.map +1 -1
- package/dist/development/src/generated/fetchers/IdentityGlobalPermissionsFetcher.js +10 -2
- package/dist/development/src/generated/fetchers/IdentityGlobalPermissionsFetcher.js.map +1 -1
- package/dist/development/src/generated/fetchers/MutationFetcher.cjs +7 -0
- package/dist/development/src/generated/fetchers/MutationFetcher.cjs.map +1 -1
- package/dist/development/src/generated/fetchers/MutationFetcher.js +7 -0
- package/dist/development/src/generated/fetchers/MutationFetcher.js.map +1 -1
- package/dist/development/src/generated/fetchers/PersonFetcher.cjs +8 -1
- package/dist/development/src/generated/fetchers/PersonFetcher.cjs.map +1 -1
- package/dist/development/src/generated/fetchers/PersonFetcher.js +8 -1
- package/dist/development/src/generated/fetchers/PersonFetcher.js.map +1 -1
- package/dist/development/src/generated/fetchers/ProjectFetcher.cjs +5 -0
- package/dist/development/src/generated/fetchers/ProjectFetcher.cjs.map +1 -1
- package/dist/development/src/generated/fetchers/ProjectFetcher.js +5 -0
- package/dist/development/src/generated/fetchers/ProjectFetcher.js.map +1 -1
- package/dist/development/src/generated/fetchers/ProjectPermissionsFetcher.cjs +27 -0
- package/dist/development/src/generated/fetchers/ProjectPermissionsFetcher.cjs.map +1 -0
- package/dist/development/src/generated/fetchers/ProjectPermissionsFetcher.js +27 -0
- package/dist/development/src/generated/fetchers/ProjectPermissionsFetcher.js.map +1 -0
- package/dist/production/index.cjs +12 -0
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +12 -0
- package/dist/production/index.js.map +1 -1
- package/dist/production/src/generated/EnumInputMetadata.cjs +1 -0
- package/dist/production/src/generated/EnumInputMetadata.cjs.map +1 -1
- package/dist/production/src/generated/EnumInputMetadata.js +1 -0
- package/dist/production/src/generated/EnumInputMetadata.js.map +1 -1
- package/dist/production/src/generated/fetchers/ConfigFetcher.cjs +5 -0
- package/dist/production/src/generated/fetchers/ConfigFetcher.cjs.map +1 -1
- package/dist/production/src/generated/fetchers/ConfigFetcher.js +5 -0
- package/dist/production/src/generated/fetchers/ConfigFetcher.js.map +1 -1
- package/dist/production/src/generated/fetchers/ConfigPanelFetcher.cjs +21 -0
- package/dist/production/src/generated/fetchers/ConfigPanelFetcher.cjs.map +1 -0
- package/dist/production/src/generated/fetchers/ConfigPanelFetcher.js +21 -0
- package/dist/production/src/generated/fetchers/ConfigPanelFetcher.js.map +1 -0
- package/dist/production/src/generated/fetchers/EnablePersonErrorFetcher.cjs +21 -0
- package/dist/production/src/generated/fetchers/EnablePersonErrorFetcher.cjs.map +1 -0
- package/dist/production/src/generated/fetchers/EnablePersonErrorFetcher.js +21 -0
- package/dist/production/src/generated/fetchers/EnablePersonErrorFetcher.js.map +1 -0
- package/dist/production/src/generated/fetchers/EnablePersonResponseFetcher.cjs +26 -0
- package/dist/production/src/generated/fetchers/EnablePersonResponseFetcher.cjs.map +1 -0
- package/dist/production/src/generated/fetchers/EnablePersonResponseFetcher.js +26 -0
- package/dist/production/src/generated/fetchers/EnablePersonResponseFetcher.js.map +1 -0
- package/dist/production/src/generated/fetchers/IDPOptionsOutputFetcher.cjs +3 -2
- package/dist/production/src/generated/fetchers/IDPOptionsOutputFetcher.cjs.map +1 -1
- package/dist/production/src/generated/fetchers/IDPOptionsOutputFetcher.js +3 -2
- package/dist/production/src/generated/fetchers/IDPOptionsOutputFetcher.js.map +1 -1
- package/dist/production/src/generated/fetchers/IdentityGlobalPermissionsFetcher.cjs +10 -2
- package/dist/production/src/generated/fetchers/IdentityGlobalPermissionsFetcher.cjs.map +1 -1
- package/dist/production/src/generated/fetchers/IdentityGlobalPermissionsFetcher.js +10 -2
- package/dist/production/src/generated/fetchers/IdentityGlobalPermissionsFetcher.js.map +1 -1
- package/dist/production/src/generated/fetchers/MutationFetcher.cjs +7 -0
- package/dist/production/src/generated/fetchers/MutationFetcher.cjs.map +1 -1
- package/dist/production/src/generated/fetchers/MutationFetcher.js +7 -0
- package/dist/production/src/generated/fetchers/MutationFetcher.js.map +1 -1
- package/dist/production/src/generated/fetchers/PersonFetcher.cjs +8 -1
- package/dist/production/src/generated/fetchers/PersonFetcher.cjs.map +1 -1
- package/dist/production/src/generated/fetchers/PersonFetcher.js +8 -1
- package/dist/production/src/generated/fetchers/PersonFetcher.js.map +1 -1
- package/dist/production/src/generated/fetchers/ProjectFetcher.cjs +5 -0
- package/dist/production/src/generated/fetchers/ProjectFetcher.cjs.map +1 -1
- package/dist/production/src/generated/fetchers/ProjectFetcher.js +5 -0
- package/dist/production/src/generated/fetchers/ProjectFetcher.js.map +1 -1
- package/dist/production/src/generated/fetchers/ProjectPermissionsFetcher.cjs +27 -0
- package/dist/production/src/generated/fetchers/ProjectPermissionsFetcher.cjs.map +1 -0
- package/dist/production/src/generated/fetchers/ProjectPermissionsFetcher.js +27 -0
- package/dist/production/src/generated/fetchers/ProjectPermissionsFetcher.js.map +1 -0
- package/dist/types/generated/Async.d.ts.map +1 -1
- package/dist/types/generated/EnumInputMetadata.d.ts.map +1 -1
- package/dist/types/generated/enums/DisconnectIDPErrorCode.d.ts +1 -1
- package/dist/types/generated/enums/DisconnectIDPErrorCode.d.ts.map +1 -1
- package/dist/types/generated/enums/EnablePersonErrorCode.d.ts +2 -0
- package/dist/types/generated/enums/EnablePersonErrorCode.d.ts.map +1 -0
- package/dist/types/generated/enums/InitSignInPasswordlessErrorCode.d.ts +1 -1
- package/dist/types/generated/enums/InitSignInPasswordlessErrorCode.d.ts.map +1 -1
- package/dist/types/generated/enums/SignInErrorCode.d.ts +1 -1
- package/dist/types/generated/enums/SignInErrorCode.d.ts.map +1 -1
- package/dist/types/generated/enums/SignInPasswordlessErrorCode.d.ts +1 -1
- package/dist/types/generated/enums/SignInPasswordlessErrorCode.d.ts.map +1 -1
- package/dist/types/generated/enums/index.d.ts +1 -0
- package/dist/types/generated/enums/index.d.ts.map +1 -1
- package/dist/types/generated/fetchers/ConfigFetcher.d.ts +14 -0
- package/dist/types/generated/fetchers/ConfigFetcher.d.ts.map +1 -1
- package/dist/types/generated/fetchers/ConfigPanelFetcher.d.ts +49 -0
- package/dist/types/generated/fetchers/ConfigPanelFetcher.d.ts.map +1 -0
- package/dist/types/generated/fetchers/EnablePersonErrorFetcher.d.ts +50 -0
- package/dist/types/generated/fetchers/EnablePersonErrorFetcher.d.ts.map +1 -0
- package/dist/types/generated/fetchers/EnablePersonResponseFetcher.d.ts +40 -0
- package/dist/types/generated/fetchers/EnablePersonResponseFetcher.d.ts.map +1 -0
- package/dist/types/generated/fetchers/IDPOptionsOutputFetcher.d.ts +17 -0
- package/dist/types/generated/fetchers/IDPOptionsOutputFetcher.d.ts.map +1 -1
- package/dist/types/generated/fetchers/IdentityGlobalPermissionsFetcher.d.ts +136 -0
- package/dist/types/generated/fetchers/IdentityGlobalPermissionsFetcher.d.ts.map +1 -1
- package/dist/types/generated/fetchers/MutationFetcher.d.ts +19 -0
- package/dist/types/generated/fetchers/MutationFetcher.d.ts.map +1 -1
- package/dist/types/generated/fetchers/PersonFetcher.d.ts +45 -0
- package/dist/types/generated/fetchers/PersonFetcher.d.ts.map +1 -1
- package/dist/types/generated/fetchers/ProjectFetcher.d.ts +14 -0
- package/dist/types/generated/fetchers/ProjectFetcher.d.ts.map +1 -1
- package/dist/types/generated/fetchers/ProjectPermissionsFetcher.d.ts +151 -0
- package/dist/types/generated/fetchers/ProjectPermissionsFetcher.d.ts.map +1 -0
- package/dist/types/generated/fetchers/index.d.ts +8 -0
- package/dist/types/generated/fetchers/index.d.ts.map +1 -1
- package/dist/types/generated/inputs/AuthLogFilter.d.ts +8 -8
- package/dist/types/generated/inputs/AuthLogFilter.d.ts.map +1 -1
- package/dist/types/generated/inputs/AuthPolicyInput.d.ts +6 -6
- package/dist/types/generated/inputs/AuthPolicyInput.d.ts.map +1 -1
- package/dist/types/generated/inputs/ConfigCaptchaInput.d.ts +4 -4
- package/dist/types/generated/inputs/ConfigCaptchaInput.d.ts.map +1 -1
- package/dist/types/generated/inputs/ConfigCaptchaProtectInput.d.ts +4 -4
- package/dist/types/generated/inputs/ConfigCaptchaProtectInput.d.ts.map +1 -1
- package/dist/types/generated/inputs/ConfigEmailChangeInput.d.ts +1 -1
- package/dist/types/generated/inputs/ConfigEmailChangeInput.d.ts.map +1 -1
- package/dist/types/generated/inputs/ConfigInput.d.ts +9 -7
- package/dist/types/generated/inputs/ConfigInput.d.ts.map +1 -1
- package/dist/types/generated/inputs/ConfigLoginAnomalyDetectionInput.d.ts +4 -4
- package/dist/types/generated/inputs/ConfigLoginAnomalyDetectionInput.d.ts.map +1 -1
- package/dist/types/generated/inputs/ConfigLoginInput.d.ts +9 -9
- package/dist/types/generated/inputs/ConfigLoginInput.d.ts.map +1 -1
- package/dist/types/generated/inputs/ConfigPanelInput.d.ts +5 -0
- package/dist/types/generated/inputs/ConfigPanelInput.d.ts.map +1 -0
- package/dist/types/generated/inputs/ConfigPasswordInput.d.ts +8 -8
- package/dist/types/generated/inputs/ConfigPasswordInput.d.ts.map +1 -1
- package/dist/types/generated/inputs/ConfigPasswordlessInput.d.ts +3 -3
- package/dist/types/generated/inputs/ConfigPasswordlessInput.d.ts.map +1 -1
- package/dist/types/generated/inputs/ConfigRateLimitWindowInput.d.ts +2 -2
- package/dist/types/generated/inputs/ConfigRateLimitWindowInput.d.ts.map +1 -1
- package/dist/types/generated/inputs/ConfigRateLimitsInput.d.ts +6 -6
- package/dist/types/generated/inputs/ConfigRateLimitsInput.d.ts.map +1 -1
- package/dist/types/generated/inputs/ConfigSignupInput.d.ts +1 -1
- package/dist/types/generated/inputs/ConfigSignupInput.d.ts.map +1 -1
- package/dist/types/generated/inputs/CreateApiKeyOptions.d.ts +1 -1
- package/dist/types/generated/inputs/CreateApiKeyOptions.d.ts.map +1 -1
- package/dist/types/generated/inputs/CreateProjectOptions.d.ts +2 -2
- package/dist/types/generated/inputs/CreateProjectOptions.d.ts.map +1 -1
- package/dist/types/generated/inputs/CreateResetPasswordRequestOptions.d.ts +2 -2
- package/dist/types/generated/inputs/CreateResetPasswordRequestOptions.d.ts.map +1 -1
- package/dist/types/generated/inputs/EmailVerificationOptions.d.ts +2 -2
- package/dist/types/generated/inputs/EmailVerificationOptions.d.ts.map +1 -1
- package/dist/types/generated/inputs/IDPOptions.d.ts +6 -5
- package/dist/types/generated/inputs/IDPOptions.d.ts.map +1 -1
- package/dist/types/generated/inputs/InitSignInPasswordlessOptions.d.ts +2 -2
- package/dist/types/generated/inputs/InitSignInPasswordlessOptions.d.ts.map +1 -1
- package/dist/types/generated/inputs/InviteOptions.d.ts +2 -2
- package/dist/types/generated/inputs/InviteOptions.d.ts.map +1 -1
- package/dist/types/generated/inputs/MailTemplate.d.ts +4 -4
- package/dist/types/generated/inputs/MailTemplate.d.ts.map +1 -1
- package/dist/types/generated/inputs/MailTemplateIdentifier.d.ts +2 -2
- package/dist/types/generated/inputs/MailTemplateIdentifier.d.ts.map +1 -1
- package/dist/types/generated/inputs/PersonsFilter.d.ts +3 -3
- package/dist/types/generated/inputs/PersonsFilter.d.ts.map +1 -1
- package/dist/types/generated/inputs/ProjectMembersFilter.d.ts +4 -4
- package/dist/types/generated/inputs/ProjectMembersFilter.d.ts.map +1 -1
- package/dist/types/generated/inputs/ProjectMembersInput.d.ts +3 -3
- package/dist/types/generated/inputs/ProjectMembersInput.d.ts.map +1 -1
- package/dist/types/generated/inputs/SignInOptions.d.ts +1 -1
- package/dist/types/generated/inputs/SignInOptions.d.ts.map +1 -1
- package/dist/types/generated/inputs/UnmanagedInviteOptions.d.ts +2 -2
- package/dist/types/generated/inputs/UnmanagedInviteOptions.d.ts.map +1 -1
- package/dist/types/generated/inputs/index.d.ts +1 -0
- package/dist/types/generated/inputs/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/tests/cases/unit/inputNullability.test.ts +162 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/graphql-client-tenant",
|
|
3
|
-
"version": "2.2.0-alpha.
|
|
3
|
+
"version": "2.2.0-alpha.6",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"graphql-ts-client-api": "^3.1.17"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@contember/engine-tenant-api": "2.2.0-alpha.
|
|
33
|
+
"@contember/engine-tenant-api": "2.2.0-alpha.6",
|
|
34
34
|
"@graphql-tools/schema": "^10.0.31",
|
|
35
35
|
"@types/node": "^24.12.0",
|
|
36
36
|
"graphql": "^16.13.1",
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { expect, test } from 'bun:test'
|
|
2
|
+
import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises'
|
|
3
|
+
import { tmpdir } from 'node:os'
|
|
4
|
+
import { join } from 'node:path'
|
|
5
|
+
import { AsyncGenerator } from 'graphql-ts-client-codegen'
|
|
6
|
+
import { buildSchema } from 'graphql'
|
|
7
|
+
|
|
8
|
+
const repositoryRoot = join(import.meta.dir, '../../../../..')
|
|
9
|
+
|
|
10
|
+
const schema = buildSchema(`
|
|
11
|
+
input NestedInput {
|
|
12
|
+
requiredValue: String!
|
|
13
|
+
optionalValue: String
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
input TestInput {
|
|
17
|
+
requiredScalar: String!
|
|
18
|
+
nullableScalar: String
|
|
19
|
+
nullableNested: NestedInput
|
|
20
|
+
nullableList: [String]
|
|
21
|
+
requiredNullableElements: [String]!
|
|
22
|
+
nullableNonNullElements: [String!]
|
|
23
|
+
nonNullList: [String!]!
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
type Query {
|
|
27
|
+
value(input: TestInput): String
|
|
28
|
+
}
|
|
29
|
+
`)
|
|
30
|
+
|
|
31
|
+
const typeCheck = async (directory: string, name: string, source: string): Promise<{ readonly exitCode: number; readonly output: string }> => {
|
|
32
|
+
const sourcePath = join(directory, `${name}.ts`)
|
|
33
|
+
await writeFile(sourcePath, source)
|
|
34
|
+
const compiler = Bun.spawn({
|
|
35
|
+
cmd: [
|
|
36
|
+
join(repositoryRoot, 'node_modules/.bin/tsc'),
|
|
37
|
+
'--ignoreConfig',
|
|
38
|
+
'--module',
|
|
39
|
+
'preserve',
|
|
40
|
+
'--moduleResolution',
|
|
41
|
+
'bundler',
|
|
42
|
+
'--noEmit',
|
|
43
|
+
'--skipLibCheck',
|
|
44
|
+
'--strict',
|
|
45
|
+
sourcePath,
|
|
46
|
+
],
|
|
47
|
+
stderr: 'pipe',
|
|
48
|
+
stdout: 'pipe',
|
|
49
|
+
})
|
|
50
|
+
const [exitCode, stderr, stdout] = await Promise.all([
|
|
51
|
+
compiler.exited,
|
|
52
|
+
new Response(compiler.stderr).text(),
|
|
53
|
+
new Response(compiler.stdout).text(),
|
|
54
|
+
])
|
|
55
|
+
return { exitCode, output: `${stdout}${stderr}` }
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
test('generated input types preserve GraphQL nullability', async () => {
|
|
59
|
+
const directory = await mkdtemp(join(tmpdir(), 'contember-codegen-nullability-'))
|
|
60
|
+
const generatedDirectory = join(directory, 'generated')
|
|
61
|
+
|
|
62
|
+
try {
|
|
63
|
+
const generator = new AsyncGenerator({
|
|
64
|
+
schemaLoader: async () => schema,
|
|
65
|
+
targetDir: generatedDirectory,
|
|
66
|
+
})
|
|
67
|
+
await generator.generate()
|
|
68
|
+
|
|
69
|
+
const input = await readFile(join(generatedDirectory, 'inputs/TestInput.ts'), 'utf8')
|
|
70
|
+
expect(input).toContain('readonly requiredScalar: string;')
|
|
71
|
+
expect(input).toContain('readonly nullableScalar?: string | null;')
|
|
72
|
+
expect(input).toContain('readonly nullableNested?: NestedInput | null;')
|
|
73
|
+
expect(input).toContain('readonly nullableList?: ReadonlyArray<string | null> | null;')
|
|
74
|
+
expect(input).toContain('readonly requiredNullableElements: ReadonlyArray<string | null>;')
|
|
75
|
+
expect(input).toContain('readonly nullableNonNullElements?: ReadonlyArray<string> | null;')
|
|
76
|
+
expect(input).toContain('readonly nonNullList: ReadonlyArray<string>;')
|
|
77
|
+
|
|
78
|
+
const validResult = await typeCheck(
|
|
79
|
+
directory,
|
|
80
|
+
'valid',
|
|
81
|
+
`import type { TestInput } from './generated/inputs/TestInput'
|
|
82
|
+
|
|
83
|
+
const minimal: TestInput = { requiredScalar: 'value', requiredNullableElements: [], nonNullList: [] }
|
|
84
|
+
const explicitNulls: TestInput = {
|
|
85
|
+
requiredScalar: 'value',
|
|
86
|
+
nullableScalar: null,
|
|
87
|
+
nullableNested: null,
|
|
88
|
+
nullableList: null,
|
|
89
|
+
requiredNullableElements: [],
|
|
90
|
+
nullableNonNullElements: null,
|
|
91
|
+
nonNullList: [],
|
|
92
|
+
}
|
|
93
|
+
const nullableListElement: TestInput = {
|
|
94
|
+
requiredScalar: 'value',
|
|
95
|
+
nullableList: ['value', null],
|
|
96
|
+
requiredNullableElements: ['value', null],
|
|
97
|
+
nullableNonNullElements: ['value'],
|
|
98
|
+
nonNullList: ['value'],
|
|
99
|
+
}
|
|
100
|
+
const nestedWithOptionalOmitted: TestInput = {
|
|
101
|
+
requiredScalar: 'value',
|
|
102
|
+
nullableNested: { requiredValue: 'value' },
|
|
103
|
+
requiredNullableElements: [],
|
|
104
|
+
nonNullList: [],
|
|
105
|
+
}
|
|
106
|
+
const nestedWithExplicitNull: TestInput = {
|
|
107
|
+
requiredScalar: 'value',
|
|
108
|
+
nullableNested: { requiredValue: 'value', optionalValue: null },
|
|
109
|
+
requiredNullableElements: [],
|
|
110
|
+
nonNullList: [],
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
void minimal
|
|
114
|
+
void explicitNulls
|
|
115
|
+
void nullableListElement
|
|
116
|
+
void nestedWithOptionalOmitted
|
|
117
|
+
void nestedWithExplicitNull
|
|
118
|
+
`,
|
|
119
|
+
)
|
|
120
|
+
expect(validResult).toEqual({ exitCode: 0, output: '' })
|
|
121
|
+
|
|
122
|
+
const invalidResult = await typeCheck(
|
|
123
|
+
directory,
|
|
124
|
+
'invalid',
|
|
125
|
+
`import type { TestInput } from './generated/inputs/TestInput'
|
|
126
|
+
|
|
127
|
+
export const missingRequiredScalar: TestInput = { requiredNullableElements: [], nonNullList: [] }
|
|
128
|
+
export const missingRequiredList: TestInput = { requiredScalar: 'value', nonNullList: [] }
|
|
129
|
+
export const nullRequiredScalar: TestInput = { requiredScalar: null, requiredNullableElements: [], nonNullList: [] }
|
|
130
|
+
export const nullRequiredList: TestInput = { requiredScalar: 'value', requiredNullableElements: null, nonNullList: [] }
|
|
131
|
+
export const nullNonNullList: TestInput = { requiredScalar: 'value', requiredNullableElements: [], nonNullList: null }
|
|
132
|
+
export const nullNonNullElement: TestInput = { requiredScalar: 'value', requiredNullableElements: [], nonNullList: [null] }
|
|
133
|
+
export const nullNullableNonNullElement: TestInput = {
|
|
134
|
+
requiredScalar: 'value',
|
|
135
|
+
requiredNullableElements: [],
|
|
136
|
+
nullableNonNullElements: [null],
|
|
137
|
+
nonNullList: [],
|
|
138
|
+
}
|
|
139
|
+
export const nestedMissingRequiredValue: TestInput = {
|
|
140
|
+
requiredScalar: 'value',
|
|
141
|
+
nullableNested: {},
|
|
142
|
+
requiredNullableElements: [],
|
|
143
|
+
nonNullList: [],
|
|
144
|
+
}
|
|
145
|
+
export const nestedNullRequiredValue: TestInput = {
|
|
146
|
+
requiredScalar: 'value',
|
|
147
|
+
nullableNested: { requiredValue: null },
|
|
148
|
+
requiredNullableElements: [],
|
|
149
|
+
nonNullList: [],
|
|
150
|
+
}
|
|
151
|
+
`,
|
|
152
|
+
)
|
|
153
|
+
expect(invalidResult.exitCode).not.toBe(0)
|
|
154
|
+
expect(invalidResult.output.match(/error TS/g)).toHaveLength(9)
|
|
155
|
+
expect(invalidResult.output).toContain("Property 'requiredScalar' is missing")
|
|
156
|
+
expect(invalidResult.output).toContain("Property 'requiredNullableElements' is missing")
|
|
157
|
+
expect(invalidResult.output).toContain("Property 'requiredValue' is missing")
|
|
158
|
+
expect(invalidResult.output.match(/Type 'null' is not assignable/g)).toHaveLength(6)
|
|
159
|
+
} finally {
|
|
160
|
+
await rm(directory, { force: true, recursive: true })
|
|
161
|
+
}
|
|
162
|
+
}, 30000)
|