@odata2ts/odata2ts
Version:
Flexible generator to produce various TypeScript artefacts (from simple model interfaces to complete odata clients) from OData metadata files
177 lines • 5.38 kB
JavaScript
import { __rest } from "tslib";
import deepmerge from "deepmerge";
import { NamingStrategies } from "./NamingModel.js";
import { EmitModes, Modes } from "./OptionModel.js";
/**
* The default configuration.
*/
const defaultConfig = {
sourceUrlConfig: {},
refreshFile: false,
mode: Modes.all,
emitMode: EmitModes.js_dts,
debug: false,
prettier: false,
tsconfig: "tsconfig.json",
converters: [],
skipEditableModels: false,
skipIdModels: false,
skipOperations: false,
skipComments: false,
enablePrimitivePropertyServices: false,
disableAutoManagedKey: false,
allowRenaming: false,
v2ModelsWithExtraResultsWrapping: false,
v4BigNumberAsString: false,
disableAutomaticNameClashResolution: false,
bundledFileGeneration: true,
enumType: "string",
naming: {
models: {
namingStrategy: NamingStrategies.PASCAL_CASE,
propNamingStrategy: NamingStrategies.CAMEL_CASE,
editableModels: {
prefix: "Editable",
suffix: "",
applyModelNaming: true,
},
idModels: {
prefix: "",
suffix: "Id",
applyModelNaming: true,
},
operationParamModels: {
prefix: "",
suffix: "Params",
applyModelNaming: true,
},
fileName: {
namingStrategy: NamingStrategies.PASCAL_CASE,
prefix: "",
suffix: "Model",
},
},
queryObjects: {
namingStrategy: NamingStrategies.PASCAL_CASE,
propNamingStrategy: NamingStrategies.CAMEL_CASE,
prefix: "Q",
suffix: "",
idFunctions: {
prefix: "",
suffix: "Id",
},
fileName: {
namingStrategy: NamingStrategies.PASCAL_CASE,
prefix: "Q",
suffix: "",
},
baseType: {
applyQNaming: true,
prefix: "",
suffix: "BaseType",
},
},
services: {
prefix: "",
suffix: "Service",
namingStrategy: NamingStrategies.PASCAL_CASE,
main: {
applyServiceNaming: true,
},
collection: {
prefix: "",
suffix: "Collection",
applyServiceNaming: true,
},
operations: {
namingStrategy: NamingStrategies.CAMEL_CASE,
},
relatedServiceGetter: {
namingStrategy: NamingStrategies.CAMEL_CASE,
prefix: "",
suffix: "",
},
privateProps: {
namingStrategy: NamingStrategies.CAMEL_CASE,
prefix: "_",
suffix: "",
},
},
},
propertiesByName: [],
byTypeAndName: [],
};
const { models, queryObjects, services } = defaultConfig.naming;
const minimalNamingConfig = {
models: {
fileName: {
prefix: models.fileName.prefix,
suffix: models.fileName.suffix,
},
idModels: {
applyModelNaming: true,
prefix: models.idModels.prefix,
suffix: models.idModels.suffix,
},
editableModels: {
applyModelNaming: true,
prefix: models.editableModels.prefix,
suffix: models.editableModels.suffix,
},
operationParamModels: {
applyModelNaming: true,
prefix: models.operationParamModels.prefix,
suffix: models.operationParamModels.suffix,
},
},
queryObjects: {
prefix: queryObjects.prefix,
suffix: queryObjects.suffix,
fileName: {
prefix: queryObjects.fileName.prefix,
suffix: queryObjects.fileName.suffix,
},
idFunctions: {
prefix: queryObjects.idFunctions.prefix,
suffix: queryObjects.idFunctions.suffix,
},
baseType: {
prefix: queryObjects.baseType.prefix,
suffix: queryObjects.baseType.suffix,
},
},
services: {
prefix: services.prefix,
suffix: services.suffix,
main: {
applyServiceNaming: true,
},
collection: {
applyServiceNaming: true,
prefix: services.collection.prefix,
suffix: services.collection.suffix,
},
privateProps: {
prefix: services.privateProps.prefix,
suffix: services.privateProps.suffix,
},
relatedServiceGetter: {
prefix: services.relatedServiceGetter.prefix,
suffix: services.relatedServiceGetter.suffix,
},
},
};
/**
* Creates a defensive copy of the default config.
*/
export function getDefaultConfig() {
return deepmerge(defaultConfig, {});
}
/**
* Creates a defensive copy of the minimal config: minimal in respect to naming.
*/
export function getMinimalConfig() {
const { naming } = defaultConfig, passThrough = __rest(defaultConfig, ["naming"]);
return deepmerge(passThrough, { naming: minimalNamingConfig });
}
//# sourceMappingURL=defaultConfig.js.map