Skip to content

Commit

Permalink
feat: add esm option
Browse files Browse the repository at this point in the history
  • Loading branch information
dderevjanik committed Jul 18, 2024
1 parent 2ea3280 commit bde0490
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 7 deletions.
6 changes: 5 additions & 1 deletion src/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ const conf = yargs(process.argv.slice(2))
description:
"Maximum count of definitions with the same name but increased suffix. Will throw an error if exceeded.",
})
.option("esm", {
type: "boolean",
description: "Generate imports with .js suffix",
})
.option("quiet", {
type: "boolean",
description: "Suppress all logs",
Expand All @@ -55,7 +59,7 @@ const conf = yargs(process.argv.slice(2))
.option("no-color", {
type: "boolean",
description: "Logs without colors",
}).argv;
}).parseSync();

// Logger section

Expand Down
14 changes: 8 additions & 6 deletions src/generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,13 @@ import { Logger } from "./utils/logger";
export interface GeneratorOptions {
emitDefinitionsOnly: boolean;
modelPropertyNaming: ModelPropertyNaming;
esm: boolean;
}

const defaultOptions: GeneratorOptions = {
emitDefinitionsOnly: false,
modelPropertyNaming: null,
esm: false,
};

/**
Expand Down Expand Up @@ -177,13 +179,13 @@ export async function generate(
);
addSafeImport(
clientImports,
`./definitions/${method.paramDefinition.name}`,
`./definitions/${method.paramDefinition.name}${mergedOptions.esm ? ".js" : ""}`,
method.paramDefinition.name
);
}
addSafeImport(
portImports,
`../definitions/${method.paramDefinition.name}`,
`../definitions/${method.paramDefinition.name}${mergedOptions.esm ? ".js" : ""}`,
method.paramDefinition.name
);
}
Expand All @@ -200,13 +202,13 @@ export async function generate(
);
addSafeImport(
clientImports,
`./definitions/${method.returnDefinition.name}`,
`./definitions/${method.returnDefinition.name}${mergedOptions.esm ? ".js" : ""}`,
method.returnDefinition.name
);
}
addSafeImport(
portImports,
`../definitions/${method.returnDefinition.name}`,
`../definitions/${method.returnDefinition.name}${mergedOptions.esm ? ".js" : ""}`,
method.returnDefinition.name
);
}
Expand All @@ -230,7 +232,7 @@ export async function generate(
});
} // End of PortMethod
if (!mergedOptions.emitDefinitionsOnly) {
addSafeImport(serviceImports, `../ports/${port.name}`, port.name);
addSafeImport(serviceImports, `../ports/${port.name}${mergedOptions.esm ? ".js" : ""}`, port.name);
servicePorts.push({
name: sanitizePropName(port.name),
isReadonly: true,
Expand All @@ -252,7 +254,7 @@ export async function generate(
} // End of Port

if (!mergedOptions.emitDefinitionsOnly) {
addSafeImport(clientImports, `./services/${service.name}`, service.name);
addSafeImport(clientImports, `./services/${service.name}${mergedOptions.esm ? ".js" : ""}`, service.name);
clientServices.push({ name: sanitizePropName(service.name), type: service.name });

serviceFile.addImportDeclarations(serviceImports);
Expand Down
5 changes: 5 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ export interface Options {
* Property naming convention ('camelCase' or 'PascalCase')"
*/
modelPropertyNaming: ModelPropertyNaming;
/**
* Generate imports with .js suffix
*/
esm: boolean
/**
* Print verbose logs
* @default false
Expand All @@ -65,6 +69,7 @@ export const defaultOptions: Options = {
caseInsensitiveNames: false,
maxRecursiveDefinitionName: 64,
modelPropertyNaming: null,
esm: false,
//
verbose: false,
quiet: false,
Expand Down

0 comments on commit bde0490

Please # to comment.