@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 +0 -0
- package/dist/cli.js.map +0 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.js +6 -29
- package/dist/index.js.map +1 -1
- package/dist/renderer/contentTypeRenderer.d.ts +4 -0
- package/dist/renderer/contentTypeRenderer.js +8 -0
- package/dist/renderer/contentTypeRenderer.js.map +1 -0
- package/dist/renderer/context.d.ts +4 -0
- package/dist/renderer/context.js +6 -0
- package/dist/renderer/context.js.map +1 -0
- package/dist/renderer/index.d.ts +4 -0
- package/dist/renderer/index.js +5 -0
- package/dist/renderer/index.js.map +1 -0
- package/dist/renderer/jsDocRenderer.d.ts +4 -0
- package/dist/renderer/jsDocRenderer.js +8 -0
- package/dist/renderer/jsDocRenderer.js.map +1 -0
- package/dist/renderer/localizedContentRenderer.d.ts +4 -0
- package/dist/renderer/localizedContentRenderer.js +8 -0
- package/dist/renderer/localizedContentRenderer.js.map +1 -0
- package/dist/renderer/typeGuardRenderer.d.ts +6 -0
- package/dist/renderer/typeGuardRenderer.js +32 -0
- package/dist/renderer/typeGuardRenderer.js.map +1 -0
- package/package.json +2 -2
- package/src/index.ts +7 -37
- package/src/renderer/contentTypeRenderer.ts +11 -0
- package/src/renderer/context.ts +6 -0
- package/src/renderer/index.ts +4 -0
- package/src/renderer/jsDocRenderer.ts +8 -0
- package/src/renderer/localizedContentRenderer.ts +11 -0
- package/src/renderer/typeGuardRenderer.ts +42 -0
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
|
|
5
|
-
import {
|
|
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
|
|
15
|
+
const renderers = [new DefaultContentTypeRenderer()];
|
|
39
16
|
if (options.localized) {
|
|
40
|
-
renderers.push(new
|
|
17
|
+
renderers.push(new LocalizedContentTypeRenderer());
|
|
41
18
|
}
|
|
42
19
|
if (options.jsdoc) {
|
|
43
|
-
renderers.push(new
|
|
20
|
+
renderers.push(new JsDocRenderer());
|
|
44
21
|
}
|
|
45
22
|
if (options.typeguard) {
|
|
46
|
-
renderers.push(new
|
|
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,
|
|
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,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,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,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,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,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.
|
|
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": "
|
|
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
|
|
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 '
|
|
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
|
|
35
|
+
const renderers: ContentTypeRenderer[] = [new DefaultContentTypeRenderer()];
|
|
66
36
|
if (options.localized) {
|
|
67
|
-
renderers.push(new
|
|
37
|
+
renderers.push(new LocalizedContentTypeRenderer());
|
|
68
38
|
}
|
|
69
39
|
|
|
70
40
|
if (options.jsdoc) {
|
|
71
|
-
renderers.push(new
|
|
41
|
+
renderers.push(new JsDocRenderer());
|
|
72
42
|
}
|
|
73
43
|
|
|
74
44
|
if (options.typeguard) {
|
|
75
|
-
renderers.push(new
|
|
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,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
|
+
}
|