diff --git a/packages/runtime/src/cross/model-meta.ts b/packages/runtime/src/cross/model-meta.ts index e125eec8b..805b3d6d1 100644 --- a/packages/runtime/src/cross/model-meta.ts +++ b/packages/runtime/src/cross/model-meta.ts @@ -12,7 +12,7 @@ export type RuntimeAttribute = { /** * Attribute arguments */ - args: Array<{ name?: string; value: unknown }>; + args: Array<{ name?: string; value?: unknown }>; }; /** diff --git a/packages/sdk/src/model-meta-generator.ts b/packages/sdk/src/model-meta-generator.ts index 84ea5ff2e..26e518782 100644 --- a/packages/sdk/src/model-meta-generator.ts +++ b/packages/sdk/src/model-meta-generator.ts @@ -80,13 +80,20 @@ export function generate( ) { const sf = project.createSourceFile(options.output, undefined, { overwrite: true }); + // generate: import type { ModelMeta } from '@zenstackhq/runtime'; + sf.addImportDeclaration({ + isTypeOnly: true, + namedImports: ['ModelMeta'], + moduleSpecifier: '@zenstackhq/runtime', + }); + const writer = new FastWriter(); const extraFunctions: OptionalKind[] = []; generateModelMetadata(models, typeDefs, writer, options, extraFunctions); sf.addVariableStatement({ declarationKind: VariableDeclarationKind.Const, - declarations: [{ name: 'metadata', initializer: writer.result }], + declarations: [{ name: 'metadata', type: 'ModelMeta', initializer: writer.result }], }); if (extraFunctions.length > 0) { @@ -364,7 +371,7 @@ function writeFields( function getAttributes(target: DataModelField | DataModel | TypeDefField): RuntimeAttribute[] { return target.attributes .map((attr) => { - const args: Array<{ name?: string; value: unknown }> = []; + const args: Array<{ name?: string; value?: unknown }> = []; for (const arg of attr.args) { const argName = arg.$resolvedParam?.name ?? arg.name; const argValue = exprToValue(arg.value);