@hydranium/conformance 1.0.0-next.272 → 1.0.0-next.273

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.
@@ -7,7 +7,7 @@
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
9
  import { type TransferDiagnostic, type TransferElement } from '@hydranium/protocol';
10
- import type { DataServerProtocol, ReferenceServerProtocol, TransferDocumentsBuiltEvent, TransferDocumentUpdatedEvent } from '@hydranium/protocol/data';
10
+ import type { DataServerProtocol, ReferenceServerProtocol, TransferDocumentDeletedEvent, TransferDocumentsBuiltEvent, TransferDocumentUpdatedEvent } from '@hydranium/protocol/data';
11
11
  import { type Harness } from '@hydranium/protocol/testing';
12
12
  import type { ConformanceCheck } from '../conformance-suite.js';
13
13
  import { type LanguageFixture } from '../model.js';
@@ -16,8 +16,8 @@ import { type LanguageFixture } from '../model.js';
16
16
  * through its protocol-native proxy plus the captured client-side
17
17
  * notifications. The kit names only `@hydranium/protocol` types, so a
18
18
  * `DataServerHarness` satisfies the port structurally (it has `proxy` +
19
- * `events`, `builds` and `dispose`) with NO adapter. `extends Harness` gives the kit the
20
- * universal `dispose()` teardown.
19
+ * `events`, `builds`, `deletions` and `dispose`) with NO adapter.
20
+ * `extends Harness` gives the kit the universal `dispose()` teardown.
21
21
  *
22
22
  * The kit seeds documents purely through the proxy, as client sessions: it
23
23
  * registers one with `createSession`, opens the document, or creates it with
@@ -32,6 +32,8 @@ export interface DataConformanceDriver<TTransfer extends TransferElement, TDiagn
32
32
  readonly events: ReadonlyArray<TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>>;
33
33
  /** Captured `onDocumentsBuilt` events, append order — the cascade check's observation target. */
34
34
  readonly builds: ReadonlyArray<TransferDocumentsBuiltEvent>;
35
+ /** Captured `onDocumentDeleted` events, append order. */
36
+ readonly deletions: ReadonlyArray<TransferDocumentDeletedEvent>;
35
37
  /**
36
38
  * The opt-in reference surface, when the head serves it.
37
39
  *
@@ -50,9 +52,8 @@ export interface DataConformanceOptions<TTransfer extends TransferElement, TDiag
50
52
  * adopter must initialise the workspace before returning, so `waitForReady`
51
53
  * resolves rather than hanging.
52
54
  *
53
- * Some checks save documents beside each fixture's `valid`, and nothing in
54
- * the protocol deletes a file, so give each check a workspace the kit may
55
- * write to and throw away.
55
+ * Some checks save and delete documents beside each fixture's `valid`, so
56
+ * give each check a workspace the kit may write to and throw away.
56
57
  */
57
58
  readonly connect: () => DataConformanceDriver<TTransfer, TDiagnostic> | Promise<DataConformanceDriver<TTransfer, TDiagnostic>>;
58
59
  /** Per-language fixtures; the grammar-bearing checks run once per language. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAWlF,OAAO,EAYJ,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAEtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACT,kBAAkB,EAClB,uBAAuB,EACvB,2BAA2B,EAC3B,4BAA4B,EAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,OAAO,EAAW,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,KAAK,eAAe,EAAiC,MAAM,aAAa,CAAC;AAElF;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,qBAAqB,CACnC,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,CAC5D,SAAQ,OAAO;IACd,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC3D,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IACrF,iGAAiG;IACjG,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;IAC5D;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,uBAAuB,CAAC;CAChD;AAED,wCAAwC;AACxC,MAAM,WAAW,sBAAsB,CAAC,SAAS,SAAS,eAAe,EAAE,WAAW,SAAS,kBAAkB,GAAG,kBAAkB;IACnI;;;;;;;;;OASG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/H,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IACnD;;;;;;;;;OASG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CACf,MAAM,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,KACnD,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAC5G,iEAAiE;IACjE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC/B;AA6HD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,SAAS,SAAS,eAAe,EAAE,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3H,OAAO,EAAE,sBAAsB,CAAC,SAAS,EAAE,WAAW,CAAC,GACvD,gBAAgB,EAAE,CAq8BpB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAWlF,OAAO,EAaJ,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAEtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACT,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,EAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,OAAO,EAAW,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,KAAK,eAAe,EAAiC,MAAM,aAAa,CAAC;AAElF;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,qBAAqB,CACnC,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,CAC5D,SAAQ,OAAO;IACd,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC3D,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IACrF,iGAAiG;IACjG,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;IAC5D,yDAAyD;IACzD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,4BAA4B,CAAC,CAAC;IAChE;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,uBAAuB,CAAC;CAChD;AAED,wCAAwC;AACxC,MAAM,WAAW,sBAAsB,CAAC,SAAS,SAAS,eAAe,EAAE,WAAW,SAAS,kBAAkB,GAAG,kBAAkB;IACnI;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/H,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IACnD;;;;;;;;;OASG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CACf,MAAM,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,KACnD,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAC5G,iEAAiE;IACjE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC/B;AA6HD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,SAAS,SAAS,eAAe,EAAE,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3H,OAAO,EAAE,sBAAsB,CAAC,SAAS,EAAE,WAAW,CAAC,GACvD,gBAAgB,EAAE,CAmkCpB"}
package/lib/data/index.js CHANGED
@@ -14,7 +14,7 @@
14
14
  * the port structurally with no adapter.
15
15
  */
16
16
  import assert from 'node:assert/strict';
17
- import { asModelVersion, FRAMEWORK_CLIENT_IDS, isConflictError, isDocumentNotOpenError, isDuplicateClientIdError, isReservedClientIdError, isSessionClosedError, ReferenceSource, SyntheticStep, SystemClock, TransferDocument, UNKNOWN_CLIENT_ID } from '@hydranium/protocol';
17
+ import { asModelVersion, FRAMEWORK_CLIENT_IDS, isConflictError, isDocumentNotOpenError, isDuplicateClientIdError, isReservedClientIdError, isSessionClosedError, randomUuid, ReferenceSource, SyntheticStep, SystemClock, TransferDocument, UNKNOWN_CLIENT_ID } from '@hydranium/protocol';
18
18
  import { waitFor } from '@hydranium/protocol/testing';
19
19
  import { resolveDeferred, resolveModel } from '../model.js';
20
20
  /** Client id the kit subscribes under; a watch needs no session. */
@@ -25,7 +25,7 @@ const SUBSCRIBER = 'conformance-subscriber';
25
25
  * earlier check failed before ending its session.
26
26
  */
27
27
  function sessionId(label = 'conformance-session') {
28
- return `${label}#${globalThis.crypto.randomUUID()}`;
28
+ return `${label}#${randomUuid()}`;
29
29
  }
30
30
  /** Register a session under a fresh id labelled `label`, and answer the id. */
31
31
  async function startSession(driver, label) {
@@ -433,7 +433,7 @@ export function buildDataChecks(options) {
433
433
  const model = resolveModel(valid);
434
434
  await seed(driver, model);
435
435
  const clientId = await startSession(driver, 'conformance-session');
436
- const createdUri = siblingOf(model.uri, 'conformance-created-');
436
+ const createdUri = siblingOf(model.uri, `conformance-created-${randomUuid()}-`);
437
437
  const created = await driver.proxy.createModelDocument({ uri: createdUri, clientId, text: model.text });
438
438
  const { model: createdModel } = TransferDocument.assertLoaded(created);
439
439
  // Written without an open: only the create can have opened it.
@@ -480,7 +480,7 @@ export function buildDataChecks(options) {
480
480
  const driver = await connect();
481
481
  try {
482
482
  const model = resolveModel(valid);
483
- const uri = siblingOf(model.uri, 'conformance-unsaved-');
483
+ const uri = siblingOf(model.uri, `conformance-unsaved-${randomUuid()}-`);
484
484
  const clientId = await startSession(driver, 'conformance-session');
485
485
  await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
486
486
  // Served before the close, so an envelope without a model after
@@ -498,6 +498,113 @@ export function buildDataChecks(options) {
498
498
  }
499
499
  }
500
500
  });
501
+ checks.push({
502
+ title: `deleting a saved document removes it ${tag}`,
503
+ body: async () => {
504
+ const driver = await connect();
505
+ try {
506
+ const model = resolveModel(valid);
507
+ const uri = siblingOf(model.uri, `conformance-deleted-${randomUuid()}-`);
508
+ const clientId = await startSession(driver, 'conformance-session');
509
+ await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
510
+ const saved = await driver.proxy.saveModelDocument({ uri, clientId, model: model.text, baseVersion: 'any' });
511
+ await driver.proxy.deleteModelDocument({ uri, clientId, baseVersion: TransferDocument.assertLoaded(saved).model.version });
512
+ // Once the delete answers, with no wait: the protocol answers a
513
+ // URI with no document with an envelope that has no model.
514
+ const read = await driver.proxy.getModelDocument({ uri });
515
+ assert.ok(!TransferDocument.isLoaded(read), `${uri} was still served with a model after its delete answered`);
516
+ await driver.proxy.closeSession({ clientId });
517
+ }
518
+ finally {
519
+ driver.dispose();
520
+ }
521
+ }
522
+ });
523
+ checks.push({
524
+ title: `a delete on a stale base version conflicts and deletes nothing ${tag}`,
525
+ body: async () => {
526
+ const driver = await connect();
527
+ try {
528
+ const model = resolveModel(valid);
529
+ const uri = siblingOf(model.uri, `conformance-kept-${randomUuid()}-`);
530
+ const clientId = await startSession(driver, 'conformance-session');
531
+ const created = await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
532
+ await driver.proxy.updateModelDocument({ uri, clientId, model: `${model.text}\n`, baseVersion: 'any' });
533
+ const stale = await rejectionOf(driver.proxy.deleteModelDocument({ uri, clientId, baseVersion: TransferDocument.assertLoaded(created).model.version }));
534
+ assert.ok(isConflictError(stale), `deleting ${uri} on a stale base version did not conflict: ${String(stale)}`);
535
+ TransferDocument.assertLoaded(await driver.proxy.getModelDocument({ uri }));
536
+ await driver.proxy.closeSession({ clientId });
537
+ }
538
+ finally {
539
+ driver.dispose();
540
+ }
541
+ }
542
+ });
543
+ checks.push({
544
+ title: `a session deletes only a document it has open ${tag}`,
545
+ body: async () => {
546
+ const driver = await connect();
547
+ try {
548
+ const model = resolveModel(valid);
549
+ const seeder = await seed(driver, model);
550
+ const stranger = await startSession(driver, 'conformance-stranger');
551
+ const refusal = await rejectionOf(driver.proxy.deleteModelDocument({ uri: model.uri, clientId: stranger, baseVersion: 'any' }));
552
+ assert.ok(isDocumentNotOpenError(refusal), `a delete without an open did not fail as not open: ${String(refusal)}`);
553
+ TransferDocument.assertLoaded(await driver.proxy.getModelDocument({ uri: model.uri }));
554
+ await driver.proxy.closeSession({ clientId: stranger });
555
+ await driver.proxy.closeSession({ clientId: seeder });
556
+ }
557
+ finally {
558
+ driver.dispose();
559
+ }
560
+ }
561
+ });
562
+ checks.push({
563
+ title: `a delete closes another session's open and names the deleting session ${tag}`,
564
+ body: async () => {
565
+ const driver = await connect();
566
+ try {
567
+ const model = resolveModel(valid);
568
+ const uri = siblingOf(model.uri, `conformance-shared-${randomUuid()}-`);
569
+ const deleter = await startSession(driver, 'conformance-deleter');
570
+ await driver.proxy.createModelDocument({ uri, clientId: deleter, text: model.text });
571
+ await driver.proxy.saveModelDocument({ uri, clientId: deleter, model: model.text, baseVersion: 'any' });
572
+ const other = await openAs(driver, uri, 'conformance-other');
573
+ await driver.proxy.deleteModelDocument({ uri, clientId: deleter, baseVersion: 'any' });
574
+ const write = await rejectionOf(driver.proxy.updateModelDocument({ uri, clientId: other, model: model.text, baseVersion: 'any' }));
575
+ assert.ok(isDocumentNotOpenError(write), `another session's open of ${uri} survived its delete: ${String(write)}`);
576
+ await waitFor(() => driver.deletions.some(event => event.uri === uri), {
577
+ message: `no onDocumentDeleted event for ${uri} after its delete`
578
+ });
579
+ const told = driver.deletions.filter(event => event.uri === uri).map(event => event.sourceClientId);
580
+ assert.deepStrictEqual(told, [deleter], `the deletion of ${uri} named ${told.join(', ')}, not the deleting session`);
581
+ await driver.proxy.closeSession({ clientId: other });
582
+ await driver.proxy.closeSession({ clientId: deleter });
583
+ }
584
+ finally {
585
+ driver.dispose();
586
+ }
587
+ }
588
+ });
589
+ checks.push({
590
+ title: `a delete removes a created document never saved ${tag}`,
591
+ body: async () => {
592
+ const driver = await connect();
593
+ try {
594
+ const model = resolveModel(valid);
595
+ const uri = siblingOf(model.uri, `conformance-unsaved-deleted-${randomUuid()}-`);
596
+ const clientId = await startSession(driver, 'conformance-session');
597
+ await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
598
+ await driver.proxy.deleteModelDocument({ uri, clientId, baseVersion: 'any' });
599
+ const read = await driver.proxy.getModelDocument({ uri });
600
+ assert.ok(!TransferDocument.isLoaded(read), `${uri}, created and never saved, was still served with a model after its delete`);
601
+ await driver.proxy.closeSession({ clientId });
602
+ }
603
+ finally {
604
+ driver.dispose();
605
+ }
606
+ }
607
+ });
501
608
  checks.push({
502
609
  title: `a document is dirty while its text differs from its file, and clean once saved ${tag}`,
503
610
  body: async () => {
@@ -506,7 +613,7 @@ export function buildDataChecks(options) {
506
613
  const model = resolveModel(valid);
507
614
  // Only `dirty` is asserted, so any second text serves.
508
615
  const unsaved = resolveDeferred(invalid.text);
509
- const uri = siblingOf(model.uri, `conformance-saved-${globalThis.crypto.randomUUID()}-`);
616
+ const uri = siblingOf(model.uri, `conformance-saved-${randomUuid()}-`);
510
617
  const clientId = await startSession(driver, 'conformance-session');
511
618
  await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
512
619
  const saved = await driver.proxy.saveModelDocument({ uri, clientId, model: model.text, baseVersion: 'any' });
@@ -532,7 +639,7 @@ export function buildDataChecks(options) {
532
639
  // Trailing blank lines no serialiser writes, so a head that
533
640
  // persists a re-serialised model rather than the text shows.
534
641
  const held = `${model.text}\n\n`;
535
- const uri = siblingOf(model.uri, `conformance-persisted-${globalThis.crypto.randomUUID()}-`);
642
+ const uri = siblingOf(model.uri, `conformance-persisted-${randomUuid()}-`);
536
643
  const writer = await startSession(driver, 'conformance-writer');
537
644
  const created = await driver.proxy.createModelDocument({ uri, clientId: writer, text: model.text });
538
645
  const written = await driver.proxy.updateModelDocument({ uri, clientId: writer, model: held, baseVersion: 'any' });
@@ -570,7 +677,7 @@ export function buildDataChecks(options) {
570
677
  const model = resolveModel(valid);
571
678
  // Only the text is compared, so any second text serves.
572
679
  const other = resolveDeferred(invalid.text);
573
- const uri = siblingOf(model.uri, `conformance-hashed-${globalThis.crypto.randomUUID()}-`);
680
+ const uri = siblingOf(model.uri, `conformance-hashed-${randomUuid()}-`);
574
681
  const clientId = await startSession(driver, 'conformance-session');
575
682
  const created = await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
576
683
  const edited = await driver.proxy.updateModelDocument({ uri, clientId, model: other, baseVersion: 'any' });
@@ -583,7 +690,7 @@ export function buildDataChecks(options) {
583
690
  const read = await driver.proxy.getModelDocument({ uri });
584
691
  assert.strictEqual(read.text?.hash, restored.text?.hash, `a read of ${uri} hashed its text as ${String(read.text?.hash)}`);
585
692
  const absent = await driver.proxy.getModelDocument({
586
- uri: siblingOf(model.uri, `conformance-absent-${globalThis.crypto.randomUUID()}-`)
693
+ uri: siblingOf(model.uri, `conformance-absent-${randomUuid()}-`)
587
694
  });
588
695
  assert.strictEqual(absent.text, undefined, `an envelope with no document carried text ${JSON.stringify(absent.text)}`);
589
696
  await driver.proxy.closeSession({ clientId });
@@ -729,7 +836,7 @@ export function buildDataChecks(options) {
729
836
  try {
730
837
  const model = resolveModel(valid);
731
838
  const edited = resolveDeferred(edit.to);
732
- const uri = siblingOf(model.uri, `conformance-reverted-${globalThis.crypto.randomUUID()}-`);
839
+ const uri = siblingOf(model.uri, `conformance-reverted-${randomUuid()}-`);
733
840
  const writer = await startSession(driver, 'conformance-writer');
734
841
  // Created with the edit, so that going back to the created
735
842
  // text instead of the saved one shows.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hydranium/conformance",
3
- "version": "1.0.0-next.272",
3
+ "version": "1.0.0-next.273",
4
4
  "description": "Protocol conformance kit (TCK) for hydranium adopters. Per-head slices (/data, /lsp, /glsp) of fixture-parameterized, protocol-only smoke checks an adopter runs against its own server.",
5
5
  "keywords": [
6
6
  "conformance",
@@ -75,7 +75,7 @@
75
75
  "watch": "tsc -b -w --preserveWatchOutput"
76
76
  },
77
77
  "devDependencies": {
78
- "@hydranium/protocol": "1.0.0-next.272",
78
+ "@hydranium/protocol": "1.0.0-next.273",
79
79
  "@jest/globals": "^29.7.0",
80
80
  "@types/jest": "^29.5.12",
81
81
  "esbuild": "^0.28.0",
@@ -86,7 +86,7 @@
86
86
  "vscode-jsonrpc": "9.0.0"
87
87
  },
88
88
  "peerDependencies": {
89
- "@hydranium/protocol": "1.0.0-next.272",
89
+ "@hydranium/protocol": "1.0.0-next.273",
90
90
  "@jest/globals": "^29.0.0",
91
91
  "vitest": "^4.0.0",
92
92
  "vscode-jsonrpc": "^9.0.0"
package/src/data/index.ts CHANGED
@@ -24,6 +24,7 @@ import {
24
24
  isDuplicateClientIdError,
25
25
  isReservedClientIdError,
26
26
  isSessionClosedError,
27
+ randomUuid,
27
28
  ReferenceSource,
28
29
  SyntheticStep,
29
30
  SystemClock,
@@ -35,6 +36,7 @@ import {
35
36
  import type {
36
37
  DataServerProtocol,
37
38
  ReferenceServerProtocol,
39
+ TransferDocumentDeletedEvent,
38
40
  TransferDocumentsBuiltEvent,
39
41
  TransferDocumentUpdatedEvent
40
42
  } from '@hydranium/protocol/data';
@@ -47,8 +49,8 @@ import { type LanguageFixture, resolveDeferred, resolveModel } from '../model.js
47
49
  * through its protocol-native proxy plus the captured client-side
48
50
  * notifications. The kit names only `@hydranium/protocol` types, so a
49
51
  * `DataServerHarness` satisfies the port structurally (it has `proxy` +
50
- * `events`, `builds` and `dispose`) with NO adapter. `extends Harness` gives the kit the
51
- * universal `dispose()` teardown.
52
+ * `events`, `builds`, `deletions` and `dispose`) with NO adapter.
53
+ * `extends Harness` gives the kit the universal `dispose()` teardown.
52
54
  *
53
55
  * The kit seeds documents purely through the proxy, as client sessions: it
54
56
  * registers one with `createSession`, opens the document, or creates it with
@@ -66,6 +68,8 @@ export interface DataConformanceDriver<
66
68
  readonly events: ReadonlyArray<TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>>;
67
69
  /** Captured `onDocumentsBuilt` events, append order — the cascade check's observation target. */
68
70
  readonly builds: ReadonlyArray<TransferDocumentsBuiltEvent>;
71
+ /** Captured `onDocumentDeleted` events, append order. */
72
+ readonly deletions: ReadonlyArray<TransferDocumentDeletedEvent>;
69
73
  /**
70
74
  * The opt-in reference surface, when the head serves it.
71
75
  *
@@ -85,9 +89,8 @@ export interface DataConformanceOptions<TTransfer extends TransferElement, TDiag
85
89
  * adopter must initialise the workspace before returning, so `waitForReady`
86
90
  * resolves rather than hanging.
87
91
  *
88
- * Some checks save documents beside each fixture's `valid`, and nothing in
89
- * the protocol deletes a file, so give each check a workspace the kit may
90
- * write to and throw away.
92
+ * Some checks save and delete documents beside each fixture's `valid`, so
93
+ * give each check a workspace the kit may write to and throw away.
91
94
  */
92
95
  readonly connect: () => DataConformanceDriver<TTransfer, TDiagnostic> | Promise<DataConformanceDriver<TTransfer, TDiagnostic>>;
93
96
  /** Per-language fixtures; the grammar-bearing checks run once per language. */
@@ -125,7 +128,7 @@ const SUBSCRIBER = 'conformance-subscriber';
125
128
  * earlier check failed before ending its session.
126
129
  */
127
130
  function sessionId(label = 'conformance-session'): string {
128
- return `${label}#${globalThis.crypto.randomUUID()}`;
131
+ return `${label}#${randomUuid()}`;
129
132
  }
130
133
 
131
134
  /** Register a session under a fresh id labelled `label`, and answer the id. */
@@ -606,7 +609,7 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
606
609
  const model = resolveModel(valid);
607
610
  await seed(driver, model);
608
611
  const clientId = await startSession(driver, 'conformance-session');
609
- const createdUri = siblingOf(model.uri, 'conformance-created-');
612
+ const createdUri = siblingOf(model.uri, `conformance-created-${randomUuid()}-`);
610
613
 
611
614
  const created = await driver.proxy.createModelDocument({ uri: createdUri, clientId, text: model.text });
612
615
  const { model: createdModel } = TransferDocument.assertLoaded(created);
@@ -655,7 +658,7 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
655
658
  const driver = await connect();
656
659
  try {
657
660
  const model = resolveModel(valid);
658
- const uri = siblingOf(model.uri, 'conformance-unsaved-');
661
+ const uri = siblingOf(model.uri, `conformance-unsaved-${randomUuid()}-`);
659
662
  const clientId = await startSession(driver, 'conformance-session');
660
663
  await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
661
664
  // Served before the close, so an envelope without a model after
@@ -678,6 +681,132 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
678
681
  }
679
682
  });
680
683
 
684
+ checks.push({
685
+ title: `deleting a saved document removes it ${tag}`,
686
+ body: async () => {
687
+ const driver = await connect();
688
+ try {
689
+ const model = resolveModel(valid);
690
+ const uri = siblingOf(model.uri, `conformance-deleted-${randomUuid()}-`);
691
+ const clientId = await startSession(driver, 'conformance-session');
692
+ await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
693
+ const saved = await driver.proxy.saveModelDocument({ uri, clientId, model: model.text, baseVersion: 'any' });
694
+
695
+ await driver.proxy.deleteModelDocument({ uri, clientId, baseVersion: TransferDocument.assertLoaded(saved).model.version });
696
+
697
+ // Once the delete answers, with no wait: the protocol answers a
698
+ // URI with no document with an envelope that has no model.
699
+ const read = await driver.proxy.getModelDocument({ uri });
700
+ assert.ok(!TransferDocument.isLoaded(read), `${uri} was still served with a model after its delete answered`);
701
+ await driver.proxy.closeSession({ clientId });
702
+ } finally {
703
+ driver.dispose();
704
+ }
705
+ }
706
+ });
707
+
708
+ checks.push({
709
+ title: `a delete on a stale base version conflicts and deletes nothing ${tag}`,
710
+ body: async () => {
711
+ const driver = await connect();
712
+ try {
713
+ const model = resolveModel(valid);
714
+ const uri = siblingOf(model.uri, `conformance-kept-${randomUuid()}-`);
715
+ const clientId = await startSession(driver, 'conformance-session');
716
+ const created = await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
717
+ await driver.proxy.updateModelDocument({ uri, clientId, model: `${model.text}\n`, baseVersion: 'any' });
718
+
719
+ const stale = await rejectionOf(
720
+ driver.proxy.deleteModelDocument({ uri, clientId, baseVersion: TransferDocument.assertLoaded(created).model.version })
721
+ );
722
+
723
+ assert.ok(isConflictError(stale), `deleting ${uri} on a stale base version did not conflict: ${String(stale)}`);
724
+ TransferDocument.assertLoaded(await driver.proxy.getModelDocument({ uri }));
725
+ await driver.proxy.closeSession({ clientId });
726
+ } finally {
727
+ driver.dispose();
728
+ }
729
+ }
730
+ });
731
+
732
+ checks.push({
733
+ title: `a session deletes only a document it has open ${tag}`,
734
+ body: async () => {
735
+ const driver = await connect();
736
+ try {
737
+ const model = resolveModel(valid);
738
+ const seeder = await seed(driver, model);
739
+ const stranger = await startSession(driver, 'conformance-stranger');
740
+
741
+ const refusal = await rejectionOf(
742
+ driver.proxy.deleteModelDocument({ uri: model.uri, clientId: stranger, baseVersion: 'any' })
743
+ );
744
+
745
+ assert.ok(isDocumentNotOpenError(refusal), `a delete without an open did not fail as not open: ${String(refusal)}`);
746
+ TransferDocument.assertLoaded(await driver.proxy.getModelDocument({ uri: model.uri }));
747
+ await driver.proxy.closeSession({ clientId: stranger });
748
+ await driver.proxy.closeSession({ clientId: seeder });
749
+ } finally {
750
+ driver.dispose();
751
+ }
752
+ }
753
+ });
754
+
755
+ checks.push({
756
+ title: `a delete closes another session's open and names the deleting session ${tag}`,
757
+ body: async () => {
758
+ const driver = await connect();
759
+ try {
760
+ const model = resolveModel(valid);
761
+ const uri = siblingOf(model.uri, `conformance-shared-${randomUuid()}-`);
762
+ const deleter = await startSession(driver, 'conformance-deleter');
763
+ await driver.proxy.createModelDocument({ uri, clientId: deleter, text: model.text });
764
+ await driver.proxy.saveModelDocument({ uri, clientId: deleter, model: model.text, baseVersion: 'any' });
765
+ const other = await openAs(driver, uri, 'conformance-other');
766
+
767
+ await driver.proxy.deleteModelDocument({ uri, clientId: deleter, baseVersion: 'any' });
768
+
769
+ const write = await rejectionOf(
770
+ driver.proxy.updateModelDocument({ uri, clientId: other, model: model.text, baseVersion: 'any' })
771
+ );
772
+ assert.ok(isDocumentNotOpenError(write), `another session's open of ${uri} survived its delete: ${String(write)}`);
773
+ await waitFor(() => driver.deletions.some(event => event.uri === uri), {
774
+ message: `no onDocumentDeleted event for ${uri} after its delete`
775
+ });
776
+ const told = driver.deletions.filter(event => event.uri === uri).map(event => event.sourceClientId);
777
+ assert.deepStrictEqual(told, [deleter], `the deletion of ${uri} named ${told.join(', ')}, not the deleting session`);
778
+ await driver.proxy.closeSession({ clientId: other });
779
+ await driver.proxy.closeSession({ clientId: deleter });
780
+ } finally {
781
+ driver.dispose();
782
+ }
783
+ }
784
+ });
785
+
786
+ checks.push({
787
+ title: `a delete removes a created document never saved ${tag}`,
788
+ body: async () => {
789
+ const driver = await connect();
790
+ try {
791
+ const model = resolveModel(valid);
792
+ const uri = siblingOf(model.uri, `conformance-unsaved-deleted-${randomUuid()}-`);
793
+ const clientId = await startSession(driver, 'conformance-session');
794
+ await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
795
+
796
+ await driver.proxy.deleteModelDocument({ uri, clientId, baseVersion: 'any' });
797
+
798
+ const read = await driver.proxy.getModelDocument({ uri });
799
+ assert.ok(
800
+ !TransferDocument.isLoaded(read),
801
+ `${uri}, created and never saved, was still served with a model after its delete`
802
+ );
803
+ await driver.proxy.closeSession({ clientId });
804
+ } finally {
805
+ driver.dispose();
806
+ }
807
+ }
808
+ });
809
+
681
810
  checks.push({
682
811
  title: `a document is dirty while its text differs from its file, and clean once saved ${tag}`,
683
812
  body: async () => {
@@ -686,7 +815,7 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
686
815
  const model = resolveModel(valid);
687
816
  // Only `dirty` is asserted, so any second text serves.
688
817
  const unsaved = resolveDeferred(invalid.text);
689
- const uri = siblingOf(model.uri, `conformance-saved-${globalThis.crypto.randomUUID()}-`);
818
+ const uri = siblingOf(model.uri, `conformance-saved-${randomUuid()}-`);
690
819
  const clientId = await startSession(driver, 'conformance-session');
691
820
  await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
692
821
 
@@ -725,7 +854,7 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
725
854
  // Trailing blank lines no serialiser writes, so a head that
726
855
  // persists a re-serialised model rather than the text shows.
727
856
  const held = `${model.text}\n\n`;
728
- const uri = siblingOf(model.uri, `conformance-persisted-${globalThis.crypto.randomUUID()}-`);
857
+ const uri = siblingOf(model.uri, `conformance-persisted-${randomUuid()}-`);
729
858
  const writer = await startSession(driver, 'conformance-writer');
730
859
  const created = await driver.proxy.createModelDocument({ uri, clientId: writer, text: model.text });
731
860
  const written = await driver.proxy.updateModelDocument({ uri, clientId: writer, model: held, baseVersion: 'any' });
@@ -771,7 +900,7 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
771
900
  const model = resolveModel(valid);
772
901
  // Only the text is compared, so any second text serves.
773
902
  const other = resolveDeferred(invalid.text);
774
- const uri = siblingOf(model.uri, `conformance-hashed-${globalThis.crypto.randomUUID()}-`);
903
+ const uri = siblingOf(model.uri, `conformance-hashed-${randomUuid()}-`);
775
904
  const clientId = await startSession(driver, 'conformance-session');
776
905
  const created = await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
777
906
  const edited = await driver.proxy.updateModelDocument({ uri, clientId, model: other, baseVersion: 'any' });
@@ -793,7 +922,7 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
793
922
  const read = await driver.proxy.getModelDocument({ uri });
794
923
  assert.strictEqual(read.text?.hash, restored.text?.hash, `a read of ${uri} hashed its text as ${String(read.text?.hash)}`);
795
924
  const absent = await driver.proxy.getModelDocument({
796
- uri: siblingOf(model.uri, `conformance-absent-${globalThis.crypto.randomUUID()}-`)
925
+ uri: siblingOf(model.uri, `conformance-absent-${randomUuid()}-`)
797
926
  });
798
927
  assert.strictEqual(absent.text, undefined, `an envelope with no document carried text ${JSON.stringify(absent.text)}`);
799
928
  await driver.proxy.closeSession({ clientId });
@@ -961,7 +1090,7 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
961
1090
  try {
962
1091
  const model = resolveModel(valid);
963
1092
  const edited = resolveDeferred(edit.to);
964
- const uri = siblingOf(model.uri, `conformance-reverted-${globalThis.crypto.randomUUID()}-`);
1093
+ const uri = siblingOf(model.uri, `conformance-reverted-${randomUuid()}-`);
965
1094
  const writer = await startSession(driver, 'conformance-writer');
966
1095
  // Created with the edit, so that going back to the created
967
1096
  // text instead of the saved one shows.