@webiny/api-headless-cms 6.4.12-beta.5 → 6.5.0-beta.0
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/crud/contentEntry/entryDataValidation.d.ts +1 -1
- package/crud/contentEntry/entryDataValidation.js +33 -18
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry.crud.js +12 -39
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/defaultFields.js +3 -2
- package/crud/contentModel/defaultFields.js.map +1 -1
- package/crud/contentModel/validate/endingAllowed.js +1 -1
- package/crud/contentModel/validate/endingAllowed.js.map +1 -1
- package/crud/contentModel/validate/pluralApiName.js +1 -1
- package/crud/contentModel/validate/pluralApiName.js.map +1 -1
- package/crud/contentModel/validate/singularApiName.js +1 -1
- package/crud/contentModel/validate/singularApiName.js.map +1 -1
- package/crud/contentModel/validation.js +2 -2
- package/crud/contentModel/validation.js.map +1 -1
- package/domain/contentModel/schemas.d.ts +4 -0
- package/domain/contentModel/schemas.js +5 -2
- package/domain/contentModel/schemas.js.map +1 -1
- package/domain/contentModel/validation/endingAllowed.js +1 -1
- package/domain/contentModel/validation/endingAllowed.js.map +1 -1
- package/domain/contentModel/validation/pluralApiName.js +1 -1
- package/domain/contentModel/validation/pluralApiName.js.map +1 -1
- package/domain/contentModel/validation/singularApiName.js +1 -1
- package/domain/contentModel/validation/singularApiName.js.map +1 -1
- package/export/crud/exporting.js +2 -2
- package/export/crud/exporting.js.map +1 -1
- package/export/crud/imports/importGroups.js +2 -1
- package/export/crud/imports/importGroups.js.map +1 -1
- package/export/crud/imports/validateModels.js +1 -1
- package/export/crud/imports/validateModels.js.map +1 -1
- package/exports/api/cms/model.d.ts +4 -1
- package/exports/api/cms/model.js +2 -0
- package/extension.d.ts +3 -0
- package/extension.js +19 -0
- package/extension.js.map +1 -0
- package/features/contentEntry/ContentEntriesFeature.js +2 -0
- package/features/contentEntry/ContentEntriesFeature.js.map +1 -1
- package/features/contentEntry/CreateEntry/CreateEntryUseCase.js +1 -2
- package/features/contentEntry/CreateEntry/CreateEntryUseCase.js.map +1 -1
- package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js.map +1 -1
- package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionRepository.js +1 -0
- package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionRepository.js.map +1 -1
- package/features/contentEntry/GetSingletonEntry/GetSingletonEntryUseCase.js +1 -3
- package/features/contentEntry/GetSingletonEntry/GetSingletonEntryUseCase.js.map +1 -1
- package/features/contentEntry/PublishEntry/PublishEntryUseCase.js.map +1 -1
- package/features/contentEntry/UpdateRevision/UpdateRevisionRepository.d.ts +14 -0
- package/features/contentEntry/UpdateRevision/UpdateRevisionRepository.js +34 -0
- package/features/contentEntry/UpdateRevision/UpdateRevisionRepository.js.map +1 -0
- package/features/contentEntry/UpdateRevision/abstractions.d.ts +10 -0
- package/features/contentEntry/UpdateRevision/abstractions.js +5 -0
- package/features/contentEntry/UpdateRevision/abstractions.js.map +1 -0
- package/features/contentEntry/UpdateRevision/feature.d.ts +4 -0
- package/features/contentEntry/UpdateRevision/feature.js +11 -0
- package/features/contentEntry/UpdateRevision/feature.js.map +1 -0
- package/features/contentEntry/UpdateRevision/index.d.ts +1 -0
- package/features/contentEntry/UpdateRevision/index.js +1 -0
- package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.d.ts +2 -2
- package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js +2 -2
- package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js.map +1 -1
- package/features/contentEntry/ensureItemIds.d.ts +13 -0
- package/features/contentEntry/ensureItemIds.js +22 -0
- package/features/contentEntry/ensureItemIds.js.map +1 -0
- package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.d.ts +3 -1
- package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.js +9 -3
- package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.js.map +1 -1
- package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.d.ts +3 -3
- package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.js +10 -6
- package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.js.map +1 -1
- package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.d.ts +3 -1
- package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.js +9 -3
- package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.js.map +1 -1
- package/features/contentEntry/entryDataFactories/expiresAt.js +2 -2
- package/features/contentEntry/entryDataFactories/expiresAt.js.map +1 -1
- package/features/contentModel/ComponentMapGenerator/ComponentMapGenerator.d.ts +14 -0
- package/features/contentModel/ComponentMapGenerator/ComponentMapGenerator.js +32 -0
- package/features/contentModel/ComponentMapGenerator/ComponentMapGenerator.js.map +1 -0
- package/features/contentModel/ComponentMapGenerator/abstractions.d.ts +8 -0
- package/features/contentModel/ComponentMapGenerator/abstractions.js +5 -0
- package/features/contentModel/ComponentMapGenerator/abstractions.js.map +1 -0
- package/features/contentModel/ComponentMapGenerator/feature.d.ts +4 -0
- package/features/contentModel/ComponentMapGenerator/feature.js +11 -0
- package/features/contentModel/ComponentMapGenerator/feature.js.map +1 -0
- package/features/contentModel/ComponentMapGenerator/index.d.ts +2 -0
- package/features/contentModel/ComponentMapGenerator/index.js +2 -0
- package/features/contentModel/ContentModelFeature.js +6 -0
- package/features/contentModel/ContentModelFeature.js.map +1 -1
- package/features/contentModel/CreateModel/CreateModelRepository.js +2 -1
- package/features/contentModel/CreateModel/CreateModelRepository.js.map +1 -1
- package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js +2 -1
- package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js.map +1 -1
- package/features/contentModel/RefModelsGenerator/RefModelsGenerator.d.ts +19 -0
- package/features/contentModel/RefModelsGenerator/RefModelsGenerator.js +56 -0
- package/features/contentModel/RefModelsGenerator/RefModelsGenerator.js.map +1 -0
- package/features/contentModel/RefModelsGenerator/abstractions.d.ts +11 -0
- package/features/contentModel/RefModelsGenerator/abstractions.js +5 -0
- package/features/contentModel/RefModelsGenerator/abstractions.js.map +1 -0
- package/features/contentModel/RefModelsGenerator/feature.d.ts +4 -0
- package/features/contentModel/RefModelsGenerator/feature.js +11 -0
- package/features/contentModel/RefModelsGenerator/feature.js.map +1 -0
- package/features/contentModel/RefModelsGenerator/index.d.ts +2 -0
- package/features/contentModel/RefModelsGenerator/index.js +2 -0
- package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.d.ts +16 -0
- package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.js +54 -0
- package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.js.map +1 -0
- package/features/contentModel/ValuesSelectionGenerator/abstractions.d.ts +8 -0
- package/features/contentModel/ValuesSelectionGenerator/abstractions.js +5 -0
- package/features/contentModel/ValuesSelectionGenerator/abstractions.js.map +1 -0
- package/features/contentModel/ValuesSelectionGenerator/feature.d.ts +4 -0
- package/features/contentModel/ValuesSelectionGenerator/feature.js +11 -0
- package/features/contentModel/ValuesSelectionGenerator/feature.js.map +1 -0
- package/features/contentModel/ValuesSelectionGenerator/index.d.ts +1 -0
- package/features/contentModel/ValuesSelectionGenerator/index.js +1 -0
- package/features/graphql/feature.js +2 -0
- package/features/graphql/feature.js.map +1 -1
- package/features/graphql/fields/base/AssetToGraphQL.d.ts +26 -0
- package/features/graphql/fields/base/AssetToGraphQL.js +148 -0
- package/features/graphql/fields/base/AssetToGraphQL.js.map +1 -0
- package/features/graphql/fields/base/DynamicZoneToGraphQL.js +12 -2
- package/features/graphql/fields/base/DynamicZoneToGraphQL.js.map +1 -1
- package/features/graphql/fields/base/ObjectToGraphQL.js +8 -5
- package/features/graphql/fields/base/ObjectToGraphQL.js.map +1 -1
- package/features/modelBuilder/abstractions.d.ts +9 -0
- package/features/modelBuilder/abstractions.js.map +1 -1
- package/features/modelBuilder/feature.js +2 -0
- package/features/modelBuilder/feature.js.map +1 -1
- package/features/modelBuilder/fields/AssetFieldType.d.ts +20 -0
- package/features/modelBuilder/fields/AssetFieldType.js +46 -0
- package/features/modelBuilder/fields/AssetFieldType.js.map +1 -0
- package/features/modelBuilder/fields/DataFieldBuilder.d.ts +62 -18
- package/features/modelBuilder/fields/DataFieldBuilder.js +8 -0
- package/features/modelBuilder/fields/DataFieldBuilder.js.map +1 -1
- package/features/modelBuilder/fields/DynamicZoneFieldType.d.ts +1 -0
- package/features/modelBuilder/fields/DynamicZoneFieldType.js +2 -6
- package/features/modelBuilder/fields/DynamicZoneFieldType.js.map +1 -1
- package/features/modelBuilder/fields/resolveAssetUrl.d.ts +35 -0
- package/features/modelBuilder/fields/resolveAssetUrl.js +26 -0
- package/features/modelBuilder/fields/resolveAssetUrl.js.map +1 -0
- package/features/modelBuilder/index.d.ts +1 -1
- package/features/modelBuilder/models/BaseModelBuilder.d.ts +3 -1
- package/features/modelBuilder/models/BaseModelBuilder.js +7 -0
- package/features/modelBuilder/models/BaseModelBuilder.js.map +1 -1
- package/features/modelBuilder/models/PrivateModelBuilder.js +2 -1
- package/features/modelBuilder/models/PrivateModelBuilder.js.map +1 -1
- package/features/modelBuilder/models/PublicModelBuilder.js +2 -1
- package/features/modelBuilder/models/PublicModelBuilder.js.map +1 -1
- package/features/sortMapper/SortMapper.js +2 -5
- package/features/sortMapper/SortMapper.js.map +1 -1
- package/features/storage/fields/CompressedTextStorageTransform.js +1 -1
- package/features/storage/fields/CompressedTextStorageTransform.js.map +1 -1
- package/features/storage/fields/DateStorageTransform.js +4 -3
- package/features/storage/fields/DateStorageTransform.js.map +1 -1
- package/features/storage/fields/DynamicZoneStorageTransform.js +2 -2
- package/features/storage/fields/DynamicZoneStorageTransform.js.map +1 -1
- package/features/storage/fields/JsonStorageTransform.js +1 -1
- package/features/storage/fields/JsonStorageTransform.js.map +1 -1
- package/features/storage/fields/LongTextStorageTransform.js +1 -1
- package/features/storage/fields/LongTextStorageTransform.js.map +1 -1
- package/features/storage/fields/ObjectStorageTransform.js +27 -7
- package/features/storage/fields/ObjectStorageTransform.js.map +1 -1
- package/features/storage/fields/RichTextStorageTransform.js +1 -1
- package/features/storage/fields/RichTextStorageTransform.js.map +1 -1
- package/features/validation/validators/DateGteValidator.js +1 -1
- package/features/validation/validators/DateGteValidator.js.map +1 -1
- package/features/validation/validators/DateLteValidator.js +1 -1
- package/features/validation/validators/DateLteValidator.js.map +1 -1
- package/features/validation/validators/PatternValidator.js +1 -1
- package/features/validation/validators/PatternValidator.js.map +1 -1
- package/features/whereMapper/WhereMapper.js +10 -7
- package/features/whereMapper/WhereMapper.js.map +1 -1
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +8 -2
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +8 -2
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.d.ts +1 -1
- package/graphql/getSchema/generateCacheKey.js +1 -1
- package/graphql/getSchema/generateCacheKey.js.map +1 -1
- package/graphql/scalars/RevisionId.js +1 -1
- package/graphql/scalars/RevisionId.js.map +1 -1
- package/graphql/schema/baseSchema.js +5 -25
- package/graphql/schema/baseSchema.js.map +1 -1
- package/graphql/schema/cms/getEntryResolver.js +3 -2
- package/graphql/schema/cms/getEntryResolver.js.map +1 -1
- package/graphql/schema/cms/getModelResolver.d.ts +35 -0
- package/graphql/schema/cms/getModelResolver.js +49 -0
- package/graphql/schema/cms/getModelResolver.js.map +1 -0
- package/graphql/schema/cms/helpers/buildFieldsSelection.js +9 -2
- package/graphql/schema/cms/helpers/buildFieldsSelection.js.map +1 -1
- package/graphql/schema/cms/helpers/expandFieldWildcards.d.ts +2 -0
- package/graphql/schema/cms/helpers/expandFieldWildcards.js +13 -0
- package/graphql/schema/cms/helpers/expandFieldWildcards.js.map +1 -0
- package/graphql/schema/cms/helpers/index.d.ts +1 -0
- package/graphql/schema/cms/helpers/index.js +1 -0
- package/graphql/schema/cms/helpers.d.ts +1 -0
- package/graphql/schema/cms/helpers.js +1 -0
- package/graphql/schema/cms/index.js +2 -1
- package/graphql/schema/cms/index.js.map +1 -1
- package/graphql/schema/cms/listEntriesResolver.js +3 -2
- package/graphql/schema/cms/listEntriesResolver.js.map +1 -1
- package/graphql/schema/cms/resolvers/getModel.d.ts +8 -0
- package/graphql/schema/cms/resolvers/getModel.js +18 -0
- package/graphql/schema/cms/resolvers/getModel.js.map +1 -0
- package/graphql/schema/cms/resolvers/index.d.ts +1 -0
- package/graphql/schema/cms/resolvers/index.js +1 -0
- package/graphql/schema/cms/typeDefs/query.js +1 -0
- package/graphql/schema/cms/typeDefs/query.js.map +1 -1
- package/graphql/schema/cms/typeDefs/responses.js +5 -0
- package/graphql/schema/cms/typeDefs/responses.js.map +1 -1
- package/graphql/schema/contentModels.js +40 -1
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.js +1 -1
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/index.d.ts +2 -5
- package/index.js +1 -21
- package/package.json +27 -30
- package/plugins/CmsModelPlugin.js +12 -10
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/types/fields/dynamicZoneField.d.ts +1 -0
- package/types/model.d.ts +6 -0
- package/types/modelField.d.ts +13 -0
- package/types/types.d.ts +8 -4
- package/types/types.js.map +1 -1
- package/utils/caching/Cache.js +1 -1
- package/utils/caching/Cache.js.map +1 -1
- package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.d.ts +28 -0
- package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.js +324 -0
- package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.js.map +1 -0
- package/utils/contentModelToJsonSchema/index.d.ts +2 -0
- package/utils/contentModelToJsonSchema/index.js +1 -0
- package/utils/contentModelToJsonSchema/types.d.ts +24 -0
- package/utils/contentModelToJsonSchema/types.js +0 -0
- package/utils/createModelField.js +2 -1
- package/utils/createModelField.js.map +1 -1
- package/utils/date.js +1 -1
- package/utils/date.js.map +1 -1
- package/utils/entryStorage.js +1 -1
- package/utils/entryStorage.js.map +1 -1
- package/utils/index.d.ts +1 -0
- package/utils/index.js +1 -0
- package/utils/renderFields.js +1 -1
- package/utils/renderFields.js.map +1 -1
- package/index.js.map +0 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CmsModel, CmsModelAst } from "../../types/index.js";
|
|
2
|
+
import type { JsonSchema, CmsModelToJsonSchemaOptions } from "./types.js";
|
|
3
|
+
export declare class CmsModelToJsonSchemaConverter {
|
|
4
|
+
private readonly options;
|
|
5
|
+
constructor(options?: CmsModelToJsonSchemaOptions);
|
|
6
|
+
convert(ast: CmsModelAst, model: Pick<CmsModel, "name" | "description">): JsonSchema;
|
|
7
|
+
private convertNode;
|
|
8
|
+
private convertChildren;
|
|
9
|
+
private convertFieldByType;
|
|
10
|
+
private convertTextField;
|
|
11
|
+
private convertLongTextField;
|
|
12
|
+
private convertRichTextField;
|
|
13
|
+
private convertNumberField;
|
|
14
|
+
private convertBooleanField;
|
|
15
|
+
private convertDateTimeField;
|
|
16
|
+
private convertFileField;
|
|
17
|
+
private convertRefField;
|
|
18
|
+
private convertDynamicZone;
|
|
19
|
+
private convertCollection;
|
|
20
|
+
private buildFieldDescription;
|
|
21
|
+
private buildModelDescription;
|
|
22
|
+
private extractValidationConstraints;
|
|
23
|
+
private applyValidationConstraints;
|
|
24
|
+
private applyPredefinedValues;
|
|
25
|
+
private wrapAsList;
|
|
26
|
+
private isHidden;
|
|
27
|
+
private childrenAreCollections;
|
|
28
|
+
}
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
class CmsModelToJsonSchemaConverter {
|
|
2
|
+
constructor(options){
|
|
3
|
+
this.options = {
|
|
4
|
+
includeHiddenFields: false,
|
|
5
|
+
...options
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
convert(ast, model) {
|
|
9
|
+
const { properties, required } = this.convertChildren(ast.children);
|
|
10
|
+
const schema = {
|
|
11
|
+
type: "object",
|
|
12
|
+
properties
|
|
13
|
+
};
|
|
14
|
+
if (required.length > 0) schema.required = required;
|
|
15
|
+
const description = this.buildModelDescription(model);
|
|
16
|
+
if (description) schema.description = description;
|
|
17
|
+
return schema;
|
|
18
|
+
}
|
|
19
|
+
convertNode(node) {
|
|
20
|
+
if ("collection" === node.type) return null;
|
|
21
|
+
const field = node.field;
|
|
22
|
+
if (this.isHidden(field)) return null;
|
|
23
|
+
let schema;
|
|
24
|
+
if (this.childrenAreCollections(node)) schema = this.convertDynamicZone(node);
|
|
25
|
+
else if (node.children.length > 0) {
|
|
26
|
+
const { properties, required } = this.convertChildren(node.children);
|
|
27
|
+
schema = {
|
|
28
|
+
type: "object",
|
|
29
|
+
properties
|
|
30
|
+
};
|
|
31
|
+
if (required.length > 0) schema.required = required;
|
|
32
|
+
} else schema = this.convertFieldByType(field);
|
|
33
|
+
const description = this.buildFieldDescription(field);
|
|
34
|
+
if (description) schema.description = schema.description ? `${description}. ${schema.description}` : description;
|
|
35
|
+
if (field.list) return this.wrapAsList(schema, field);
|
|
36
|
+
return schema;
|
|
37
|
+
}
|
|
38
|
+
convertChildren(children) {
|
|
39
|
+
const properties = {};
|
|
40
|
+
const required = [];
|
|
41
|
+
for (const child of children){
|
|
42
|
+
if ("collection" === child.type) continue;
|
|
43
|
+
const schema = this.convertNode(child);
|
|
44
|
+
if (null === schema) continue;
|
|
45
|
+
properties[child.field.fieldId] = schema;
|
|
46
|
+
const constraints = this.extractValidationConstraints(child.field.validation || []);
|
|
47
|
+
if (constraints.required) required.push(child.field.fieldId);
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
properties,
|
|
51
|
+
required
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
convertFieldByType(field) {
|
|
55
|
+
switch(field.type){
|
|
56
|
+
case "text":
|
|
57
|
+
return this.convertTextField(field);
|
|
58
|
+
case "long-text":
|
|
59
|
+
return this.convertLongTextField(field);
|
|
60
|
+
case "rich-text":
|
|
61
|
+
return this.convertRichTextField(field);
|
|
62
|
+
case "number":
|
|
63
|
+
return this.convertNumberField(field);
|
|
64
|
+
case "boolean":
|
|
65
|
+
return this.convertBooleanField();
|
|
66
|
+
case "datetime":
|
|
67
|
+
return this.convertDateTimeField(field);
|
|
68
|
+
case "file":
|
|
69
|
+
return this.convertFileField(field);
|
|
70
|
+
case "ref":
|
|
71
|
+
return this.convertRefField(field);
|
|
72
|
+
case "json":
|
|
73
|
+
return {
|
|
74
|
+
type: "object",
|
|
75
|
+
additionalProperties: true
|
|
76
|
+
};
|
|
77
|
+
default:
|
|
78
|
+
return {
|
|
79
|
+
type: "object",
|
|
80
|
+
additionalProperties: true
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
convertTextField(field) {
|
|
85
|
+
const schema = {
|
|
86
|
+
type: "string"
|
|
87
|
+
};
|
|
88
|
+
this.applyPredefinedValues(schema, field);
|
|
89
|
+
this.applyValidationConstraints(schema, field.validation);
|
|
90
|
+
return schema;
|
|
91
|
+
}
|
|
92
|
+
convertLongTextField(field) {
|
|
93
|
+
const schema = {
|
|
94
|
+
type: "string"
|
|
95
|
+
};
|
|
96
|
+
this.applyValidationConstraints(schema, field.validation);
|
|
97
|
+
return schema;
|
|
98
|
+
}
|
|
99
|
+
convertRichTextField(_field) {
|
|
100
|
+
return {
|
|
101
|
+
type: "object",
|
|
102
|
+
properties: {
|
|
103
|
+
tool: {
|
|
104
|
+
const: "textToLexical"
|
|
105
|
+
},
|
|
106
|
+
params: {
|
|
107
|
+
type: "object",
|
|
108
|
+
properties: {
|
|
109
|
+
text: {
|
|
110
|
+
type: "string",
|
|
111
|
+
description: "Rich text content as HTML markup. Use semantic HTML tags: <h1>-<h6>, <p>, <strong>, <em>, <ul>, <ol>, <li>, <a>, <blockquote>."
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
required: [
|
|
115
|
+
"text"
|
|
116
|
+
]
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
required: [
|
|
120
|
+
"tool",
|
|
121
|
+
"params"
|
|
122
|
+
]
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
convertNumberField(field) {
|
|
126
|
+
const schema = {
|
|
127
|
+
type: "number"
|
|
128
|
+
};
|
|
129
|
+
this.applyPredefinedValues(schema, field, true);
|
|
130
|
+
this.applyValidationConstraints(schema, field.validation);
|
|
131
|
+
return schema;
|
|
132
|
+
}
|
|
133
|
+
convertBooleanField() {
|
|
134
|
+
return {
|
|
135
|
+
type: "boolean"
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
convertDateTimeField(field) {
|
|
139
|
+
const schema = {
|
|
140
|
+
type: "string"
|
|
141
|
+
};
|
|
142
|
+
const dateType = field.settings?.type;
|
|
143
|
+
switch(dateType){
|
|
144
|
+
case "date":
|
|
145
|
+
schema.format = "date";
|
|
146
|
+
break;
|
|
147
|
+
case "time":
|
|
148
|
+
schema.format = "time";
|
|
149
|
+
break;
|
|
150
|
+
case "dateTimeWithTimezone":
|
|
151
|
+
schema.format = "date-time";
|
|
152
|
+
break;
|
|
153
|
+
case "dateTimeWithoutTimezone":
|
|
154
|
+
schema.format = "date-time";
|
|
155
|
+
schema.description = "Date and time without timezone (ISO 8601 format).";
|
|
156
|
+
break;
|
|
157
|
+
default:
|
|
158
|
+
schema.format = "date-time";
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
return schema;
|
|
162
|
+
}
|
|
163
|
+
convertFileField(field) {
|
|
164
|
+
const imagesOnly = field.settings?.imagesOnly === true;
|
|
165
|
+
return {
|
|
166
|
+
type: "object",
|
|
167
|
+
properties: {
|
|
168
|
+
tool: {
|
|
169
|
+
const: "cmsResolveImage"
|
|
170
|
+
},
|
|
171
|
+
params: {
|
|
172
|
+
type: "object",
|
|
173
|
+
properties: {
|
|
174
|
+
id: {
|
|
175
|
+
type: "string",
|
|
176
|
+
description: imagesOnly ? "Image file ID obtained from listImagesByTag." : "File ID obtained from listImagesByTag."
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
required: [
|
|
180
|
+
"id"
|
|
181
|
+
]
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
required: [
|
|
185
|
+
"tool",
|
|
186
|
+
"params"
|
|
187
|
+
]
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
convertRefField(field) {
|
|
191
|
+
const models = field.settings?.models;
|
|
192
|
+
const modelIds = Array.isArray(models) && models.length > 0 ? models.map((m)=>m.modelId) : [];
|
|
193
|
+
const schema = {
|
|
194
|
+
type: "object",
|
|
195
|
+
properties: {
|
|
196
|
+
entryId: {
|
|
197
|
+
type: "string",
|
|
198
|
+
description: "ID of the referenced entry."
|
|
199
|
+
},
|
|
200
|
+
modelId: {
|
|
201
|
+
type: "string",
|
|
202
|
+
description: "Model ID of the referenced entry."
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
required: [
|
|
206
|
+
"entryId",
|
|
207
|
+
"modelId"
|
|
208
|
+
]
|
|
209
|
+
};
|
|
210
|
+
if (modelIds.length > 0) {
|
|
211
|
+
const modelIdProp = schema.properties["modelId"];
|
|
212
|
+
modelIdProp.enum = modelIds;
|
|
213
|
+
}
|
|
214
|
+
return schema;
|
|
215
|
+
}
|
|
216
|
+
convertDynamicZone(node) {
|
|
217
|
+
const collections = node.children.filter((child)=>"collection" === child.type);
|
|
218
|
+
const oneOf = collections.map((collection)=>this.convertCollection(collection));
|
|
219
|
+
const schema = {
|
|
220
|
+
oneOf
|
|
221
|
+
};
|
|
222
|
+
if (collections.length > 0) schema.discriminator = {
|
|
223
|
+
propertyName: collections[0].collection.discriminator
|
|
224
|
+
};
|
|
225
|
+
return schema;
|
|
226
|
+
}
|
|
227
|
+
convertCollection(collection) {
|
|
228
|
+
const { properties, required } = this.convertChildren(collection.children);
|
|
229
|
+
properties[collection.collection.discriminator] = {
|
|
230
|
+
const: collection.collection.id
|
|
231
|
+
};
|
|
232
|
+
const allRequired = [
|
|
233
|
+
collection.collection.discriminator,
|
|
234
|
+
...required
|
|
235
|
+
];
|
|
236
|
+
const schema = {
|
|
237
|
+
type: "object",
|
|
238
|
+
properties,
|
|
239
|
+
required: allRequired
|
|
240
|
+
};
|
|
241
|
+
if (collection.collection.name) schema.description = collection.collection.name;
|
|
242
|
+
return schema;
|
|
243
|
+
}
|
|
244
|
+
buildFieldDescription(field) {
|
|
245
|
+
const parts = [];
|
|
246
|
+
if (field.label) parts.push(field.label);
|
|
247
|
+
if (field.description) parts.push(field.description);
|
|
248
|
+
if (field.help) parts.push(field.help);
|
|
249
|
+
if (0 === parts.length) return;
|
|
250
|
+
return parts.join(". ");
|
|
251
|
+
}
|
|
252
|
+
buildModelDescription(model) {
|
|
253
|
+
const parts = [];
|
|
254
|
+
if (model.name) parts.push(model.name);
|
|
255
|
+
if (model.description) parts.push(model.description);
|
|
256
|
+
if (0 === parts.length) return;
|
|
257
|
+
return parts.join(". ");
|
|
258
|
+
}
|
|
259
|
+
extractValidationConstraints(validations) {
|
|
260
|
+
const constraints = {
|
|
261
|
+
required: false
|
|
262
|
+
};
|
|
263
|
+
if (!validations) return constraints;
|
|
264
|
+
for (const v of validations)switch(v.name){
|
|
265
|
+
case "required":
|
|
266
|
+
constraints.required = true;
|
|
267
|
+
break;
|
|
268
|
+
case "minLength":
|
|
269
|
+
if (v.settings?.value !== void 0) constraints.minLength = Number(v.settings.value);
|
|
270
|
+
break;
|
|
271
|
+
case "maxLength":
|
|
272
|
+
if (v.settings?.value !== void 0) constraints.maxLength = Number(v.settings.value);
|
|
273
|
+
break;
|
|
274
|
+
case "gte":
|
|
275
|
+
if (v.settings?.value !== void 0) constraints.minimum = Number(v.settings.value);
|
|
276
|
+
break;
|
|
277
|
+
case "lte":
|
|
278
|
+
if (v.settings?.value !== void 0) constraints.maximum = Number(v.settings.value);
|
|
279
|
+
break;
|
|
280
|
+
case "pattern":
|
|
281
|
+
if (v.settings?.preset === "email") constraints.format = "email";
|
|
282
|
+
else if (v.settings?.preset === "url") constraints.format = "uri";
|
|
283
|
+
else if (v.settings?.value !== void 0) constraints.pattern = String(v.settings.value);
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
return constraints;
|
|
287
|
+
}
|
|
288
|
+
applyValidationConstraints(schema, validations) {
|
|
289
|
+
const constraints = this.extractValidationConstraints(validations);
|
|
290
|
+
if (void 0 !== constraints.minLength) schema.minLength = constraints.minLength;
|
|
291
|
+
if (void 0 !== constraints.maxLength) schema.maxLength = constraints.maxLength;
|
|
292
|
+
if (void 0 !== constraints.minimum) schema.minimum = constraints.minimum;
|
|
293
|
+
if (void 0 !== constraints.maximum) schema.maximum = constraints.maximum;
|
|
294
|
+
if (void 0 !== constraints.pattern) schema.pattern = constraints.pattern;
|
|
295
|
+
if (void 0 !== constraints.format) schema.format = constraints.format;
|
|
296
|
+
}
|
|
297
|
+
applyPredefinedValues(schema, field, parseAsNumber = false) {
|
|
298
|
+
if (field.predefinedValues?.enabled !== true) return;
|
|
299
|
+
const values = field.predefinedValues.values;
|
|
300
|
+
if (!Array.isArray(values) || 0 === values.length) return;
|
|
301
|
+
schema.enum = values.map((v)=>parseAsNumber ? Number(v.value) : v.value);
|
|
302
|
+
}
|
|
303
|
+
wrapAsList(schema, field) {
|
|
304
|
+
const listSchema = {
|
|
305
|
+
type: "array",
|
|
306
|
+
items: schema
|
|
307
|
+
};
|
|
308
|
+
for (const v of field.listValidation || []){
|
|
309
|
+
if ("minLength" === v.name && v.settings?.value !== void 0) listSchema.minLength = Number(v.settings.value);
|
|
310
|
+
if ("maxLength" === v.name && v.settings?.value !== void 0) listSchema.maxLength = Number(v.settings.value);
|
|
311
|
+
}
|
|
312
|
+
return listSchema;
|
|
313
|
+
}
|
|
314
|
+
isHidden(field) {
|
|
315
|
+
if (this.options.includeHiddenFields) return false;
|
|
316
|
+
return field.renderer?.name === "hidden";
|
|
317
|
+
}
|
|
318
|
+
childrenAreCollections(node) {
|
|
319
|
+
return node.children.length > 0 && node.children.every((c)=>"collection" === c.type);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
export { CmsModelToJsonSchemaConverter };
|
|
323
|
+
|
|
324
|
+
//# sourceMappingURL=CmsModelToJsonSchemaConverter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.js","sources":["../../../src/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.ts"],"sourcesContent":["import type {\n CmsModel,\n CmsModelAst,\n CmsModelField,\n CmsModelFieldAstNode,\n CmsModelFieldAstNodeCollection,\n CmsModelFieldAstNodeField,\n CmsModelFieldValidation\n} from \"~/types/index.js\";\nimport type { JsonSchema, CmsModelToJsonSchemaOptions } from \"./types.js\";\n\ninterface ValidationConstraints {\n required: boolean;\n minLength?: number;\n maxLength?: number;\n minimum?: number;\n maximum?: number;\n pattern?: string;\n format?: string;\n}\n\ninterface ConvertedChildren {\n properties: Record<string, JsonSchema>;\n required: string[];\n}\n\nexport class CmsModelToJsonSchemaConverter {\n private readonly options: Required<CmsModelToJsonSchemaOptions>;\n\n constructor(options?: CmsModelToJsonSchemaOptions) {\n this.options = {\n includeHiddenFields: false,\n ...options\n };\n }\n\n convert(ast: CmsModelAst, model: Pick<CmsModel, \"name\" | \"description\">): JsonSchema {\n const { properties, required } = this.convertChildren(ast.children);\n\n const schema: JsonSchema = {\n type: \"object\",\n properties\n };\n\n if (required.length > 0) {\n schema.required = required;\n }\n\n const description = this.buildModelDescription(model);\n if (description) {\n schema.description = description;\n }\n\n return schema;\n }\n\n private convertNode(node: CmsModelFieldAstNode): JsonSchema | null {\n if (node.type === \"collection\") {\n return null;\n }\n\n const field = node.field;\n\n if (this.isHidden(field)) {\n return null;\n }\n\n let schema: JsonSchema;\n\n if (this.childrenAreCollections(node)) {\n schema = this.convertDynamicZone(node);\n } else if (node.children.length > 0) {\n const { properties, required } = this.convertChildren(node.children);\n schema = { type: \"object\", properties };\n if (required.length > 0) {\n schema.required = required;\n }\n } else {\n schema = this.convertFieldByType(field);\n }\n\n const description = this.buildFieldDescription(field);\n if (description) {\n schema.description = schema.description\n ? `${description}. ${schema.description}`\n : description;\n }\n\n if (field.list) {\n return this.wrapAsList(schema, field);\n }\n\n return schema;\n }\n\n private convertChildren(children: CmsModelFieldAstNode[]): ConvertedChildren {\n const properties: Record<string, JsonSchema> = {};\n const required: string[] = [];\n\n for (const child of children) {\n if (child.type === \"collection\") {\n continue;\n }\n\n const schema = this.convertNode(child);\n if (schema === null) {\n continue;\n }\n\n properties[child.field.fieldId] = schema;\n\n const constraints = this.extractValidationConstraints(child.field.validation || []);\n if (constraints.required) {\n required.push(child.field.fieldId);\n }\n }\n\n return { properties, required };\n }\n\n private convertFieldByType(field: CmsModelField): JsonSchema {\n switch (field.type) {\n case \"text\":\n return this.convertTextField(field);\n case \"long-text\":\n return this.convertLongTextField(field);\n case \"rich-text\":\n return this.convertRichTextField(field);\n case \"number\":\n return this.convertNumberField(field);\n case \"boolean\":\n return this.convertBooleanField();\n case \"datetime\":\n return this.convertDateTimeField(field);\n case \"file\":\n return this.convertFileField(field);\n case \"ref\":\n return this.convertRefField(field);\n case \"json\":\n return { type: \"object\", additionalProperties: true };\n default:\n return { type: \"object\", additionalProperties: true };\n }\n }\n\n private convertTextField(field: CmsModelField): JsonSchema {\n const schema: JsonSchema = { type: \"string\" };\n this.applyPredefinedValues(schema, field);\n this.applyValidationConstraints(schema, field.validation);\n return schema;\n }\n\n private convertLongTextField(field: CmsModelField): JsonSchema {\n const schema: JsonSchema = { type: \"string\" };\n this.applyValidationConstraints(schema, field.validation);\n return schema;\n }\n\n private convertRichTextField(_field: CmsModelField): JsonSchema {\n return {\n type: \"object\",\n properties: {\n tool: { const: \"textToLexical\" },\n params: {\n type: \"object\",\n properties: {\n text: {\n type: \"string\",\n description:\n \"Rich text content as HTML markup. Use semantic HTML tags: <h1>-<h6>, <p>, <strong>, <em>, <ul>, <ol>, <li>, <a>, <blockquote>.\"\n }\n },\n required: [\"text\"]\n }\n },\n required: [\"tool\", \"params\"]\n };\n }\n\n private convertNumberField(field: CmsModelField): JsonSchema {\n const schema: JsonSchema = { type: \"number\" };\n this.applyPredefinedValues(schema, field, true);\n this.applyValidationConstraints(schema, field.validation);\n return schema;\n }\n\n private convertBooleanField(): JsonSchema {\n return { type: \"boolean\" };\n }\n\n private convertDateTimeField(field: CmsModelField): JsonSchema {\n const schema: JsonSchema = { type: \"string\" };\n\n const dateType = field.settings?.type;\n switch (dateType) {\n case \"date\":\n schema.format = \"date\";\n break;\n case \"time\":\n schema.format = \"time\";\n break;\n case \"dateTimeWithTimezone\":\n schema.format = \"date-time\";\n break;\n case \"dateTimeWithoutTimezone\":\n schema.format = \"date-time\";\n schema.description = \"Date and time without timezone (ISO 8601 format).\";\n break;\n default:\n schema.format = \"date-time\";\n break;\n }\n\n return schema;\n }\n\n private convertFileField(field: CmsModelField): JsonSchema {\n const imagesOnly = field.settings?.imagesOnly === true;\n return {\n type: \"object\",\n properties: {\n tool: { const: \"cmsResolveImage\" },\n params: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\",\n description: imagesOnly\n ? \"Image file ID obtained from listImagesByTag.\"\n : \"File ID obtained from listImagesByTag.\"\n }\n },\n required: [\"id\"]\n }\n },\n required: [\"tool\", \"params\"]\n };\n }\n\n private convertRefField(field: CmsModelField): JsonSchema {\n const models = field.settings?.models;\n const modelIds =\n Array.isArray(models) && models.length > 0\n ? models.map((m: { modelId: string }) => m.modelId)\n : [];\n\n const schema: JsonSchema = {\n type: \"object\",\n properties: {\n entryId: { type: \"string\", description: \"ID of the referenced entry.\" },\n modelId: {\n type: \"string\",\n description: \"Model ID of the referenced entry.\"\n }\n },\n required: [\"entryId\", \"modelId\"]\n };\n\n if (modelIds.length > 0) {\n const modelIdProp = schema.properties![\"modelId\"];\n modelIdProp.enum = modelIds;\n }\n\n return schema;\n }\n\n private convertDynamicZone(node: CmsModelFieldAstNodeField): JsonSchema {\n const collections = node.children.filter(\n (child): child is CmsModelFieldAstNodeCollection => child.type === \"collection\"\n );\n\n const oneOf = collections.map(collection => this.convertCollection(collection));\n\n const schema: JsonSchema = { oneOf };\n\n if (collections.length > 0) {\n schema.discriminator = { propertyName: collections[0].collection.discriminator };\n }\n\n return schema;\n }\n\n private convertCollection(collection: CmsModelFieldAstNodeCollection): JsonSchema {\n const { properties, required } = this.convertChildren(collection.children);\n\n properties[collection.collection.discriminator] = {\n const: collection.collection.id\n };\n\n const allRequired = [collection.collection.discriminator, ...required];\n\n const schema: JsonSchema = {\n type: \"object\",\n properties,\n required: allRequired\n };\n\n if (collection.collection.name) {\n schema.description = collection.collection.name;\n }\n\n return schema;\n }\n\n private buildFieldDescription(field: CmsModelField): string | undefined {\n const parts: string[] = [];\n\n if (field.label) {\n parts.push(field.label);\n }\n\n if (field.description) {\n parts.push(field.description);\n }\n\n if (field.help) {\n parts.push(field.help);\n }\n\n if (parts.length === 0) {\n return undefined;\n }\n\n return parts.join(\". \");\n }\n\n private buildModelDescription(\n model: Pick<CmsModel, \"name\" | \"description\">\n ): string | undefined {\n const parts: string[] = [];\n\n if (model.name) {\n parts.push(model.name);\n }\n\n if (model.description) {\n parts.push(model.description);\n }\n\n if (parts.length === 0) {\n return undefined;\n }\n\n return parts.join(\". \");\n }\n\n private extractValidationConstraints(\n validations: CmsModelFieldValidation[] | undefined\n ): ValidationConstraints {\n const constraints: ValidationConstraints = { required: false };\n\n if (!validations) {\n return constraints;\n }\n\n for (const v of validations) {\n switch (v.name) {\n case \"required\":\n constraints.required = true;\n break;\n case \"minLength\":\n if (v.settings?.value !== undefined) {\n constraints.minLength = Number(v.settings.value);\n }\n break;\n case \"maxLength\":\n if (v.settings?.value !== undefined) {\n constraints.maxLength = Number(v.settings.value);\n }\n break;\n case \"gte\":\n if (v.settings?.value !== undefined) {\n constraints.minimum = Number(v.settings.value);\n }\n break;\n case \"lte\":\n if (v.settings?.value !== undefined) {\n constraints.maximum = Number(v.settings.value);\n }\n break;\n case \"pattern\":\n if (v.settings?.preset === \"email\") {\n constraints.format = \"email\";\n } else if (v.settings?.preset === \"url\") {\n constraints.format = \"uri\";\n } else if (v.settings?.value !== undefined) {\n constraints.pattern = String(v.settings.value);\n }\n break;\n }\n }\n\n return constraints;\n }\n\n private applyValidationConstraints(\n schema: JsonSchema,\n validations: CmsModelFieldValidation[]\n ): void {\n const constraints = this.extractValidationConstraints(validations);\n\n if (constraints.minLength !== undefined) {\n schema.minLength = constraints.minLength;\n }\n if (constraints.maxLength !== undefined) {\n schema.maxLength = constraints.maxLength;\n }\n if (constraints.minimum !== undefined) {\n schema.minimum = constraints.minimum;\n }\n if (constraints.maximum !== undefined) {\n schema.maximum = constraints.maximum;\n }\n if (constraints.pattern !== undefined) {\n schema.pattern = constraints.pattern;\n }\n if (constraints.format !== undefined) {\n schema.format = constraints.format;\n }\n }\n\n private applyPredefinedValues(\n schema: JsonSchema,\n field: CmsModelField,\n parseAsNumber = false\n ): void {\n if (field.predefinedValues?.enabled !== true) {\n return;\n }\n\n const values = field.predefinedValues.values;\n if (!Array.isArray(values) || values.length === 0) {\n return;\n }\n\n schema.enum = values.map(v => (parseAsNumber ? Number(v.value) : v.value));\n }\n\n private wrapAsList(schema: JsonSchema, field: CmsModelField): JsonSchema {\n const listSchema: JsonSchema = {\n type: \"array\",\n items: schema\n };\n\n for (const v of field.listValidation || []) {\n if (v.name === \"minLength\" && v.settings?.value !== undefined) {\n listSchema.minLength = Number(v.settings.value);\n }\n if (v.name === \"maxLength\" && v.settings?.value !== undefined) {\n listSchema.maxLength = Number(v.settings.value);\n }\n }\n\n return listSchema;\n }\n\n private isHidden(field: CmsModelField): boolean {\n if (this.options.includeHiddenFields) {\n return false;\n }\n\n return field.renderer?.name === \"hidden\";\n }\n\n private childrenAreCollections(\n node: CmsModelFieldAstNodeField\n ): node is CmsModelFieldAstNodeField & { children: CmsModelFieldAstNodeCollection[] } {\n return node.children.length > 0 && node.children.every(c => c.type === \"collection\");\n }\n}\n"],"names":["CmsModelToJsonSchemaConverter","options","ast","model","properties","required","schema","description","node","field","children","child","constraints","_field","dateType","imagesOnly","models","modelIds","Array","m","modelIdProp","collections","oneOf","collection","allRequired","parts","validations","v","undefined","Number","String","parseAsNumber","values","listSchema","c"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CmsModelToJsonSchemaConverter } from "./CmsModelToJsonSchemaConverter.js";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface JsonSchema {
|
|
2
|
+
$schema?: string;
|
|
3
|
+
type?: string | string[];
|
|
4
|
+
properties?: Record<string, JsonSchema>;
|
|
5
|
+
required?: string[];
|
|
6
|
+
items?: JsonSchema;
|
|
7
|
+
enum?: (string | number | boolean)[];
|
|
8
|
+
oneOf?: JsonSchema[];
|
|
9
|
+
const?: unknown;
|
|
10
|
+
description?: string;
|
|
11
|
+
minLength?: number;
|
|
12
|
+
maxLength?: number;
|
|
13
|
+
minimum?: number;
|
|
14
|
+
maximum?: number;
|
|
15
|
+
pattern?: string;
|
|
16
|
+
format?: string;
|
|
17
|
+
additionalProperties?: boolean | JsonSchema;
|
|
18
|
+
discriminator?: {
|
|
19
|
+
propertyName: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export interface CmsModelToJsonSchemaOptions {
|
|
23
|
+
includeHiddenFields?: boolean;
|
|
24
|
+
}
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import camelCase from "lodash/camelCase.js";
|
|
2
2
|
const createModelField = (params)=>{
|
|
3
|
-
const { id, label, fieldId: initialFieldId, storageId, type, tags = [], settings = {}, listValidation = [], validation = [], list = false, predefinedValues = {
|
|
3
|
+
const { id, label, fieldId: initialFieldId, storageId, type, tags = [], settings = {}, listValidation = [], validation = [], list = false, disabled = false, predefinedValues = {
|
|
4
4
|
values: [],
|
|
5
5
|
enabled: false
|
|
6
6
|
}, help = null, placeholder = null, renderer = null, rules = [] } = params;
|
|
@@ -16,6 +16,7 @@ const createModelField = (params)=>{
|
|
|
16
16
|
listValidation,
|
|
17
17
|
validation,
|
|
18
18
|
list,
|
|
19
|
+
disabled,
|
|
19
20
|
predefinedValues,
|
|
20
21
|
help,
|
|
21
22
|
placeholder,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/createModelField.js","sources":["../../src/utils/createModelField.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase.js\";\nimport type { CmsModelField, CmsModelFieldValidation } from \"~/types/index.js\";\n\nexport interface CreateModelFieldParams extends Omit<\n CmsModelField,\n \"id\" | \"storageId\" | \"fieldId\" | \"validation\" | \"listValidation\"\n> {\n id?: string;\n fieldId?: string;\n storageId?: string;\n validation?: CmsModelFieldValidation[];\n listValidation?: CmsModelFieldValidation[];\n}\n\nexport const createModelField = (params: CreateModelFieldParams): CmsModelField => {\n // We are not just spreading `params` because we want to ensure\n // a default value is set for every property of the model field.\n const {\n id,\n label,\n fieldId: initialFieldId,\n storageId,\n type,\n tags = [],\n settings = {},\n listValidation = [],\n validation = [],\n list = false,\n predefinedValues = {\n values: [],\n enabled: false\n },\n help = null,\n placeholder = null,\n renderer = null,\n rules = []\n } = params;\n\n // TODO: ideally, initialFieldId should also be passed through `camelCase` but currently this would break `wbyAco_location` field.\n // TODO: Once this legacy field is removed, we can enable camelCase on the initialFieldId.\n const fieldId = initialFieldId ? initialFieldId : camelCase(label);\n\n return {\n id: id ?? fieldId,\n storageId: storageId ?? `${type}@${id ?? fieldId}`,\n fieldId,\n label,\n type,\n settings,\n tags,\n listValidation,\n validation,\n list,\n predefinedValues,\n help,\n placeholder,\n renderer,\n rules\n };\n};\n"],"names":["createModelField","params","id","label","initialFieldId","storageId","type","tags","settings","listValidation","validation","list","predefinedValues","help","placeholder","renderer","rules","fieldId","camelCase"],"mappings":";AAcO,MAAMA,mBAAmB,CAACC;IAG7B,MAAM,EACFC,EAAE,EACFC,KAAK,EACL,SAASC,cAAc,EACvBC,SAAS,EACTC,IAAI,EACJC,OAAO,EAAE,EACTC,WAAW,CAAC,CAAC,EACbC,iBAAiB,EAAE,EACnBC,aAAa,EAAE,EACfC,OAAO,KAAK,EACZC,mBAAmB;QACf,QAAQ,EAAE;QACV,SAAS;IACb,CAAC,EACDC,OAAO,IAAI,EACXC,cAAc,IAAI,EAClBC,WAAW,IAAI,EACfC,QAAQ,EAAE,EACb,
|
|
1
|
+
{"version":3,"file":"utils/createModelField.js","sources":["../../src/utils/createModelField.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase.js\";\nimport type { CmsModelField, CmsModelFieldValidation } from \"~/types/index.js\";\n\nexport interface CreateModelFieldParams extends Omit<\n CmsModelField,\n \"id\" | \"storageId\" | \"fieldId\" | \"validation\" | \"listValidation\"\n> {\n id?: string;\n fieldId?: string;\n storageId?: string;\n validation?: CmsModelFieldValidation[];\n listValidation?: CmsModelFieldValidation[];\n}\n\nexport const createModelField = (params: CreateModelFieldParams): CmsModelField => {\n // We are not just spreading `params` because we want to ensure\n // a default value is set for every property of the model field.\n const {\n id,\n label,\n fieldId: initialFieldId,\n storageId,\n type,\n tags = [],\n settings = {},\n listValidation = [],\n validation = [],\n list = false,\n disabled = false,\n predefinedValues = {\n values: [],\n enabled: false\n },\n help = null,\n placeholder = null,\n renderer = null,\n rules = []\n } = params;\n\n // TODO: ideally, initialFieldId should also be passed through `camelCase` but currently this would break `wbyAco_location` field.\n // TODO: Once this legacy field is removed, we can enable camelCase on the initialFieldId.\n const fieldId = initialFieldId ? initialFieldId : camelCase(label);\n\n return {\n id: id ?? fieldId,\n storageId: storageId ?? `${type}@${id ?? fieldId}`,\n fieldId,\n label,\n type,\n settings,\n tags,\n listValidation,\n validation,\n list,\n disabled,\n predefinedValues,\n help,\n placeholder,\n renderer,\n rules\n };\n};\n"],"names":["createModelField","params","id","label","initialFieldId","storageId","type","tags","settings","listValidation","validation","list","disabled","predefinedValues","help","placeholder","renderer","rules","fieldId","camelCase"],"mappings":";AAcO,MAAMA,mBAAmB,CAACC;IAG7B,MAAM,EACFC,EAAE,EACFC,KAAK,EACL,SAASC,cAAc,EACvBC,SAAS,EACTC,IAAI,EACJC,OAAO,EAAE,EACTC,WAAW,CAAC,CAAC,EACbC,iBAAiB,EAAE,EACnBC,aAAa,EAAE,EACfC,OAAO,KAAK,EACZC,WAAW,KAAK,EAChBC,mBAAmB;QACf,QAAQ,EAAE;QACV,SAAS;IACb,CAAC,EACDC,OAAO,IAAI,EACXC,cAAc,IAAI,EAClBC,WAAW,IAAI,EACfC,QAAQ,EAAE,EACb,GAAGhB;IAIJ,MAAMiB,UAAUd,iBAAiBA,iBAAiBe,UAAUhB;IAE5D,OAAO;QACH,IAAID,MAAMgB;QACV,WAAWb,aAAa,GAAGC,KAAK,CAAC,EAAEJ,MAAMgB,SAAS;QAClDA;QACAf;QACAG;QACAE;QACAD;QACAE;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;IACJ;AACJ"}
|
package/utils/date.js
CHANGED
package/utils/date.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/date.js","sources":["../../src/utils/date.ts"],"sourcesContent":["/**\n * Should not be used by users as method is prone to breaking changes.\n * @internal\n */\nexport const formatDate = (date?: Date | string | null): string | null => {\n if (!date) {\n return null;\n } else if (date instanceof Date) {\n return date.toISOString();\n }\n return new Date(date).toISOString();\n};\n\n/**\n * Should not be used by users as method is prone to breaking changes.\n * @internal\n */\nexport const getDate = <T extends string | null = string | null>(\n input?: Date | string | null,\n defaultValue?: Date | string | null\n): T => {\n if (!input) {\n return formatDate(defaultValue) as T;\n }\n if (input instanceof Date) {\n return formatDate(input) as T;\n }\n return formatDate(new Date(input)) as T;\n};\n"],"names":["formatDate","date","Date","getDate","input","defaultValue"],"mappings":"AAIO,MAAMA,aAAa,CAACC;IACvB,IAAI,CAACA,MACD,OAAO;
|
|
1
|
+
{"version":3,"file":"utils/date.js","sources":["../../src/utils/date.ts"],"sourcesContent":["/**\n * Should not be used by users as method is prone to breaking changes.\n * @internal\n */\nexport const formatDate = (date?: Date | string | null): string | null => {\n if (!date) {\n return null;\n } else if (date instanceof Date) {\n return date.toISOString();\n }\n return new Date(date).toISOString();\n};\n\n/**\n * Should not be used by users as method is prone to breaking changes.\n * @internal\n */\nexport const getDate = <T extends string | null = string | null>(\n input?: Date | string | null,\n defaultValue?: Date | string | null\n): T => {\n if (!input) {\n return formatDate(defaultValue) as T;\n }\n if (input instanceof Date) {\n return formatDate(input) as T;\n }\n return formatDate(new Date(input)) as T;\n};\n"],"names":["formatDate","date","Date","getDate","input","defaultValue"],"mappings":"AAIO,MAAMA,aAAa,CAACC;IACvB,IAAI,CAACA,MACD,OAAO;IACJ,IAAIA,gBAAgBC,MACvB,OAAOD,KAAK,WAAW;IAE3B,OAAO,IAAIC,KAAKD,MAAM,WAAW;AACrC;AAMO,MAAME,UAAU,CACnBC,OACAC;IAEA,IAAI,CAACD,OACD,OAAOJ,WAAWK;IAEtB,IAAID,iBAAiBF,MACjB,OAAOF,WAAWI;IAEtB,OAAOJ,WAAW,IAAIE,KAAKE;AAC/B"}
|
package/utils/entryStorage.js
CHANGED
|
@@ -14,7 +14,7 @@ const getStorageTransformFactory = (context)=>{
|
|
|
14
14
|
type
|
|
15
15
|
});
|
|
16
16
|
if (result[type]) return result[type];
|
|
17
|
-
|
|
17
|
+
if (fieldType !== type && result[fieldType]) return result[fieldType];
|
|
18
18
|
return defaultStorageTransform;
|
|
19
19
|
};
|
|
20
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/entryStorage.js","sources":["../../src/utils/entryStorage.ts"],"sourcesContent":["import type {\n CmsContext,\n CmsEntry,\n CmsEntryValues,\n CmsModel,\n CmsModelField\n} from \"~/types/index.js\";\nimport { StorageTransform, StorageTransformRegistry } from \"~/features/storage/index.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType.js\";\n\nexport interface GetStorageTransformFactory {\n (context: Pick<CmsContext, \"container\">): (fieldType: string) => StorageTransform.Interface;\n}\n\nexport const getStorageTransformFactory: GetStorageTransformFactory = context => {\n const registry = context.container.resolve(StorageTransformRegistry);\n\n const result: GenericRecord<string, StorageTransform.Interface> = {};\n let defaultStorageTransform: StorageTransform.Interface;\n\n const storageTransforms = registry.getAll().toReversed();\n\n for (const storageTransform of storageTransforms) {\n if (storageTransform.fieldType === \"*\") {\n defaultStorageTransform = storageTransform;\n }\n result[storageTransform.fieldType] = storageTransform;\n }\n\n return (type: string) => {\n const fieldType = getBaseFieldType({\n type\n });\n // first we check the exact type, then the base type, and if nothing is found, we return the default storage transform.\n if (result[type]) {\n return result[type];\n } else if (fieldType !== type && result[fieldType]) {\n return result[fieldType];\n }\n return defaultStorageTransform;\n };\n};\n\nconst doNotTouchProperty = Symbol(\"__DO_NOT_TOUCH_AS_WE_USE_IT_TO_SKIP_UNNECESSARY_OPERATIONS\");\n\n/**\n * This should be used when transforming the whole entry.\n */\nconst entryStorageTransform = async <T extends CmsEntryValues = CmsEntryValues>(\n context: Pick<CmsContext, \"container\">,\n model: CmsModel,\n operation: \"toStorage\" | \"fromStorage\",\n entry: CmsEntry<T>\n): Promise<CmsEntry<T>> => {\n /**\n * We use this property to skip unnecessary operations.\n */\n // @ts-expect-error\n if (entry[doNotTouchProperty] === operation) {\n return entry;\n }\n\n const getStorageTransform = getStorageTransformFactory(context);\n\n const fieldValues = model.fields\n .filter(field => {\n return entry.values.hasOwnProperty(field.fieldId);\n })\n .map(async field => {\n const key = field.fieldId as keyof T;\n const value = entry.values[key];\n const storageTransform = getStorageTransform(field.type);\n const transformed = await storageTransform[operation]({\n model,\n field,\n value,\n getStorageTransform\n });\n return [key, transformed] as const;\n });\n\n const results = await Promise.all(fieldValues);\n const transformedValues = Object.fromEntries(results) as T;\n\n const result = {\n ...entry,\n values: transformedValues\n };\n /**\n * We need to assign the variable so that we can skip unnecessary operations next time.\n */\n Object.defineProperty(result, doNotTouchProperty, {\n enumerable: false,\n value: operation,\n configurable: true\n });\n\n return result;\n};\n\n/**\n * A function that is used in crud to transform entry into the storage type.\n */\nexport const entryToStorageTransform = async (\n context: Pick<CmsContext, \"container\">,\n model: CmsModel,\n entry: CmsEntry\n): Promise<CmsEntry> => {\n return entryStorageTransform(context, model, \"toStorage\", entry);\n};\n\n/**\n * A function that is used to transform the whole entry from storage into its native form.\n */\nexport const entryFromStorageTransform = async (\n context: Pick<CmsContext, \"container\">,\n model: CmsModel,\n entry: CmsEntry\n): Promise<CmsEntry> => {\n return entryStorageTransform(context, model, \"fromStorage\", entry);\n};\n\ninterface EntryFieldFromStorageTransformParams {\n context: Pick<CmsContext, \"container\">;\n model: CmsModel;\n field: CmsModelField;\n value: any;\n}\n/*\n * A function that is used to transform a single field from storage\n */\nexport const entryFieldFromStorageTransform = async <T = any>(\n params: EntryFieldFromStorageTransformParams\n): Promise<T> => {\n const { context, model, field, value } = params;\n const getStorageTransform = getStorageTransformFactory(context);\n\n const storageTransform = getStorageTransform(field.type);\n\n return storageTransform.fromStorage({\n model,\n field,\n value,\n getStorageTransform\n });\n};\n"],"names":["getStorageTransformFactory","context","registry","StorageTransformRegistry","result","defaultStorageTransform","storageTransforms","storageTransform","type","fieldType","getBaseFieldType","doNotTouchProperty","Symbol","entryStorageTransform","model","operation","entry","getStorageTransform","fieldValues","field","key","value","transformed","results","Promise","transformedValues","Object","entryToStorageTransform","entryFromStorageTransform","entryFieldFromStorageTransform","params"],"mappings":";;AAeO,MAAMA,6BAAyDC,CAAAA;IAClE,MAAMC,WAAWD,QAAQ,SAAS,CAAC,OAAO,CAACE;IAE3C,MAAMC,SAA4D,CAAC;IACnE,IAAIC;IAEJ,MAAMC,oBAAoBJ,SAAS,MAAM,GAAG,UAAU;IAEtD,KAAK,MAAMK,oBAAoBD,kBAAmB;QAC9C,IAAIC,AAA+B,QAA/BA,iBAAiB,SAAS,EAC1BF,0BAA0BE;QAE9BH,MAAM,CAACG,iBAAiB,SAAS,CAAC,GAAGA;IACzC;IAEA,OAAO,CAACC;QACJ,MAAMC,YAAYC,iBAAiB;YAC/BF;QACJ;QAEA,IAAIJ,MAAM,CAACI,KAAK,EACZ,OAAOJ,MAAM,CAACI,KAAK;
|
|
1
|
+
{"version":3,"file":"utils/entryStorage.js","sources":["../../src/utils/entryStorage.ts"],"sourcesContent":["import type {\n CmsContext,\n CmsEntry,\n CmsEntryValues,\n CmsModel,\n CmsModelField\n} from \"~/types/index.js\";\nimport { StorageTransform, StorageTransformRegistry } from \"~/features/storage/index.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType.js\";\n\nexport interface GetStorageTransformFactory {\n (context: Pick<CmsContext, \"container\">): (fieldType: string) => StorageTransform.Interface;\n}\n\nexport const getStorageTransformFactory: GetStorageTransformFactory = context => {\n const registry = context.container.resolve(StorageTransformRegistry);\n\n const result: GenericRecord<string, StorageTransform.Interface> = {};\n let defaultStorageTransform: StorageTransform.Interface;\n\n const storageTransforms = registry.getAll().toReversed();\n\n for (const storageTransform of storageTransforms) {\n if (storageTransform.fieldType === \"*\") {\n defaultStorageTransform = storageTransform;\n }\n result[storageTransform.fieldType] = storageTransform;\n }\n\n return (type: string) => {\n const fieldType = getBaseFieldType({\n type\n });\n // first we check the exact type, then the base type, and if nothing is found, we return the default storage transform.\n if (result[type]) {\n return result[type];\n } else if (fieldType !== type && result[fieldType]) {\n return result[fieldType];\n }\n return defaultStorageTransform;\n };\n};\n\nconst doNotTouchProperty = Symbol(\"__DO_NOT_TOUCH_AS_WE_USE_IT_TO_SKIP_UNNECESSARY_OPERATIONS\");\n\n/**\n * This should be used when transforming the whole entry.\n */\nconst entryStorageTransform = async <T extends CmsEntryValues = CmsEntryValues>(\n context: Pick<CmsContext, \"container\">,\n model: CmsModel,\n operation: \"toStorage\" | \"fromStorage\",\n entry: CmsEntry<T>\n): Promise<CmsEntry<T>> => {\n /**\n * We use this property to skip unnecessary operations.\n */\n // @ts-expect-error\n if (entry[doNotTouchProperty] === operation) {\n return entry;\n }\n\n const getStorageTransform = getStorageTransformFactory(context);\n\n const fieldValues = model.fields\n .filter(field => {\n return entry.values.hasOwnProperty(field.fieldId);\n })\n .map(async field => {\n const key = field.fieldId as keyof T;\n const value = entry.values[key];\n const storageTransform = getStorageTransform(field.type);\n const transformed = await storageTransform[operation]({\n model,\n field,\n value,\n getStorageTransform\n });\n return [key, transformed] as const;\n });\n\n const results = await Promise.all(fieldValues);\n const transformedValues = Object.fromEntries(results) as T;\n\n const result = {\n ...entry,\n values: transformedValues\n };\n /**\n * We need to assign the variable so that we can skip unnecessary operations next time.\n */\n Object.defineProperty(result, doNotTouchProperty, {\n enumerable: false,\n value: operation,\n configurable: true\n });\n\n return result;\n};\n\n/**\n * A function that is used in crud to transform entry into the storage type.\n */\nexport const entryToStorageTransform = async (\n context: Pick<CmsContext, \"container\">,\n model: CmsModel,\n entry: CmsEntry\n): Promise<CmsEntry> => {\n return entryStorageTransform(context, model, \"toStorage\", entry);\n};\n\n/**\n * A function that is used to transform the whole entry from storage into its native form.\n */\nexport const entryFromStorageTransform = async (\n context: Pick<CmsContext, \"container\">,\n model: CmsModel,\n entry: CmsEntry\n): Promise<CmsEntry> => {\n return entryStorageTransform(context, model, \"fromStorage\", entry);\n};\n\ninterface EntryFieldFromStorageTransformParams {\n context: Pick<CmsContext, \"container\">;\n model: CmsModel;\n field: CmsModelField;\n value: any;\n}\n/*\n * A function that is used to transform a single field from storage\n */\nexport const entryFieldFromStorageTransform = async <T = any>(\n params: EntryFieldFromStorageTransformParams\n): Promise<T> => {\n const { context, model, field, value } = params;\n const getStorageTransform = getStorageTransformFactory(context);\n\n const storageTransform = getStorageTransform(field.type);\n\n return storageTransform.fromStorage({\n model,\n field,\n value,\n getStorageTransform\n });\n};\n"],"names":["getStorageTransformFactory","context","registry","StorageTransformRegistry","result","defaultStorageTransform","storageTransforms","storageTransform","type","fieldType","getBaseFieldType","doNotTouchProperty","Symbol","entryStorageTransform","model","operation","entry","getStorageTransform","fieldValues","field","key","value","transformed","results","Promise","transformedValues","Object","entryToStorageTransform","entryFromStorageTransform","entryFieldFromStorageTransform","params"],"mappings":";;AAeO,MAAMA,6BAAyDC,CAAAA;IAClE,MAAMC,WAAWD,QAAQ,SAAS,CAAC,OAAO,CAACE;IAE3C,MAAMC,SAA4D,CAAC;IACnE,IAAIC;IAEJ,MAAMC,oBAAoBJ,SAAS,MAAM,GAAG,UAAU;IAEtD,KAAK,MAAMK,oBAAoBD,kBAAmB;QAC9C,IAAIC,AAA+B,QAA/BA,iBAAiB,SAAS,EAC1BF,0BAA0BE;QAE9BH,MAAM,CAACG,iBAAiB,SAAS,CAAC,GAAGA;IACzC;IAEA,OAAO,CAACC;QACJ,MAAMC,YAAYC,iBAAiB;YAC/BF;QACJ;QAEA,IAAIJ,MAAM,CAACI,KAAK,EACZ,OAAOJ,MAAM,CAACI,KAAK;QAChB,IAAIC,cAAcD,QAAQJ,MAAM,CAACK,UAAU,EAC9C,OAAOL,MAAM,CAACK,UAAU;QAE5B,OAAOJ;IACX;AACJ;AAEA,MAAMM,qBAAqBC,OAAO;AAKlC,MAAMC,wBAAwB,OAC1BZ,SACAa,OACAC,WACAC;IAMA,IAAIA,KAAK,CAACL,mBAAmB,KAAKI,WAC9B,OAAOC;IAGX,MAAMC,sBAAsBjB,2BAA2BC;IAEvD,MAAMiB,cAAcJ,MAAM,MAAM,CAC3B,MAAM,CAACK,CAAAA,QACGH,MAAM,MAAM,CAAC,cAAc,CAACG,MAAM,OAAO,GAEnD,GAAG,CAAC,OAAMA;QACP,MAAMC,MAAMD,MAAM,OAAO;QACzB,MAAME,QAAQL,MAAM,MAAM,CAACI,IAAI;QAC/B,MAAMb,mBAAmBU,oBAAoBE,MAAM,IAAI;QACvD,MAAMG,cAAc,MAAMf,gBAAgB,CAACQ,UAAU,CAAC;YAClDD;YACAK;YACAE;YACAJ;QACJ;QACA,OAAO;YAACG;YAAKE;SAAY;IAC7B;IAEJ,MAAMC,UAAU,MAAMC,QAAQ,GAAG,CAACN;IAClC,MAAMO,oBAAoBC,OAAO,WAAW,CAACH;IAE7C,MAAMnB,SAAS;QACX,GAAGY,KAAK;QACR,QAAQS;IACZ;IAIAC,OAAO,cAAc,CAACtB,QAAQO,oBAAoB;QAC9C,YAAY;QACZ,OAAOI;QACP,cAAc;IAClB;IAEA,OAAOX;AACX;AAKO,MAAMuB,0BAA0B,OACnC1B,SACAa,OACAE,QAEOH,sBAAsBZ,SAASa,OAAO,aAAaE;AAMvD,MAAMY,4BAA4B,OACrC3B,SACAa,OACAE,QAEOH,sBAAsBZ,SAASa,OAAO,eAAeE;AAYzD,MAAMa,iCAAiC,OAC1CC;IAEA,MAAM,EAAE7B,OAAO,EAAEa,KAAK,EAAEK,KAAK,EAAEE,KAAK,EAAE,GAAGS;IACzC,MAAMb,sBAAsBjB,2BAA2BC;IAEvD,MAAMM,mBAAmBU,oBAAoBE,MAAM,IAAI;IAEvD,OAAOZ,iBAAiB,WAAW,CAAC;QAChCO;QACAK;QACAE;QACAJ;IACJ;AACJ"}
|
package/utils/index.d.ts
CHANGED
package/utils/index.js
CHANGED
package/utils/renderFields.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/renderFields.js","sources":["../../src/utils/renderFields.ts"],"sourcesContent":["import type {\n ApiEndpoint,\n CmsModel,\n CmsModelField,\n CmsModelFieldDefinition\n} from \"~/types/index.js\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType.js\";\nimport type {\n CmsModelFieldToGraphQL,\n CmsModelFieldToGraphQLRegistry\n} from \"~/features/graphql/index.js\";\n\nconst getFieldApi = (\n field: CmsModelFieldToGraphQL.Interface,\n type: ApiEndpoint\n): CmsModelFieldToGraphQL.ManageApi => {\n if (type === \"manage\") {\n return field.manage;\n }\n /* \"read\" and \"preview\" both use the read API. */\n return field.read as CmsModelFieldToGraphQL.ManageApi;\n};\n\ninterface RenderFieldsParams {\n models: CmsModel[];\n model: CmsModel;\n fields: CmsModelField[];\n type: ApiEndpoint;\n fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;\n}\n\ninterface RenderFields {\n (params: RenderFieldsParams): CmsModelFieldDefinition[];\n}\n\nexport const renderFields: RenderFields = ({\n models,\n model,\n fields,\n type,\n fieldRegistry\n}): CmsModelFieldDefinition[] => {\n return fields\n .map(field => renderField({ models, model, type, field, fieldRegistry }))\n .filter(Boolean) as CmsModelFieldDefinition[];\n};\n\ninterface RenderFieldParams extends Omit<RenderFieldsParams, \"fields\"> {\n field: CmsModelField;\n}\n\nexport const renderField = ({\n models,\n model,\n type,\n field,\n fieldRegistry\n}: RenderFieldParams): CmsModelFieldDefinition | null => {\n const plugin = fieldRegistry.get(getBaseFieldType(field));\n if (!plugin) {\n return null;\n }\n const api = getFieldApi(plugin, type);\n const { createTypeField } = api;\n const defs = createTypeField({\n models,\n model,\n field,\n fieldRegistry\n });\n\n if (!defs) {\n return null;\n } else if (typeof defs === \"string\") {\n return {\n fields: defs\n };\n }\n\n return defs;\n};\n"],"names":["getFieldApi","field","type","renderFields","models","model","fields","fieldRegistry","renderField","Boolean","plugin","getBaseFieldType","api","createTypeField","defs"],"mappings":";AAYA,MAAMA,cAAc,CAChBC,OACAC;IAEA,IAAIA,AAAS,aAATA,MACA,OAAOD,MAAM,MAAM;IAGvB,OAAOA,MAAM,IAAI;AACrB;AAcO,MAAME,eAA6B,CAAC,EACvCC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNJ,IAAI,EACJK,aAAa,EAChB,GACUD,OACF,GAAG,CAACL,CAAAA,QAASO,YAAY;YAAEJ;YAAQC;YAAOH;YAAMD;YAAOM;QAAc,IACrE,MAAM,CAACE;AAOT,MAAMD,cAAc,CAAC,EACxBJ,MAAM,EACNC,KAAK,EACLH,IAAI,EACJD,KAAK,EACLM,aAAa,EACG;IAChB,MAAMG,SAASH,cAAc,GAAG,CAACI,iBAAiBV;IAClD,IAAI,CAACS,QACD,OAAO;IAEX,MAAME,MAAMZ,YAAYU,QAAQR;IAChC,MAAM,EAAEW,eAAe,EAAE,GAAGD;IAC5B,MAAME,OAAOD,gBAAgB;QACzBT;QACAC;QACAJ;QACAM;IACJ;IAEA,IAAI,CAACO,MACD,OAAO;
|
|
1
|
+
{"version":3,"file":"utils/renderFields.js","sources":["../../src/utils/renderFields.ts"],"sourcesContent":["import type {\n ApiEndpoint,\n CmsModel,\n CmsModelField,\n CmsModelFieldDefinition\n} from \"~/types/index.js\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType.js\";\nimport type {\n CmsModelFieldToGraphQL,\n CmsModelFieldToGraphQLRegistry\n} from \"~/features/graphql/index.js\";\n\nconst getFieldApi = (\n field: CmsModelFieldToGraphQL.Interface,\n type: ApiEndpoint\n): CmsModelFieldToGraphQL.ManageApi => {\n if (type === \"manage\") {\n return field.manage;\n }\n /* \"read\" and \"preview\" both use the read API. */\n return field.read as CmsModelFieldToGraphQL.ManageApi;\n};\n\ninterface RenderFieldsParams {\n models: CmsModel[];\n model: CmsModel;\n fields: CmsModelField[];\n type: ApiEndpoint;\n fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;\n}\n\ninterface RenderFields {\n (params: RenderFieldsParams): CmsModelFieldDefinition[];\n}\n\nexport const renderFields: RenderFields = ({\n models,\n model,\n fields,\n type,\n fieldRegistry\n}): CmsModelFieldDefinition[] => {\n return fields\n .map(field => renderField({ models, model, type, field, fieldRegistry }))\n .filter(Boolean) as CmsModelFieldDefinition[];\n};\n\ninterface RenderFieldParams extends Omit<RenderFieldsParams, \"fields\"> {\n field: CmsModelField;\n}\n\nexport const renderField = ({\n models,\n model,\n type,\n field,\n fieldRegistry\n}: RenderFieldParams): CmsModelFieldDefinition | null => {\n const plugin = fieldRegistry.get(getBaseFieldType(field));\n if (!plugin) {\n return null;\n }\n const api = getFieldApi(plugin, type);\n const { createTypeField } = api;\n const defs = createTypeField({\n models,\n model,\n field,\n fieldRegistry\n });\n\n if (!defs) {\n return null;\n } else if (typeof defs === \"string\") {\n return {\n fields: defs\n };\n }\n\n return defs;\n};\n"],"names":["getFieldApi","field","type","renderFields","models","model","fields","fieldRegistry","renderField","Boolean","plugin","getBaseFieldType","api","createTypeField","defs"],"mappings":";AAYA,MAAMA,cAAc,CAChBC,OACAC;IAEA,IAAIA,AAAS,aAATA,MACA,OAAOD,MAAM,MAAM;IAGvB,OAAOA,MAAM,IAAI;AACrB;AAcO,MAAME,eAA6B,CAAC,EACvCC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNJ,IAAI,EACJK,aAAa,EAChB,GACUD,OACF,GAAG,CAACL,CAAAA,QAASO,YAAY;YAAEJ;YAAQC;YAAOH;YAAMD;YAAOM;QAAc,IACrE,MAAM,CAACE;AAOT,MAAMD,cAAc,CAAC,EACxBJ,MAAM,EACNC,KAAK,EACLH,IAAI,EACJD,KAAK,EACLM,aAAa,EACG;IAChB,MAAMG,SAASH,cAAc,GAAG,CAACI,iBAAiBV;IAClD,IAAI,CAACS,QACD,OAAO;IAEX,MAAME,MAAMZ,YAAYU,QAAQR;IAChC,MAAM,EAAEW,eAAe,EAAE,GAAGD;IAC5B,MAAME,OAAOD,gBAAgB;QACzBT;QACAC;QACAJ;QACAM;IACJ;IAEA,IAAI,CAACO,MACD,OAAO;IACJ,IAAI,AAAgB,YAAhB,OAAOA,MACd,OAAO;QACH,QAAQA;IACZ;IAGJ,OAAOA;AACX"}
|
package/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type { CreateGraphQLParams } from \"~/graphql/index.js\";\nimport { createGraphQL as baseCreateGraphQL } from \"~/graphql/index.js\";\nimport {\n createContextParameterPlugin,\n createHeaderParameterPlugin,\n createPathParameterPlugin\n} from \"~/parameters/index.js\";\nimport { createContextPlugin } from \"~/context.js\";\nimport {\n entryFieldFromStorageTransform,\n entryFromStorageTransform,\n entryToStorageTransform\n} from \"./utils/entryStorage.js\";\nimport { createFieldConverters } from \"~/fieldConverters/index.js\";\nimport { createExportGraphQL } from \"~/export/index.js\";\nimport { createRevisionIdScalarPlugin } from \"~/graphql/scalars/RevisionIdScalarPlugin.js\";\nimport type { Plugin } from \"@webiny/plugins/types.js\";\n\nexport * from \"./utils/isHeadlessCmsReady.js\";\nexport * from \"./utils/createModelField.js\";\nexport * from \"./graphql/schema/resolvers/manage/normalizeGraphQlInput.js\";\n\nexport type CreateHeadlessCmsGraphQLParams = CreateGraphQLParams;\nexport const createHeadlessCmsGraphQL = (params: CreateHeadlessCmsGraphQLParams = {}): Plugin[] => {\n return [\n ...createRevisionIdScalarPlugin(),\n /**\n * PathParameter plugins are used to determine the type of the cms endpoint\n */\n createPathParameterPlugin(),\n createHeaderParameterPlugin(),\n createContextParameterPlugin(),\n /**\n * At this point we can create, or not create, CMS GraphQL Schema.\n */\n ...baseCreateGraphQL(params),\n createExportGraphQL()\n ];\n};\n\nexport const createHeadlessCmsContext = () => {\n return [\n /**\n * Context for all Lambdas - everything is loaded now.\n */\n createContextPlugin(),\n createFieldConverters()\n ];\n};\nexport * from \"~/plugins/index.js\";\nexport * from \"~/utils/incrementEntryIdVersion.js\";\nexport * from \"./graphql/handleRequest.js\";\nexport * from \"./features/contentEntry/ContentEntryTraverser/ContentEntryTraverser.js\";\nexport { ContentEntryTraverserProvider } from \"./features/contentEntry/ContentEntryTraverser/abstractions.js\";\nexport * from \"./utils/contentModelAst/index.js\";\nexport { CmsWhereMapper } from \"~/features/whereMapper/abstractions.js\";\nexport { CmsSortMapper } from \"~/features/sortMapper/abstractions.js\";\nexport { entryToStorageTransform, entryFieldFromStorageTransform, entryFromStorageTransform };\n"],"names":["createHeadlessCmsGraphQL","params","createRevisionIdScalarPlugin","createPathParameterPlugin","createHeaderParameterPlugin","createContextParameterPlugin","baseCreateGraphQL","createExportGraphQL","createHeadlessCmsContext","createContextPlugin","createFieldConverters"],"mappings":";;;;;;;;;;;;;;AAuBO,MAAMA,2BAA2B,CAACC,SAAyC,CAAC,CAAC,GACzE;WACAC;QAIHC;QACAC;QACAC;WAIGC,cAAkBL;QACrBM;KACH;AAGE,MAAMC,2BAA2B,IAC7B;QAIHC;QACAC;KACH"}
|