@jungvonmatt/contentful-typings 1.12.5 → 1.12.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/cli.d.ts CHANGED
File without changes
package/dist/cli.js.map CHANGED
File without changes
package/dist/index.d.ts CHANGED
File without changes
package/dist/index.js CHANGED
@@ -1,31 +1,8 @@
1
1
  import { getConfig } from '@jungvonmatt/contentful-ssg/lib/config';
2
2
  import { getEnvironment, pagedGet } from '@jungvonmatt/contentful-ssg/lib/contentful';
3
3
  import { askMissing } from '@jungvonmatt/contentful-ssg/lib/ui';
4
- import camelcase from 'camelcase';
5
- import { CFDefinitionsBuilder, createDefaultContext, DefaultContentTypeRenderer, JsDocRenderer, LocalizedContentTypeRenderer, TypeGuardRenderer, } from 'cf-content-types-generator';
6
- const moduleName = (name) => `${camelcase(name, { pascalCase: true })}`;
7
- const moduleFieldsName = (name) => `${moduleName(name)}Fields`;
8
- const context = { ...createDefaultContext(), moduleName, moduleFieldsName };
9
- class CustomTypeGuardRenderer extends TypeGuardRenderer {
10
- createContext() {
11
- return context;
12
- }
13
- }
14
- class CustomJsDocRenderer extends JsDocRenderer {
15
- createContext() {
16
- return context;
17
- }
18
- }
19
- class CustomLocalizedContentTypeRenderer extends LocalizedContentTypeRenderer {
20
- createContext() {
21
- return context;
22
- }
23
- }
24
- class CustomContentTypeRenderer extends DefaultContentTypeRenderer {
25
- createContext() {
26
- return context;
27
- }
28
- }
4
+ import { CFDefinitionsBuilder } from 'cf-content-types-generator';
5
+ import { DefaultContentTypeRenderer, JsDocRenderer, LocalizedContentTypeRenderer, TypeGuardRenderer, } from './renderer/index.js';
29
6
  export const generateTypings = async (options = {}) => {
30
7
  const contentfulConfig = (await askMissing(await getConfig({
31
8
  previewAccessToken: '-',
@@ -35,15 +12,15 @@ export const generateTypings = async (options = {}) => {
35
12
  const { items: contentTypes } = await pagedGet(client, {
36
13
  method: 'getContentTypes',
37
14
  });
38
- const renderers = [new CustomContentTypeRenderer()];
15
+ const renderers = [new DefaultContentTypeRenderer()];
39
16
  if (options.localized) {
40
- renderers.push(new CustomLocalizedContentTypeRenderer());
17
+ renderers.push(new LocalizedContentTypeRenderer());
41
18
  }
42
19
  if (options.jsdoc) {
43
- renderers.push(new CustomJsDocRenderer());
20
+ renderers.push(new JsDocRenderer());
44
21
  }
45
22
  if (options.typeguard) {
46
- renderers.push(new CustomTypeGuardRenderer());
23
+ renderers.push(new TypeGuardRenderer());
47
24
  }
48
25
  const builder = new CFDefinitionsBuilder(renderers);
49
26
  for (const model of contentTypes) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,oBAAoB,EAEpB,oBAAoB,EACpB,0BAA0B,EAC1B,aAAa,EACb,4BAA4B,EAE5B,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAQpC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAChF,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvE,MAAM,OAAO,GAAkB,EAAE,GAAG,oBAAoB,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AAE3F,MAAM,uBAAwB,SAAQ,iBAAiB;IAC9C,aAAa;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,MAAM,mBAAoB,SAAQ,aAAa;IACtC,aAAa;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AACD,MAAM,kCAAmC,SAAQ,4BAA4B;IACpE,aAAa;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,MAAM,yBAA0B,SAAQ,0BAA0B;IACzD,aAAa;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,UAAmB,EAAE,EAAE,EAAE;IAC7D,MAAM,gBAAgB,GAAqB,CAAC,MAAM,UAAU,CAC1D,MAAM,SAAS,CAAC;QACd,kBAAkB,EAAE,GAAG;QACvB,WAAW,EAAE,GAAG;KACjB,CAAC,CACH,CAAqB,CAAC;IAEvB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAEtD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,QAAQ,CAAc,MAAM,EAAE;QAClE,MAAM,EAAE,iBAAiB;KAC1B,CAAC,CAAC;IAEH,MAAM,SAAS,GAA0B,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,SAAS,EAAE;QACrB,SAAS,CAAC,IAAI,CAAC,IAAI,kCAAkC,EAAE,CAAC,CAAC;KAC1D;IAED,IAAI,OAAO,CAAC,KAAK,EAAE;QACjB,SAAS,CAAC,IAAI,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;KAC3C;IAED,IAAI,OAAO,CAAC,SAAS,EAAE;QACrB,SAAS,CAAC,IAAI,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;KAC/C;IAED,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEpD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE;QAChC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KAC3B;IAED,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAuB,MAAM,4BAA4B,CAAC;AAEvF,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAQ7B,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,UAAmB,EAAE,EAAE,EAAE;IAC7D,MAAM,gBAAgB,GAAqB,CAAC,MAAM,UAAU,CAC1D,MAAM,SAAS,CAAC;QACd,kBAAkB,EAAE,GAAG;QACvB,WAAW,EAAE,GAAG;KACjB,CAAC,CACH,CAAqB,CAAC;IAEvB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAEtD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,QAAQ,CAAc,MAAM,EAAE;QAClE,MAAM,EAAE,iBAAiB;KAC1B,CAAC,CAAC;IAEH,MAAM,SAAS,GAA0B,CAAC,IAAI,0BAA0B,EAAE,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,SAAS,EAAE;QACrB,SAAS,CAAC,IAAI,CAAC,IAAI,4BAA4B,EAAE,CAAC,CAAC;KACpD;IAED,IAAI,OAAO,CAAC,KAAK,EAAE;QACjB,SAAS,CAAC,IAAI,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;KACrC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE;QACrB,SAAS,CAAC,IAAI,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;KACzC;IAED,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEpD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE;QAChC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KAC3B;IAED,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { DefaultContentTypeRenderer as DefaultContentTypeRendererOriginal, RenderContext } from 'cf-content-types-generator';
2
+ export declare class DefaultContentTypeRenderer extends DefaultContentTypeRendererOriginal {
3
+ createContext(): RenderContext;
4
+ }
@@ -0,0 +1,8 @@
1
+ import { DefaultContentTypeRenderer as DefaultContentTypeRendererOriginal, } from 'cf-content-types-generator';
2
+ import { context } from './context.js';
3
+ export class DefaultContentTypeRenderer extends DefaultContentTypeRendererOriginal {
4
+ createContext() {
5
+ return context;
6
+ }
7
+ }
8
+ //# sourceMappingURL=contentTypeRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentTypeRenderer.js","sourceRoot":"","sources":["../../src/renderer/contentTypeRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,IAAI,kCAAkC,GAEjE,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,OAAO,0BAA2B,SAAQ,kCAAkC;IACzE,aAAa;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import { RenderContext } from 'cf-content-types-generator';
2
+ export declare const moduleName: (name: string) => string;
3
+ export declare const moduleFieldsName: (name: string) => string;
4
+ export declare const context: RenderContext;
@@ -0,0 +1,6 @@
1
+ import camelcase from 'camelcase';
2
+ import { createDefaultContext } from 'cf-content-types-generator';
3
+ export const moduleName = (name) => `${camelcase(name, { pascalCase: true })}`;
4
+ export const moduleFieldsName = (name) => `${moduleName(name)}Fields`;
5
+ export const context = { ...createDefaultContext(), moduleName, moduleFieldsName };
6
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/renderer/context.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAiB,MAAM,4BAA4B,CAAC;AAEjF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACvF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9E,MAAM,CAAC,MAAM,OAAO,GAAkB,EAAE,GAAG,oBAAoB,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { DefaultContentTypeRenderer } from './contentTypeRenderer.js';
2
+ export { JsDocRenderer } from './jsDocRenderer.js';
3
+ export { TypeGuardRenderer } from './typeGuardRenderer.js';
4
+ export { LocalizedContentTypeRenderer } from './localizedContentRenderer.js';
@@ -0,0 +1,5 @@
1
+ export { DefaultContentTypeRenderer } from './contentTypeRenderer.js';
2
+ export { JsDocRenderer } from './jsDocRenderer.js';
3
+ export { TypeGuardRenderer } from './typeGuardRenderer.js';
4
+ export { LocalizedContentTypeRenderer } from './localizedContentRenderer.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { JsDocRenderer as JsDocRendererOriginal, RenderContext } from 'cf-content-types-generator';
2
+ export declare class JsDocRenderer extends JsDocRendererOriginal {
3
+ createContext(): RenderContext;
4
+ }
@@ -0,0 +1,8 @@
1
+ import { JsDocRenderer as JsDocRendererOriginal } from 'cf-content-types-generator';
2
+ import { context } from './context.js';
3
+ export class JsDocRenderer extends JsDocRendererOriginal {
4
+ createContext() {
5
+ return context;
6
+ }
7
+ }
8
+ //# sourceMappingURL=jsDocRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsDocRenderer.js","sourceRoot":"","sources":["../../src/renderer/jsDocRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,qBAAqB,EAAiB,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,OAAO,aAAc,SAAQ,qBAAqB;IAC/C,aAAa;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import { LocalizedContentTypeRenderer as LocalizedContentTypeRendererOriginal, RenderContext } from 'cf-content-types-generator';
2
+ export declare class LocalizedContentTypeRenderer extends LocalizedContentTypeRendererOriginal {
3
+ createContext(): RenderContext;
4
+ }
@@ -0,0 +1,8 @@
1
+ import { LocalizedContentTypeRenderer as LocalizedContentTypeRendererOriginal, } from 'cf-content-types-generator';
2
+ import { context } from './context.js';
3
+ export class LocalizedContentTypeRenderer extends LocalizedContentTypeRendererOriginal {
4
+ createContext() {
5
+ return context;
6
+ }
7
+ }
8
+ //# sourceMappingURL=localizedContentRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localizedContentRenderer.js","sourceRoot":"","sources":["../../src/renderer/localizedContentRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,IAAI,oCAAoC,GAErE,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,OAAO,4BAA6B,SAAQ,oCAAoC;IAC7E,aAAa;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import { TypeGuardRenderer as TypeGuardRendererOriginal, RenderContext, CFContentType } from 'cf-content-types-generator';
2
+ import { SourceFile } from 'ts-morph';
3
+ export declare class TypeGuardRenderer extends TypeGuardRendererOriginal {
4
+ createContext(): RenderContext;
5
+ render: (contentType: CFContentType, file: SourceFile) => void;
6
+ }
@@ -0,0 +1,32 @@
1
+ import { TypeGuardRenderer as TypeGuardRendererOriginal, } from 'cf-content-types-generator';
2
+ import { context, moduleName } from './context.js';
3
+ export class TypeGuardRenderer extends TypeGuardRendererOriginal {
4
+ createContext() {
5
+ return context;
6
+ }
7
+ render = (contentType, file) => {
8
+ const entryInterfaceName = moduleName(contentType.sys.id);
9
+ file.addImportDeclaration({
10
+ moduleSpecifier: `./WithContentTypeLink`,
11
+ namedImports: ['WithContentTypeLink'],
12
+ isTypeOnly: true,
13
+ });
14
+ file.addFunction({
15
+ isExported: true,
16
+ name: `is${entryInterfaceName}`,
17
+ returnType: `entry is ${entryInterfaceName}`,
18
+ parameters: [
19
+ {
20
+ name: 'entry',
21
+ type: 'WithContentTypeLink',
22
+ },
23
+ ],
24
+ statements: `return entry.sys.contentType.sys.id === '${contentType.sys.id}'`,
25
+ });
26
+ file.organizeImports({
27
+ ensureNewLineAtEndOfFile: true,
28
+ });
29
+ file.formatText();
30
+ };
31
+ }
32
+ //# sourceMappingURL=typeGuardRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeGuardRenderer.js","sourceRoot":"","sources":["../../src/renderer/typeGuardRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,IAAI,yBAAyB,GAG/C,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,OAAO,iBAAkB,SAAQ,yBAAyB;IACvD,aAAa;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,MAAM,GAAG,CAAC,WAA0B,EAAE,IAAgB,EAAQ,EAAE;QACrE,MAAM,kBAAkB,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAE1D,IAAI,CAAC,oBAAoB,CAAC;YACxB,eAAe,EAAE,uBAAuB;YACxC,YAAY,EAAE,CAAC,qBAAqB,CAAC;YACrC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC;YACf,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,KAAK,kBAAkB,EAAE;YAC/B,UAAU,EAAE,YAAY,kBAAkB,EAAE;YAC5C,UAAU,EAAE;gBACV;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,qBAAqB;iBAC5B;aACF;YACD,UAAU,EAAE,4CAA4C,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG;SAC9E,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC;YACnB,wBAAwB,EAAE,IAAI;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC,CAAC;CACH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jungvonmatt/contentful-typings",
3
- "version": "1.12.5",
3
+ "version": "1.12.6",
4
4
  "main": "./dist/index.js",
5
5
  "type": "module",
6
6
  "exports": "./dist/index.js",
@@ -52,5 +52,5 @@
52
52
  "devDependencies": {
53
53
  "ts-morph": "^17.0.1"
54
54
  },
55
- "gitHead": "bf645c2d97d053eca730874e4931f86328903e1e"
55
+ "gitHead": "02e07b8a12bed456b6609d4774d7b9bd6c4c0b98"
56
56
  }
package/src/index.ts CHANGED
@@ -3,17 +3,14 @@ import { ContentfulConfig, ContentType } from '@jungvonmatt/contentful-ssg';
3
3
  import { getConfig } from '@jungvonmatt/contentful-ssg/lib/config';
4
4
  import { getEnvironment, pagedGet } from '@jungvonmatt/contentful-ssg/lib/contentful';
5
5
  import { askMissing } from '@jungvonmatt/contentful-ssg/lib/ui';
6
- import camelcase from 'camelcase';
6
+ import { CFDefinitionsBuilder, ContentTypeRenderer } from 'cf-content-types-generator';
7
+
7
8
  import {
8
- CFDefinitionsBuilder,
9
- ContentTypeRenderer,
10
- createDefaultContext,
11
9
  DefaultContentTypeRenderer,
12
10
  JsDocRenderer,
13
11
  LocalizedContentTypeRenderer,
14
- RenderContext,
15
12
  TypeGuardRenderer,
16
- } from 'cf-content-types-generator';
13
+ } from './renderer/index.js';
17
14
 
18
15
  type Options = {
19
16
  localized?: boolean;
@@ -21,33 +18,6 @@ type Options = {
21
18
  typeguard?: boolean;
22
19
  };
23
20
 
24
- const moduleName = (name: string) => `${camelcase(name, { pascalCase: true })}`;
25
- const moduleFieldsName = (name: string) => `${moduleName(name)}Fields`;
26
- const context: RenderContext = { ...createDefaultContext(), moduleName, moduleFieldsName };
27
-
28
- class CustomTypeGuardRenderer extends TypeGuardRenderer {
29
- public createContext(): RenderContext {
30
- return context;
31
- }
32
- }
33
-
34
- class CustomJsDocRenderer extends JsDocRenderer {
35
- public createContext(): RenderContext {
36
- return context;
37
- }
38
- }
39
- class CustomLocalizedContentTypeRenderer extends LocalizedContentTypeRenderer {
40
- public createContext(): RenderContext {
41
- return context;
42
- }
43
- }
44
-
45
- class CustomContentTypeRenderer extends DefaultContentTypeRenderer {
46
- public createContext(): RenderContext {
47
- return context;
48
- }
49
- }
50
-
51
21
  export const generateTypings = async (options: Options = {}) => {
52
22
  const contentfulConfig: ContentfulConfig = (await askMissing(
53
23
  await getConfig({
@@ -62,17 +32,17 @@ export const generateTypings = async (options: Options = {}) => {
62
32
  method: 'getContentTypes',
63
33
  });
64
34
 
65
- const renderers: ContentTypeRenderer[] = [new CustomContentTypeRenderer()];
35
+ const renderers: ContentTypeRenderer[] = [new DefaultContentTypeRenderer()];
66
36
  if (options.localized) {
67
- renderers.push(new CustomLocalizedContentTypeRenderer());
37
+ renderers.push(new LocalizedContentTypeRenderer());
68
38
  }
69
39
 
70
40
  if (options.jsdoc) {
71
- renderers.push(new CustomJsDocRenderer());
41
+ renderers.push(new JsDocRenderer());
72
42
  }
73
43
 
74
44
  if (options.typeguard) {
75
- renderers.push(new CustomTypeGuardRenderer());
45
+ renderers.push(new TypeGuardRenderer());
76
46
  }
77
47
 
78
48
  const builder = new CFDefinitionsBuilder(renderers);
@@ -0,0 +1,11 @@
1
+ import {
2
+ DefaultContentTypeRenderer as DefaultContentTypeRendererOriginal,
3
+ RenderContext,
4
+ } from 'cf-content-types-generator';
5
+ import { context } from './context.js';
6
+
7
+ export class DefaultContentTypeRenderer extends DefaultContentTypeRendererOriginal {
8
+ public createContext(): RenderContext {
9
+ return context;
10
+ }
11
+ }
@@ -0,0 +1,6 @@
1
+ import camelcase from 'camelcase';
2
+ import { createDefaultContext, RenderContext } from 'cf-content-types-generator';
3
+
4
+ export const moduleName = (name: string) => `${camelcase(name, { pascalCase: true })}`;
5
+ export const moduleFieldsName = (name: string) => `${moduleName(name)}Fields`;
6
+ export const context: RenderContext = { ...createDefaultContext(), moduleName, moduleFieldsName };
@@ -0,0 +1,4 @@
1
+ export { DefaultContentTypeRenderer } from './contentTypeRenderer.js';
2
+ export { JsDocRenderer } from './jsDocRenderer.js';
3
+ export { TypeGuardRenderer } from './typeGuardRenderer.js';
4
+ export { LocalizedContentTypeRenderer } from './localizedContentRenderer.js';
@@ -0,0 +1,8 @@
1
+ import { JsDocRenderer as JsDocRendererOriginal, RenderContext } from 'cf-content-types-generator';
2
+ import { context } from './context.js';
3
+
4
+ export class JsDocRenderer extends JsDocRendererOriginal {
5
+ public createContext(): RenderContext {
6
+ return context;
7
+ }
8
+ }
@@ -0,0 +1,11 @@
1
+ import {
2
+ LocalizedContentTypeRenderer as LocalizedContentTypeRendererOriginal,
3
+ RenderContext,
4
+ } from 'cf-content-types-generator';
5
+ import { context } from './context.js';
6
+
7
+ export class LocalizedContentTypeRenderer extends LocalizedContentTypeRendererOriginal {
8
+ public createContext(): RenderContext {
9
+ return context;
10
+ }
11
+ }
@@ -0,0 +1,42 @@
1
+ import {
2
+ TypeGuardRenderer as TypeGuardRendererOriginal,
3
+ RenderContext,
4
+ CFContentType,
5
+ } from 'cf-content-types-generator';
6
+ import { SourceFile } from 'ts-morph';
7
+ import { context, moduleName } from './context.js';
8
+
9
+ export class TypeGuardRenderer extends TypeGuardRendererOriginal {
10
+ public createContext(): RenderContext {
11
+ return context;
12
+ }
13
+
14
+ public render = (contentType: CFContentType, file: SourceFile): void => {
15
+ const entryInterfaceName = moduleName(contentType.sys.id);
16
+
17
+ file.addImportDeclaration({
18
+ moduleSpecifier: `./WithContentTypeLink`,
19
+ namedImports: ['WithContentTypeLink'],
20
+ isTypeOnly: true,
21
+ });
22
+
23
+ file.addFunction({
24
+ isExported: true,
25
+ name: `is${entryInterfaceName}`,
26
+ returnType: `entry is ${entryInterfaceName}`,
27
+ parameters: [
28
+ {
29
+ name: 'entry',
30
+ type: 'WithContentTypeLink',
31
+ },
32
+ ],
33
+ statements: `return entry.sys.contentType.sys.id === '${contentType.sys.id}'`,
34
+ });
35
+
36
+ file.organizeImports({
37
+ ensureNewLineAtEndOfFile: true,
38
+ });
39
+
40
+ file.formatText();
41
+ };
42
+ }