From 91001d4319873252c971e8640c519de48c694b2c Mon Sep 17 00:00:00 2001 From: BeingThink Date: Mon, 25 Dec 2023 17:42:09 +0800 Subject: [PATCH 1/3] feat: support default template config --- src/store.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/store.ts b/src/store.ts index a4f51b0b..53a81c7f 100644 --- a/src/store.ts +++ b/src/store.ts @@ -89,6 +89,8 @@ export interface SFCOptions { template?: Partial } +type IDefaultTplConfig = { welcomeCode?: string, newSFCCode?: string } + export interface Store { state: StoreState options?: SFCOptions @@ -117,6 +119,7 @@ export interface StoreOptions { defaultVueRuntimeProdURL?: string defaultVueServerRendererURL?: string customElement?: boolean | string | RegExp | (string | RegExp)[] + defaultTemplate?: IDefaultTplConfig } export class ReplStore implements Store { @@ -134,6 +137,7 @@ export class ReplStore implements Store { private defaultVueRuntimeProdURL: string private defaultVueServerRendererURL: string private pendingCompiler: Promise | null = null + private defaultTemplate: IDefaultTplConfig constructor({ serializedState = '', @@ -144,8 +148,13 @@ export class ReplStore implements Store { outputMode = 'preview', productionMode = false, customElement = /\.ce\.vue$/, + defaultTemplate = { + welcomeCode: welcomeCode, + newSFCCode: newSFCCode + }, }: StoreOptions = {}) { const files: StoreState['files'] = {} + this.defaultTemplate = defaultTemplate if (serializedState) { const saved = JSON.parse(atou(serializedState)) @@ -153,7 +162,7 @@ export class ReplStore implements Store { setFile(files, filename, saved[filename]) } } else { - setFile(files, defaultMainFile, welcomeCode) + setFile(files, defaultMainFile, this.defaultTemplate.welcomeCode as string) } this.productionMode = productionMode @@ -250,7 +259,7 @@ export class ReplStore implements Store { if (typeof fileOrFilename === 'string') { file = new File( fileOrFilename, - fileOrFilename.endsWith('.vue') ? newSFCCode : '' + fileOrFilename.endsWith('.vue') ? this.defaultTemplate.newSFCCode : '' ) } else { file = fileOrFilename From fa7905cc0e913fbfee2025f33636789d8691391a Mon Sep 17 00:00:00 2001 From: BeingThink Date: Tue, 26 Dec 2023 09:05:39 +0800 Subject: [PATCH 2/3] feat: Independently supports welcome and sfc default template configurations --- src/store.ts | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/store.ts b/src/store.ts index 53a81c7f..fb73a247 100644 --- a/src/store.ts +++ b/src/store.ts @@ -89,8 +89,6 @@ export interface SFCOptions { template?: Partial } -type IDefaultTplConfig = { welcomeCode?: string, newSFCCode?: string } - export interface Store { state: StoreState options?: SFCOptions @@ -119,7 +117,8 @@ export interface StoreOptions { defaultVueRuntimeProdURL?: string defaultVueServerRendererURL?: string customElement?: boolean | string | RegExp | (string | RegExp)[] - defaultTemplate?: IDefaultTplConfig + defaultWelcomeTpl?: string + defaultSFCTpl?: string } export class ReplStore implements Store { @@ -137,7 +136,8 @@ export class ReplStore implements Store { private defaultVueRuntimeProdURL: string private defaultVueServerRendererURL: string private pendingCompiler: Promise | null = null - private defaultTemplate: IDefaultTplConfig + private defaultWelcomeTpl?: string + private defaultSFCTpl?: string constructor({ serializedState = '', @@ -148,13 +148,12 @@ export class ReplStore implements Store { outputMode = 'preview', productionMode = false, customElement = /\.ce\.vue$/, - defaultTemplate = { - welcomeCode: welcomeCode, - newSFCCode: newSFCCode - }, + defaultWelcomeTpl = welcomeCode, + defaultSFCTpl = newSFCCode, }: StoreOptions = {}) { const files: StoreState['files'] = {} - this.defaultTemplate = defaultTemplate + this.defaultWelcomeTpl = defaultWelcomeTpl + this.defaultSFCTpl = defaultSFCTpl if (serializedState) { const saved = JSON.parse(atou(serializedState)) @@ -162,7 +161,7 @@ export class ReplStore implements Store { setFile(files, filename, saved[filename]) } } else { - setFile(files, defaultMainFile, this.defaultTemplate.welcomeCode as string) + setFile(files, defaultMainFile, this.defaultWelcomeTpl) } this.productionMode = productionMode @@ -259,7 +258,7 @@ export class ReplStore implements Store { if (typeof fileOrFilename === 'string') { file = new File( fileOrFilename, - fileOrFilename.endsWith('.vue') ? this.defaultTemplate.newSFCCode : '' + fileOrFilename.endsWith('.vue') ? this.defaultSFCTpl : '' ) } else { file = fileOrFilename From f7964fb8b9e35c09667a783a2e319275555c8443 Mon Sep 17 00:00:00 2001 From: BeingThink Date: Thu, 4 Jan 2024 11:20:14 +0800 Subject: [PATCH 3/3] refactor: adjust default template and SFC variable names --- src/store.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/store.ts b/src/store.ts index fb73a247..f4fb9b0c 100644 --- a/src/store.ts +++ b/src/store.ts @@ -117,8 +117,8 @@ export interface StoreOptions { defaultVueRuntimeProdURL?: string defaultVueServerRendererURL?: string customElement?: boolean | string | RegExp | (string | RegExp)[] - defaultWelcomeTpl?: string - defaultSFCTpl?: string + welcomeFileTemplate?: string + newSFCTemplate?: string } export class ReplStore implements Store { @@ -136,8 +136,8 @@ export class ReplStore implements Store { private defaultVueRuntimeProdURL: string private defaultVueServerRendererURL: string private pendingCompiler: Promise | null = null - private defaultWelcomeTpl?: string - private defaultSFCTpl?: string + private welcomeFileTemplate?: string + private newSFCTemplate?: string constructor({ serializedState = '', @@ -148,12 +148,12 @@ export class ReplStore implements Store { outputMode = 'preview', productionMode = false, customElement = /\.ce\.vue$/, - defaultWelcomeTpl = welcomeCode, - defaultSFCTpl = newSFCCode, + welcomeFileTemplate = welcomeCode, + newSFCTemplate = newSFCCode, }: StoreOptions = {}) { const files: StoreState['files'] = {} - this.defaultWelcomeTpl = defaultWelcomeTpl - this.defaultSFCTpl = defaultSFCTpl + this.welcomeFileTemplate = welcomeFileTemplate + this.newSFCTemplate = newSFCTemplate if (serializedState) { const saved = JSON.parse(atou(serializedState)) @@ -161,7 +161,7 @@ export class ReplStore implements Store { setFile(files, filename, saved[filename]) } } else { - setFile(files, defaultMainFile, this.defaultWelcomeTpl) + setFile(files, defaultMainFile, this.welcomeFileTemplate) } this.productionMode = productionMode @@ -258,7 +258,7 @@ export class ReplStore implements Store { if (typeof fileOrFilename === 'string') { file = new File( fileOrFilename, - fileOrFilename.endsWith('.vue') ? this.defaultSFCTpl : '' + fileOrFilename.endsWith('.vue') ? this.newSFCTemplate : '' ) } else { file = fileOrFilename