@hydranium/core 1.0.0-next.36 → 1.0.0-next.38

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.
Files changed (95) hide show
  1. package/lib/documents/ast-document-manager.d.ts +42 -5
  2. package/lib/documents/ast-document-manager.d.ts.map +1 -1
  3. package/lib/documents/ast-document-manager.js +3 -7
  4. package/lib/documents/ast-document-manager.js.map +1 -1
  5. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  6. package/lib/documents/hydranium-text-documents.js +29 -8
  7. package/lib/documents/hydranium-text-documents.js.map +1 -1
  8. package/lib/documents/language-client-text-shadow.d.ts +24 -1
  9. package/lib/documents/language-client-text-shadow.d.ts.map +1 -1
  10. package/lib/documents/language-client-text-shadow.js +36 -2
  11. package/lib/documents/language-client-text-shadow.js.map +1 -1
  12. package/lib/documents/self-save-registry.d.ts +37 -6
  13. package/lib/documents/self-save-registry.d.ts.map +1 -1
  14. package/lib/documents/self-save-registry.js +28 -15
  15. package/lib/documents/self-save-registry.js.map +1 -1
  16. package/lib/index.d.ts +1 -0
  17. package/lib/index.d.ts.map +1 -1
  18. package/lib/index.js +4 -0
  19. package/lib/index.js.map +1 -1
  20. package/lib/langium/bootstrap.js +8 -8
  21. package/lib/langium/bootstrap.js.map +1 -1
  22. package/lib/langium/document-builder/build-pipeline-integration.d.ts +13 -1
  23. package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
  24. package/lib/langium/document-builder/build-pipeline-integration.js +1 -1
  25. package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
  26. package/lib/langium/document-builder/document-builder.d.ts +2 -2
  27. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  28. package/lib/langium/document-builder/document-builder.js.map +1 -1
  29. package/lib/langium/integration-services.d.ts +1 -1
  30. package/lib/langium/model-service/model-service.d.ts +64 -5
  31. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  32. package/lib/langium/model-service/model-service.js +5 -73
  33. package/lib/langium/model-service/model-service.js.map +1 -1
  34. package/lib/langium/module.d.ts +58 -16
  35. package/lib/langium/module.d.ts.map +1 -1
  36. package/lib/langium/module.js +16 -16
  37. package/lib/langium/module.js.map +1 -1
  38. package/lib/langium/residency/cst-residency-service.d.ts +30 -8
  39. package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
  40. package/lib/langium/residency/cst-residency-service.js +13 -56
  41. package/lib/langium/residency/cst-residency-service.js.map +1 -1
  42. package/lib/langium/shared-services.d.ts +3 -3
  43. package/lib/langium/shared-services.d.ts.map +1 -1
  44. package/lib/langium/transfer/transfer-encoder.d.ts +29 -1
  45. package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
  46. package/lib/langium/transfer/transfer-encoder.js +1 -1
  47. package/lib/langium/transfer/transfer-encoder.js.map +1 -1
  48. package/lib/locale/server-locale.d.ts +15 -1
  49. package/lib/locale/server-locale.d.ts.map +1 -1
  50. package/lib/locale/server-locale.js +1 -1
  51. package/lib/locale/server-locale.js.map +1 -1
  52. package/lib/lsp/hydranium-document-update-handler.js +1 -1
  53. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  54. package/lib/messages/renderer.d.ts +23 -4
  55. package/lib/messages/renderer.d.ts.map +1 -1
  56. package/lib/messages/renderer.js +1 -1
  57. package/lib/messages/renderer.js.map +1 -1
  58. package/lib/testing/make-noop-shared-services.d.ts +4 -4
  59. package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
  60. package/lib/testing/make-noop-shared-services.js +4 -4
  61. package/lib/testing/make-noop-shared-services.js.map +1 -1
  62. package/lib/testing/make-test-services.d.ts +9 -9
  63. package/lib/testing/make-test-services.d.ts.map +1 -1
  64. package/lib/testing/make-test-services.js +6 -6
  65. package/lib/testing/make-test-services.js.map +1 -1
  66. package/lib/testing/stub-ast-document-manager.d.ts +3 -4
  67. package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
  68. package/lib/testing/stub-ast-document-manager.js +2 -5
  69. package/lib/testing/stub-ast-document-manager.js.map +1 -1
  70. package/lib/testing/stub-model-service.d.ts +1 -1
  71. package/lib/testing/stub-model-service.d.ts.map +1 -1
  72. package/lib/testing/stub-model-service.js +2 -2
  73. package/lib/testing/stub-model-service.js.map +1 -1
  74. package/package.json +5 -5
  75. package/src/documents/ast-document-manager.ts +49 -9
  76. package/src/documents/hydranium-text-documents.ts +29 -8
  77. package/src/documents/language-client-text-shadow.ts +38 -2
  78. package/src/documents/self-save-registry.ts +52 -13
  79. package/src/index.ts +4 -0
  80. package/src/langium/bootstrap.ts +8 -8
  81. package/src/langium/document-builder/build-pipeline-integration.ts +14 -1
  82. package/src/langium/document-builder/document-builder.ts +2 -2
  83. package/src/langium/integration-services.ts +1 -1
  84. package/src/langium/model-service/model-service.ts +78 -7
  85. package/src/langium/module.ts +71 -24
  86. package/src/langium/residency/cst-residency-service.ts +35 -11
  87. package/src/langium/shared-services.ts +3 -3
  88. package/src/langium/transfer/transfer-encoder.ts +32 -1
  89. package/src/locale/server-locale.ts +16 -1
  90. package/src/lsp/hydranium-document-update-handler.ts +1 -1
  91. package/src/messages/renderer.ts +24 -4
  92. package/src/testing/make-noop-shared-services.ts +6 -6
  93. package/src/testing/make-test-services.ts +15 -15
  94. package/src/testing/stub-ast-document-manager.ts +5 -10
  95. package/src/testing/stub-model-service.ts +2 -2
@@ -18,13 +18,13 @@ import {
18
18
  type TransferDiagnostic,
19
19
  type TransferElement
20
20
  } from '@hydranium/protocol';
21
- import { ServerLocale } from '../locale/server-locale.js';
22
- import { ServerMessageRenderer } from '../messages/renderer.js';
21
+ import { DefaultServerLocale, type ServerLocale } from '../locale/server-locale.js';
22
+ import { DefaultMessageRenderer, type MessageRenderer } from '../messages/renderer.js';
23
23
  import type { Harness } from '@hydranium/protocol/testing';
24
24
  import { type AstNode, type AstNodeDescription, type WorkspaceLock } from '@hydranium/langium';
25
25
  import type { ModelService, ModelServiceOptions } from '../langium/model-service/model-service.js';
26
26
  import type { ServerSharedServices } from '../langium/module.js';
27
- import { TransferEncoder } from '../langium/transfer/transfer-encoder.js';
27
+ import { DefaultTransferEncoder, type TransferEncoder } from '../langium/transfer/transfer-encoder.js';
28
28
  import { DefaultDocumentUriPolicy, type DocumentUriPolicy } from '../langium/workspace/document-uri-policy.js';
29
29
  import { HydraniumWorkspaceLock } from '../langium/workspace/hydranium-workspace-lock.js';
30
30
  import type { FakeDocumentOptions } from './fake-document.js';
@@ -92,7 +92,7 @@ export interface TestSharedServices<
92
92
  WorkspaceLock: WorkspaceLock;
93
93
  };
94
94
  readonly model: {
95
- TransferEncoder: TransferEncoder<unknown, TDiagnostic>;
95
+ TransferEncoder: TransferEncoder<TDiagnostic>;
96
96
  ModelService: ModelService<TAst, TDiagnostic, TTransfer>;
97
97
  };
98
98
  /**
@@ -103,7 +103,7 @@ export interface TestSharedServices<
103
103
  * `Validated` phase, where an omitted slot is a `TypeError`.
104
104
  */
105
105
  readonly ServerLocale: ServerLocale;
106
- readonly MessageRenderer: ServerMessageRenderer;
106
+ readonly MessageRenderer: MessageRenderer;
107
107
  }
108
108
 
109
109
  /** Optional configuration for {@link makeTestServices}. */
@@ -128,7 +128,7 @@ export interface MakeTestServicesOptions<
128
128
  * passes every sentence through unchanged. Supply one to install a catalogue
129
129
  * or to drive the throwing path.
130
130
  */
131
- messageRenderer?: (services: ServerSharedServices<TProject>) => ServerMessageRenderer;
131
+ messageRenderer?: (services: ServerSharedServices<TProject>) => MessageRenderer;
132
132
  /** Locale handed to the bundle's {@link ServerLocale}. Default: none, i.e. the framework's English. */
133
133
  locale?: string;
134
134
  /**
@@ -206,7 +206,7 @@ export interface MakeTestServicesOptions<
206
206
  * Override the {@link TransferEncoder} factory. Default: framework
207
207
  * {@link TransferEncoder} with no overrides.
208
208
  */
209
- transferEncoder?: (services: ServerSharedServices<TProject>) => TransferEncoder<unknown, TDiagnostic>;
209
+ transferEncoder?: (services: ServerSharedServices<TProject>) => TransferEncoder<TDiagnostic>;
210
210
  }
211
211
 
212
212
  /**
@@ -248,7 +248,7 @@ export interface TestServicesBundle<
248
248
  */
249
249
  readonly indexManager: StubIndexManager | undefined;
250
250
  readonly modelService: ModelService<TAst, TDiagnostic, TTransfer>;
251
- readonly transferEncoder: TransferEncoder<unknown, TDiagnostic>;
251
+ readonly transferEncoder: TransferEncoder<TDiagnostic>;
252
252
  readonly logger: Logger;
253
253
  /** The clock bound on the `Clock` slot — a `makeFakeClock()` if one was passed. */
254
254
  readonly clock: Clock;
@@ -259,7 +259,7 @@ export interface TestServicesBundle<
259
259
  */
260
260
  readonly serverLocale: ServerLocale;
261
261
  /** The renderer bound on `MessageRenderer` — the framework's own unless one was supplied. */
262
- readonly messageRenderer: ServerMessageRenderer;
262
+ readonly messageRenderer: MessageRenderer;
263
263
  }
264
264
 
265
265
  /**
@@ -340,31 +340,31 @@ export function makeTestServices<
340
340
  },
341
341
  model: {} as TestSharedServices<TAst, TDiagnostic, TTransfer, TProject>['model'],
342
342
  ServerLocale: {} as ServerLocale,
343
- MessageRenderer: {} as ServerMessageRenderer
343
+ MessageRenderer: {} as DefaultMessageRenderer
344
344
  };
345
345
  const sharedServices = services as unknown as ServerSharedServices<TProject>;
346
346
 
347
347
  // Patched in after the literal, like `model` below: both read the tree they
348
348
  // belong to, and the renderer reads the locale service.
349
- const mutableMessages = services as { ServerLocale: ServerLocale; MessageRenderer: ServerMessageRenderer };
350
- const serverLocale = new ServerLocale(sharedServices);
349
+ const mutableMessages = services as { ServerLocale: ServerLocale; MessageRenderer: MessageRenderer };
350
+ const serverLocale = new DefaultServerLocale(sharedServices);
351
351
  if (options.locale) {
352
352
  serverLocale.accept(options.locale);
353
353
  }
354
354
  mutableMessages.ServerLocale = serverLocale;
355
- const messageRenderer = options.messageRenderer?.(sharedServices) ?? new ServerMessageRenderer(sharedServices);
355
+ const messageRenderer = options.messageRenderer?.(sharedServices) ?? new DefaultMessageRenderer(sharedServices);
356
356
  mutableMessages.MessageRenderer = messageRenderer;
357
357
 
358
358
  const serialize = options.serialize ?? ((_uri: string, root: TTransfer) => JSON.stringify(root));
359
359
  const transferEncoder = options.transferEncoder
360
360
  ? options.transferEncoder(sharedServices)
361
- : new TransferEncoder<unknown, TDiagnostic>(sharedServices);
361
+ : new DefaultTransferEncoder<unknown, TDiagnostic>(sharedServices);
362
362
  const modelService = options.modelService
363
363
  ? options.modelService(sharedServices)
364
364
  : makeStubModelService<TAst, TDiagnostic, TTransfer>(sharedServices, serialize, options.modelServiceOptions);
365
365
 
366
366
  const mutableModel = services.model as {
367
- TransferEncoder: TransferEncoder<unknown, TDiagnostic>;
367
+ TransferEncoder: TransferEncoder<TDiagnostic>;
368
368
  ModelService: ModelService<TAst, TDiagnostic, TTransfer>;
369
369
  };
370
370
  mutableModel.TransferEncoder = transferEncoder;
@@ -27,9 +27,8 @@ import type { StubLangiumDocuments } from './stub-langium-documents.js';
27
27
  * underlying stub text-document manager, `onUpdate` is driven explicitly
28
28
  * through {@link StubAstDocumentManager.emitUpdate} because the stub tree runs
29
29
  * no build phases to emit from, and the remaining read helpers
30
- * (`isDirectChange`, `getAuthor`, `readFile`) throw if invoked — tests that
31
- * need them should wire a richer stub or use the real
32
- * {@link AstDocumentManager}.
30
+ * (`isTriggeringEdit`, `getAuthor`) throw if invoked — tests that need them
31
+ * should wire a richer stub or use the real {@link AstDocumentManager}.
33
32
  *
34
33
  * Open state is tracked per URI as the set of holding client ids, so a
35
34
  * document stays open until its last client closes. The stub forwards
@@ -57,8 +56,7 @@ export interface StubAstDocumentManager<TAst extends AstNode, TDiagnostic = unkn
57
56
  | 'onClientClosed'
58
57
  | 'getAuthor'
59
58
  | 'getDocument'
60
- | 'isDirectChange'
61
- | 'readFile'
59
+ | 'isTriggeringEdit'
62
60
  > {
63
61
  readonly openClients: Map<string, Set<string>>;
64
62
 
@@ -214,11 +212,8 @@ export function makeStubAstDocumentManager<TAst extends AstNode, TDiagnostic = u
214
212
  getDocument(uri: string): LangiumDocument | undefined {
215
213
  return documents?.getDocument(UriUtils.toUri(uri));
216
214
  },
217
- isDirectChange(): boolean {
218
- return notSupported('isDirectChange');
219
- },
220
- async readFile(uri: string): Promise<string> {
221
- return notSupported(`readFile(${uri})`);
215
+ isTriggeringEdit(): boolean {
216
+ return notSupported('isTriggeringEdit');
222
217
  }
223
218
  };
224
219
  }
@@ -9,7 +9,7 @@
9
9
 
10
10
  import type { TransferDiagnostic, TransferElement } from '@hydranium/protocol';
11
11
  import type { AstNode } from '@hydranium/langium';
12
- import { ModelService, type ModelServiceOptions } from '../langium/model-service/model-service.js';
12
+ import { DefaultModelService, type ModelService, type ModelServiceOptions } from '../langium/model-service/model-service.js';
13
13
  import type { ServerSharedServices } from '../langium/module.js';
14
14
 
15
15
  /**
@@ -23,7 +23,7 @@ class StubModelServiceImpl<
23
23
  TAst extends AstNode,
24
24
  TDiagnostic extends TransferDiagnostic = TransferDiagnostic,
25
25
  TTransfer extends TransferElement = TransferElement
26
- > extends ModelService<TAst, TDiagnostic, TTransfer> {
26
+ > extends DefaultModelService<TAst, TDiagnostic, TTransfer> {
27
27
  constructor(
28
28
  services: ServerSharedServices,
29
29
  protected readonly serializeFn: (uri: string, root: TTransfer) => string,