@ubean/build 0.7.1 → 0.7.2

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.
@@ -165,9 +165,10 @@ interface I18nTypesOptions {
165
165
  /** Convert a JSON message tree into a TypeScript object type body. */
166
166
  export declare function messagesToTsType(value: unknown, indent?: number): string;
167
167
  /**
168
- * Generate `.ubean/i18n.d.ts` augmenting vue-i18n `DefineLocaleMessage`
169
- * from the default locale JSON. Users can also hand-write the same
170
- * module augmentation if they prefer.
168
+ * Generate `.ubean/i18n.d.ts` augmenting vue-i18n `DefineLocaleMessage` from
169
+ * the default locale JSON, plus `GeneratedTypeConfig['locale']` from the
170
+ * scanned locale codes. The two halves are independent: message keys need a
171
+ * JSON source, the locale union only needs the locale files to exist.
171
172
  */
172
173
  export declare function generateI18nTypes(result: ScanResult, options: I18nTypesOptions): Promise<string | null>;
173
174
  //#endregion
@@ -1 +1 @@
1
- export { d as BUILTIN_PRESETS, t as CODEGEN_CONTRACT_VERSION, n as CODEGEN_FILES, r as CODEGEN_NON_CONTRACT_FILES, p as HONO_OPENAPI_PRESET, m as UBEAN_CLIENT_PRESET, h as UBEAN_SERVER_PRESET, g as VUE_I18N_PRESET, _ as VUE_MACROS_PRESET, v as VUE_PRESET, y as VUE_ROUTER_PRESET, b as generateAutoImports, l as generateI18nTypes, x as generateImportsTransform, a as generateOpenApiTypes, o as generateOpenApiTypesFromServer, s as generatePageTypes, c as generateRouteTypes, i as generateTypes, S as getAutoImportPresets, C as getBuiltinComposables, w as getUbeanAutoImportConfig, T as getUbeanComponentsConfig, u as messagesToTsType, E as resolveAutoImportsConfig, D as resolveComponentsConfig, O as toArray } from "../codegen-Dw-uws16.js";
1
+ export { d as BUILTIN_PRESETS, t as CODEGEN_CONTRACT_VERSION, n as CODEGEN_FILES, r as CODEGEN_NON_CONTRACT_FILES, p as HONO_OPENAPI_PRESET, m as UBEAN_CLIENT_PRESET, h as UBEAN_SERVER_PRESET, g as VUE_I18N_PRESET, _ as VUE_MACROS_PRESET, v as VUE_PRESET, y as VUE_ROUTER_PRESET, b as generateAutoImports, l as generateI18nTypes, x as generateImportsTransform, a as generateOpenApiTypes, o as generateOpenApiTypesFromServer, s as generatePageTypes, c as generateRouteTypes, i as generateTypes, S as getAutoImportPresets, C as getBuiltinComposables, w as getUbeanAutoImportConfig, T as getUbeanComponentsConfig, u as messagesToTsType, E as resolveAutoImportsConfig, D as resolveComponentsConfig, O as toArray } from "../codegen-DqXlzw1Y.js";
@@ -753,34 +753,55 @@ function pickDefaultLocaleFile(locales, defaultLocale) {
753
753
  return jsonFiles.find((l) => l.isDefault) || jsonFiles[0];
754
754
  }
755
755
  /**
756
- * Generate `.ubean/i18n.d.ts` augmenting vue-i18n `DefineLocaleMessage`
757
- * from the default locale JSON. Users can also hand-write the same
758
- * module augmentation if they prefer.
756
+ * Locale codes scanned from `src/locales/` → vue-i18n `GeneratedTypeConfig`.
757
+ *
758
+ * `@intlify/core-base` derives `Locale = GeneratedLocale` from this interface
759
+ * (`core-base.d.ts`: `Locale = IsNever<GeneratedLocale> extends true ? string : GeneratedLocale`),
760
+ * so every `Composer.locale` / `createI18n({ locale })` surface narrows to the
761
+ * union. Requires the leading `export {}` in the emitted file — without it the
762
+ * `declare module` is not a module augmentation and silently does nothing.
763
+ */
764
+ function localeUnionType(locales) {
765
+ const codes = [...new Set(locales.map((l) => l.code))];
766
+ if (codes.length === 0) return null;
767
+ return codes.map((c) => JSON.stringify(c)).join(" | ");
768
+ }
769
+ /**
770
+ * Generate `.ubean/i18n.d.ts` augmenting vue-i18n `DefineLocaleMessage` from
771
+ * the default locale JSON, plus `GeneratedTypeConfig['locale']` from the
772
+ * scanned locale codes. The two halves are independent: message keys need a
773
+ * JSON source, the locale union only needs the locale files to exist.
759
774
  */
760
775
  async function generateI18nTypes(result, options) {
761
776
  const { outDir, fileName = "i18n.d.ts", defaultLocale } = options;
762
- const source = pickDefaultLocaleFile(result.locales || [], defaultLocale);
763
- if (!source) return null;
764
- let raw;
765
- try {
777
+ const locales = result.locales || [];
778
+ const localeUnion = localeUnionType(locales);
779
+ const source = pickDefaultLocaleFile(locales, defaultLocale);
780
+ let messages = null;
781
+ if (source) try {
766
782
  const text = await readFile(source.fullPath, "utf8");
767
- raw = JSON.parse(text);
783
+ messages = unwrapMessages(JSON.parse(text));
768
784
  } catch {
769
- return null;
785
+ messages = null;
770
786
  }
771
- const messages = unwrapMessages(raw);
772
- if (!messages) return null;
773
- const typeBody = messagesToTsType(messages, 2);
774
- const contents = `// Auto-generated by ubean from ${source.relativePath} — do not edit manually
775
- // Typed \`t('key')\` via vue-i18n \`DefineLocaleMessage\`.
776
- // Override by adding your own \`declare module 'vue-i18n'\` in src/.
787
+ if (!messages && !localeUnion) return null;
788
+ const contents = `${`// Auto-generated by ubean ${source ? `from ${source.relativePath}` : "from scanned locale codes"} — do not edit manually
789
+ // Typed \`t('key')\` via vue-i18n \`DefineLocaleMessage\` and \`Locale\` via
790
+ // \`@intlify/core-base\` \`GeneratedTypeConfig\`.
791
+ // Override by adding your own \`declare module\` in src/.
777
792
  /* eslint-disable */
778
793
  export {};
779
-
794
+ `}${messages ? `
780
795
  declare module 'vue-i18n' {
781
- export interface DefineLocaleMessage ${typeBody}
796
+ export interface DefineLocaleMessage ${messagesToTsType(messages, 2)}
797
+ }
798
+ ` : ""}${localeUnion ? `
799
+ declare module '@intlify/core-base' {
800
+ export interface GeneratedTypeConfig {
801
+ locale: ${localeUnion};
802
+ }
782
803
  }
783
- `;
804
+ ` : ""}`;
784
805
  await mkdir(outDir, { recursive: true });
785
806
  const outPath = join(outDir, fileName);
786
807
  await writeFile(outPath, contents, "utf8");
@@ -984,7 +1005,7 @@ const CODEGEN_FILES = [
984
1005
  name: "i18n.d.ts",
985
1006
  module: "vue-i18n",
986
1007
  required: false,
987
- types: ["DefineLocaleMessage"]
1008
+ types: ["DefineLocaleMessage", "GeneratedTypeConfig"]
988
1009
  },
989
1010
  {
990
1011
  name: "auto-imports.d.ts",
@@ -1025,7 +1046,10 @@ async function generateTypes(result, options) {
1025
1046
  generated.push(routeTypesPath);
1026
1047
  const pageTypesPath = await generatePageTypes(result, { outDir });
1027
1048
  generated.push(pageTypesPath);
1028
- const i18nTypesPath = await generateI18nTypes(result, { outDir });
1049
+ const i18nTypesPath = await generateI18nTypes(result, {
1050
+ outDir,
1051
+ defaultLocale: result.defaultLocale
1052
+ });
1029
1053
  if (i18nTypesPath) generated.push(i18nTypesPath);
1030
1054
  const envTypesPath = await generateEnvTypes({
1031
1055
  outDir,
@@ -1 +1 @@
1
- export { T as buildWithEnvironments, v as createIslandsSsrStubPlugin, y as generateCloudflareWorkerEntry, b as generateNodeServerEntry, x as generateStandardHandlerEntry, S as generateVirtualModulesToDisk, C as getPresetBuildConfig, w as serializePagesForEntry } from "./vite-CGvlml0h.js";
1
+ export { T as buildWithEnvironments, v as createIslandsSsrStubPlugin, y as generateCloudflareWorkerEntry, b as generateNodeServerEntry, x as generateStandardHandlerEntry, S as generateVirtualModulesToDisk, C as getPresetBuildConfig, w as serializePagesForEntry } from "./vite-c-MoZSjh.js";
@@ -1,7 +1,7 @@
1
1
  import { a as ssrSingletonProdOptimizeExclude, g as createVirtualRegistry, o as ssrSingletonProdSsr, x as __exportAll } from "./ssr-singleton-CUHZLgiO.js";
2
2
  import { a as createRoutingVirtualModule, i as createPagesVirtualModule, n as createLocalesVirtualModule, r as createMetaVirtualModule, s as transformMacros, t as createAppVirtualModule } from "./virtual-modules-DXIIB-zM.js";
3
- import { a as generateOpenApiTypes, i as generateTypes } from "./codegen-Dw-uws16.js";
4
- import { _ as sendWebResponse, a as createServerEntryVirtualModule, d as ensureDevApp, i as createClientEntryVirtualModule, n as ubeanVite, o as createVueAppEntryVirtualModule, r as composeHeadScripts, s as createVuePagesVirtualModule, v as toWebRequest, x as getDevScanCoordinator } from "./vue-DLig_WHk.js";
3
+ import { a as generateOpenApiTypes, i as generateTypes } from "./codegen-DqXlzw1Y.js";
4
+ import { _ as sendWebResponse, a as createServerEntryVirtualModule, d as ensureDevApp, i as createClientEntryVirtualModule, n as ubeanVite, o as createVueAppEntryVirtualModule, r as composeHeadScripts, s as createVuePagesVirtualModule, v as toWebRequest, x as getDevScanCoordinator } from "./vue-DB75Lo-g.js";
5
5
  import { createStaticSsgRenderer } from "./static-render.js";
6
6
  import { prerender, resolvePrerenderStaticDir } from "./prerender.js";
7
7
  import { resolvePageKind } from "@ubean/vue";
package/dist/vite.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import { g as createVirtualRegistry } from "./ssr-singleton-CUHZLgiO.js";
2
- import { A as buildDevSsrRoutes, C as peekDevScanCoordinator, D as resolveDevSecurityHeaders, E as createDevAppReady, O as resolveLocaleVueParam, S as onDevScan, T as createDevApp, _ as sendWebResponse, b as createDevScanCoordinator, c as DEVTOOLS_PASS_THROUGH_PREFIXES, d as ensureDevApp, f as getDevApp, g as ubeanDevRequestPlugin, h as isViteResourceRequest, j as toVueRouterPagePath, k as enhanceDevApp, l as collectDevCssLinks, m as isFrameworkHtmlPage, p as injectStylesheetLinks, u as createUbeanRequestHandlers, v as toWebRequest, w as bootstrapDevApp, x as getDevScanCoordinator, y as DEV_SCAN_DIRS } from "./vue-DLig_WHk.js";
3
- import { D as createCloudflarePreviewRunner, E as MINIFLARE_INSTALL_HINT, O as defaultLoadMiniflare, _ as ubeanPreviewPlugin, a as createEnvRunnerTransport, c as getDevWorkerEntrySource, d as attachPreviewMiddleware, f as createPreviewMiddleware, g as sendPreviewStatus, h as sendPreviewFile, i as bridgeEnvRunnerInvokes, k as readCompatibilityDate, l as invalidateDevWorkerModules, m as resolvePreviewFile, n as UBEAN_DEV_ENV_NAME, o as createUbeanDevEnvironmentFactory, p as previewMimeType, r as UbeanDevEnvironment, s as DEV_WORKER_FILE, t as ubeanPlugin, u as writeDevWorkerEntry } from "./vite-CGvlml0h.js";
2
+ import { A as buildDevSsrRoutes, C as peekDevScanCoordinator, D as resolveDevSecurityHeaders, E as createDevAppReady, O as resolveLocaleVueParam, S as onDevScan, T as createDevApp, _ as sendWebResponse, b as createDevScanCoordinator, c as DEVTOOLS_PASS_THROUGH_PREFIXES, d as ensureDevApp, f as getDevApp, g as ubeanDevRequestPlugin, h as isViteResourceRequest, j as toVueRouterPagePath, k as enhanceDevApp, l as collectDevCssLinks, m as isFrameworkHtmlPage, p as injectStylesheetLinks, u as createUbeanRequestHandlers, v as toWebRequest, w as bootstrapDevApp, x as getDevScanCoordinator, y as DEV_SCAN_DIRS } from "./vue-DB75Lo-g.js";
3
+ import { D as createCloudflarePreviewRunner, E as MINIFLARE_INSTALL_HINT, O as defaultLoadMiniflare, _ as ubeanPreviewPlugin, a as createEnvRunnerTransport, c as getDevWorkerEntrySource, d as attachPreviewMiddleware, f as createPreviewMiddleware, g as sendPreviewStatus, h as sendPreviewFile, i as bridgeEnvRunnerInvokes, k as readCompatibilityDate, l as invalidateDevWorkerModules, m as resolvePreviewFile, n as UBEAN_DEV_ENV_NAME, o as createUbeanDevEnvironmentFactory, p as previewMimeType, r as UbeanDevEnvironment, s as DEV_WORKER_FILE, t as ubeanPlugin, u as writeDevWorkerEntry } from "./vite-c-MoZSjh.js";
4
4
  export { DEVTOOLS_PASS_THROUGH_PREFIXES, DEV_SCAN_DIRS, DEV_WORKER_FILE, MINIFLARE_INSTALL_HINT, UBEAN_DEV_ENV_NAME, UbeanDevEnvironment, attachPreviewMiddleware, bootstrapDevApp, bridgeEnvRunnerInvokes, buildDevSsrRoutes, collectDevCssLinks, createCloudflarePreviewRunner, createDevApp, createDevAppReady, createDevScanCoordinator, createEnvRunnerTransport, createPreviewMiddleware, createUbeanDevEnvironmentFactory, createUbeanRequestHandlers, createVirtualRegistry, defaultLoadMiniflare, enhanceDevApp, ensureDevApp, getDevApp, getDevScanCoordinator, getDevWorkerEntrySource, injectStylesheetLinks, invalidateDevWorkerModules, isFrameworkHtmlPage, isViteResourceRequest, onDevScan, peekDevScanCoordinator, previewMimeType, readCompatibilityDate, resolveDevSecurityHeaders, resolveLocaleVueParam, resolvePreviewFile, sendPreviewFile, sendPreviewStatus, sendWebResponse, toVueRouterPagePath, toWebRequest, ubeanDevRequestPlugin, ubeanPlugin, ubeanPreviewPlugin, writeDevWorkerEntry };
@@ -1,5 +1,5 @@
1
1
  import { _ as defineVirtualModule, c as getComponentResolvers, g as createVirtualRegistry, i as ssrSingletonDevPolicy, l as getCssImports, u as getHeadScripts } from "./ssr-singleton-CUHZLgiO.js";
2
- import { D as resolveComponentsConfig, E as resolveAutoImportsConfig, O as toArray, S as getAutoImportPresets, f as COMPONENT_HALF_GLOBS } from "./codegen-Dw-uws16.js";
2
+ import { D as resolveComponentsConfig, E as resolveAutoImportsConfig, O as toArray, S as getAutoImportPresets, f as COMPONENT_HALF_GLOBS } from "./codegen-DqXlzw1Y.js";
3
3
  import { createRequire } from "node:module";
4
4
  import { generatePagesModuleSource } from "@ubean/vue/vite";
5
5
  import { resolvePageKind } from "@ubean/vue";
package/dist/vue.js CHANGED
@@ -1 +1 @@
1
- export { t as VUE_PLUGIN_INCLUDE, r as composeHeadScripts, i as createClientEntryVirtualModule, a as createServerEntryVirtualModule, o as createVueAppEntryVirtualModule, s as createVuePagesVirtualModule, n as default, n as ubeanVite } from "./vue-DLig_WHk.js";
1
+ export { t as VUE_PLUGIN_INCLUDE, r as composeHeadScripts, i as createClientEntryVirtualModule, a as createServerEntryVirtualModule, o as createVueAppEntryVirtualModule, s as createVuePagesVirtualModule, n as default, n as ubeanVite } from "./vue-DB75Lo-g.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ubean/build",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
4
4
  "description": "Vite plugins, production build, SSG prerender, type codegen, and Server Actions plugin for ubean",
5
5
  "files": [
6
6
  "dist"
@@ -49,19 +49,19 @@
49
49
  },
50
50
  "dependencies": {
51
51
  "@intlify/unplugin-vue-i18n": "11.2.7",
52
- "@ubean/app": "0.7.1",
53
- "@ubean/client": "0.7.1",
54
- "@ubean/config": "0.7.1",
55
- "@ubean/i18n": "0.7.1",
56
- "@ubean/islands": "0.7.1",
57
- "@ubean/markdown": "0.7.1",
58
- "@ubean/pages": "0.7.1",
59
- "@ubean/preset": "0.7.1",
60
- "@ubean/routes": "0.7.1",
61
- "@ubean/scan": "0.7.1",
62
- "@ubean/server": "0.7.1",
63
- "@ubean/shared": "0.7.1",
64
- "@ubean/vue": "0.7.1",
52
+ "@ubean/app": "0.7.2",
53
+ "@ubean/client": "0.7.2",
54
+ "@ubean/config": "0.7.2",
55
+ "@ubean/i18n": "0.7.2",
56
+ "@ubean/islands": "0.7.2",
57
+ "@ubean/markdown": "0.7.2",
58
+ "@ubean/pages": "0.7.2",
59
+ "@ubean/preset": "0.7.2",
60
+ "@ubean/routes": "0.7.2",
61
+ "@ubean/scan": "0.7.2",
62
+ "@ubean/server": "0.7.2",
63
+ "@ubean/shared": "0.7.2",
64
+ "@ubean/vue": "0.7.2",
65
65
  "@vitejs/plugin-vue": "^6.0.10",
66
66
  "@vitejs/plugin-vue-jsx": "^5.1.6",
67
67
  "openapi-typescript": "^7.13.0",