New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@libria/scaffold-angular

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@libria/scaffold-angular - npm Package Compare versions

Comparing version
0.0.4
to
0.0.5
+1
-1
dist/index.cjs.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.cjs","names":[],"sources":["../src/angular.ts"],"sourcesContent":["import {execSync} from 'child_process';\nimport {definePlugin, PluginContext} from '@libria/plugin-loader';\nimport type {ScaffoldTemplatePlugin, ScaffoldTemplatePluginOption, ExecuteOptions} from '@libria/scaffold';\n\nexport interface AngularOptions {\n version: ScaffoldTemplatePluginOption<string>;\n style: ScaffoldTemplatePluginOption<string>;\n packageManager: ScaffoldTemplatePluginOption<string>;\n routing: ScaffoldTemplatePluginOption<boolean>;\n ssr: ScaffoldTemplatePluginOption<boolean>;\n standalone: ScaffoldTemplatePluginOption<boolean>;\n strict: ScaffoldTemplatePluginOption<boolean>;\n aiConfig: ScaffoldTemplatePluginOption<string>;\n fileNameStyleGuide: ScaffoldTemplatePluginOption<string>;\n prefix: ScaffoldTemplatePluginOption<string>;\n testRunner: ScaffoldTemplatePluginOption<string>;\n viewEncapsulation: ScaffoldTemplatePluginOption<string>;\n experimentalZoneless: ScaffoldTemplatePluginOption<boolean>;\n inlineStyle: ScaffoldTemplatePluginOption<boolean>;\n inlineTemplate: ScaffoldTemplatePluginOption<boolean>;\n minimal: ScaffoldTemplatePluginOption<boolean>;\n serverRouting: ScaffoldTemplatePluginOption<boolean>;\n skipGit: ScaffoldTemplatePluginOption<boolean>;\n skipInstall: ScaffoldTemplatePluginOption<boolean>;\n skipTests: ScaffoldTemplatePluginOption<boolean>;\n zoneless: ScaffoldTemplatePluginOption<boolean>;\n}\n\nexport const SCAFFOLD_TEMPLATE_PLUGIN_TYPE = 'scaffold-template';\n\nconst SUPPORTED_VERSIONS: Record<string, number[]> = {\n aiConfig: [21, 20],\n fileNameStyleGuide: [21],\n testRunner: [21],\n experimentalZoneless: [19],\n serverRouting: [19],\n zoneless: [21, 20],\n};\n\nexport default definePlugin<ScaffoldTemplatePlugin<AngularOptions>>({\n id: 'libria:scaffold:angular',\n name: 'angular',\n pluginType: SCAFFOLD_TEMPLATE_PLUGIN_TYPE,\n\n async create(_: PluginContext) {\n return {\n api: {\n argument: 'angular',\n getOptions: async (options) => {\n if (!options.version) {\n return {\n version: {\n flags: '--version <version>',\n description: 'Angular version:',\n choices: ['21', '20', '19', '18'],\n defaultValue: '21',\n },\n };\n }\n\n const major = Number(options.version);\n const allOptions: Record<string, ScaffoldTemplatePluginOption> = {\n version: {\n flags: '--version <version>',\n description: 'Angular version:',\n choices: ['21', '20', '19', '18'],\n defaultValue: '21',\n },\n style: {\n flags: '--style <value>',\n description: 'Which stylesheet format would you like to use?',\n choices: ['css', 'scss', 'sass', 'less', 'tailwind'],\n },\n packageManager: {\n flags: '--package-manager <value>',\n description: 'Which package manager would you like to use?',\n choices: ['npm', 'yarn', 'pnpm', 'bun', 'cnpm'],\n },\n routing: {\n flags: '--routing',\n description: 'Add routing?',\n },\n ssr: {\n flags: '--ssr',\n description: 'Enable Server-Side Rendering (SSR)?',\n },\n standalone: {\n flags: '--standalone',\n description: 'Use standalone components?',\n defaultValue: true,\n },\n strict: {\n flags: '--strict',\n description: 'Enable strict mode?',\n defaultValue: true,\n },\n aiConfig: {\n flags: '--ai-config <value>',\n description: 'Specifies which AI tools to generate configuration files for. These file are used to improve the outputs of AI tools by following the best practices.',\n },\n fileNameStyleGuide: {\n flags: '--file-name-style-guide <value>',\n description: 'The file naming convention to use for generated files. The \\'2025\\' style guide (default) uses a concise format (e.g., `app.ts` for the root component), while the \\'2016\\' style guide includes the type in the file name (e.g., `app.component.ts`). For more information, see the Angular Style Guide (https://angular.dev/style-guide).',\n choices: ['2016', '2025'],\n defaultValue: '2025',\n },\n prefix: {\n flags: '--prefix <value>',\n description: 'Component selector prefix:',\n defaultValue: 'app',\n },\n testRunner: {\n flags: '--test-runner <value>',\n description: 'The unit testing runner to use.',\n choices: ['vitest', 'karma'],\n defaultValue: 'vitest',\n },\n viewEncapsulation: {\n flags: '--view-encapsulation <value>',\n description: 'Which view encapsulation strategy?',\n choices: ['Emulated', 'None', 'ShadowDom'],\n },\n experimentalZoneless: {\n flags: '--experimental-zoneless',\n description: 'Create an initial application that does not utilize `zone.js`.',\n defaultValue: false,\n },\n inlineStyle: {\n flags: '--inline-style',\n description: 'Use inline styles?',\n },\n inlineTemplate: {\n flags: '--inline-template',\n description: 'Use inline templates?',\n },\n minimal: {\n flags: '--minimal',\n description: 'Create a minimal project?',\n defaultValue: false,\n },\n serverRouting: {\n flags: '--server-routing',\n description: 'Create a server application in the initial project using the Server Routing and App Engine APIs (Developer Preview).',\n },\n skipGit: {\n flags: '--skip-git',\n description: 'Skip git initialization?',\n defaultValue: false,\n },\n skipInstall: {\n flags: '--skip-install',\n description: 'Skip installing dependencies?',\n defaultValue: false,\n },\n skipTests: {\n flags: '--skip-tests',\n description: 'Skip generating test files?',\n defaultValue: false,\n },\n zoneless: {\n flags: '--zoneless',\n description: 'Create an initial application that does not utilize `zone.js`.',\n },\n };\n\n for (const [key, versions] of Object.entries(SUPPORTED_VERSIONS)) {\n if (!versions.includes(major)) {\n delete allOptions[key];\n }\n }\n\n return allOptions;\n },\n execute: async (options: ExecuteOptions<AngularOptions>) => {\n const {name, dryRun} = options;\n const major = Number(options.version);\n const args: string[] = [];\n\n args.push(`--style=${options.style}`);\n args.push(`--package-manager=${options.packageManager}`);\n args.push(options.routing ? '--routing' : '--routing=false');\n args.push(options.ssr ? '--ssr' : '--ssr=false');\n args.push(options.standalone ? '--standalone' : '--standalone=false');\n args.push(options.strict ? '--strict' : '--strict=false');\n if (SUPPORTED_VERSIONS.aiConfig.includes(major)) {\n if (options.aiConfig) args.push(`--ai-config=${options.aiConfig}`);\n }\n if (SUPPORTED_VERSIONS.fileNameStyleGuide.includes(major)) {\n args.push(`--file-name-style-guide=${options.fileNameStyleGuide}`);\n }\n if (options.prefix) args.push(`--prefix=${options.prefix}`);\n if (SUPPORTED_VERSIONS.testRunner.includes(major)) {\n args.push(`--test-runner=${options.testRunner}`);\n }\n args.push(`--view-encapsulation=${options.viewEncapsulation}`);\n if (SUPPORTED_VERSIONS.experimentalZoneless.includes(major)) {\n args.push(options.experimentalZoneless ? '--experimental-zoneless' : '--experimental-zoneless=false');\n }\n if (options.inlineStyle) args.push('--inline-style');\n if (options.inlineTemplate) args.push('--inline-template');\n if (options.minimal) args.push('--minimal');\n if (SUPPORTED_VERSIONS.serverRouting.includes(major)) {\n args.push(options.serverRouting ? '--server-routing' : '--server-routing=false');\n }\n if (options.skipGit) args.push('--skip-git');\n if (options.skipInstall) args.push('--skip-install');\n if (options.skipTests) args.push('--skip-tests');\n if (SUPPORTED_VERSIONS.zoneless.includes(major)) {\n args.push(options.zoneless ? '--zoneless' : '--zoneless=false');\n }\n\n const cmd = `npx @angular/cli@${options.version} new ${name} ${args.join(' ')}`;\n\n if (dryRun) {\n console.log('[dry-run] Would run:', cmd);\n return;\n }\n\n console.log('Running:', cmd);\n execSync(cmd, {stdio: 'inherit'});\n },\n },\n };\n },\n});\n"],"mappings":"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"}
{"version":3,"file":"index.cjs","names":[],"sources":["../src/angular.ts"],"sourcesContent":["import {execSync} from 'child_process';\nimport {definePlugin, PluginContext} from '@libria/plugin-loader';\nimport type {ScaffoldTemplatePlugin, ScaffoldTemplatePluginOption, ExecuteOptions} from '@libria/scaffold-core';\n\nexport interface AngularOptions {\n version: ScaffoldTemplatePluginOption<string>;\n style: ScaffoldTemplatePluginOption<string>;\n packageManager: ScaffoldTemplatePluginOption<string>;\n routing: ScaffoldTemplatePluginOption<boolean>;\n ssr: ScaffoldTemplatePluginOption<boolean>;\n standalone: ScaffoldTemplatePluginOption<boolean>;\n strict: ScaffoldTemplatePluginOption<boolean>;\n aiConfig: ScaffoldTemplatePluginOption<string>;\n fileNameStyleGuide: ScaffoldTemplatePluginOption<string>;\n prefix: ScaffoldTemplatePluginOption<string>;\n testRunner: ScaffoldTemplatePluginOption<string>;\n viewEncapsulation: ScaffoldTemplatePluginOption<string>;\n experimentalZoneless: ScaffoldTemplatePluginOption<boolean>;\n inlineStyle: ScaffoldTemplatePluginOption<boolean>;\n inlineTemplate: ScaffoldTemplatePluginOption<boolean>;\n minimal: ScaffoldTemplatePluginOption<boolean>;\n serverRouting: ScaffoldTemplatePluginOption<boolean>;\n skipGit: ScaffoldTemplatePluginOption<boolean>;\n skipInstall: ScaffoldTemplatePluginOption<boolean>;\n skipTests: ScaffoldTemplatePluginOption<boolean>;\n zoneless: ScaffoldTemplatePluginOption<boolean>;\n}\n\nexport const SCAFFOLD_TEMPLATE_PLUGIN_TYPE = 'scaffold-template';\n\nconst SUPPORTED_VERSIONS: Record<string, number[]> = {\n aiConfig: [21, 20],\n fileNameStyleGuide: [21],\n testRunner: [21],\n experimentalZoneless: [19],\n serverRouting: [19],\n zoneless: [21, 20],\n};\n\nexport default definePlugin<ScaffoldTemplatePlugin<AngularOptions>>({\n id: 'libria:scaffold:angular',\n name: 'angular',\n pluginType: SCAFFOLD_TEMPLATE_PLUGIN_TYPE,\n\n async create(_: PluginContext) {\n return {\n api: {\n argument: 'angular',\n getOptions: async (options) => {\n if (!options.version) {\n return {\n version: {\n flags: '--version <version>',\n description: 'Angular version:',\n choices: ['21', '20', '19', '18'],\n defaultValue: '21',\n },\n };\n }\n\n const major = Number(options.version);\n const allOptions: Record<string, ScaffoldTemplatePluginOption> = {\n version: {\n flags: '--version <version>',\n description: 'Angular version:',\n choices: ['21', '20', '19', '18'],\n defaultValue: '21',\n },\n style: {\n flags: '--style <value>',\n description: 'Which stylesheet format would you like to use?',\n choices: ['css', 'scss', 'sass', 'less', 'tailwind'],\n },\n packageManager: {\n flags: '--package-manager <value>',\n description: 'Which package manager would you like to use?',\n choices: ['npm', 'yarn', 'pnpm', 'bun', 'cnpm'],\n },\n routing: {\n flags: '--routing',\n description: 'Add routing?',\n },\n ssr: {\n flags: '--ssr',\n description: 'Enable Server-Side Rendering (SSR)?',\n },\n standalone: {\n flags: '--standalone',\n description: 'Use standalone components?',\n defaultValue: true,\n },\n strict: {\n flags: '--strict',\n description: 'Enable strict mode?',\n defaultValue: true,\n },\n aiConfig: {\n flags: '--ai-config <value>',\n description: 'Specifies which AI tools to generate configuration files for. These file are used to improve the outputs of AI tools by following the best practices.',\n },\n fileNameStyleGuide: {\n flags: '--file-name-style-guide <value>',\n description: 'The file naming convention to use for generated files. The \\'2025\\' style guide (default) uses a concise format (e.g., `app.ts` for the root component), while the \\'2016\\' style guide includes the type in the file name (e.g., `app.component.ts`). For more information, see the Angular Style Guide (https://angular.dev/style-guide).',\n choices: ['2016', '2025'],\n defaultValue: '2025',\n },\n prefix: {\n flags: '--prefix <value>',\n description: 'Component selector prefix:',\n defaultValue: 'app',\n },\n testRunner: {\n flags: '--test-runner <value>',\n description: 'The unit testing runner to use.',\n choices: ['vitest', 'karma'],\n defaultValue: 'vitest',\n },\n viewEncapsulation: {\n flags: '--view-encapsulation <value>',\n description: 'Which view encapsulation strategy?',\n choices: ['Emulated', 'None', 'ShadowDom'],\n },\n experimentalZoneless: {\n flags: '--experimental-zoneless',\n description: 'Create an initial application that does not utilize `zone.js`.',\n defaultValue: false,\n },\n inlineStyle: {\n flags: '--inline-style',\n description: 'Use inline styles?',\n },\n inlineTemplate: {\n flags: '--inline-template',\n description: 'Use inline templates?',\n },\n minimal: {\n flags: '--minimal',\n description: 'Create a minimal project?',\n defaultValue: false,\n },\n serverRouting: {\n flags: '--server-routing',\n description: 'Create a server application in the initial project using the Server Routing and App Engine APIs (Developer Preview).',\n },\n skipGit: {\n flags: '--skip-git',\n description: 'Skip git initialization?',\n defaultValue: false,\n },\n skipInstall: {\n flags: '--skip-install',\n description: 'Skip installing dependencies?',\n defaultValue: false,\n },\n skipTests: {\n flags: '--skip-tests',\n description: 'Skip generating test files?',\n defaultValue: false,\n },\n zoneless: {\n flags: '--zoneless',\n description: 'Create an initial application that does not utilize `zone.js`.',\n },\n };\n\n for (const [key, versions] of Object.entries(SUPPORTED_VERSIONS)) {\n if (!versions.includes(major)) {\n delete allOptions[key];\n }\n }\n\n return allOptions;\n },\n execute: async (options: ExecuteOptions<AngularOptions>) => {\n const {name, dryRun} = options;\n const major = Number(options.version);\n const args: string[] = [];\n\n args.push(`--style=${options.style}`);\n args.push(`--package-manager=${options.packageManager}`);\n args.push(options.routing ? '--routing' : '--routing=false');\n args.push(options.ssr ? '--ssr' : '--ssr=false');\n args.push(options.standalone ? '--standalone' : '--standalone=false');\n args.push(options.strict ? '--strict' : '--strict=false');\n if (SUPPORTED_VERSIONS.aiConfig.includes(major)) {\n if (options.aiConfig) args.push(`--ai-config=${options.aiConfig}`);\n }\n if (SUPPORTED_VERSIONS.fileNameStyleGuide.includes(major)) {\n args.push(`--file-name-style-guide=${options.fileNameStyleGuide}`);\n }\n if (options.prefix) args.push(`--prefix=${options.prefix}`);\n if (SUPPORTED_VERSIONS.testRunner.includes(major)) {\n args.push(`--test-runner=${options.testRunner}`);\n }\n args.push(`--view-encapsulation=${options.viewEncapsulation}`);\n if (SUPPORTED_VERSIONS.experimentalZoneless.includes(major)) {\n args.push(options.experimentalZoneless ? '--experimental-zoneless' : '--experimental-zoneless=false');\n }\n if (options.inlineStyle) args.push('--inline-style');\n if (options.inlineTemplate) args.push('--inline-template');\n if (options.minimal) args.push('--minimal');\n if (SUPPORTED_VERSIONS.serverRouting.includes(major)) {\n args.push(options.serverRouting ? '--server-routing' : '--server-routing=false');\n }\n if (options.skipGit) args.push('--skip-git');\n if (options.skipInstall) args.push('--skip-install');\n if (options.skipTests) args.push('--skip-tests');\n if (SUPPORTED_VERSIONS.zoneless.includes(major)) {\n args.push(options.zoneless ? '--zoneless' : '--zoneless=false');\n }\n\n const cmd = `npx @angular/cli@${options.version} new ${name} ${args.join(' ')}`;\n\n if (dryRun) {\n console.log('[dry-run] Would run:', cmd);\n return;\n }\n\n console.log('Running:', cmd);\n execSync(cmd, {stdio: 'inherit'});\n },\n },\n };\n },\n});\n"],"mappings":"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"}
import * as _libria_plugin_loader0 from "@libria/plugin-loader";
import { ScaffoldTemplatePlugin, ScaffoldTemplatePluginOption } from "@libria/scaffold";
import { ScaffoldTemplatePlugin, ScaffoldTemplatePluginOption } from "@libria/scaffold-core";

@@ -4,0 +4,0 @@ //#region src/angular.d.ts

import * as _libria_plugin_loader0 from "@libria/plugin-loader";
import { ScaffoldTemplatePlugin, ScaffoldTemplatePluginOption } from "@libria/scaffold";
import { ScaffoldTemplatePlugin, ScaffoldTemplatePluginOption } from "@libria/scaffold-core";

@@ -4,0 +4,0 @@ //#region src/angular.d.ts

@@ -1,1 +0,1 @@

{"version":3,"file":"index.mjs","names":[],"sources":["../src/angular.ts"],"sourcesContent":["import {execSync} from 'child_process';\nimport {definePlugin, PluginContext} from '@libria/plugin-loader';\nimport type {ScaffoldTemplatePlugin, ScaffoldTemplatePluginOption, ExecuteOptions} from '@libria/scaffold';\n\nexport interface AngularOptions {\n version: ScaffoldTemplatePluginOption<string>;\n style: ScaffoldTemplatePluginOption<string>;\n packageManager: ScaffoldTemplatePluginOption<string>;\n routing: ScaffoldTemplatePluginOption<boolean>;\n ssr: ScaffoldTemplatePluginOption<boolean>;\n standalone: ScaffoldTemplatePluginOption<boolean>;\n strict: ScaffoldTemplatePluginOption<boolean>;\n aiConfig: ScaffoldTemplatePluginOption<string>;\n fileNameStyleGuide: ScaffoldTemplatePluginOption<string>;\n prefix: ScaffoldTemplatePluginOption<string>;\n testRunner: ScaffoldTemplatePluginOption<string>;\n viewEncapsulation: ScaffoldTemplatePluginOption<string>;\n experimentalZoneless: ScaffoldTemplatePluginOption<boolean>;\n inlineStyle: ScaffoldTemplatePluginOption<boolean>;\n inlineTemplate: ScaffoldTemplatePluginOption<boolean>;\n minimal: ScaffoldTemplatePluginOption<boolean>;\n serverRouting: ScaffoldTemplatePluginOption<boolean>;\n skipGit: ScaffoldTemplatePluginOption<boolean>;\n skipInstall: ScaffoldTemplatePluginOption<boolean>;\n skipTests: ScaffoldTemplatePluginOption<boolean>;\n zoneless: ScaffoldTemplatePluginOption<boolean>;\n}\n\nexport const SCAFFOLD_TEMPLATE_PLUGIN_TYPE = 'scaffold-template';\n\nconst SUPPORTED_VERSIONS: Record<string, number[]> = {\n aiConfig: [21, 20],\n fileNameStyleGuide: [21],\n testRunner: [21],\n experimentalZoneless: [19],\n serverRouting: [19],\n zoneless: [21, 20],\n};\n\nexport default definePlugin<ScaffoldTemplatePlugin<AngularOptions>>({\n id: 'libria:scaffold:angular',\n name: 'angular',\n pluginType: SCAFFOLD_TEMPLATE_PLUGIN_TYPE,\n\n async create(_: PluginContext) {\n return {\n api: {\n argument: 'angular',\n getOptions: async (options) => {\n if (!options.version) {\n return {\n version: {\n flags: '--version <version>',\n description: 'Angular version:',\n choices: ['21', '20', '19', '18'],\n defaultValue: '21',\n },\n };\n }\n\n const major = Number(options.version);\n const allOptions: Record<string, ScaffoldTemplatePluginOption> = {\n version: {\n flags: '--version <version>',\n description: 'Angular version:',\n choices: ['21', '20', '19', '18'],\n defaultValue: '21',\n },\n style: {\n flags: '--style <value>',\n description: 'Which stylesheet format would you like to use?',\n choices: ['css', 'scss', 'sass', 'less', 'tailwind'],\n },\n packageManager: {\n flags: '--package-manager <value>',\n description: 'Which package manager would you like to use?',\n choices: ['npm', 'yarn', 'pnpm', 'bun', 'cnpm'],\n },\n routing: {\n flags: '--routing',\n description: 'Add routing?',\n },\n ssr: {\n flags: '--ssr',\n description: 'Enable Server-Side Rendering (SSR)?',\n },\n standalone: {\n flags: '--standalone',\n description: 'Use standalone components?',\n defaultValue: true,\n },\n strict: {\n flags: '--strict',\n description: 'Enable strict mode?',\n defaultValue: true,\n },\n aiConfig: {\n flags: '--ai-config <value>',\n description: 'Specifies which AI tools to generate configuration files for. These file are used to improve the outputs of AI tools by following the best practices.',\n },\n fileNameStyleGuide: {\n flags: '--file-name-style-guide <value>',\n description: 'The file naming convention to use for generated files. The \\'2025\\' style guide (default) uses a concise format (e.g., `app.ts` for the root component), while the \\'2016\\' style guide includes the type in the file name (e.g., `app.component.ts`). For more information, see the Angular Style Guide (https://angular.dev/style-guide).',\n choices: ['2016', '2025'],\n defaultValue: '2025',\n },\n prefix: {\n flags: '--prefix <value>',\n description: 'Component selector prefix:',\n defaultValue: 'app',\n },\n testRunner: {\n flags: '--test-runner <value>',\n description: 'The unit testing runner to use.',\n choices: ['vitest', 'karma'],\n defaultValue: 'vitest',\n },\n viewEncapsulation: {\n flags: '--view-encapsulation <value>',\n description: 'Which view encapsulation strategy?',\n choices: ['Emulated', 'None', 'ShadowDom'],\n },\n experimentalZoneless: {\n flags: '--experimental-zoneless',\n description: 'Create an initial application that does not utilize `zone.js`.',\n defaultValue: false,\n },\n inlineStyle: {\n flags: '--inline-style',\n description: 'Use inline styles?',\n },\n inlineTemplate: {\n flags: '--inline-template',\n description: 'Use inline templates?',\n },\n minimal: {\n flags: '--minimal',\n description: 'Create a minimal project?',\n defaultValue: false,\n },\n serverRouting: {\n flags: '--server-routing',\n description: 'Create a server application in the initial project using the Server Routing and App Engine APIs (Developer Preview).',\n },\n skipGit: {\n flags: '--skip-git',\n description: 'Skip git initialization?',\n defaultValue: false,\n },\n skipInstall: {\n flags: '--skip-install',\n description: 'Skip installing dependencies?',\n defaultValue: false,\n },\n skipTests: {\n flags: '--skip-tests',\n description: 'Skip generating test files?',\n defaultValue: false,\n },\n zoneless: {\n flags: '--zoneless',\n description: 'Create an initial application that does not utilize `zone.js`.',\n },\n };\n\n for (const [key, versions] of Object.entries(SUPPORTED_VERSIONS)) {\n if (!versions.includes(major)) {\n delete allOptions[key];\n }\n }\n\n return allOptions;\n },\n execute: async (options: ExecuteOptions<AngularOptions>) => {\n const {name, dryRun} = options;\n const major = Number(options.version);\n const args: string[] = [];\n\n args.push(`--style=${options.style}`);\n args.push(`--package-manager=${options.packageManager}`);\n args.push(options.routing ? '--routing' : '--routing=false');\n args.push(options.ssr ? '--ssr' : '--ssr=false');\n args.push(options.standalone ? '--standalone' : '--standalone=false');\n args.push(options.strict ? '--strict' : '--strict=false');\n if (SUPPORTED_VERSIONS.aiConfig.includes(major)) {\n if (options.aiConfig) args.push(`--ai-config=${options.aiConfig}`);\n }\n if (SUPPORTED_VERSIONS.fileNameStyleGuide.includes(major)) {\n args.push(`--file-name-style-guide=${options.fileNameStyleGuide}`);\n }\n if (options.prefix) args.push(`--prefix=${options.prefix}`);\n if (SUPPORTED_VERSIONS.testRunner.includes(major)) {\n args.push(`--test-runner=${options.testRunner}`);\n }\n args.push(`--view-encapsulation=${options.viewEncapsulation}`);\n if (SUPPORTED_VERSIONS.experimentalZoneless.includes(major)) {\n args.push(options.experimentalZoneless ? '--experimental-zoneless' : '--experimental-zoneless=false');\n }\n if (options.inlineStyle) args.push('--inline-style');\n if (options.inlineTemplate) args.push('--inline-template');\n if (options.minimal) args.push('--minimal');\n if (SUPPORTED_VERSIONS.serverRouting.includes(major)) {\n args.push(options.serverRouting ? '--server-routing' : '--server-routing=false');\n }\n if (options.skipGit) args.push('--skip-git');\n if (options.skipInstall) args.push('--skip-install');\n if (options.skipTests) args.push('--skip-tests');\n if (SUPPORTED_VERSIONS.zoneless.includes(major)) {\n args.push(options.zoneless ? '--zoneless' : '--zoneless=false');\n }\n\n const cmd = `npx @angular/cli@${options.version} new ${name} ${args.join(' ')}`;\n\n if (dryRun) {\n console.log('[dry-run] Would run:', cmd);\n return;\n }\n\n console.log('Running:', cmd);\n execSync(cmd, {stdio: 'inherit'});\n },\n },\n };\n },\n});\n"],"mappings":"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"}
{"version":3,"file":"index.mjs","names":[],"sources":["../src/angular.ts"],"sourcesContent":["import {execSync} from 'child_process';\nimport {definePlugin, PluginContext} from '@libria/plugin-loader';\nimport type {ScaffoldTemplatePlugin, ScaffoldTemplatePluginOption, ExecuteOptions} from '@libria/scaffold-core';\n\nexport interface AngularOptions {\n version: ScaffoldTemplatePluginOption<string>;\n style: ScaffoldTemplatePluginOption<string>;\n packageManager: ScaffoldTemplatePluginOption<string>;\n routing: ScaffoldTemplatePluginOption<boolean>;\n ssr: ScaffoldTemplatePluginOption<boolean>;\n standalone: ScaffoldTemplatePluginOption<boolean>;\n strict: ScaffoldTemplatePluginOption<boolean>;\n aiConfig: ScaffoldTemplatePluginOption<string>;\n fileNameStyleGuide: ScaffoldTemplatePluginOption<string>;\n prefix: ScaffoldTemplatePluginOption<string>;\n testRunner: ScaffoldTemplatePluginOption<string>;\n viewEncapsulation: ScaffoldTemplatePluginOption<string>;\n experimentalZoneless: ScaffoldTemplatePluginOption<boolean>;\n inlineStyle: ScaffoldTemplatePluginOption<boolean>;\n inlineTemplate: ScaffoldTemplatePluginOption<boolean>;\n minimal: ScaffoldTemplatePluginOption<boolean>;\n serverRouting: ScaffoldTemplatePluginOption<boolean>;\n skipGit: ScaffoldTemplatePluginOption<boolean>;\n skipInstall: ScaffoldTemplatePluginOption<boolean>;\n skipTests: ScaffoldTemplatePluginOption<boolean>;\n zoneless: ScaffoldTemplatePluginOption<boolean>;\n}\n\nexport const SCAFFOLD_TEMPLATE_PLUGIN_TYPE = 'scaffold-template';\n\nconst SUPPORTED_VERSIONS: Record<string, number[]> = {\n aiConfig: [21, 20],\n fileNameStyleGuide: [21],\n testRunner: [21],\n experimentalZoneless: [19],\n serverRouting: [19],\n zoneless: [21, 20],\n};\n\nexport default definePlugin<ScaffoldTemplatePlugin<AngularOptions>>({\n id: 'libria:scaffold:angular',\n name: 'angular',\n pluginType: SCAFFOLD_TEMPLATE_PLUGIN_TYPE,\n\n async create(_: PluginContext) {\n return {\n api: {\n argument: 'angular',\n getOptions: async (options) => {\n if (!options.version) {\n return {\n version: {\n flags: '--version <version>',\n description: 'Angular version:',\n choices: ['21', '20', '19', '18'],\n defaultValue: '21',\n },\n };\n }\n\n const major = Number(options.version);\n const allOptions: Record<string, ScaffoldTemplatePluginOption> = {\n version: {\n flags: '--version <version>',\n description: 'Angular version:',\n choices: ['21', '20', '19', '18'],\n defaultValue: '21',\n },\n style: {\n flags: '--style <value>',\n description: 'Which stylesheet format would you like to use?',\n choices: ['css', 'scss', 'sass', 'less', 'tailwind'],\n },\n packageManager: {\n flags: '--package-manager <value>',\n description: 'Which package manager would you like to use?',\n choices: ['npm', 'yarn', 'pnpm', 'bun', 'cnpm'],\n },\n routing: {\n flags: '--routing',\n description: 'Add routing?',\n },\n ssr: {\n flags: '--ssr',\n description: 'Enable Server-Side Rendering (SSR)?',\n },\n standalone: {\n flags: '--standalone',\n description: 'Use standalone components?',\n defaultValue: true,\n },\n strict: {\n flags: '--strict',\n description: 'Enable strict mode?',\n defaultValue: true,\n },\n aiConfig: {\n flags: '--ai-config <value>',\n description: 'Specifies which AI tools to generate configuration files for. These file are used to improve the outputs of AI tools by following the best practices.',\n },\n fileNameStyleGuide: {\n flags: '--file-name-style-guide <value>',\n description: 'The file naming convention to use for generated files. The \\'2025\\' style guide (default) uses a concise format (e.g., `app.ts` for the root component), while the \\'2016\\' style guide includes the type in the file name (e.g., `app.component.ts`). For more information, see the Angular Style Guide (https://angular.dev/style-guide).',\n choices: ['2016', '2025'],\n defaultValue: '2025',\n },\n prefix: {\n flags: '--prefix <value>',\n description: 'Component selector prefix:',\n defaultValue: 'app',\n },\n testRunner: {\n flags: '--test-runner <value>',\n description: 'The unit testing runner to use.',\n choices: ['vitest', 'karma'],\n defaultValue: 'vitest',\n },\n viewEncapsulation: {\n flags: '--view-encapsulation <value>',\n description: 'Which view encapsulation strategy?',\n choices: ['Emulated', 'None', 'ShadowDom'],\n },\n experimentalZoneless: {\n flags: '--experimental-zoneless',\n description: 'Create an initial application that does not utilize `zone.js`.',\n defaultValue: false,\n },\n inlineStyle: {\n flags: '--inline-style',\n description: 'Use inline styles?',\n },\n inlineTemplate: {\n flags: '--inline-template',\n description: 'Use inline templates?',\n },\n minimal: {\n flags: '--minimal',\n description: 'Create a minimal project?',\n defaultValue: false,\n },\n serverRouting: {\n flags: '--server-routing',\n description: 'Create a server application in the initial project using the Server Routing and App Engine APIs (Developer Preview).',\n },\n skipGit: {\n flags: '--skip-git',\n description: 'Skip git initialization?',\n defaultValue: false,\n },\n skipInstall: {\n flags: '--skip-install',\n description: 'Skip installing dependencies?',\n defaultValue: false,\n },\n skipTests: {\n flags: '--skip-tests',\n description: 'Skip generating test files?',\n defaultValue: false,\n },\n zoneless: {\n flags: '--zoneless',\n description: 'Create an initial application that does not utilize `zone.js`.',\n },\n };\n\n for (const [key, versions] of Object.entries(SUPPORTED_VERSIONS)) {\n if (!versions.includes(major)) {\n delete allOptions[key];\n }\n }\n\n return allOptions;\n },\n execute: async (options: ExecuteOptions<AngularOptions>) => {\n const {name, dryRun} = options;\n const major = Number(options.version);\n const args: string[] = [];\n\n args.push(`--style=${options.style}`);\n args.push(`--package-manager=${options.packageManager}`);\n args.push(options.routing ? '--routing' : '--routing=false');\n args.push(options.ssr ? '--ssr' : '--ssr=false');\n args.push(options.standalone ? '--standalone' : '--standalone=false');\n args.push(options.strict ? '--strict' : '--strict=false');\n if (SUPPORTED_VERSIONS.aiConfig.includes(major)) {\n if (options.aiConfig) args.push(`--ai-config=${options.aiConfig}`);\n }\n if (SUPPORTED_VERSIONS.fileNameStyleGuide.includes(major)) {\n args.push(`--file-name-style-guide=${options.fileNameStyleGuide}`);\n }\n if (options.prefix) args.push(`--prefix=${options.prefix}`);\n if (SUPPORTED_VERSIONS.testRunner.includes(major)) {\n args.push(`--test-runner=${options.testRunner}`);\n }\n args.push(`--view-encapsulation=${options.viewEncapsulation}`);\n if (SUPPORTED_VERSIONS.experimentalZoneless.includes(major)) {\n args.push(options.experimentalZoneless ? '--experimental-zoneless' : '--experimental-zoneless=false');\n }\n if (options.inlineStyle) args.push('--inline-style');\n if (options.inlineTemplate) args.push('--inline-template');\n if (options.minimal) args.push('--minimal');\n if (SUPPORTED_VERSIONS.serverRouting.includes(major)) {\n args.push(options.serverRouting ? '--server-routing' : '--server-routing=false');\n }\n if (options.skipGit) args.push('--skip-git');\n if (options.skipInstall) args.push('--skip-install');\n if (options.skipTests) args.push('--skip-tests');\n if (SUPPORTED_VERSIONS.zoneless.includes(major)) {\n args.push(options.zoneless ? '--zoneless' : '--zoneless=false');\n }\n\n const cmd = `npx @angular/cli@${options.version} new ${name} ${args.join(' ')}`;\n\n if (dryRun) {\n console.log('[dry-run] Would run:', cmd);\n return;\n }\n\n console.log('Running:', cmd);\n execSync(cmd, {stdio: 'inherit'});\n },\n },\n };\n },\n});\n"],"mappings":"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"}
{
"name": "@libria/scaffold-angular",
"version": "0.0.4",
"version": "0.0.5",
"description": "Angular cli wrapper template for @libria/scaffold",

@@ -35,5 +35,5 @@ "main": "dist/index.cjs",

"@libria/plugin-loader": "^2.0.0-alpha",
"@libria/scaffold": "^0.2.2",
"@libria/scaffold-core": "^0.3.0",
"fs-extra": "^11.3.3"
}
}

Sorry, the diff of this file is not supported yet