From d1f52b9f681ccf9ea260c3d0f6cc23996466fcd3 Mon Sep 17 00:00:00 2001 From: Mikkel Date: Fri, 1 Jun 2018 15:39:38 +0200 Subject: [PATCH 1/3] Fix json tag defaults --- .../__tests__/__snapshots__/index-test.ts.snap | 15 +++++++++++++++ .../src/__tests__/index-test.ts | 11 +++++++++++ packages/language-typescript/src/index.ts | 4 +++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/language-typescript/src/__tests__/__snapshots__/index-test.ts.snap b/packages/language-typescript/src/__tests__/__snapshots__/index-test.ts.snap index 257997c..3b7f676 100644 --- a/packages/language-typescript/src/__tests__/__snapshots__/index-test.ts.snap +++ b/packages/language-typescript/src/__tests__/__snapshots__/index-test.ts.snap @@ -9,6 +9,14 @@ exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR with a description */" `; +exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR with a description with 1 json tag 1`] = ` +" + /** + * This is a thing +* @default {\\"myDefault\\":\\"Value\\"} + */" +`; + exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR with a description with 1 tag 1`] = ` " /** @@ -32,6 +40,13 @@ exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR without a descripti */" `; +exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR without a description with 1 json tag 1`] = ` +" + /** + * @default {\\"myDefault\\":\\"Value\\"} + */" +`; + exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR without a description with 1 tag 1`] = ` " /** diff --git a/packages/language-typescript/src/__tests__/index-test.ts b/packages/language-typescript/src/__tests__/index-test.ts index 145fee9..f61e269 100644 --- a/packages/language-typescript/src/__tests__/index-test.ts +++ b/packages/language-typescript/src/__tests__/index-test.ts @@ -119,6 +119,12 @@ describe('language-typescript', () => { tags: [{ tag: 'default', value: 'myDefaultValue' }] })).toMatchSnapshot(); }); + it('with 1 json tag', () => { + expect(DEFAULT_DOCUMENTATION_GENERATOR({ + description: 'This is a thing', + tags: [{ tag: 'default', value: { myDefault: 'Value' } }] + })).toMatchSnapshot(); + }); it('with >1 tag', () => { expect(DEFAULT_DOCUMENTATION_GENERATOR({ description: 'This is a thing', @@ -141,6 +147,11 @@ describe('language-typescript', () => { tags: [{ tag: 'default', value: 'myDefaultValue' }] })).toMatchSnapshot(); }); + it('with 1 json tag', () => { + expect(DEFAULT_DOCUMENTATION_GENERATOR({ + tags: [{ tag: 'default', value: { myDefault: 'Value' } }] + })).toMatchSnapshot(); + }); it('with >1 tag', () => { expect(DEFAULT_DOCUMENTATION_GENERATOR({ tags: [ diff --git a/packages/language-typescript/src/index.ts b/packages/language-typescript/src/index.ts index 8bc9db5..3846c9f 100644 --- a/packages/language-typescript/src/index.ts +++ b/packages/language-typescript/src/index.ts @@ -87,9 +87,11 @@ ${interfaces} const fixDescriptionDocblock: (description?: string) => string | undefined = description => description ? description.replace(/\n/g, '\n* ') : description; +const _printValue = value => typeof value === 'object' ? JSON.stringify(value) : value; + export const DEFAULT_DOCUMENTATION_GENERATOR: GenerateDocumentation = ({ description, tags = [] }) => (description || tags.length) ? ` /** - * ${filterAndJoinArray([fixDescriptionDocblock(description), ...tags.map(({ tag, value }) => `@${tag} ${value}`)], '\n* ')} + * ${filterAndJoinArray([fixDescriptionDocblock(description), ...tags.map(({ tag, value }) => `@${tag} ${_printValue(value)}`)], '\n* ')} */` : ''; export const DEFAULT_OPTIONS: IFromQueryOptions = { From 7ae71b8f173a4377bf3272be8d0296434ad1372b Mon Sep 17 00:00:00 2001 From: Mikkel Date: Fri, 1 Jun 2018 22:16:22 +0200 Subject: [PATCH 2/3] Fix default spacing and default documentation generator --- .../__tests__/__snapshots__/index-test.ts.snap | 12 ++++++------ packages/language-typescript/src/index.ts | 18 +++++++++++++----- packages/util/src/parser.ts | 2 +- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/packages/language-typescript/src/__tests__/__snapshots__/index-test.ts.snap b/packages/language-typescript/src/__tests__/__snapshots__/index-test.ts.snap index 3b7f676..27c6824 100644 --- a/packages/language-typescript/src/__tests__/__snapshots__/index-test.ts.snap +++ b/packages/language-typescript/src/__tests__/__snapshots__/index-test.ts.snap @@ -4,8 +4,8 @@ exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR with a description " /** * This is a thing -* @default myDefaultValue -* @deprecated Use the other field instead + * @default myDefaultValue + * @deprecated Use the other field instead */" `; @@ -13,7 +13,7 @@ exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR with a description " /** * This is a thing -* @default {\\"myDefault\\":\\"Value\\"} + * @default {\\"myDefault\\":\\"Value\\"} */" `; @@ -21,7 +21,7 @@ exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR with a description " /** * This is a thing -* @default myDefaultValue + * @default myDefaultValue */" `; @@ -36,7 +36,7 @@ exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR without a descripti " /** * @default myDefaultValue -* @deprecated Use the other field instead + * @deprecated Use the other field instead */" `; @@ -61,7 +61,7 @@ exports[`language-typescript DEFAULT_ENUM_FORMATTER w/ deprecated value 1`] = ` /** * value A -* @deprecated Bad + * @deprecated Bad */ a = 'a', diff --git a/packages/language-typescript/src/index.ts b/packages/language-typescript/src/index.ts index 3846c9f..5507581 100644 --- a/packages/language-typescript/src/index.ts +++ b/packages/language-typescript/src/index.ts @@ -87,12 +87,20 @@ ${interfaces} const fixDescriptionDocblock: (description?: string) => string | undefined = description => description ? description.replace(/\n/g, '\n* ') : description; -const _printValue = value => typeof value === 'object' ? JSON.stringify(value) : value; - -export const DEFAULT_DOCUMENTATION_GENERATOR: GenerateDocumentation = ({ description, tags = [] }) => (description || tags.length) ? ` +export const DEFAULT_DOCUMENTATION_GENERATOR: GenerateDocumentation = ({ description, tags = [] }) => { + if (!description && !tags.length) { + return ''; + } + const arr: Array = [ + fixDescriptionDocblock(description), + ...tags.map(({ tag, value }) => + `@${tag} ${typeof value === 'object' ? JSON.stringify(value) : value}`) + ]; + return ` /** - * ${filterAndJoinArray([fixDescriptionDocblock(description), ...tags.map(({ tag, value }) => `@${tag} ${_printValue(value)}`)], '\n* ')} - */` : ''; + * ${filterAndJoinArray(arr, '\n * ')} + */`; +}; export const DEFAULT_OPTIONS: IFromQueryOptions = { wrapList: DEFAULT_WRAP_LIST, diff --git a/packages/util/src/parser.ts b/packages/util/src/parser.ts index 231daa5..7ab84f3 100644 --- a/packages/util/src/parser.ts +++ b/packages/util/src/parser.ts @@ -7,7 +7,7 @@ import { export interface IJSDocTag { tag: string; - value: string; + value: string | Object; } export interface IFieldDocumentation { From 5d20eff7f57920562cfafef82aa92fe11118ef6c Mon Sep 17 00:00:00 2001 From: Mikkel Date: Sat, 2 Jun 2018 21:35:34 +0200 Subject: [PATCH 3/3] Always stringify tag values --- __tests__/__snapshots__/from-schema-test.ts.snap | 8 ++++---- .../__tests__/__snapshots__/index-test.ts.snap | 16 ++++++++-------- packages/language-typescript/src/index.ts | 3 +-- packages/util/src/parser.ts | 2 +- 4 files changed, 14 insertions(+), 15 deletions(-) diff --git a/__tests__/__snapshots__/from-schema-test.ts.snap b/__tests__/__snapshots__/from-schema-test.ts.snap index fca6c7f..a2aa096 100644 --- a/__tests__/__snapshots__/from-schema-test.ts.snap +++ b/__tests__/__snapshots__/from-schema-test.ts.snap @@ -11241,7 +11241,7 @@ humanOrDroid: HumanOrDroid | null; getCharacters: Array; /** - * @deprecated Field No Longer Available. + * @deprecated \\"Field No Longer Available.\\" */ anOldField: string | null; } @@ -11280,7 +11280,7 @@ friends: Array | null; appearsIn: Array | null; /** - * @deprecated Field No Longer Available. + * @deprecated \\"Field No Longer Available.\\" */ anOldField: string | null; nonNullArr: Array; @@ -11303,7 +11303,7 @@ appearsIn: Array | null; homePlanet: string | null; /** - * @deprecated Field No Longer Available. + * @deprecated \\"Field No Longer Available.\\" */ anOldField: string | null; nonNullArr: Array; @@ -11321,7 +11321,7 @@ primaryFunction: string | null; primaryFunctionNonNull: string; /** - * @deprecated Field No Longer Available. + * @deprecated \\"Field No Longer Available.\\" */ anOldField: string | null; nonNullArr: Array; diff --git a/packages/language-typescript/src/__tests__/__snapshots__/index-test.ts.snap b/packages/language-typescript/src/__tests__/__snapshots__/index-test.ts.snap index 27c6824..5a0cba7 100644 --- a/packages/language-typescript/src/__tests__/__snapshots__/index-test.ts.snap +++ b/packages/language-typescript/src/__tests__/__snapshots__/index-test.ts.snap @@ -4,8 +4,8 @@ exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR with a description " /** * This is a thing - * @default myDefaultValue - * @deprecated Use the other field instead + * @default \\"myDefaultValue\\" + * @deprecated \\"Use the other field instead\\" */" `; @@ -21,7 +21,7 @@ exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR with a description " /** * This is a thing - * @default myDefaultValue + * @default \\"myDefaultValue\\" */" `; @@ -35,8 +35,8 @@ exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR with a description exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR without a description with >1 tag 1`] = ` " /** - * @default myDefaultValue - * @deprecated Use the other field instead + * @default \\"myDefaultValue\\" + * @deprecated \\"Use the other field instead\\" */" `; @@ -50,7 +50,7 @@ exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR without a descripti exports[`language-typescript DEFAULT_DOCUMENTATION_GENERATOR without a description with 1 tag 1`] = ` " /** - * @default myDefaultValue + * @default \\"myDefaultValue\\" */" `; @@ -61,12 +61,12 @@ exports[`language-typescript DEFAULT_ENUM_FORMATTER w/ deprecated value 1`] = ` /** * value A - * @deprecated Bad + * @deprecated \\"Bad\\" */ a = 'a', /** - * @deprecated Bad + * @deprecated \\"Bad\\" */ b = 'b', diff --git a/packages/language-typescript/src/index.ts b/packages/language-typescript/src/index.ts index 5507581..7fcafe8 100644 --- a/packages/language-typescript/src/index.ts +++ b/packages/language-typescript/src/index.ts @@ -93,8 +93,7 @@ export const DEFAULT_DOCUMENTATION_GENERATOR: GenerateDocumentation = ({ descrip } const arr: Array = [ fixDescriptionDocblock(description), - ...tags.map(({ tag, value }) => - `@${tag} ${typeof value === 'object' ? JSON.stringify(value) : value}`) + ...tags.map(({ tag, value }) => `@${tag} ${JSON.stringify(value)}`) ]; return ` /** diff --git a/packages/util/src/parser.ts b/packages/util/src/parser.ts index 7ab84f3..0e6313c 100644 --- a/packages/util/src/parser.ts +++ b/packages/util/src/parser.ts @@ -7,7 +7,7 @@ import { export interface IJSDocTag { tag: string; - value: string | Object; + value: string | object; } export interface IFieldDocumentation {