@wuchale/vite-plugin 0.10.3 → 0.11.0

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/index.d.ts CHANGED
@@ -9,6 +9,7 @@ type ViteDevServer = {
9
9
  loadID: string | null;
10
10
  }, client: HMRClient) => void) => void;
11
11
  };
12
+ moduleGraph: any;
12
13
  };
13
14
  declare class Plugin {
14
15
  #private;
@@ -23,7 +24,9 @@ declare class Plugin {
23
24
  configureServer: (server: ViteDevServer) => void;
24
25
  handleHotUpdate: (ctx: {
25
26
  file: string;
26
- }) => Promise<void>;
27
+ server: ViteDevServer;
28
+ timestamp: number;
29
+ }) => Promise<any[]>;
27
30
  resolveId: (source: string, importer?: string) => string;
28
31
  load: (id: string) => string;
29
32
  transform: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;AACpD,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAA;AAEnC,KAAK,aAAa,GAAG;IACjB,EAAE,EAAE;QACA,IAAI,EAAE,QAAQ,CAAC;QACf,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE;YAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;SAAC,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,KAAK,IAAI,CAAC;KAC9F,CAAA;CACJ,CAAA;AAED,cAAM,MAAM;;IAER,IAAI,SAAa;gBAgBL,UAAU,EAAE,MAAM;IA8B9B,cAAc,GAAU,QAAQ;QAAE,GAAG,EAAE;YAAE,GAAG,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,mBASvE;IAED,eAAe,GAAI,QAAQ,aAAa,UAiBvC;IAmBD,eAAe,GAAU,KAAK;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,mBAQ3C;IAED,SAAS,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,YAK7C;IAED,IAAI,GAAI,IAAI,MAAM,YAiCjB;IAmBD,SAAS;eAAa,KAAK;wBAjBM,MAAM,MAAM,MAAM;;;;MAiBiB;CACvE;AAED,eAAO,MAAM,OAAO,GAAI,aAAa,MAAM,WAA2B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;AACpD,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAA;AAEnC,KAAK,aAAa,GAAG;IACjB,EAAE,EAAE;QACA,IAAI,EAAE,QAAQ,CAAC;QACf,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE;YAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,KAAK,IAAI,CAAC;KAChG,CAAA;IACD,WAAW,EAAE,GAAG,CAAA;CACnB,CAAA;AAED,cAAM,MAAM;;IAER,IAAI,SAAa;gBAkBL,UAAU,EAAE,MAAM;IA8B9B,cAAc,GAAU,QAAQ;QAAE,GAAG,EAAE;YAAE,GAAG,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,mBASvE;IAED,eAAe,GAAI,QAAQ,aAAa,UAiBvC;IAmBD,eAAe,GAAU,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,oBAiCvF;IAED,SAAS,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,YAK7C;IAED,IAAI,GAAI,IAAI,MAAM,YAoDjB;IAmBD,SAAS;eAAa,KAAK;wBAjBM,MAAM,MAAM,MAAM;;;;MAiBiB;CACvE;AAED,eAAO,MAAM,OAAO,GAAI,aAAa,MAAM,WAA2B,CAAA"}
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ import { relative, resolve } from "node:path";
3
3
  import { getConfig as getConfig } from "wuchale/config";
4
4
  import { AdapterHandler } from "wuchale/handler";
5
5
  import { Logger } from "wuchale/log";
6
+ import { catalogVarName } from "wuchale/runtime";
6
7
  const pluginName = 'wuchale';
7
8
  const virtualPrefix = `virtual:${pluginName}/`;
8
9
  const virtualResolvedPrefix = '\0';
@@ -15,6 +16,7 @@ class Plugin {
15
16
  #adapters = {};
16
17
  #adaptersByLoaderPath = {};
17
18
  #adaptersByCatalogPath = {};
19
+ #lastHMRTime = 0;
18
20
  #log;
19
21
  #configPath;
20
22
  constructor(configPath) {
@@ -84,25 +86,45 @@ class Plugin {
84
86
  };
85
87
  handleHotUpdate = async (ctx) => {
86
88
  if (!(ctx.file in this.#adaptersByCatalogPath)) {
89
+ this.#lastHMRTime = performance.now();
87
90
  return;
88
91
  }
92
+ if (performance.now() - this.#lastHMRTime < 1000) { // too soon
93
+ return;
94
+ }
95
+ // PO file edit -> JS HMR
89
96
  const adapter = this.#adaptersByCatalogPath[ctx.file];
90
97
  const loc = adapter.catalogPathsToLocales[ctx.file];
91
98
  await adapter.loadCatalogNCompile(loc);
92
99
  this.#sendUpdateToClient(adapter, [loc]);
100
+ let invalidatedLoadIDs = [null];
101
+ if (this.#config.adapters[adapter.key].granularLoad) {
102
+ invalidatedLoadIDs = Object.keys(adapter.granularStateByID);
103
+ }
104
+ const allModules = [];
105
+ const invalidatedModules = new Set();
106
+ for (const loadID of invalidatedLoadIDs) {
107
+ const moduleID = `${virtualResolvedPrefix}${adapter.virtModEvent(loc, loadID)}`;
108
+ const modules = ctx.server.moduleGraph.getModulesByFile(moduleID);
109
+ for (const module of modules) {
110
+ ctx.server.moduleGraph.invalidateModule(module, invalidatedModules, ctx.timestamp, true);
111
+ allModules.push(module);
112
+ }
113
+ }
114
+ return allModules;
93
115
  };
94
116
  resolveId = (source, importer) => {
95
117
  if (!source.startsWith(virtualPrefix)) {
96
118
  return null;
97
119
  }
98
- return `${virtualResolvedPrefix}${source}?${importer}`;
120
+ return `${virtualResolvedPrefix}${source}?importer=${importer}`;
99
121
  };
100
122
  load = (id) => {
101
123
  const prefix = virtualResolvedPrefix + virtualPrefix;
102
124
  if (!id.startsWith(prefix)) {
103
125
  return null;
104
126
  }
105
- const [path, importer] = id.slice(prefix.length).split('?');
127
+ const [path, importer] = id.slice(prefix.length).split('?importer=');
106
128
  const [part, ...rest] = path.split('/');
107
129
  if (part === 'catalog') {
108
130
  const [adapterKey, loadID, locale] = rest;
@@ -111,7 +133,25 @@ class Plugin {
111
133
  this.#log.error(`Adapter not found for key: ${adapterKey}`);
112
134
  return null;
113
135
  }
114
- return adapter.loadDataModule(locale, loadID);
136
+ const module = adapter.loadDataModule(locale, loadID);
137
+ if (this.#server == null) { // prod build
138
+ return module;
139
+ }
140
+ const eventSend = adapter.virtModEvent(locale, loadID);
141
+ const eventReceive = adapter.virtModEvent(locale, null);
142
+ return `
143
+ ${module}
144
+ if (import.meta.hot) {
145
+ import.meta.hot.on('${eventSend}', newData => {
146
+ for (let i = 0; i < newData.length; i++) {
147
+ if (JSON.stringify(${catalogVarName}[i]) !== JSON.stringify(newData[i])) {
148
+ ${catalogVarName}[i] = newData[i]
149
+ }
150
+ }
151
+ })
152
+ import.meta.hot.send('${eventReceive}'${loadID == null ? '' : `, {loadID: '${loadID}'}`})
153
+ }
154
+ `;
115
155
  }
116
156
  if (part === 'locales') {
117
157
  return `export const locales = ['${this.#locales.join("', '")}']`;
@@ -123,6 +163,7 @@ class Plugin {
123
163
  // loader proxy
124
164
  const adapter = this.#adaptersByLoaderPath[importer];
125
165
  if (adapter == null) {
166
+ console.log(id);
126
167
  this.#log.error(`Adapter not found for filename: ${importer}`);
127
168
  return;
128
169
  }
@@ -139,7 +180,7 @@ class Plugin {
139
180
  for (const adapter of Object.values(this.#adapters)) {
140
181
  if (adapter.fileMatches(filename)) {
141
182
  const { catalogChanged, ...output } = await adapter.transform(code, filename);
142
- if (catalogChanged) {
183
+ if (catalogChanged && this.#lastHMRTime > 0) {
143
184
  this.#sendUpdateToClient(adapter, this.#locales);
144
185
  }
145
186
  return output;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wuchale/vite-plugin",
3
- "version": "0.10.3",
3
+ "version": "0.11.0",
4
4
  "description": "Protobuf-like i18n from normal code",
5
5
  "scripts": {
6
6
  "dev": "tsc --watch",
@@ -27,8 +27,7 @@
27
27
  "lightweight"
28
28
  ],
29
29
  "files": [
30
- "dist",
31
- "src"
30
+ "dist"
32
31
  ],
33
32
  "main": "./dist/index.js",
34
33
  "types": "./dist/index.d.ts",
@@ -41,7 +40,7 @@
41
40
  "author": "K1DV5",
42
41
  "license": "MIT",
43
42
  "dependencies": {
44
- "wuchale": "^0.11.0"
43
+ "wuchale": "^0.12.0"
45
44
  },
46
45
  "devDependencies": {
47
46
  "typescript": "^5.8.3"
package/src/index.ts DELETED
@@ -1,189 +0,0 @@
1
- // $$ cd ../.. && npm run test
2
- import { relative, resolve } from "node:path"
3
- import { getConfig as getConfig, type Config } from "wuchale/config"
4
- import { AdapterHandler } from "wuchale/handler"
5
- import type {Mode} from 'wuchale/handler'
6
- import { Logger } from "wuchale/log"
7
-
8
- const pluginName = 'wuchale'
9
- const virtualPrefix = `virtual:${pluginName}/`
10
- const virtualResolvedPrefix = '\0'
11
-
12
- type SendFunc = (event: string, data: any[]) => void
13
- type HMRClient = { send: SendFunc }
14
-
15
- type ViteDevServer = {
16
- ws: {
17
- send: SendFunc,
18
- on: (event: string, cb: (msg: {loadID: string | null}, client: HMRClient) => void) => void,
19
- }
20
- }
21
-
22
- class Plugin {
23
-
24
- name = pluginName
25
-
26
- #config: Config
27
- #locales: string[] = []
28
- #projectRoot: string = ''
29
-
30
- #server: ViteDevServer
31
-
32
- #adapters: {[key: string]: AdapterHandler} = {}
33
- #adaptersByLoaderPath: {[loader: string]: AdapterHandler} = {}
34
- #adaptersByCatalogPath: {[path: string]: AdapterHandler} = {}
35
-
36
- #log: Logger
37
-
38
- #configPath: string
39
-
40
- constructor(configPath: string) {
41
- this.#configPath = configPath
42
- }
43
-
44
- #init = async (mode: Mode) => {
45
- this.#config = await getConfig(this.#configPath)
46
- this.#locales = [this.#config.sourceLocale, ...this.#config.otherLocales]
47
- this.#log = new Logger(this.#config.messages)
48
- if (Object.keys(this.#config.adapters).length === 0) {
49
- throw Error('At least one adapter is needed.')
50
- }
51
- for (const [key, adapter] of Object.entries(this.#config.adapters)) {
52
- const handler = new AdapterHandler(
53
- adapter,
54
- key,
55
- this.#config,
56
- mode,
57
- virtualPrefix,
58
- this.#projectRoot,
59
- this.#log,
60
- )
61
- await handler.init()
62
- this.#adapters[key] = handler
63
- this.#adaptersByLoaderPath[resolve(handler.loaderPath)] = handler
64
- for (const fname of Object.keys(handler.catalogPathsToLocales)) {
65
- this.#adaptersByCatalogPath[fname] = handler
66
- }
67
- }
68
- }
69
-
70
- configResolved = async (config: { env: { DEV?: boolean }, root: string }) => {
71
- let mode: Mode
72
- if (config.env.DEV) {
73
- mode = 'dev'
74
- } else {
75
- mode = 'prod'
76
- }
77
- this.#projectRoot = config.root
78
- await this.#init(mode)
79
- }
80
-
81
- configureServer = (server: ViteDevServer) => {
82
- this.#server = server
83
- // initial load
84
- for (const [key, adapter] of Object.entries(this.#adapters)) {
85
- for (const loc of this.#locales) {
86
- const event = adapter.virtModEvent(loc, null)
87
- server.ws.on(event, (payload, client) => {
88
- const eventSend = adapter.virtModEvent(loc, payload.loadID)
89
- if (!this.#config.adapters[key].granularLoad) {
90
- client.send(eventSend, adapter.compiled[loc].items)
91
- return
92
- }
93
- const compiled = adapter.granularStateByID[payload.loadID].compiled[loc]
94
- client.send(eventSend, compiled.items)
95
- })
96
- }
97
- }
98
- }
99
-
100
- #sendUpdateToClient = (adapter: AdapterHandler, locales: string[]) => {
101
- if (!this.#server) {
102
- // maybe not in dev mode
103
- return
104
- }
105
- for (const loc of locales) {
106
- if (!this.#config.adapters[adapter.key].granularLoad) {
107
- this.#server.ws.send(adapter.virtModEvent(loc, null), adapter.compiled[loc].items)
108
- return
109
- }
110
- for (const [loadID, state] of Object.entries(adapter.granularStateByID)) {
111
- const eventName = adapter.virtModEvent(loc, loadID)
112
- this.#server.ws.send(eventName, state.compiled[loc].items)
113
- }
114
- }
115
- }
116
-
117
- handleHotUpdate = async (ctx: {file: string}) => {
118
- if (!(ctx.file in this.#adaptersByCatalogPath)) {
119
- return
120
- }
121
- const adapter = this.#adaptersByCatalogPath[ctx.file]
122
- const loc = adapter.catalogPathsToLocales[ctx.file]
123
- await adapter.loadCatalogNCompile(loc)
124
- this.#sendUpdateToClient(adapter, [loc])
125
- }
126
-
127
- resolveId = (source: string, importer?: string) => {
128
- if (!source.startsWith(virtualPrefix)) {
129
- return null
130
- }
131
- return `${virtualResolvedPrefix}${source}?${importer}`
132
- }
133
-
134
- load = (id: string) => {
135
- const prefix = virtualResolvedPrefix + virtualPrefix
136
- if (!id.startsWith(prefix)) {
137
- return null
138
- }
139
- const [path, importer] = id.slice(prefix.length).split('?')
140
- const [part, ...rest] = path.split('/')
141
- if (part === 'catalog') {
142
- const [adapterKey, loadID, locale] = rest
143
- const adapter = this.#adapters[adapterKey]
144
- if (adapter == null) {
145
- this.#log.error(`Adapter not found for key: ${adapterKey}`)
146
- return null
147
- }
148
- return adapter.loadDataModule(locale, loadID)
149
- }
150
- if (part === 'locales') {
151
- return `export const locales = ['${this.#locales.join("', '")}']`
152
- }
153
- if (part !== 'proxy') {
154
- this.#log.error(`Unknown virtual request: ${id}`)
155
- return null
156
- }
157
- // loader proxy
158
- const adapter = this.#adaptersByLoaderPath[importer]
159
- if (adapter == null) {
160
- this.#log.error(`Adapter not found for filename: ${importer}`)
161
- return
162
- }
163
- if (rest[0] === 'sync') {
164
- return adapter.getProxySync()
165
- }
166
- return adapter.getProxy()
167
- }
168
-
169
- #transformHandler = async (code: string, id: string) => {
170
- if (!this.#config.hmr) {
171
- return {}
172
- }
173
- const filename = relative(this.#projectRoot, id)
174
- for (const adapter of Object.values(this.#adapters)) {
175
- if (adapter.fileMatches(filename)) {
176
- const {catalogChanged, ...output} = await adapter.transform(code, filename)
177
- if (catalogChanged) {
178
- this.#sendUpdateToClient(adapter, this.#locales)
179
- }
180
- return output
181
- }
182
- }
183
- return {}
184
- }
185
-
186
- transform = { order: <'pre'>'pre', handler: this.#transformHandler }
187
- }
188
-
189
- export const wuchale = (configPath?: string) => new Plugin(configPath)