diff --git a/package-lock.json b/package-lock.json index 3347c68b..bc9e5fa4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "contentstack-cli-tsgen", - "version": "2.1.6", + "version": "2.1.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack-cli-tsgen", - "version": "2.1.6", + "version": "2.1.7", "license": "MIT", "dependencies": { "@contentstack/cli-command": "^1.2.9", diff --git a/package.json b/package.json index 4b3d351a..fca5bc38 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "contentstack-cli-tsgen", "description": "Generate TypeScript typings from a Stack.", - "version": "2.1.6", + "version": "2.1.7", "author": "Michael Davis", "bugs": "https://github.com/Contentstack-Solutions/contentstack-cli-tsgen/issues", "dependencies": { diff --git a/src/lib/stack/schema.ts b/src/lib/stack/schema.ts index 0fa18a4f..e02e8a46 100644 --- a/src/lib/stack/schema.ts +++ b/src/lib/stack/schema.ts @@ -27,6 +27,7 @@ export type Block = { export type GlobalField = { reference_to: string; schema: Schema; + _version?: number } & FieldOptions; export type ReferenceField = { diff --git a/src/lib/tsgen/factory.ts b/src/lib/tsgen/factory.ts index e794d39b..75929ee4 100644 --- a/src/lib/tsgen/factory.ts +++ b/src/lib/tsgen/factory.ts @@ -228,6 +228,8 @@ export default function (userOptions: TSGenOptions) { options.docgen.interface(contentType.description), define_interface(contentType), '{', + ['/**', "Version", '*/'].join(' '), + [`version: `,contentType._version,';'].join(' '), visit_fields(contentType.schema), '}', ] diff --git a/tests/tsgen/boolean.test.ts b/tests/tsgen/boolean.test.ts index 985a32f3..a49c0fc3 100644 --- a/tests/tsgen/boolean.test.ts +++ b/tests/tsgen/boolean.test.ts @@ -24,6 +24,8 @@ describe('builtin boolean field', () => { expect(result.definition).toMatchInlineSnapshot(` "export interface IBoolean { + /** Version */ + version: 2 ; title: string; boolean?: boolean; }" diff --git a/tests/tsgen/defaults.test.ts b/tests/tsgen/defaults.test.ts index 6fdaf27c..0fc5ba1b 100644 --- a/tests/tsgen/defaults.test.ts +++ b/tests/tsgen/defaults.test.ts @@ -17,6 +17,8 @@ describe('default single content block', () => { expect(result.definition).toMatchInlineSnapshot(` "export interface IMetadataSingleContentBlock { + /** Version */ + version: 2 ; title: string; }" `) @@ -41,6 +43,8 @@ describe('default single webpage', () => { expect(result.definition).toMatchInlineSnapshot(` "export interface IMetadataSingleWebpage { + /** Version */ + version: 2 ; title: string; url: string; }" diff --git a/tests/tsgen/global.fields.test.ts b/tests/tsgen/global.fields.test.ts index c4a36325..4e78e7a7 100644 --- a/tests/tsgen/global.fields.test.ts +++ b/tests/tsgen/global.fields.test.ts @@ -24,6 +24,8 @@ describe('global fields', () => { expect(globalField.definition).toMatchInlineSnapshot(` "export interface ISeo { + /** Version */ + version: ; keywords?: string; description?: string; }" @@ -34,6 +36,8 @@ describe('global fields', () => { expect(result.definition).toMatchInlineSnapshot(` "export interface IGlobalFields { + /** Version */ + version: 2 ; title: string; seo?: ISeo; }" diff --git a/tests/tsgen/group.test.ts b/tests/tsgen/group.test.ts index 52ca4801..116591d2 100644 --- a/tests/tsgen/group.test.ts +++ b/tests/tsgen/group.test.ts @@ -23,6 +23,8 @@ describe('group', () => { expect(result.definition).toMatchInlineSnapshot(` "export interface Group { + /** Version */ + version: 3 ; title: string; multiple_group_max_limit?: [{ number?: number; diff --git a/tests/tsgen/isodate.test.ts b/tests/tsgen/isodate.test.ts index d66b0390..1ef533f4 100644 --- a/tests/tsgen/isodate.test.ts +++ b/tests/tsgen/isodate.test.ts @@ -24,6 +24,8 @@ describe('builtin isodate field', () => { expect(result.definition).toMatchInlineSnapshot(` "export interface Isodate { + /** Version */ + version: 2 ; title: string; date?: string; date_required: string; diff --git a/tests/tsgen/jsdoc.test.ts b/tests/tsgen/jsdoc.test.ts index ca3f0292..044bcd00 100644 --- a/tests/tsgen/jsdoc.test.ts +++ b/tests/tsgen/jsdoc.test.ts @@ -15,6 +15,8 @@ describe('jsdoc', () => { "/** Content Type Description */ export interface Jsdoc { + /** Version */ + version: 3 ; /** Name */ title: string; /** Age */ diff --git a/tests/tsgen/modular.blocks.test.ts b/tests/tsgen/modular.blocks.test.ts index 4f2d3760..636286d4 100644 --- a/tests/tsgen/modular.blocks.test.ts +++ b/tests/tsgen/modular.blocks.test.ts @@ -20,6 +20,8 @@ describe('modular blocks', () => { expect(result.definition).toMatchInlineSnapshot(` "export interface ModularBlocks { + /** Version */ + version: 2 ; title: string; url: string; modular_blocks?: ({string_block: {single_line?: string; diff --git a/tests/tsgen/number.test.ts b/tests/tsgen/number.test.ts index 09d9dbd9..ffa01149 100644 --- a/tests/tsgen/number.test.ts +++ b/tests/tsgen/number.test.ts @@ -21,6 +21,8 @@ describe('builtin number field', () => { expect(result.definition).toMatchInlineSnapshot(` "export interface Number { + /** Version */ + version: 2 ; title: string; url: string; number?: number; diff --git a/tests/tsgen/options.test.ts b/tests/tsgen/options.test.ts index 51a5b9c4..4ff9df0a 100644 --- a/tests/tsgen/options.test.ts +++ b/tests/tsgen/options.test.ts @@ -14,6 +14,8 @@ describe('all options', () => { expect(result.definition).toMatchInlineSnapshot(` "export interface Options { + /** Version */ + version: 4 ; title: string; url: string; single_line_textbox_not_required?: string; diff --git a/tests/tsgen/references.test.ts b/tests/tsgen/references.test.ts index 77698a2e..0d70a5d5 100644 --- a/tests/tsgen/references.test.ts +++ b/tests/tsgen/references.test.ts @@ -25,6 +25,8 @@ describe('references', () => { expect(result.definition).toMatchInlineSnapshot(` "export interface IReferenceParent { + /** Version */ + version: 5 ; title: string; url: string; single_reference: (IReferenceChild)[]; diff --git a/tests/tsgen/select.test.ts b/tests/tsgen/select.test.ts index d5402a46..4894c4c4 100644 --- a/tests/tsgen/select.test.ts +++ b/tests/tsgen/select.test.ts @@ -20,6 +20,8 @@ describe('select (dropdown)', () => { expect(result.definition).toMatchInlineSnapshot(` "export interface Select { + /** Version */ + version: 5 ; title: string; select_single_value?: (\\"Option 1\\" | \\"Option 2\\" | \\"Option 3\\"); select_single_value_required: (\\"Test 1\\" | \\"Test 2\\" | \\"Test 3\\"); diff --git a/tests/tsgen/string.test.ts b/tests/tsgen/string.test.ts index 5d02b6c9..16ff2c13 100644 --- a/tests/tsgen/string.test.ts +++ b/tests/tsgen/string.test.ts @@ -21,6 +21,8 @@ describe('builtin string fields', () => { expect(result.definition).toMatchInlineSnapshot(` "export interface BuiltinStrings { + /** Version */ + version: 4 ; title: string; single_line?: string; multi_line?: string;