* feat: adds autobuild of umbraco extensions created by the dotnet template * adds file extensions to imports to follow the esmodule convention + apply formatting * build(deps): upgrade hey-api, vite, typescript and generate new api * chore: formatting * clean up actions as client is now automatically being built when starting the site * revert change with UMBRACO_VERSION_FROM_TEMPLATE * revert if(includeExample) * use template name * use template name * feat: update the way it sets the auth token * add back in IncludeExample if * fix: rename allowPackageTelemetry to allowTelemetry because that is what it is actually called * `.csproj` amends - Adds `BeforeTargets` to "BuildClient" target - Adds "package.json" to "RestoreClient" target input - Removes extra parameters from `npm i` command --------- Co-authored-by: leekelleher <leekelleher@gmail.com>
57 lines
2.2 KiB
JavaScript
57 lines
2.2 KiB
JavaScript
import fetch from 'node-fetch';
|
|
import chalk from 'chalk';
|
|
import { createClient, defaultPlugins } from '@hey-api/openapi-ts';
|
|
|
|
// Start notifying user we are generating the TypeScript client
|
|
console.log(chalk.green("Generating OpenAPI client..."));
|
|
|
|
const swaggerUrl = process.argv[2];
|
|
if (swaggerUrl === undefined) {
|
|
console.error(chalk.red(`ERROR: Missing URL to OpenAPI spec`));
|
|
console.error(`Please provide the URL to the OpenAPI spec as the first argument found in ${chalk.yellow('package.json')}`);
|
|
console.error(`Example: node generate-openapi.js ${chalk.yellow('https://localhost:44331/umbraco/swagger/REPLACE_ME/swagger.json')}`);
|
|
process.exit();
|
|
}
|
|
|
|
// Needed to ignore self-signed certificates from running Umbraco on https on localhost
|
|
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
|
|
|
|
// Start checking to see if we can connect to the OpenAPI spec
|
|
console.log("Ensure your Umbraco instance is running");
|
|
console.log(`Fetching OpenAPI definition from ${chalk.yellow(swaggerUrl)}`);
|
|
|
|
fetch(swaggerUrl).then(async (response) => {
|
|
if (!response.ok) {
|
|
console.error(chalk.red(`ERROR: OpenAPI spec returned with a non OK (200) response: ${response.status} ${response.statusText}`));
|
|
console.error(`The URL to your Umbraco instance may be wrong or the instance is not running`);
|
|
console.error(`Please verify or change the URL in the ${chalk.yellow('package.json')} for the script ${chalk.yellow('generate-openapi')}`);
|
|
return;
|
|
}
|
|
|
|
console.log(`OpenAPI spec fetched successfully`);
|
|
console.log(`Calling ${chalk.yellow('hey-api')} to generate TypeScript client`);
|
|
|
|
await createClient({
|
|
input: swaggerUrl,
|
|
output: 'src/api',
|
|
plugins: [
|
|
...defaultPlugins,
|
|
'@hey-api/client-fetch',
|
|
{
|
|
name: '@hey-api/typescript',
|
|
enums: 'typescript'
|
|
},
|
|
{
|
|
name: '@hey-api/sdk',
|
|
asClass: true
|
|
}
|
|
],
|
|
});
|
|
|
|
})
|
|
.catch(error => {
|
|
console.error(`ERROR: Failed to connect to the OpenAPI spec: ${chalk.red(error.message)}`);
|
|
console.error(`The URL to your Umbraco instance may be wrong or the instance is not running`);
|
|
console.error(`Please verify or change the URL in the ${chalk.yellow('package.json')} for the script ${chalk.yellow('generate-openapi')}`);
|
|
});
|