@wolfstar/vite-server 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import { a as createViteConfig, i as _checkPrivateRedeclaration, n as ServerBuilder, r as _assertClassBrand, s as defaultBuilderContext, t as createBuildLogger } from "./logger-Dr5xkZB9.js";
1
+ import { a as createViteConfig, i as _checkPrivateRedeclaration, n as ServerBuilder, r as _assertClassBrand, s as defaultBuilderContext, t as createBuildLogger } from "./logger-5tpPvmoV.js";
2
2
  import { toNodeHandler } from "srvx/node";
3
3
 
4
- //#region \0@oxc-project+runtime@0.150.0/helpers/esm/classPrivateMethodInitSpec.js
4
+ //#region \0@oxc-project+runtime@0.151.0/helpers/esm/classPrivateMethodInitSpec.js
5
5
  function _classPrivateMethodInitSpec(e, a) {
6
6
  _checkPrivateRedeclaration(e, a), a.add(e);
7
7
  }
@@ -1,3 +1,3 @@
1
- import { c as pluginRegistrations, n as ServerBuilder, o as toArray, s as defaultBuilderContext, t as createBuildLogger } from "./logger-Dr5xkZB9.js";
1
+ import { c as pluginRegistrations, n as ServerBuilder, o as toArray, s as defaultBuilderContext, t as createBuildLogger } from "./logger-5tpPvmoV.js";
2
2
 
3
3
  export { ServerBuilder, createBuildLogger, defaultBuilderContext, pluginRegistrations, toArray };
@@ -122,7 +122,7 @@ function toArray(value) {
122
122
  }
123
123
 
124
124
  //#endregion
125
- //#region \0@oxc-project+runtime@0.150.0/helpers/esm/typeof.js
125
+ //#region \0@oxc-project+runtime@0.151.0/helpers/esm/typeof.js
126
126
  function _typeof(o) {
127
127
  "@babel/helpers - typeof";
128
128
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -133,7 +133,7 @@ function _typeof(o) {
133
133
  }
134
134
 
135
135
  //#endregion
136
- //#region \0@oxc-project+runtime@0.150.0/helpers/esm/toPrimitive.js
136
+ //#region \0@oxc-project+runtime@0.151.0/helpers/esm/toPrimitive.js
137
137
  function toPrimitive(t, r) {
138
138
  if ("object" != _typeof(t) || !t) return t;
139
139
  var e = t[Symbol.toPrimitive];
@@ -146,14 +146,14 @@ function toPrimitive(t, r) {
146
146
  }
147
147
 
148
148
  //#endregion
149
- //#region \0@oxc-project+runtime@0.150.0/helpers/esm/toPropertyKey.js
149
+ //#region \0@oxc-project+runtime@0.151.0/helpers/esm/toPropertyKey.js
150
150
  function toPropertyKey(t) {
151
151
  var i = toPrimitive(t, "string");
152
152
  return "symbol" == _typeof(i) ? i : i + "";
153
153
  }
154
154
 
155
155
  //#endregion
156
- //#region \0@oxc-project+runtime@0.150.0/helpers/esm/defineProperty.js
156
+ //#region \0@oxc-project+runtime@0.151.0/helpers/esm/defineProperty.js
157
157
  function _defineProperty(e, r, t) {
158
158
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
159
159
  value: t,
@@ -164,32 +164,32 @@ function _defineProperty(e, r, t) {
164
164
  }
165
165
 
166
166
  //#endregion
167
- //#region \0@oxc-project+runtime@0.150.0/helpers/esm/checkPrivateRedeclaration.js
167
+ //#region \0@oxc-project+runtime@0.151.0/helpers/esm/checkPrivateRedeclaration.js
168
168
  function _checkPrivateRedeclaration(e, t) {
169
169
  if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object");
170
170
  }
171
171
 
172
172
  //#endregion
173
- //#region \0@oxc-project+runtime@0.150.0/helpers/esm/classPrivateFieldInitSpec.js
173
+ //#region \0@oxc-project+runtime@0.151.0/helpers/esm/classPrivateFieldInitSpec.js
174
174
  function _classPrivateFieldInitSpec(e, t, a) {
175
175
  _checkPrivateRedeclaration(e, t), t.set(e, a);
176
176
  }
177
177
 
178
178
  //#endregion
179
- //#region \0@oxc-project+runtime@0.150.0/helpers/esm/assertClassBrand.js
179
+ //#region \0@oxc-project+runtime@0.151.0/helpers/esm/assertClassBrand.js
180
180
  function _assertClassBrand(e, t, n) {
181
181
  if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;
182
182
  throw new TypeError("Private element is not present on this object");
183
183
  }
184
184
 
185
185
  //#endregion
186
- //#region \0@oxc-project+runtime@0.150.0/helpers/esm/classPrivateFieldGet2.js
186
+ //#region \0@oxc-project+runtime@0.151.0/helpers/esm/classPrivateFieldGet2.js
187
187
  function _classPrivateFieldGet2(s, a) {
188
188
  return s.get(_assertClassBrand(s, a));
189
189
  }
190
190
 
191
191
  //#endregion
192
- //#region \0@oxc-project+runtime@0.150.0/helpers/esm/classPrivateFieldSet2.js
192
+ //#region \0@oxc-project+runtime@0.151.0/helpers/esm/classPrivateFieldSet2.js
193
193
  function _classPrivateFieldSet2(s, a, r) {
194
194
  return s.set(_assertClassBrand(s, a), r), r;
195
195
  }
@@ -295,4 +295,4 @@ function createBuildLogger(vite, log) {
295
295
 
296
296
  //#endregion
297
297
  export { createViteConfig as a, pluginRegistrations as c, _checkPrivateRedeclaration as i, ServerBuilder as n, toArray as o, _assertClassBrand as r, defaultBuilderContext as s, createBuildLogger as t };
298
- //# sourceMappingURL=logger-Dr5xkZB9.js.map
298
+ //# sourceMappingURL=logger-5tpPvmoV.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger-Dr5xkZB9.js","names":[],"sources":["../../src/plugins.ts","../../src/context.ts","../../src/config.ts","../../src/lifecycle.ts","../../src/logger.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\nimport type { ResolvedStarsConfig } from '@wolfstar/schema';\n\ninterface PackageJson {\n\tdependencies?: Record<string, string>;\n\toptionalDependencies?: Record<string, string>;\n\texports?: unknown;\n}\n\nconst PLUGIN_PACKAGE = /^@wolfstar\\/plugin-[^/]+$/;\n\n/**\n * Activates installed WolfStar plugins without making applications maintain a list\n * of side-effect-only plugin registration imports in their entry point.\n */\nexport function pluginRegistrations(config: ResolvedStarsConfig): object {\n\tconst plugins = findPluginDependencies(config.root);\n\tconst entry = resolve(config.entry);\n\n\treturn {\n\t\tname: 'stars:plugin-registrations',\n\t\ttransform(code: string, id: string) {\n\t\t\tif (plugins.length === 0 || cleanId(id) !== entry) return null;\n\n\t\t\tconst registrations = plugins.map((name) => `import ${JSON.stringify(`${name}/register`)};`).join('\\n');\n\t\t\treturn { code: `${registrations}\\n${code}`, map: null };\n\t\t}\n\t};\n}\n\nfunction findPluginDependencies(root: string): string[] {\n\tconst packageJson = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8')) as PackageJson;\n\treturn [...new Set([...Object.keys(packageJson.dependencies ?? {}), ...Object.keys(packageJson.optionalDependencies ?? {})])]\n\t\t.filter((name) => PLUGIN_PACKAGE.test(name) && mayExportRegister(root, name))\n\t\t.sort();\n}\n\n/**\n * Not every `@wolfstar/plugin-*` package is activated through a `/register` entrypoint: some (`plugin-cache`,\n * `plugin-gateway`, `plugin-sharder`) are libraries used directly, and injecting an import of a subpath they do not\n * export breaks the build. Only a package whose `exports` map is known and has no `./register` subpath is skipped —\n * one that is not installed, or declares no `exports`, keeps being injected so a missing install still surfaces as a\n * resolution error.\n */\nfunction mayExportRegister(root: string, name: string): boolean {\n\tconst packageJson = readInstalledPackageJson(root, name);\n\tif (packageJson?.exports === undefined || packageJson.exports === null) return true;\n\treturn exportsSubpath(packageJson.exports, './register');\n}\n\nfunction readInstalledPackageJson(root: string, name: string): PackageJson | null {\n\tlet directory = resolve(root);\n\twhile (true) {\n\t\ttry {\n\t\t\treturn JSON.parse(readFileSync(join(directory, 'node_modules', name, 'package.json'), 'utf8')) as PackageJson;\n\t\t} catch {\n\t\t\tconst parent = dirname(directory);\n\t\t\tif (parent === directory) return null;\n\t\t\tdirectory = parent;\n\t\t}\n\t}\n}\n\nfunction exportsSubpath(exports: unknown, subpath: string): boolean {\n\t// A string, an array, or an object of conditions only is the sugar for the `\".\"` subpath alone.\n\tif (typeof exports !== 'object' || exports === null || Array.isArray(exports)) return false;\n\n\tconst keys = Object.keys(exports);\n\tif (!keys.some((key) => key.startsWith('.'))) return false;\n\tif (Object.hasOwn(exports, subpath)) return (exports as Record<string, unknown>)[subpath] !== null;\n\n\treturn keys.some((key) => {\n\t\tconst star = key.indexOf('*');\n\t\tif (star === -1) return false;\n\t\tconst prefix = key.slice(0, star);\n\t\tconst suffix = key.slice(star + 1);\n\t\treturn subpath.length >= key.length && subpath.startsWith(prefix) && subpath.endsWith(suffix);\n\t});\n}\n\nfunction cleanId(id: string): string {\n\treturn resolve(id.replace(/^\\0/, '').split('?', 1)[0]!);\n}\n","import { createRequire } from 'node:module';\nimport { join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { BuilderContext } from '@wolfstar/schema';\nimport { pluginRegistrations } from './plugins.js';\n\n/** Default host for standalone use. Dependencies always resolve from the application. */\nexport const defaultBuilderContext: BuilderContext = {\n\tpluginRegistrations,\n\tasync importFromProject<T>(root: string, id: string, hint: string): Promise<T> {\n\t\tlet entry: string;\n\t\ttry {\n\t\t\tentry = createRequire(join(root, 'package.json')).resolve(id);\n\t\t} catch (cause) {\n\t\t\tthrow new Error(`Cannot resolve ${id} from ${root}. ${hint}`, { cause });\n\t\t}\n\t\treturn (await import(pathToFileURL(entry).href)) as T;\n\t}\n};\n","import { basename } from 'node:path';\nimport type { BuilderContext, ResolvedStarsConfig } from '@wolfstar/schema';\nimport type { InlineConfig, Plugin, UserConfig } from 'vite';\nimport { defaultBuilderContext } from './context.js';\n\nexport type ViteModule = typeof import('vite');\nexport interface ViteHooks {\n\tconfigure?(options: InlineConfig, command: 'build' | 'serve'): void | Promise<void>;\n}\n\n/** Defaults are applied after Vite loads its config, so explicit project options win. */\nexport function createViteConfig(config: ResolvedStarsConfig, context: BuilderContext = defaultBuilderContext): InlineConfig {\n\tconst defaults: Plugin = {\n\t\tname: 'stars:server-defaults',\n\t\tenforce: 'pre',\n\t\tconfig(options) {\n\t\t\toptions.build ??= {};\n\t\t\toptions.build.ssr ??= config.entry;\n\t\t\toptions.build.outDir ??= config.build.outDir;\n\t\t\toptions.build.sourcemap ??= true;\n\t\t\toptions.build.rollupOptions ??= {};\n\t\t\tconst output = options.build.rollupOptions.output;\n\t\t\tif (!Array.isArray(output)) options.build.rollupOptions.output = { entryFileNames: basename(config.build.output), ...output };\n\t\t\toptions.resolve ??= {};\n\t\t\toptions.resolve.tsconfigPaths ??= true;\n\t\t}\n\t};\n\tconst inline = config.vite as UserConfig;\n\treturn {\n\t\t...inline,\n\t\troot: config.root,\n\t\tconfigFile: config.build.configFile ?? false,\n\t\tplugins: [defaults, context.pluginRegistrations(config) as Plugin, ...toArray(inline.plugins)]\n\t};\n}\n\nexport function toArray<T>(value: T | T[] | undefined): T[] {\n\treturn value === undefined ? [] : Array.isArray(value) ? value : [value];\n}\n","import { EventEmitter } from 'node:events';\nimport type { Builder, BuilderContext, BuilderEvents, BuildOutcome, ResolvedStarsConfig } from '@wolfstar/schema';\nimport { defaultBuilderContext } from './context.js';\n\nexport interface ServerHooks {\n\tbeforeBuild?(config: ResolvedStarsConfig): void | Promise<void>;\n\tafterBuild?(outcome: BuildOutcome): void | Promise<void>;\n\tclose?(): void | Promise<void>;\n}\n\n/** Shared lifecycle: coalesce concurrent builds, report failures and drain work before close. */\nexport abstract class ServerBuilder extends EventEmitter<BuilderEvents> implements Builder {\n\tpublic readonly tool = 'vite' as const;\n\tprotected closed = false;\n\tprotected active: Promise<BuildOutcome> | null = null;\n\tprotected watching: Promise<void> | null = null;\n\tprotected stopWatching: (() => Promise<void>) | null = null;\n\t#closing: Promise<void> | null = null;\n\tprotected constructor(\n\t\tprotected readonly config: ResolvedStarsConfig,\n\t\tprotected readonly context: BuilderContext = defaultBuilderContext,\n\t\tprotected readonly hooks: ServerHooks = {}\n\t) {\n\t\tsuper();\n\t}\n\tpublic build(): Promise<BuildOutcome> {\n\t\tif (this.closed) return Promise.reject(new Error('The server builder is closed. Create a new builder to restart.'));\n\t\tif (this.active) return this.active;\n\t\tthis.active = this.runBuild().finally(() => {\n\t\t\tthis.active = null;\n\t\t});\n\t\treturn this.active;\n\t}\n\tprivate async runBuild(): Promise<BuildOutcome> {\n\t\tconst started = performance.now();\n\t\tthis.emit('start');\n\t\tlet message: string | null = null;\n\t\ttry {\n\t\t\tawait this.hooks.beforeBuild?.(this.config);\n\t\t\tawait this.compile();\n\t\t} catch (error) {\n\t\t\tmessage = error instanceof Error ? error.message : String(error);\n\t\t}\n\t\tconst outcome = { ok: message === null, durationMs: Math.round(performance.now() - started), message };\n\t\ttry {\n\t\t\tawait this.hooks.afterBuild?.(outcome);\n\t\t} catch (error) {\n\t\t\toutcome.ok = false;\n\t\t\toutcome.message = error instanceof Error ? error.message : String(error);\n\t\t}\n\t\tif (!this.closed) this.emit(outcome.ok ? 'success' : 'failure', outcome);\n\t\treturn outcome;\n\t}\n\tprotected abstract compile(): Promise<void>;\n\tprotected abstract startWatching(): Promise<void>;\n\tpublic watch(): Promise<void> {\n\t\tif (this.closed) return Promise.reject(new Error('The server builder is closed.'));\n\t\tthis.watching ??= this.startWatching().catch(async (error: unknown) => {\n\t\t\tconst stop = this.stopWatching;\n\t\t\tthis.stopWatching = null;\n\t\t\tawait stop?.();\n\t\t\tthis.watching = null;\n\t\t\tthrow error;\n\t\t});\n\t\treturn this.watching;\n\t}\n\tpublic close(): Promise<void> {\n\t\tthis.closed = true;\n\t\tthis.#closing ??= (async () => {\n\t\t\ttry {\n\t\t\t\tawait this.watching?.catch(() => {});\n\t\t\t\tconst stop = this.stopWatching;\n\t\t\t\tthis.stopWatching = null;\n\t\t\t\ttry {\n\t\t\t\t\tawait stop?.();\n\t\t\t\t} finally {\n\t\t\t\t\tawait this.active;\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tawait this.hooks.close?.();\n\t\t\t}\n\t\t})();\n\t\treturn this.#closing;\n\t}\n}\n","import type { BuilderLogLevel } from '@wolfstar/schema';\nimport type { ViteModule } from './config.js';\nexport function createBuildLogger(vite: ViteModule, log: (level: BuilderLogLevel, text: string) => void) {\n\tconst logger = vite.createLogger('warn', { allowClearScreen: false });\n\tconst warned = new Set<string>();\n\treturn {\n\t\t...logger,\n\t\tinfo: (text: string) => log('info', text),\n\t\twarn: (text: string) => log('warn', text),\n\t\twarnOnce(text: string) {\n\t\t\tif (!warned.has(text)) {\n\t\t\t\twarned.add(text);\n\t\t\t\tlog('warn', text);\n\t\t\t}\n\t\t},\n\t\terror: (text: string) => log('error', text)\n\t};\n}\n"],"mappings":";;;;;;;AAUA,MAAM,iBAAiB;;;;;AAMvB,SAAgB,oBAAoB,QAAqC;CACxE,MAAM,UAAU,uBAAuB,OAAO,IAAI;CAClD,MAAM,QAAQ,QAAQ,OAAO,KAAK;CAElC,OAAO;EACN,MAAM;EACN,UAAU,MAAc,IAAY;GACnC,IAAI,QAAQ,WAAW,KAAK,QAAQ,EAAE,MAAM,OAAO,OAAO;GAG1D,OAAO;IAAE,MAAM,GADO,QAAQ,KAAK,SAAS,UAAU,KAAK,UAAU,GAAG,KAAK,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,IACpE,EAAE,IAAI;IAAQ,KAAK;GAAK;EACvD;CACD;AACD;AAEA,SAAS,uBAAuB,MAAwB;CACvD,MAAM,cAAc,KAAK,MAAM,aAAa,KAAK,MAAM,cAAc,GAAG,MAAM,CAAC;CAC/E,OAAO,CAAC,mBAAG,IAAI,IAAI,CAAC,GAAG,OAAO,KAAK,YAAY,gBAAgB,CAAC,CAAC,GAAG,GAAG,OAAO,KAAK,YAAY,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3H,QAAQ,SAAS,eAAe,KAAK,IAAI,KAAK,kBAAkB,MAAM,IAAI,CAAC,CAAC,CAC5E,KAAK;AACR;;;;;;;;AASA,SAAS,kBAAkB,MAAc,MAAuB;CAC/D,MAAM,cAAc,yBAAyB,MAAM,IAAI;CACvD,IAAI,aAAa,YAAY,UAAa,YAAY,YAAY,MAAM,OAAO;CAC/E,OAAO,eAAe,YAAY,SAAS,YAAY;AACxD;AAEA,SAAS,yBAAyB,MAAc,MAAkC;CACjF,IAAI,YAAY,QAAQ,IAAI;CAC5B,OAAO,MACN,IAAI;EACH,OAAO,KAAK,MAAM,aAAa,KAAK,WAAW,gBAAgB,MAAM,cAAc,GAAG,MAAM,CAAC;CAC9F,QAAQ;EACP,MAAM,SAAS,QAAQ,SAAS;EAChC,IAAI,WAAW,WAAW,OAAO;EACjC,YAAY;CACb;AAEF;AAEA,SAAS,eAAe,SAAkB,SAA0B;CAEnE,IAAI,OAAO,YAAY,YAAY,YAAY,QAAQ,MAAM,QAAQ,OAAO,GAAG,OAAO;CAEtF,MAAM,OAAO,OAAO,KAAK,OAAO;CAChC,IAAI,CAAC,KAAK,MAAM,QAAQ,IAAI,WAAW,GAAG,CAAC,GAAG,OAAO;CACrD,IAAI,OAAO,OAAO,SAAS,OAAO,GAAG,OAAQ,QAAoC,aAAa;CAE9F,OAAO,KAAK,MAAM,QAAQ;EACzB,MAAM,OAAO,IAAI,QAAQ,GAAG;EAC5B,IAAI,SAAS,IAAI,OAAO;EACxB,MAAM,SAAS,IAAI,MAAM,GAAG,IAAI;EAChC,MAAM,SAAS,IAAI,MAAM,OAAO,CAAC;EACjC,OAAO,QAAQ,UAAU,IAAI,UAAU,QAAQ,WAAW,MAAM,KAAK,QAAQ,SAAS,MAAM;CAC7F,CAAC;AACF;AAEA,SAAS,QAAQ,IAAoB;CACpC,OAAO,QAAQ,GAAG,QAAQ,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,EAAG;AACvD;;;;;AC5EA,MAAa,wBAAwC;CACpD;CACA,MAAM,kBAAqB,MAAc,IAAY,MAA0B;EAC9E,IAAI;EACJ,IAAI;GACH,QAAQ,cAAc,KAAK,MAAM,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE;EAC7D,SAAS,OAAO;GACf,MAAM,IAAI,MAAM,kBAAkB,GAAG,QAAQ,KAAK,IAAI,QAAQ,EAAE,MAAM,CAAC;EACxE;EACA,OAAQ,MAAM,OAAO,cAAc,KAAK,CAAC,CAAC;CAC3C;AACD;;;;;ACPA,SAAgB,iBAAiB,QAA6B,UAA0B,uBAAqC;CAC5H,MAAM,WAAmB;EACxB,MAAM;EACN,SAAS;EACT,OAAO,SAAS;GACf,QAAQ,UAAU,CAAC;GACnB,QAAQ,MAAM,QAAQ,OAAO;GAC7B,QAAQ,MAAM,WAAW,OAAO,MAAM;GACtC,QAAQ,MAAM,cAAc;GAC5B,QAAQ,MAAM,kBAAkB,CAAC;GACjC,MAAM,SAAS,QAAQ,MAAM,cAAc;GAC3C,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG,QAAQ,MAAM,cAAc,SAAS;IAAE,gBAAgB,SAAS,OAAO,MAAM,MAAM;IAAG,GAAG;GAAO;GAC5H,QAAQ,YAAY,CAAC;GACrB,QAAQ,QAAQ,kBAAkB;EACnC;CACD;CACA,MAAM,SAAS,OAAO;CACtB,OAAO;EACN,GAAG;EACH,MAAM,OAAO;EACb,YAAY,OAAO,MAAM,cAAc;EACvC,SAAS;GAAC;GAAU,QAAQ,oBAAoB,MAAM;GAAa,GAAG,QAAQ,OAAO,OAAO;EAAC;CAC9F;AACD;AAEA,SAAgB,QAAW,OAAiC;CAC3D,OAAO,UAAU,SAAY,CAAC,IAAI,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AACxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BA,IAAsB,gBAAtB,cAA4C,aAA+C;CAO1F,AAAU,YACT,AAAmB,QACnB,AAAmB,UAA0B,uBAC7C,AAAmB,QAAqB,CAAC,GACxC;EACD,MAAM;EAJa;EACA;EACA;wBATJ,QAAO;wBACb,UAAS;wBACT,UAAuC;wBACvC,YAAiC;wBACjC,gBAA6C;6CACtB;CAOjC;CACA,AAAO,QAA+B;EACrC,IAAI,KAAK,QAAQ,OAAO,QAAQ,uBAAO,IAAI,MAAM,gEAAgE,CAAC;EAClH,IAAI,KAAK,QAAQ,OAAO,KAAK;EAC7B,KAAK,SAAS,KAAK,SAAS,CAAC,CAAC,cAAc;GAC3C,KAAK,SAAS;EACf,CAAC;EACD,OAAO,KAAK;CACb;CACA,MAAc,WAAkC;EAC/C,MAAM,UAAU,YAAY,IAAI;EAChC,KAAK,KAAK,OAAO;EACjB,IAAI,UAAyB;EAC7B,IAAI;GACH,MAAM,KAAK,MAAM,cAAc,KAAK,MAAM;GAC1C,MAAM,KAAK,QAAQ;EACpB,SAAS,OAAO;GACf,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;EAChE;EACA,MAAM,UAAU;GAAE,IAAI,YAAY;GAAM,YAAY,KAAK,MAAM,YAAY,IAAI,IAAI,OAAO;GAAG;EAAQ;EACrG,IAAI;GACH,MAAM,KAAK,MAAM,aAAa,OAAO;EACtC,SAAS,OAAO;GACf,QAAQ,KAAK;GACb,QAAQ,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;EACxE;EACA,IAAI,CAAC,KAAK,QAAQ,KAAK,KAAK,QAAQ,KAAK,YAAY,WAAW,OAAO;EACvE,OAAO;CACR;CAGA,AAAO,QAAuB;EAC7B,IAAI,KAAK,QAAQ,OAAO,QAAQ,uBAAO,IAAI,MAAM,+BAA+B,CAAC;EACjF,KAAK,aAAa,KAAK,cAAc,CAAC,CAAC,MAAM,OAAO,UAAmB;GACtE,MAAM,OAAO,KAAK;GAClB,KAAK,eAAe;GACpB,MAAM,OAAO;GACb,KAAK,WAAW;GAChB,MAAM;EACP,CAAC;EACD,OAAO,KAAK;CACb;CACA,AAAO,QAAuB;EAC7B,KAAK,SAAS;EACd,kFAAmB,YAAY;GAC9B,IAAI;IACH,MAAM,KAAK,UAAU,YAAY,CAAC,CAAC;IACnC,MAAM,OAAO,KAAK;IAClB,KAAK,eAAe;IACpB,IAAI;KACH,MAAM,OAAO;IACd,UAAU;KACT,MAAM,KAAK;IACZ;GACD,UAAU;IACT,MAAM,KAAK,MAAM,QAAQ;GAC1B;EACD,EAAC,CAAE;EACH,wCAAO;CACR;AACD;;;;AClFA,SAAgB,kBAAkB,MAAkB,KAAqD;CACxG,MAAM,SAAS,KAAK,aAAa,QAAQ,EAAE,kBAAkB,MAAM,CAAC;CACpE,MAAM,yBAAS,IAAI,IAAY;CAC/B,OAAO;EACN,GAAG;EACH,OAAO,SAAiB,IAAI,QAAQ,IAAI;EACxC,OAAO,SAAiB,IAAI,QAAQ,IAAI;EACxC,SAAS,MAAc;GACtB,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG;IACtB,OAAO,IAAI,IAAI;IACf,IAAI,QAAQ,IAAI;GACjB;EACD;EACA,QAAQ,SAAiB,IAAI,SAAS,IAAI;CAC3C;AACD"}
1
+ {"version":3,"file":"logger-5tpPvmoV.js","names":[],"sources":["../../src/plugins.ts","../../src/context.ts","../../src/config.ts","../../src/lifecycle.ts","../../src/logger.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\nimport type { ResolvedStarsConfig } from '@wolfstar/schema';\n\ninterface PackageJson {\n\tdependencies?: Record<string, string>;\n\toptionalDependencies?: Record<string, string>;\n\texports?: unknown;\n}\n\nconst PLUGIN_PACKAGE = /^@wolfstar\\/plugin-[^/]+$/;\n\n/**\n * Activates installed WolfStar plugins without making applications maintain a list\n * of side-effect-only plugin registration imports in their entry point.\n */\nexport function pluginRegistrations(config: ResolvedStarsConfig): object {\n\tconst plugins = findPluginDependencies(config.root);\n\tconst entry = resolve(config.entry);\n\n\treturn {\n\t\tname: 'stars:plugin-registrations',\n\t\ttransform(code: string, id: string) {\n\t\t\tif (plugins.length === 0 || cleanId(id) !== entry) return null;\n\n\t\t\tconst registrations = plugins.map((name) => `import ${JSON.stringify(`${name}/register`)};`).join('\\n');\n\t\t\treturn { code: `${registrations}\\n${code}`, map: null };\n\t\t}\n\t};\n}\n\nfunction findPluginDependencies(root: string): string[] {\n\tconst packageJson = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8')) as PackageJson;\n\treturn [...new Set([...Object.keys(packageJson.dependencies ?? {}), ...Object.keys(packageJson.optionalDependencies ?? {})])]\n\t\t.filter((name) => PLUGIN_PACKAGE.test(name) && mayExportRegister(root, name))\n\t\t.sort();\n}\n\n/**\n * Not every `@wolfstar/plugin-*` package is activated through a `/register` entrypoint: some (`plugin-cache`,\n * `plugin-gateway`, `plugin-sharder`) are libraries used directly, and injecting an import of a subpath they do not\n * export breaks the build. Only a package whose `exports` map is known and has no `./register` subpath is skipped —\n * one that is not installed, or declares no `exports`, keeps being injected so a missing install still surfaces as a\n * resolution error.\n */\nfunction mayExportRegister(root: string, name: string): boolean {\n\tconst packageJson = readInstalledPackageJson(root, name);\n\tif (packageJson?.exports === undefined || packageJson.exports === null) return true;\n\treturn exportsSubpath(packageJson.exports, './register');\n}\n\nfunction readInstalledPackageJson(root: string, name: string): PackageJson | null {\n\tlet directory = resolve(root);\n\twhile (true) {\n\t\ttry {\n\t\t\treturn JSON.parse(readFileSync(join(directory, 'node_modules', name, 'package.json'), 'utf8')) as PackageJson;\n\t\t} catch {\n\t\t\tconst parent = dirname(directory);\n\t\t\tif (parent === directory) return null;\n\t\t\tdirectory = parent;\n\t\t}\n\t}\n}\n\nfunction exportsSubpath(exports: unknown, subpath: string): boolean {\n\t// A string, an array, or an object of conditions only is the sugar for the `\".\"` subpath alone.\n\tif (typeof exports !== 'object' || exports === null || Array.isArray(exports)) return false;\n\n\tconst keys = Object.keys(exports);\n\tif (!keys.some((key) => key.startsWith('.'))) return false;\n\tif (Object.hasOwn(exports, subpath)) return (exports as Record<string, unknown>)[subpath] !== null;\n\n\treturn keys.some((key) => {\n\t\tconst star = key.indexOf('*');\n\t\tif (star === -1) return false;\n\t\tconst prefix = key.slice(0, star);\n\t\tconst suffix = key.slice(star + 1);\n\t\treturn subpath.length >= key.length && subpath.startsWith(prefix) && subpath.endsWith(suffix);\n\t});\n}\n\nfunction cleanId(id: string): string {\n\treturn resolve(id.replace(/^\\0/, '').split('?', 1)[0]!);\n}\n","import { createRequire } from 'node:module';\nimport { join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { BuilderContext } from '@wolfstar/schema';\nimport { pluginRegistrations } from './plugins.js';\n\n/** Default host for standalone use. Dependencies always resolve from the application. */\nexport const defaultBuilderContext: BuilderContext = {\n\tpluginRegistrations,\n\tasync importFromProject<T>(root: string, id: string, hint: string): Promise<T> {\n\t\tlet entry: string;\n\t\ttry {\n\t\t\tentry = createRequire(join(root, 'package.json')).resolve(id);\n\t\t} catch (cause) {\n\t\t\tthrow new Error(`Cannot resolve ${id} from ${root}. ${hint}`, { cause });\n\t\t}\n\t\treturn (await import(pathToFileURL(entry).href)) as T;\n\t}\n};\n","import { basename } from 'node:path';\nimport type { BuilderContext, ResolvedStarsConfig } from '@wolfstar/schema';\nimport type { InlineConfig, Plugin, UserConfig } from 'vite';\nimport { defaultBuilderContext } from './context.js';\n\nexport type ViteModule = typeof import('vite');\nexport interface ViteHooks {\n\tconfigure?(options: InlineConfig, command: 'build' | 'serve'): void | Promise<void>;\n}\n\n/** Defaults are applied after Vite loads its config, so explicit project options win. */\nexport function createViteConfig(config: ResolvedStarsConfig, context: BuilderContext = defaultBuilderContext): InlineConfig {\n\tconst defaults: Plugin = {\n\t\tname: 'stars:server-defaults',\n\t\tenforce: 'pre',\n\t\tconfig(options) {\n\t\t\toptions.build ??= {};\n\t\t\toptions.build.ssr ??= config.entry;\n\t\t\toptions.build.outDir ??= config.build.outDir;\n\t\t\toptions.build.sourcemap ??= true;\n\t\t\toptions.build.rollupOptions ??= {};\n\t\t\tconst output = options.build.rollupOptions.output;\n\t\t\tif (!Array.isArray(output)) options.build.rollupOptions.output = { entryFileNames: basename(config.build.output), ...output };\n\t\t\toptions.resolve ??= {};\n\t\t\toptions.resolve.tsconfigPaths ??= true;\n\t\t}\n\t};\n\tconst inline = config.vite as UserConfig;\n\treturn {\n\t\t...inline,\n\t\troot: config.root,\n\t\tconfigFile: config.build.configFile ?? false,\n\t\tplugins: [defaults, context.pluginRegistrations(config) as Plugin, ...toArray(inline.plugins)]\n\t};\n}\n\nexport function toArray<T>(value: T | T[] | undefined): T[] {\n\treturn value === undefined ? [] : Array.isArray(value) ? value : [value];\n}\n","import { EventEmitter } from 'node:events';\nimport type { Builder, BuilderContext, BuilderEvents, BuildOutcome, ResolvedStarsConfig } from '@wolfstar/schema';\nimport { defaultBuilderContext } from './context.js';\n\nexport interface ServerHooks {\n\tbeforeBuild?(config: ResolvedStarsConfig): void | Promise<void>;\n\tafterBuild?(outcome: BuildOutcome): void | Promise<void>;\n\tclose?(): void | Promise<void>;\n}\n\n/** Shared lifecycle: coalesce concurrent builds, report failures and drain work before close. */\nexport abstract class ServerBuilder extends EventEmitter<BuilderEvents> implements Builder {\n\tpublic readonly tool = 'vite' as const;\n\tprotected closed = false;\n\tprotected active: Promise<BuildOutcome> | null = null;\n\tprotected watching: Promise<void> | null = null;\n\tprotected stopWatching: (() => Promise<void>) | null = null;\n\t#closing: Promise<void> | null = null;\n\tprotected constructor(\n\t\tprotected readonly config: ResolvedStarsConfig,\n\t\tprotected readonly context: BuilderContext = defaultBuilderContext,\n\t\tprotected readonly hooks: ServerHooks = {}\n\t) {\n\t\tsuper();\n\t}\n\tpublic build(): Promise<BuildOutcome> {\n\t\tif (this.closed) return Promise.reject(new Error('The server builder is closed. Create a new builder to restart.'));\n\t\tif (this.active) return this.active;\n\t\tthis.active = this.runBuild().finally(() => {\n\t\t\tthis.active = null;\n\t\t});\n\t\treturn this.active;\n\t}\n\tprivate async runBuild(): Promise<BuildOutcome> {\n\t\tconst started = performance.now();\n\t\tthis.emit('start');\n\t\tlet message: string | null = null;\n\t\ttry {\n\t\t\tawait this.hooks.beforeBuild?.(this.config);\n\t\t\tawait this.compile();\n\t\t} catch (error) {\n\t\t\tmessage = error instanceof Error ? error.message : String(error);\n\t\t}\n\t\tconst outcome = { ok: message === null, durationMs: Math.round(performance.now() - started), message };\n\t\ttry {\n\t\t\tawait this.hooks.afterBuild?.(outcome);\n\t\t} catch (error) {\n\t\t\toutcome.ok = false;\n\t\t\toutcome.message = error instanceof Error ? error.message : String(error);\n\t\t}\n\t\tif (!this.closed) this.emit(outcome.ok ? 'success' : 'failure', outcome);\n\t\treturn outcome;\n\t}\n\tprotected abstract compile(): Promise<void>;\n\tprotected abstract startWatching(): Promise<void>;\n\tpublic watch(): Promise<void> {\n\t\tif (this.closed) return Promise.reject(new Error('The server builder is closed.'));\n\t\tthis.watching ??= this.startWatching().catch(async (error: unknown) => {\n\t\t\tconst stop = this.stopWatching;\n\t\t\tthis.stopWatching = null;\n\t\t\tawait stop?.();\n\t\t\tthis.watching = null;\n\t\t\tthrow error;\n\t\t});\n\t\treturn this.watching;\n\t}\n\tpublic close(): Promise<void> {\n\t\tthis.closed = true;\n\t\tthis.#closing ??= (async () => {\n\t\t\ttry {\n\t\t\t\tawait this.watching?.catch(() => {});\n\t\t\t\tconst stop = this.stopWatching;\n\t\t\t\tthis.stopWatching = null;\n\t\t\t\ttry {\n\t\t\t\t\tawait stop?.();\n\t\t\t\t} finally {\n\t\t\t\t\tawait this.active;\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tawait this.hooks.close?.();\n\t\t\t}\n\t\t})();\n\t\treturn this.#closing;\n\t}\n}\n","import type { BuilderLogLevel } from '@wolfstar/schema';\nimport type { ViteModule } from './config.js';\nexport function createBuildLogger(vite: ViteModule, log: (level: BuilderLogLevel, text: string) => void) {\n\tconst logger = vite.createLogger('warn', { allowClearScreen: false });\n\tconst warned = new Set<string>();\n\treturn {\n\t\t...logger,\n\t\tinfo: (text: string) => log('info', text),\n\t\twarn: (text: string) => log('warn', text),\n\t\twarnOnce(text: string) {\n\t\t\tif (!warned.has(text)) {\n\t\t\t\twarned.add(text);\n\t\t\t\tlog('warn', text);\n\t\t\t}\n\t\t},\n\t\terror: (text: string) => log('error', text)\n\t};\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wolfstar/vite-server",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "Vite build and watch integration for Stars projects",
5
5
  "keywords": [
6
6
  "api",
@@ -51,16 +51,16 @@
51
51
  "provenance": true
52
52
  },
53
53
  "dependencies": {
54
- "@wolfstar/schema": "^0.2.0",
54
+ "@wolfstar/schema": "^0.2.1",
55
55
  "srvx": "^1.0.5"
56
56
  },
57
57
  "devDependencies": {
58
- "@vitest/coverage-v8": "^4.1.11",
58
+ "@vitest/coverage-v8": "^5.0.1",
59
59
  "golar": "^0.1.10",
60
60
  "tsdown": "^0.23.0",
61
61
  "typescript": "~7.0.2",
62
62
  "vite": "^8.3.0",
63
- "vitest": "^4.1.11"
63
+ "vitest": "^5.0.1"
64
64
  },
65
65
  "peerDependencies": {
66
66
  "vite": ">=6.0.0"