@kosdev-code/kos-codegen-core 3.0.6 → 3.0.8
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/index.d.ts +2 -2
- package/index.d.ts.map +1 -1
- package/index.js +68 -4
- package/index.js.map +1 -1
- package/index.mjs +68 -4
- package/index.mjs.map +1 -1
- package/lib/generators/augment/ts-toolkit.d.ts +7 -0
- package/lib/generators/augment/ts-toolkit.d.ts.map +1 -1
- package/lib/generators/generate-container-model.d.ts +1 -0
- package/lib/generators/generate-container-model.d.ts.map +1 -1
- package/lib/generators/index.d.ts +1 -1
- package/lib/generators/index.d.ts.map +1 -1
- package/lib/generators/member-mutators/add-child.d.ts +20 -0
- package/lib/generators/member-mutators/add-child.d.ts.map +1 -0
- package/lib/generators/member-mutators/index.d.ts +1 -0
- package/lib/generators/member-mutators/index.d.ts.map +1 -1
- package/lib/generators/update-model-index.d.ts.map +1 -1
- package/package.json +2 -2
- package/templates/kos-container-model/model/__nameDashCase__-model.ts.template +14 -7
package/index.d.ts
CHANGED
|
@@ -12,6 +12,6 @@ export { setCodegenLogger, getCodegenLogger } from './lib/logger';
|
|
|
12
12
|
export { getCurrentDirectoryName, getProject, getKosProjectConfiguration, getKosModelConfiguration, getKosModelConfigProp, addKosModelConfiguration, } from './lib/kos-config';
|
|
13
13
|
export type { KosModelConfiguration, KosProjectConfiguration, } from './lib/kos-config';
|
|
14
14
|
export { getTemplateDir } from './lib/template-resolver';
|
|
15
|
-
export { generateSplashProject, generateInit, normalizeOptions, appendBarrelExport, updateModelIndex, generateHook, generateContext, generateContainerModel, generateCompanionModel, generateModel, addFutureToModel, addContainerSupportToModel, addModelEffectToModel, addDependencyToModel, addTopicHandlerToModel, addConfigPropertyToModel, addServiceRequestToModel, addPropertyToModel, addComputedToModel, validateModel, describeModel, lookupSdkType, generateComponent, PLUGIN_TYPES, CONTRIBUTION_TYPE_MAP, LOCALIZED_PLUGIN_TYPES, KOS_JSON_PATHS, PluginHandlerFactory, BasePluginHandler, KosConfigBuilder, ValidationError, } from './lib/generators';
|
|
16
|
-
export type { SplashProjectOptions, KosInitOptions, KosBaseGeneratorOptions, NormalizedOptions, HookOptions, ContextOptions, ContainerModelOptions, CompanionModelOptions, ModelOptions, GenerateModelParams, AddFutureToModelOptions, NormalizedAddFutureToModelOptions, AddContainerSupportOptions, AddModelEffectOptions, AddDependencyOptions, AddTopicHandlerOptions, AddConfigPropertyOptions, AddServiceRequestOptions, AddPropertyOptions, AddComputedOptions, ValidateModelOptions, ValidationFinding, ValidationResult, DescribeModelOptions, DescribedMember, ModelDescription, LookupSdkTypeOptions, SdkSymbolDeclaration, SdkTypeLookupResult, ComponentOptions, NormalizedComponentOptions, PluginConfiguration, PluginContribution, ExperienceConfig, PluginType, PluginHandler, } from './lib/generators';
|
|
15
|
+
export { generateSplashProject, generateInit, normalizeOptions, appendBarrelExport, updateModelIndex, generateHook, generateContext, generateContainerModel, generateCompanionModel, generateModel, addFutureToModel, addContainerSupportToModel, addModelEffectToModel, addDependencyToModel, addChildToModel, addTopicHandlerToModel, addConfigPropertyToModel, addServiceRequestToModel, addPropertyToModel, addComputedToModel, validateModel, describeModel, lookupSdkType, generateComponent, PLUGIN_TYPES, CONTRIBUTION_TYPE_MAP, LOCALIZED_PLUGIN_TYPES, KOS_JSON_PATHS, PluginHandlerFactory, BasePluginHandler, KosConfigBuilder, ValidationError, } from './lib/generators';
|
|
16
|
+
export type { SplashProjectOptions, KosInitOptions, KosBaseGeneratorOptions, NormalizedOptions, HookOptions, ContextOptions, ContainerModelOptions, CompanionModelOptions, ModelOptions, GenerateModelParams, AddFutureToModelOptions, NormalizedAddFutureToModelOptions, AddContainerSupportOptions, AddModelEffectOptions, AddDependencyOptions, AddChildOptions, ChildShape, AddTopicHandlerOptions, AddConfigPropertyOptions, AddServiceRequestOptions, AddPropertyOptions, AddComputedOptions, ValidateModelOptions, ValidationFinding, ValidationResult, DescribeModelOptions, DescribedMember, ModelDescription, LookupSdkTypeOptions, SdkSymbolDeclaration, SdkTypeLookupResult, ComponentOptions, NormalizedComponentOptions, PluginConfiguration, PluginContribution, ExperienceConfig, PluginType, PluginHandler, } from './lib/generators';
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packages/kos-codegen-core/src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGhF,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGlE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,GACX,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EACL,QAAQ,EACR,SAAS,EACT,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGlE,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,EACvB,iCAAiC,EACjC,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packages/kos-codegen-core/src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGhF,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGlE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,GACX,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EACL,QAAQ,EACR,SAAS,EACT,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGlE,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,EACvB,iCAAiC,EACjC,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,kBAAkB,CAAC"}
|
package/index.js
CHANGED
|
@@ -607,6 +607,13 @@ function updateModelIndex(codegenFs, indexPath, modelPath) {
|
|
|
607
607
|
ts__namespace.ScriptTarget.Latest,
|
|
608
608
|
true
|
|
609
609
|
);
|
|
610
|
+
const alreadyExported = sourceFile.statements.some(
|
|
611
|
+
(st) => ts__namespace.isExportDeclaration(st) && st.moduleSpecifier !== void 0 && ts__namespace.isStringLiteral(st.moduleSpecifier) && st.moduleSpecifier.text === `./${modelPath}`
|
|
612
|
+
);
|
|
613
|
+
if (alreadyExported) {
|
|
614
|
+
logger.info(`Export for ${modelPath} already present in ${indexPath}`);
|
|
615
|
+
return;
|
|
616
|
+
}
|
|
610
617
|
const exportDeclaration = ts__namespace.factory.createExportDeclaration(
|
|
611
618
|
void 0,
|
|
612
619
|
false,
|
|
@@ -1781,10 +1788,11 @@ function addDecoratedProperty(cls, spec) {
|
|
|
1781
1788
|
cls.insertProperty(propertyInsertIndex(cls), {
|
|
1782
1789
|
name: spec.name,
|
|
1783
1790
|
type: spec.type,
|
|
1791
|
+
initializer: spec.initializer,
|
|
1784
1792
|
scope: spec.scope ? SCOPE_MAP[spec.scope] : void 0,
|
|
1785
|
-
hasExclamationToken: !!spec.hasExclamation,
|
|
1793
|
+
hasExclamationToken: spec.initializer ? false : !!spec.hasExclamation,
|
|
1786
1794
|
decorators: [
|
|
1787
|
-
{
|
|
1795
|
+
spec.bare && !spec.decoratorArgsText ? { name: spec.decoratorName } : {
|
|
1788
1796
|
name: spec.decoratorName,
|
|
1789
1797
|
arguments: spec.decoratorArgsText ? [spec.decoratorArgsText] : []
|
|
1790
1798
|
}
|
|
@@ -1887,7 +1895,7 @@ function addModelEffectToModel(codegenFs, options, projects) {
|
|
|
1887
1895
|
});
|
|
1888
1896
|
return { modelFilePath };
|
|
1889
1897
|
}
|
|
1890
|
-
const FRAMEWORK_TYPES = /* @__PURE__ */ new Set(["IKosDataModel", "IKosIdentifiable"]);
|
|
1898
|
+
const FRAMEWORK_TYPES$1 = /* @__PURE__ */ new Set(["IKosDataModel", "IKosIdentifiable"]);
|
|
1891
1899
|
function addDependencyToModel(codegenFs, options, projects) {
|
|
1892
1900
|
const logger = getCodegenLogger();
|
|
1893
1901
|
const { modelFilePath } = resolveModelFilePath(codegenFs, options, projects);
|
|
@@ -1909,7 +1917,7 @@ function addDependencyToModel(codegenFs, options, projects) {
|
|
|
1909
1917
|
)?.[1];
|
|
1910
1918
|
if (bean) named.push({ name: bean });
|
|
1911
1919
|
const depType = options.dependencyType?.trim();
|
|
1912
|
-
if (depType && /^[A-Za-z_$][\w$]*$/.test(depType) && !FRAMEWORK_TYPES.has(depType)) {
|
|
1920
|
+
if (depType && /^[A-Za-z_$][\w$]*$/.test(depType) && !FRAMEWORK_TYPES$1.has(depType)) {
|
|
1913
1921
|
named.push({ name: depType, isTypeOnly: true });
|
|
1914
1922
|
}
|
|
1915
1923
|
if (named.length) ensureNamedImport(sf, options.dependencyPackage, named);
|
|
@@ -1926,6 +1934,61 @@ function addDependencyToModel(codegenFs, options, projects) {
|
|
|
1926
1934
|
});
|
|
1927
1935
|
return { modelFilePath };
|
|
1928
1936
|
}
|
|
1937
|
+
const FRAMEWORK_TYPES = /* @__PURE__ */ new Set(["IKosDataModel", "IKosIdentifiable"]);
|
|
1938
|
+
function addChildToModel(codegenFs, options, projects) {
|
|
1939
|
+
const logger = getCodegenLogger();
|
|
1940
|
+
const shape = options.shape ?? "single";
|
|
1941
|
+
const { modelFilePath } = resolveModelFilePath(codegenFs, options, projects);
|
|
1942
|
+
if (!codegenFs.exists(modelFilePath)) {
|
|
1943
|
+
throw new Error(`Model file not found: ${modelFilePath}`);
|
|
1944
|
+
}
|
|
1945
|
+
logger.info(
|
|
1946
|
+
`Adding @kosChild "${options.propertyName}" (${shape}) to ${options.modelName}`
|
|
1947
|
+
);
|
|
1948
|
+
const childType = options.childType?.trim();
|
|
1949
|
+
transformSourceFile(codegenFs, modelFilePath, (sf) => {
|
|
1950
|
+
const sdk = resolveSdkModuleSpecifier(sf);
|
|
1951
|
+
const sdkImports = [
|
|
1952
|
+
{ name: "kosChild" }
|
|
1953
|
+
];
|
|
1954
|
+
if (shape === "container") sdkImports.push({ name: "KosModelContainer" });
|
|
1955
|
+
ensureNamedImport(sf, sdk, sdkImports);
|
|
1956
|
+
if (options.childPackage && childType && /^[A-Za-z_$][\w$]*$/.test(childType) && !FRAMEWORK_TYPES.has(childType)) {
|
|
1957
|
+
ensureNamedImport(sf, options.childPackage, [
|
|
1958
|
+
{ name: childType, isTypeOnly: true }
|
|
1959
|
+
]);
|
|
1960
|
+
}
|
|
1961
|
+
const cls = getModelClass(sf);
|
|
1962
|
+
if (shape === "container") {
|
|
1963
|
+
addDecoratedProperty(cls, {
|
|
1964
|
+
name: options.propertyName,
|
|
1965
|
+
decoratorName: "kosChild",
|
|
1966
|
+
bare: true,
|
|
1967
|
+
initializer: `new KosModelContainer<${childType}>()`,
|
|
1968
|
+
scope: "private"
|
|
1969
|
+
});
|
|
1970
|
+
} else if (shape === "array") {
|
|
1971
|
+
addDecoratedProperty(cls, {
|
|
1972
|
+
name: options.propertyName,
|
|
1973
|
+
decoratorName: "kosChild",
|
|
1974
|
+
bare: true,
|
|
1975
|
+
type: `${childType}[]`,
|
|
1976
|
+
initializer: "[]",
|
|
1977
|
+
scope: "private"
|
|
1978
|
+
});
|
|
1979
|
+
} else {
|
|
1980
|
+
addDecoratedProperty(cls, {
|
|
1981
|
+
name: options.propertyName,
|
|
1982
|
+
decoratorName: "kosChild",
|
|
1983
|
+
bare: true,
|
|
1984
|
+
type: childType,
|
|
1985
|
+
scope: "private",
|
|
1986
|
+
hasExclamation: true
|
|
1987
|
+
});
|
|
1988
|
+
}
|
|
1989
|
+
});
|
|
1990
|
+
return { modelFilePath };
|
|
1991
|
+
}
|
|
1929
1992
|
function addTopicHandlerToModel(codegenFs, options, projects) {
|
|
1930
1993
|
const logger = getCodegenLogger();
|
|
1931
1994
|
const { modelFilePath } = resolveModelFilePath(codegenFs, options, projects);
|
|
@@ -3014,6 +3077,7 @@ exports.PLUGIN_TYPES = PLUGIN_TYPES;
|
|
|
3014
3077
|
exports.PluginHandlerFactory = PluginHandlerFactory;
|
|
3015
3078
|
exports.TrackingFileSystem = TrackingFileSystem;
|
|
3016
3079
|
exports.ValidationError = ValidationError;
|
|
3080
|
+
exports.addChildToModel = addChildToModel;
|
|
3017
3081
|
exports.addComputedToModel = addComputedToModel;
|
|
3018
3082
|
exports.addConfigPropertyToModel = addConfigPropertyToModel;
|
|
3019
3083
|
exports.addContainerSupportToModel = addContainerSupportToModel;
|