@inlang/sdk 0.35.7 → 0.35.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"createMessagesQuery.d.ts","sourceRoot":"","sources":["../src/createMessagesQuery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAyC,MAAM,UAAU,CAAA;AAEpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAEzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAInD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAwB/D,KAAK,6BAA6B,GAAG;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,iBAAiB,CAAA;IAC5B,QAAQ,EAAE,MAAM,eAAe,GAAG,SAAS,CAAA;IAC3C,eAAe,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,GAAG,SAAS,CAAA;IAC7E,0BAA0B,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;IAC/C,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;IACxC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;CACxC,CAAA;AACD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EACnC,WAAW,EACX,SAAS,EACT,QAAQ,EACR,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,GACnB,EAAE,6BAA6B,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAmNpE"}
1
+ {"version":3,"file":"createMessagesQuery.d.ts","sourceRoot":"","sources":["../src/createMessagesQuery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAyC,MAAM,UAAU,CAAA;AAEpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAEzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAInD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAwB/D,KAAK,6BAA6B,GAAG;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,iBAAiB,CAAA;IAC5B,QAAQ,EAAE,MAAM,eAAe,GAAG,SAAS,CAAA;IAC3C,eAAe,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,GAAG,SAAS,CAAA;IAC7E,0BAA0B,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;IAC/C,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;IACxC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;CACxC,CAAA;AACD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EACnC,WAAW,EACX,SAAS,EACT,QAAQ,EACR,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,GACnB,EAAE,6BAA6B,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CA0NpE"}
@@ -60,7 +60,7 @@ export function createMessagesQuery({ projectPath, nodeishFs, settings, resolved
60
60
  // - the plugin loads messages -> reads the file messages.json -> start watching on messages.json -> updateMessages
61
61
  updateMessages: () => {
62
62
  // reload
63
- loadMessagesViaPlugin(fsWithWatcher, messageLockDirPath, messageStates, index, delegate, _settings, // NOTE we bang here - we don't expect the settings to become null during the livetime of a project
63
+ loadMessagesViaPlugin(fsWithWatcher, messageLockDirPath, messageStates, index, defaultAliasIndex, delegate, _settings, // NOTE we bang here - we don't expect the settings to become null during the livetime of a project
64
64
  resolvedPluginApi)
65
65
  .catch((e) => {
66
66
  onLoadMessageResult(e);
@@ -80,7 +80,7 @@ export function createMessagesQuery({ projectPath, nodeishFs, settings, resolved
80
80
  onInitialMessageLoadResult(new Error("no loadMessages in resolved Modules found"));
81
81
  return;
82
82
  }
83
- loadMessagesViaPlugin(fsWithWatcher, messageLockDirPath, messageStates, index, undefined /* delegate - we don't pass it here since we will call onLoaded instead */, _settings, // NOTE we bang here - we don't expect the settings to become null during the livetime of a project
83
+ loadMessagesViaPlugin(fsWithWatcher, messageLockDirPath, messageStates, index, defaultAliasIndex, undefined /* delegate - we don't pass it here since we will call onLoaded instead */, _settings, // NOTE we bang here - we don't expect the settings to become null during the livetime of a project
84
84
  resolvedPluginApi)
85
85
  .catch((e) => {
86
86
  // propagate initial load error to calling laodProject function
@@ -103,7 +103,7 @@ export function createMessagesQuery({ projectPath, nodeishFs, settings, resolved
103
103
  const resolvedPluginApi = resolvedModules()?.resolvedPluginApi;
104
104
  if (!resolvedPluginApi)
105
105
  return;
106
- saveMessagesViaPlugin(nodeishFs, messageLockDirPath, messageStates, index, delegate, _settings, // NOTE we bang here - we don't expect the settings to become null during the livetime of a project
106
+ saveMessagesViaPlugin(nodeishFs, messageLockDirPath, messageStates, index, defaultAliasIndex, delegate, _settings, // NOTE we bang here - we don't expect the settings to become null during the livetime of a project
107
107
  resolvedPluginApi)
108
108
  .catch((e) => {
109
109
  debug.log("error during saveMessagesViaPlugin");
@@ -147,6 +147,9 @@ export function createMessagesQuery({ projectPath, nodeishFs, settings, resolved
147
147
  if (message === undefined)
148
148
  return false;
149
149
  index.set(where.id, { ...message, ...data });
150
+ if (data.alias && "default" in data.alias) {
151
+ defaultAliasIndex.set(data.alias.default, data);
152
+ }
150
153
  messageStates.messageDirtyFlags[where.id] = true;
151
154
  delegate?.onMessageUpdate(where.id, index.get(data.id), [...index.values()]);
152
155
  scheduleSave();
@@ -164,6 +167,7 @@ export function createMessagesQuery({ projectPath, nodeishFs, settings, resolved
164
167
  }
165
168
  else {
166
169
  index.set(where.id, { ...message, ...data });
170
+ defaultAliasIndex.set(data.alias.default, { ...message, ...data });
167
171
  messageStates.messageDirtyFlags[where.id] = true;
168
172
  delegate?.onMessageUpdate(data.id, index.get(data.id), [...index.values()]);
169
173
  }
@@ -204,7 +208,7 @@ export function createMessagesQuery({ projectPath, nodeishFs, settings, resolved
204
208
  * @param loadPlugin
205
209
  * @returns void - updates the files and messages in of the project in place
206
210
  */
207
- async function loadMessagesViaPlugin(fs, lockDirPath, messageState, messages, delegate, settingsValue, resolvedPluginApi) {
211
+ async function loadMessagesViaPlugin(fs, lockDirPath, messageState, messages, aliaseToMessageMap, delegate, settingsValue, resolvedPluginApi) {
208
212
  const experimentalAliases = !!settingsValue.experimental?.aliases;
209
213
  // loading is an asynchronous process - check if another load is in progress - queue this call if so
210
214
  if (messageState.isLoading) {
@@ -258,6 +262,9 @@ async function loadMessagesViaPlugin(fs, lockDirPath, messageState, messages, de
258
262
  // update is synchronous, so update effect will be triggered immediately
259
263
  // NOTE: this might trigger a save before we have the chance to delete - but since save is async and waits for the lock acquired by this method - its save to set the flags afterwards
260
264
  messages.set(loadedMessageClone.id, loadedMessageClone);
265
+ if (loadedMessageClone.alias["default"]) {
266
+ aliaseToMessageMap.set(loadedMessageClone.alias["default"], loadedMessageClone);
267
+ }
261
268
  // NOTE could use hash instead of the whole object JSON to save memory...
262
269
  messageState.messageLoadHash[loadedMessageClone.id] = importedEnecoded;
263
270
  delegate?.onMessageUpdate(loadedMessageClone.id, loadedMessageClone, [
@@ -281,6 +288,7 @@ async function loadMessagesViaPlugin(fs, lockDirPath, messageState, messages, de
281
288
  } while (messsageId === undefined);
282
289
  // create a humanId based on a hash of the alias
283
290
  loadedMessageClone.id = messsageId;
291
+ aliaseToMessageMap.set(loadedMessageClone.alias["default"], loadedMessageClone);
284
292
  }
285
293
  const importedEnecoded = stringifyMessage(loadedMessageClone);
286
294
  // we don't have to check - done before hand if (messages.has(loadedMessageClone.id)) return false
@@ -313,7 +321,7 @@ async function loadMessagesViaPlugin(fs, lockDirPath, messageState, messages, de
313
321
  // reset sheduling to except scheduling again
314
322
  messageState.sheduledLoadMessagesViaPlugin = undefined;
315
323
  // recall load unawaited to allow stack to pop
316
- loadMessagesViaPlugin(fs, lockDirPath, messageState, messages, delegate, settingsValue, resolvedPluginApi)
324
+ loadMessagesViaPlugin(fs, lockDirPath, messageState, messages, aliaseToMessageMap, delegate, settingsValue, resolvedPluginApi)
317
325
  .then(() => {
318
326
  // resolve the scheduled load message promise
319
327
  executingScheduledMessages.resolve();
@@ -324,7 +332,7 @@ async function loadMessagesViaPlugin(fs, lockDirPath, messageState, messages, de
324
332
  });
325
333
  }
326
334
  }
327
- async function saveMessagesViaPlugin(fs, lockDirPath, messageState, messages, delegate, settingsValue, resolvedPluginApi) {
335
+ async function saveMessagesViaPlugin(fs, lockDirPath, messageState, messages, aliaseToMessageMap, delegate, settingsValue, resolvedPluginApi) {
328
336
  // queue next save if we have a save ongoing
329
337
  if (messageState.isSaving) {
330
338
  if (!messageState.sheduledSaveMessages) {
@@ -388,7 +396,7 @@ async function saveMessagesViaPlugin(fs, lockDirPath, messageState, messages, de
388
396
  // if there is a queued load, allow it to take the lock before we run additional saves.
389
397
  if (messageState.sheduledLoadMessagesViaPlugin) {
390
398
  debug("saveMessagesViaPlugin calling queued loadMessagesViaPlugin to share lock");
391
- await loadMessagesViaPlugin(fs, lockDirPath, messageState, messages, delegate, settingsValue, resolvedPluginApi);
399
+ await loadMessagesViaPlugin(fs, lockDirPath, messageState, messages, aliaseToMessageMap, delegate, settingsValue, resolvedPluginApi);
392
400
  }
393
401
  messageState.isSaving = false;
394
402
  }
@@ -421,7 +429,7 @@ async function saveMessagesViaPlugin(fs, lockDirPath, messageState, messages, de
421
429
  if (messageState.sheduledSaveMessages) {
422
430
  const executingSheduledSaveMessages = messageState.sheduledSaveMessages;
423
431
  messageState.sheduledSaveMessages = undefined;
424
- saveMessagesViaPlugin(fs, lockDirPath, messageState, messages, delegate, settingsValue, resolvedPluginApi)
432
+ saveMessagesViaPlugin(fs, lockDirPath, messageState, messages, aliaseToMessageMap, delegate, settingsValue, resolvedPluginApi)
425
433
  .then(() => {
426
434
  executingSheduledSaveMessages.resolve();
427
435
  })
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@inlang/sdk",
3
3
  "type": "module",
4
- "version": "0.35.7",
4
+ "version": "0.35.8",
5
5
  "license": "Apache-2.0",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -35,16 +35,16 @@
35
35
  "solid-js": "1.6.12",
36
36
  "throttle-debounce": "^5.0.0",
37
37
  "@inlang/language-tag": "1.5.1",
38
- "@inlang/json-types": "1.1.0",
39
38
  "@inlang/message": "2.1.0",
40
39
  "@inlang/module": "1.2.13",
40
+ "@inlang/message-lint-rule": "1.4.7",
41
+ "@inlang/json-types": "1.1.0",
41
42
  "@inlang/plugin": "2.4.13",
42
43
  "@inlang/project-settings": "2.4.2",
43
44
  "@inlang/result": "1.1.0",
44
- "@inlang/translatable": "1.3.1",
45
- "@inlang/message-lint-rule": "1.4.7",
46
45
  "@lix-js/client": "2.2.0",
47
- "@lix-js/fs": "2.1.0"
46
+ "@lix-js/fs": "2.1.0",
47
+ "@inlang/translatable": "1.3.1"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@types/debug": "^4.1.12",
@@ -114,6 +114,7 @@ export function createMessagesQuery({
114
114
  messageLockDirPath,
115
115
  messageStates,
116
116
  index,
117
+ defaultAliasIndex,
117
118
  delegate,
118
119
  _settings, // NOTE we bang here - we don't expect the settings to become null during the livetime of a project
119
120
  resolvedPluginApi
@@ -143,6 +144,7 @@ export function createMessagesQuery({
143
144
  messageLockDirPath,
144
145
  messageStates,
145
146
  index,
147
+ defaultAliasIndex,
146
148
  undefined /* delegate - we don't pass it here since we will call onLoaded instead */,
147
149
  _settings, // NOTE we bang here - we don't expect the settings to become null during the livetime of a project
148
150
  resolvedPluginApi
@@ -178,6 +180,7 @@ export function createMessagesQuery({
178
180
  messageLockDirPath,
179
181
  messageStates,
180
182
  index,
183
+ defaultAliasIndex,
181
184
  delegate,
182
185
  _settings, // NOTE we bang here - we don't expect the settings to become null during the livetime of a project
183
186
  resolvedPluginApi
@@ -230,6 +233,9 @@ export function createMessagesQuery({
230
233
  const message = index.get(where.id)
231
234
  if (message === undefined) return false
232
235
  index.set(where.id, { ...message, ...data })
236
+ if (data.alias && "default" in data.alias) {
237
+ defaultAliasIndex.set(data.alias.default, data)
238
+ }
233
239
  messageStates.messageDirtyFlags[where.id] = true
234
240
  delegate?.onMessageUpdate(where.id, index.get(data.id), [...index.values()])
235
241
  scheduleSave()
@@ -246,6 +252,7 @@ export function createMessagesQuery({
246
252
  delegate?.onMessageCreate(data.id, index.get(data.id), [...index.values()])
247
253
  } else {
248
254
  index.set(where.id, { ...message, ...data })
255
+ defaultAliasIndex.set(data.alias.default, { ...message, ...data })
249
256
  messageStates.messageDirtyFlags[where.id] = true
250
257
  delegate?.onMessageUpdate(data.id, index.get(data.id), [...index.values()])
251
258
  }
@@ -292,6 +299,7 @@ async function loadMessagesViaPlugin(
292
299
  lockDirPath: string,
293
300
  messageState: MessageState,
294
301
  messages: Map<string, Message>,
302
+ aliaseToMessageMap: Map<string, Message>,
295
303
  delegate: MessageQueryDelegate | undefined,
296
304
  settingsValue: ProjectSettings,
297
305
  resolvedPluginApi: ResolvedPluginApi
@@ -363,6 +371,9 @@ async function loadMessagesViaPlugin(
363
371
  // update is synchronous, so update effect will be triggered immediately
364
372
  // NOTE: this might trigger a save before we have the chance to delete - but since save is async and waits for the lock acquired by this method - its save to set the flags afterwards
365
373
  messages.set(loadedMessageClone.id, loadedMessageClone)
374
+ if (loadedMessageClone.alias["default"]) {
375
+ aliaseToMessageMap.set(loadedMessageClone.alias["default"], loadedMessageClone)
376
+ }
366
377
  // NOTE could use hash instead of the whole object JSON to save memory...
367
378
  messageState.messageLoadHash[loadedMessageClone.id] = importedEnecoded
368
379
  delegate?.onMessageUpdate(loadedMessageClone.id, loadedMessageClone, [
@@ -387,12 +398,14 @@ async function loadMessagesViaPlugin(
387
398
 
388
399
  // create a humanId based on a hash of the alias
389
400
  loadedMessageClone.id = messsageId
401
+ aliaseToMessageMap.set(loadedMessageClone.alias["default"], loadedMessageClone)
390
402
  }
391
403
 
392
404
  const importedEnecoded = stringifyMessage(loadedMessageClone)
393
405
 
394
406
  // we don't have to check - done before hand if (messages.has(loadedMessageClone.id)) return false
395
407
  messages.set(loadedMessageClone.id, loadedMessageClone)
408
+
396
409
  messageState.messageLoadHash[loadedMessageClone.id] = importedEnecoded
397
410
  delegate?.onMessageUpdate(loadedMessageClone.id, loadedMessageClone, [
398
411
  ...messages.values(),
@@ -431,6 +444,7 @@ async function loadMessagesViaPlugin(
431
444
  lockDirPath,
432
445
  messageState,
433
446
  messages,
447
+ aliaseToMessageMap,
434
448
  delegate,
435
449
  settingsValue,
436
450
  resolvedPluginApi
@@ -451,6 +465,7 @@ async function saveMessagesViaPlugin(
451
465
  lockDirPath: string,
452
466
  messageState: MessageState,
453
467
  messages: Map<string, Message>,
468
+ aliaseToMessageMap: Map<string, Message>,
454
469
  delegate: MessageQueryDelegate | undefined,
455
470
  settingsValue: ProjectSettings,
456
471
  resolvedPluginApi: ResolvedPluginApi
@@ -538,6 +553,7 @@ async function saveMessagesViaPlugin(
538
553
  lockDirPath,
539
554
  messageState,
540
555
  messages,
556
+ aliaseToMessageMap,
541
557
  delegate,
542
558
  settingsValue,
543
559
  resolvedPluginApi
@@ -583,6 +599,7 @@ async function saveMessagesViaPlugin(
583
599
  lockDirPath,
584
600
  messageState,
585
601
  messages,
602
+ aliaseToMessageMap,
586
603
  delegate,
587
604
  settingsValue,
588
605
  resolvedPluginApi