From fd37d4ae2b430f775a5a4b4d9e4781f863b68983 Mon Sep 17 00:00:00 2001 From: Ni55aN Date: Sat, 14 Sep 2024 22:17:13 +0300 Subject: [PATCH 1/2] refactor: angular versions --- src/app/features.ts | 3 ++- src/app/index.ts | 3 ++- src/app/stack/angular/index.ts | 4 +++- src/app/template-builder.ts | 3 ++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/app/features.ts b/src/app/features.ts index d985708..1be3065 100644 --- a/src/app/features.ts +++ b/src/app/features.ts @@ -1,4 +1,5 @@ import { AppStack } from '.' +import { AngularVersion } from './stack/angular' import { DefaultTemplateKey } from './template-builder' function ver(name: string, next: boolean) { @@ -35,7 +36,7 @@ export class Angular implements Feature { templateKeys: DefaultTemplateKey[] = ['angular-render'] requiredDependencies: string[] = [] - constructor(version: 12 | 13 | 14 | 15 | 16 | 17 | null, next: boolean) { + constructor(version: AngularVersion | null, next: boolean) { if (version !== null) this.templateKeys.push(`angular${version}`) this.requiredDependencies.push( diff --git a/src/app/index.ts b/src/app/index.ts index 934c2cc..fbe4c1d 100644 --- a/src/app/index.ts +++ b/src/app/index.ts @@ -9,6 +9,7 @@ import { ReactBuilder, ReactViteBuilder, SvelteBuilder, ViteBuilder, VueBuilder, VueViteBuilder } from './stack' +import { AngularVersion } from './stack/angular' import { DefaultTemplateKey, TemplateBuilder } from './template-builder' export const builders = { @@ -61,7 +62,7 @@ export async function createApp({ name, stack, version, features, depsAlias, for new Features.Default(builder.foundation, next), new Features.Area3D(!(builder instanceof AngularBuilder && selectedVersion < 13), next), new Features.Angular(builder.foundation === 'angular' - ? selectedVersion as 12 | 13 | 14 | 15 | 16 | 17 + ? selectedVersion as AngularVersion : null, next), new Features.React(builder.foundation === 'react' ? selectedVersion diff --git a/src/app/stack/angular/index.ts b/src/app/stack/angular/index.ts index ef4c61e..d7238f7 100644 --- a/src/app/stack/angular/index.ts +++ b/src/app/stack/angular/index.ts @@ -9,9 +9,11 @@ import { TemplateBuilder } from '../../template-builder' import { removeBudgets } from './budgets' import { installCompatibleTS } from './compatibility' +export type AngularVersion = 12 | 13 | 14 | 15 | 16 | 17 + export class AngularBuilder implements AppBuilder { public name = 'Angular' - public versions = [12, 13, 14, 15, 16, 17] + public versions: AngularVersion[] = [12, 13, 14, 15, 16, 17] public foundation = 'angular' as const public async create(name: string, version: number) { diff --git a/src/app/template-builder.ts b/src/app/template-builder.ts index 008824c..bec024c 100644 --- a/src/app/template-builder.ts +++ b/src/app/template-builder.ts @@ -4,11 +4,12 @@ import { join } from 'path' import prettier from 'prettier' import { assets as assetsRoot } from '../consts' +import { AngularVersion } from './stack/angular' export const templatesPath = join(assetsRoot, 'app', 'templates') export const entryScriptPath = join(assetsRoot, 'app', 'entry_ts') export type DefaultTemplateKey = 'zoom-at' | 'react-render' | 'react18' | 'vue-render' - | `vue${2 | 3}` | 'angular-render' | `angular${12 | 13 | 14 | 15 | 16 | 17}` + | `vue${2 | 3}` | 'angular-render' | `angular${AngularVersion}` | 'svelte-render' | `svelte${3 | 4}` | 'lit-render' | `lit${3}` | 'dataflow' | 'arrange' | 'sizes' | 'readonly' | 'order-nodes' | 'selectable' | 'context-menu' | 'import-area-extensions' | 'minimap' | 'reroute' | `stack-${string}` From 4dcf3f5a28d37bb249c496726f40755c5c6e63b0 Mon Sep 17 00:00:00 2001 From: Ni55aN Date: Sat, 14 Sep 2024 22:18:00 +0300 Subject: [PATCH 2/2] feat: angular 18 --- assets/app/stack/angular/modules/app/app.module.ts | 1 + assets/app/templates/3d | 4 ++-- assets/app/templates/customization | 2 +- assets/app/templates/default | 2 +- assets/app/templates/perf | 2 +- assets/app/templates/scopes | 2 +- src/app/stack/angular/index.ts | 8 ++++---- 7 files changed, 11 insertions(+), 10 deletions(-) diff --git a/assets/app/stack/angular/modules/app/app.module.ts b/assets/app/stack/angular/modules/app/app.module.ts index 6ede04e..1c1c6b5 100644 --- a/assets/app/stack/angular/modules/app/app.module.ts +++ b/assets/app/stack/angular/modules/app/app.module.ts @@ -11,6 +11,7 @@ import { CustomConnectionComponent } from "./customization/custom-connection/cus /* [angular15] import { ReteModule } from 'rete-angular-plugin/15'; [/angular15] */ /* [angular16] import { ReteModule } from 'rete-angular-plugin/16'; [/angular16] */ /* [angular17] import { ReteModule } from 'rete-angular-plugin/17'; [/angular17] */ +/* [angular18] import { ReteModule } from 'rete-angular-plugin/18'; [/angular18] */ @NgModule({ declarations: [ diff --git a/assets/app/templates/3d b/assets/app/templates/3d index 5061282..e04bc72 100644 --- a/assets/app/templates/3d +++ b/assets/app/templates/3d @@ -6,7 +6,7 @@ import { ConnectionPlugin, Presets as ConnectionPresets } from 'rete-connection- /* [react-render] import { ReactPlugin, ReactArea2D, Presets as ReactPresets } from 'rete-react-plugin' [/react-render] */ /* [react18] import { createRoot } from 'react-dom/client' [/react18] */ /* [vue-render] import { VuePlugin, VueArea2D, Presets as VuePresets } from 'rete-vue-plugin/* [vue2] /vue2 [/vue2] */' [/vue-render] */ -/* [angular-render] import { AngularPlugin, AngularArea2D, Presets as AngularPresets } from 'rete-angular-plugin/* [angular12] /12 [/angular12] *//* [angular13] /13 [/angular13] *//* [angular14] /14 [/angular14] *//* [angular15] /15 [/angular15] *//* [angular16] /16 [/angular16] *//* [angular17] /17 [/angular17] */' [/angular-render] */ +/* [angular-render] import { AngularPlugin, AngularArea2D, Presets as AngularPresets } from 'rete-angular-plugin/* [angular12] /12 [/angular12] *//* [angular13] /13 [/angular13] *//* [angular14] /14 [/angular14] *//* [angular15] /15 [/angular15] *//* [angular16] /16 [/angular16] *//* [angular17] /17 [/angular17] *//* [angular18] /18 [/angular18] */' [/angular-render] */ /* [svelte-render] import { SveltePlugin, SvelteArea2D, Presets as SveltePresets } from 'rete-svelte-plugin' [/svelte-render] */ /* [lit-render] import { LitPlugin, LitArea2D, Presets as LitPresets } from '@retejs/lit-plugin' [/lit-render] */ /* [dataflow] import { DataflowEngine, DataflowNode } from 'rete-engine' [/dataflow] */ @@ -206,7 +206,7 @@ export async function createEditor(container: HTMLElement/* [stack-angular] , in } [/selectable] */ }));[/reroute] */ [/lit-render] */ - + /* [react-render] Area3DExtensions.forms.connection(reactRender) [/react-render] */ /* [angular-render] Area3DExtensions.forms.connection(angularRender) [/angular-render] */ /* [vue-render] Area3DExtensions.forms.connection(vueRender) [/vue-render] */ diff --git a/assets/app/templates/customization b/assets/app/templates/customization index 2465f0e..488c542 100644 --- a/assets/app/templates/customization +++ b/assets/app/templates/customization @@ -8,7 +8,7 @@ import { /* [stack-react] import { ReactPlugin, ReactArea2D, Presets as ReactPresets } from 'rete-react-plugin' [/stack-react] */ /* [react18] import { createRoot } from 'react-dom/client' [/react18] */ /* [stack-vue] import { VuePlugin, VueArea2D, Presets as VuePresets } from 'rete-vue-plugin/* [vue2] /vue2 [/vue2] */' [/stack-vue] */ -/* [stack-angular] import { AngularPlugin, AngularArea2D, Presets as AngularPresets } from 'rete-angular-plugin/* [angular12] /12 [/angular12] *//* [angular13] /13 [/angular13] *//* [angular14] /14 [/angular14] *//* [angular15] /15 [/angular15] *//* [angular16] /16 [/angular16] *//* [angular17] /17 [/angular17] */' [/stack-angular] */ +/* [stack-angular] import { AngularPlugin, AngularArea2D, Presets as AngularPresets } from 'rete-angular-plugin/* [angular12] /12 [/angular12] *//* [angular13] /13 [/angular13] *//* [angular14] /14 [/angular14] *//* [angular15] /15 [/angular15] *//* [angular16] /16 [/angular16] *//* [angular17] /17 [/angular17] *//* [angular18] /18 [/angular18] */' [/stack-angular] */ /* [stack-svelte] import { SveltePlugin, SvelteArea2D, Presets as SveltePresets } from 'rete-svelte-plugin' [/stack-svelte] */ /* [stack-lit] import { LitPlugin, LitArea2D, Presets as LitPresets } from '@retejs/lit-plugin' [/stack-lit] */ /* [stack-react] import { CustomNode } from "../customization/CustomNode"; diff --git a/assets/app/templates/default b/assets/app/templates/default index f1518ae..38e1874 100644 --- a/assets/app/templates/default +++ b/assets/app/templates/default @@ -5,7 +5,7 @@ import { Area2D, /* [import-area-extensions] AreaExtensions, [/import-area-exten /* [react-render] import { ReactPlugin, ReactArea2D, Presets as ReactPresets } from 'rete-react-plugin' [/react-render] */ /* [react18] import { createRoot } from 'react-dom/client' [/react18] */ /* [vue-render] import { VuePlugin, VueArea2D, Presets as VuePresets } from 'rete-vue-plugin/* [vue2] /vue2 [/vue2] */' [/vue-render] */ -/* [angular-render] import { AngularPlugin, AngularArea2D, Presets as AngularPresets } from 'rete-angular-plugin/* [angular12] /12 [/angular12] *//* [angular13] /13 [/angular13] *//* [angular14] /14 [/angular14] *//* [angular15] /15 [/angular15] *//* [angular16] /16 [/angular16] *//* [angular17] /17 [/angular17] */' [/angular-render] */ +/* [angular-render] import { AngularPlugin, AngularArea2D, Presets as AngularPresets } from 'rete-angular-plugin/* [angular12] /12 [/angular12] *//* [angular13] /13 [/angular13] *//* [angular14] /14 [/angular14] *//* [angular15] /15 [/angular15] *//* [angular16] /16 [/angular16] *//* [angular17] /17 [/angular17] *//* [angular18] /18 [/angular18] */' [/angular-render] */ /* [svelte-render] import { SveltePlugin, SvelteArea2D, Presets as SveltePresets } from 'rete-svelte-plugin' [/svelte-render] */ /* [lit-render] import { LitPlugin, LitArea2D, Presets as LitPresets } from '@retejs/lit-plugin' [/lit-render] */ /* [dataflow] import { DataflowEngine, DataflowNode } from 'rete-engine' [/dataflow] */ diff --git a/assets/app/templates/perf b/assets/app/templates/perf index e2b5ef1..64893a5 100644 --- a/assets/app/templates/perf +++ b/assets/app/templates/perf @@ -4,7 +4,7 @@ import { /* [import-area-extensions] AreaExtensions, [/import-area-extensions] * /* [react-render] import { ReactPlugin, ReactArea2D, Presets as ReactPresets } from 'rete-react-plugin' [/react-render] */ /* [react18] import { createRoot } from 'react-dom/client' [/react18] */ /* [vue-render] import { VuePlugin, VueArea2D, Presets as VuePresets } from 'rete-vue-plugin/* [vue2] /vue2 [/vue2] */' [/vue-render] */ -/* [angular-render] import { AngularPlugin, AngularArea2D, Presets as AngularPresets } from 'rete-angular-plugin/* [angular12] /12 [/angular12] *//* [angular13] /13 [/angular13] *//* [angular14] /14 [/angular14] *//* [angular15] /15 [/angular15] *//* [angular16] /16 [/angular16] *//* [angular17] /17 [/angular17] */' [/angular-render] */ +/* [angular-render] import { AngularPlugin, AngularArea2D, Presets as AngularPresets } from 'rete-angular-plugin/* [angular12] /12 [/angular12] *//* [angular13] /13 [/angular13] *//* [angular14] /14 [/angular14] *//* [angular15] /15 [/angular15] *//* [angular16] /16 [/angular16] *//* [angular17] /17 [/angular17] *//* [angular18] /18 [/angular18] */' [/angular-render] */ /* [svelte-render] import { SveltePlugin, SvelteArea2D, Presets as SveltePresets } from 'rete-svelte-plugin' [/svelte-render] */ /* [lit-render] import { LitPlugin, LitArea2D, Presets as LitPresets } from '@retejs/lit-plugin' [/lit-render] */ diff --git a/assets/app/templates/scopes b/assets/app/templates/scopes index 594115b..f218bc5 100644 --- a/assets/app/templates/scopes +++ b/assets/app/templates/scopes @@ -5,7 +5,7 @@ import { Area2D, /* [import-area-extensions] AreaExtensions, [/import-area-exten /* [react-render] import { ReactPlugin, ReactArea2D, Presets as ReactPresets } from 'rete-react-plugin' [/react-render] */ /* [react18] import { createRoot } from 'react-dom/client' [/react18] */ /* [vue-render] import { VuePlugin, VueArea2D, Presets as VuePresets } from 'rete-vue-plugin/* [vue2] /vue2 [/vue2] */' [/vue-render] */ -/* [angular-render] import { AngularPlugin, AngularArea2D, Presets as AngularPresets } from 'rete-angular-plugin/* [angular12] /12 [/angular12] *//* [angular13] /13 [/angular13] *//* [angular14] /14 [/angular14] *//* [angular15] /15 [/angular15] *//* [angular16] /16 [/angular16] *//* [angular17] /17 [/angular17] */' [/angular-render] */ +/* [angular-render] import { AngularPlugin, AngularArea2D, Presets as AngularPresets } from 'rete-angular-plugin/* [angular12] /12 [/angular12] *//* [angular13] /13 [/angular13] *//* [angular14] /14 [/angular14] *//* [angular15] /15 [/angular15] *//* [angular16] /16 [/angular16] *//* [angular17] /17 [/angular17] *//* [angular18] /18 [/angular18] */' [/angular-render] */ /* [svelte-render] import { SveltePlugin, SvelteArea2D, Presets as SveltePresets } from 'rete-svelte-plugin' [/svelte-render] */ /* [lit-render] import { LitPlugin, LitArea2D, Presets as LitPresets } from '@retejs/lit-plugin' [/lit-render] */ import { ScopesPlugin, Presets as ScopesPresets } from "rete-scopes-plugin"; diff --git a/src/app/stack/angular/index.ts b/src/app/stack/angular/index.ts index d7238f7..c7e79df 100644 --- a/src/app/stack/angular/index.ts +++ b/src/app/stack/angular/index.ts @@ -9,17 +9,17 @@ import { TemplateBuilder } from '../../template-builder' import { removeBudgets } from './budgets' import { installCompatibleTS } from './compatibility' -export type AngularVersion = 12 | 13 | 14 | 15 | 16 | 17 +export type AngularVersion = 12 | 13 | 14 | 15 | 16 | 17 | 18 export class AngularBuilder implements AppBuilder { public name = 'Angular' - public versions: AngularVersion[] = [12, 13, 14, 15, 16, 17] + public versions: AngularVersion[] = [12, 13, 14, 15, 16, 17, 18] public foundation = 'angular' as const public async create(name: string, version: number) { const options = ['--defaults'] - if (version === 17) options.push('--no-standalone') + if ([17, 18].includes(version)) options.push('--no-standalone') await execa('npx', ['--package', `@angular/cli@${version}`, 'ng', 'new', name, ...options], { stdio: 'inherit' }) await execa('npx', [ @@ -70,7 +70,7 @@ export class AngularBuilder implements AppBuilder { } getStaticPath(name: string, version?: number) { - if (version === 17) return join('dist', name, 'browser') + if (version && [17, 18].includes(version)) return join('dist', name, 'browser') return join('dist', name) }