@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.
- package/lib/documents/ast-document-manager.d.ts +42 -5
- package/lib/documents/ast-document-manager.d.ts.map +1 -1
- package/lib/documents/ast-document-manager.js +3 -7
- package/lib/documents/ast-document-manager.js.map +1 -1
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +29 -8
- package/lib/documents/hydranium-text-documents.js.map +1 -1
- package/lib/documents/language-client-text-shadow.d.ts +24 -1
- package/lib/documents/language-client-text-shadow.d.ts.map +1 -1
- package/lib/documents/language-client-text-shadow.js +36 -2
- package/lib/documents/language-client-text-shadow.js.map +1 -1
- package/lib/documents/self-save-registry.d.ts +37 -6
- package/lib/documents/self-save-registry.d.ts.map +1 -1
- package/lib/documents/self-save-registry.js +28 -15
- package/lib/documents/self-save-registry.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -1
- package/lib/langium/bootstrap.js +8 -8
- package/lib/langium/bootstrap.js.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.d.ts +13 -1
- package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.js +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
- package/lib/langium/document-builder/document-builder.d.ts +2 -2
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js.map +1 -1
- package/lib/langium/integration-services.d.ts +1 -1
- package/lib/langium/model-service/model-service.d.ts +64 -5
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +5 -73
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +58 -16
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +16 -16
- package/lib/langium/module.js.map +1 -1
- package/lib/langium/residency/cst-residency-service.d.ts +30 -8
- package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
- package/lib/langium/residency/cst-residency-service.js +13 -56
- package/lib/langium/residency/cst-residency-service.js.map +1 -1
- package/lib/langium/shared-services.d.ts +3 -3
- package/lib/langium/shared-services.d.ts.map +1 -1
- package/lib/langium/transfer/transfer-encoder.d.ts +29 -1
- package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
- package/lib/langium/transfer/transfer-encoder.js +1 -1
- package/lib/langium/transfer/transfer-encoder.js.map +1 -1
- package/lib/locale/server-locale.d.ts +15 -1
- package/lib/locale/server-locale.d.ts.map +1 -1
- package/lib/locale/server-locale.js +1 -1
- package/lib/locale/server-locale.js.map +1 -1
- package/lib/lsp/hydranium-document-update-handler.js +1 -1
- package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
- package/lib/messages/renderer.d.ts +23 -4
- package/lib/messages/renderer.d.ts.map +1 -1
- package/lib/messages/renderer.js +1 -1
- package/lib/messages/renderer.js.map +1 -1
- package/lib/testing/make-noop-shared-services.d.ts +4 -4
- package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
- package/lib/testing/make-noop-shared-services.js +4 -4
- package/lib/testing/make-noop-shared-services.js.map +1 -1
- package/lib/testing/make-test-services.d.ts +9 -9
- package/lib/testing/make-test-services.d.ts.map +1 -1
- package/lib/testing/make-test-services.js +6 -6
- package/lib/testing/make-test-services.js.map +1 -1
- package/lib/testing/stub-ast-document-manager.d.ts +3 -4
- package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
- package/lib/testing/stub-ast-document-manager.js +2 -5
- package/lib/testing/stub-ast-document-manager.js.map +1 -1
- package/lib/testing/stub-model-service.d.ts +1 -1
- package/lib/testing/stub-model-service.d.ts.map +1 -1
- package/lib/testing/stub-model-service.js +2 -2
- package/lib/testing/stub-model-service.js.map +1 -1
- package/package.json +5 -5
- package/src/documents/ast-document-manager.ts +49 -9
- package/src/documents/hydranium-text-documents.ts +29 -8
- package/src/documents/language-client-text-shadow.ts +38 -2
- package/src/documents/self-save-registry.ts +52 -13
- package/src/index.ts +4 -0
- package/src/langium/bootstrap.ts +8 -8
- package/src/langium/document-builder/build-pipeline-integration.ts +14 -1
- package/src/langium/document-builder/document-builder.ts +2 -2
- package/src/langium/integration-services.ts +1 -1
- package/src/langium/model-service/model-service.ts +78 -7
- package/src/langium/module.ts +71 -24
- package/src/langium/residency/cst-residency-service.ts +35 -11
- package/src/langium/shared-services.ts +3 -3
- package/src/langium/transfer/transfer-encoder.ts +32 -1
- package/src/locale/server-locale.ts +16 -1
- package/src/lsp/hydranium-document-update-handler.ts +1 -1
- package/src/messages/renderer.ts +24 -4
- package/src/testing/make-noop-shared-services.ts +6 -6
- package/src/testing/make-test-services.ts +15 -15
- package/src/testing/stub-ast-document-manager.ts +5 -10
- 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 {
|
|
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<
|
|
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:
|
|
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>) =>
|
|
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<
|
|
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<
|
|
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:
|
|
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
|
|
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:
|
|
350
|
-
const serverLocale = new
|
|
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
|
|
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
|
|
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<
|
|
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
|
-
* (`
|
|
31
|
-
*
|
|
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
|
-
| '
|
|
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
|
-
|
|
218
|
-
return notSupported('
|
|
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
|
|
26
|
+
> extends DefaultModelService<TAst, TDiagnostic, TTransfer> {
|
|
27
27
|
constructor(
|
|
28
28
|
services: ServerSharedServices,
|
|
29
29
|
protected readonly serializeFn: (uri: string, root: TTransfer) => string,
|