@hydranium/protocol 1.0.0-next.27 → 1.0.0-next.271
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/README.md +44 -49
- package/lib/abstract-logger.d.ts +5 -0
- package/lib/abstract-logger.d.ts.map +1 -1
- package/lib/abstract-logger.js +7 -0
- package/lib/abstract-logger.js.map +1 -1
- package/lib/client/data-connection.d.ts +248 -0
- package/lib/client/data-connection.d.ts.map +1 -0
- package/lib/client/data-connection.js +439 -0
- package/lib/client/data-connection.js.map +1 -0
- package/lib/client/data-events.d.ts +13 -1
- package/lib/client/data-events.d.ts.map +1 -1
- package/lib/client/data-events.js +21 -0
- package/lib/client/data-events.js.map +1 -1
- package/lib/client/data-port.d.ts +34 -24
- package/lib/client/data-port.d.ts.map +1 -1
- package/lib/client/data-session.d.ts +571 -89
- package/lib/client/data-session.d.ts.map +1 -1
- package/lib/client/data-session.js +938 -113
- package/lib/client/data-session.js.map +1 -1
- package/lib/client/index.d.ts +14 -9
- package/lib/client/index.d.ts.map +1 -1
- package/lib/client/index.js +14 -9
- package/lib/client/index.js.map +1 -1
- package/lib/client/message-relay.d.ts +4 -4
- package/lib/client/message-relay.js +4 -4
- package/lib/client/message-relay.js.map +1 -1
- package/lib/client/post-message-transport.d.ts +64 -3
- package/lib/client/post-message-transport.d.ts.map +1 -1
- package/lib/client/post-message-transport.js +175 -1
- package/lib/client/post-message-transport.js.map +1 -1
- package/lib/client/rpc-connection.d.ts +157 -0
- package/lib/client/rpc-connection.d.ts.map +1 -0
- package/lib/client/rpc-connection.js +214 -0
- package/lib/client/rpc-connection.js.map +1 -0
- package/lib/client-ids.d.ts +45 -0
- package/lib/client-ids.d.ts.map +1 -0
- package/lib/client-ids.js +48 -0
- package/lib/client-ids.js.map +1 -0
- package/lib/clock.d.ts +50 -10
- package/lib/clock.d.ts.map +1 -1
- package/lib/clock.js +36 -1
- package/lib/clock.js.map +1 -1
- package/lib/console-logger.d.ts +23 -0
- package/lib/console-logger.d.ts.map +1 -0
- package/lib/console-logger.js +39 -0
- package/lib/console-logger.js.map +1 -0
- package/lib/data/data-protocol-methods.d.ts +4 -4
- package/lib/data/data-protocol-methods.d.ts.map +1 -1
- package/lib/data/data-protocol-methods.js +12 -1
- package/lib/data/data-protocol-methods.js.map +1 -1
- package/lib/data/data-server-protocol.d.ts +132 -41
- package/lib/data/data-server-protocol.d.ts.map +1 -1
- package/lib/data/events.d.ts +117 -21
- package/lib/data/events.d.ts.map +1 -1
- package/lib/data/requests.d.ts +69 -11
- package/lib/data/requests.d.ts.map +1 -1
- package/lib/debouncer.d.ts +3 -3
- package/lib/debouncer.d.ts.map +1 -1
- package/lib/debouncer.js +6 -9
- package/lib/debouncer.js.map +1 -1
- package/lib/errors.d.ts +178 -30
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +263 -32
- package/lib/errors.js.map +1 -1
- package/lib/glsp-request-model-args.d.ts +16 -0
- package/lib/glsp-request-model-args.d.ts.map +1 -0
- package/lib/glsp-request-model-args.js +19 -0
- package/lib/glsp-request-model-args.js.map +1 -0
- package/lib/glsp-save-model-actions.d.ts +50 -0
- package/lib/glsp-save-model-actions.d.ts.map +1 -0
- package/lib/glsp-save-model-actions.js +28 -0
- package/lib/glsp-save-model-actions.js.map +1 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +6 -0
- package/lib/index.js.map +1 -1
- package/lib/latency-collector.d.ts +8 -4
- package/lib/latency-collector.d.ts.map +1 -1
- package/lib/latency-collector.js.map +1 -1
- package/lib/logger.d.ts +27 -6
- package/lib/logger.d.ts.map +1 -1
- package/lib/logger.js +31 -3
- package/lib/logger.js.map +1 -1
- package/lib/messages/index.d.ts +4 -2
- package/lib/messages/index.d.ts.map +1 -1
- package/lib/messages/index.js +14 -4
- package/lib/messages/index.js.map +1 -1
- package/lib/messages/primitives.d.ts +71 -10
- package/lib/messages/primitives.d.ts.map +1 -1
- package/lib/messages/primitives.js +55 -3
- package/lib/messages/primitives.js.map +1 -1
- package/lib/model-server.d.ts +60 -13
- package/lib/model-server.d.ts.map +1 -1
- package/lib/model-server.js +4 -2
- package/lib/model-server.js.map +1 -1
- package/lib/model-service/base-version.d.ts +64 -0
- package/lib/model-service/base-version.d.ts.map +1 -0
- package/lib/model-service/base-version.js +43 -0
- package/lib/model-service/base-version.js.map +1 -0
- package/lib/model-service/index.d.ts +1 -1
- package/lib/model-service/index.d.ts.map +1 -1
- package/lib/model-service/index.js +4 -5
- package/lib/model-service/index.js.map +1 -1
- package/lib/model-service/reference-candidate.d.ts +5 -3
- package/lib/model-service/reference-candidate.d.ts.map +1 -1
- package/lib/{model-service/args.js → node/index.d.ts} +2 -3
- package/lib/node/index.d.ts.map +1 -0
- package/lib/node/index.js +29 -0
- package/lib/node/index.js.map +1 -0
- package/lib/node/process-memory.d.ts +66 -0
- package/lib/node/process-memory.d.ts.map +1 -0
- package/lib/node/process-memory.js +291 -0
- package/lib/node/process-memory.js.map +1 -0
- package/lib/noop-logger.d.ts.map +1 -1
- package/lib/noop-logger.js.map +1 -1
- package/lib/observable-value.js.map +1 -1
- package/lib/patch-merge.d.ts +35 -32
- package/lib/patch-merge.d.ts.map +1 -1
- package/lib/patch-merge.js +67 -23
- package/lib/patch-merge.js.map +1 -1
- package/lib/profile-session.d.ts +8 -4
- package/lib/profile-session.d.ts.map +1 -1
- package/lib/profile-session.js.map +1 -1
- package/lib/random-uuid.d.ts +14 -0
- package/lib/random-uuid.d.ts.map +1 -0
- package/lib/random-uuid.js +24 -0
- package/lib/random-uuid.js.map +1 -0
- package/lib/reconcile-write.d.ts +65 -0
- package/lib/reconcile-write.d.ts.map +1 -0
- package/lib/reconcile-write.js +67 -0
- package/lib/reconcile-write.js.map +1 -0
- package/lib/rpc/bind-rpc-methods.d.ts +33 -3
- package/lib/rpc/bind-rpc-methods.d.ts.map +1 -1
- package/lib/rpc/bind-rpc-methods.js +32 -3
- package/lib/rpc/bind-rpc-methods.js.map +1 -1
- package/lib/rpc/create-rpc-proxy.d.ts +10 -0
- package/lib/rpc/create-rpc-proxy.d.ts.map +1 -1
- package/lib/rpc/create-rpc-proxy.js +12 -2
- package/lib/rpc/create-rpc-proxy.js.map +1 -1
- package/lib/rpc/index.d.ts +1 -0
- package/lib/rpc/index.d.ts.map +1 -1
- package/lib/rpc/index.js +1 -0
- package/lib/rpc/index.js.map +1 -1
- package/lib/rpc/send-by-method-name.d.ts +76 -0
- package/lib/rpc/send-by-method-name.d.ts.map +1 -0
- package/lib/rpc/send-by-method-name.js +120 -0
- package/lib/rpc/send-by-method-name.js.map +1 -0
- package/lib/rpc/wire-prefix.js.map +1 -1
- package/lib/testing/catalogue-audit.d.ts +80 -0
- package/lib/testing/catalogue-audit.d.ts.map +1 -0
- package/lib/testing/catalogue-audit.js +94 -0
- package/lib/testing/catalogue-audit.js.map +1 -0
- package/lib/testing/data-doubles.d.ts +41 -12
- package/lib/testing/data-doubles.d.ts.map +1 -1
- package/lib/testing/data-doubles.js +56 -8
- package/lib/testing/data-doubles.js.map +1 -1
- package/lib/testing/fake-clock.d.ts +17 -2
- package/lib/testing/fake-clock.d.ts.map +1 -1
- package/lib/testing/fake-clock.js +61 -46
- package/lib/testing/fake-clock.js.map +1 -1
- package/lib/testing/index.d.ts +1 -0
- package/lib/testing/index.d.ts.map +1 -1
- package/lib/testing/index.js +5 -2
- package/lib/testing/index.js.map +1 -1
- package/lib/testing/node/duplex-connection.d.ts.map +1 -1
- package/lib/testing/node/duplex-connection.js +3 -2
- package/lib/testing/node/duplex-connection.js.map +1 -1
- package/lib/testing/node/duplex-stream.js.map +1 -1
- package/lib/testing/node/index.d.ts +1 -0
- package/lib/testing/node/index.d.ts.map +1 -1
- package/lib/testing/node/index.js +2 -2
- package/lib/testing/node/index.js.map +1 -1
- package/lib/testing/node/message-port-pair.d.ts +25 -0
- package/lib/testing/node/message-port-pair.d.ts.map +1 -0
- package/lib/testing/node/message-port-pair.js +26 -0
- package/lib/testing/node/message-port-pair.js.map +1 -0
- package/lib/testing/wait-for.d.ts +3 -2
- package/lib/testing/wait-for.d.ts.map +1 -1
- package/lib/testing/wait-for.js +40 -10
- package/lib/testing/wait-for.js.map +1 -1
- package/lib/tracer.d.ts.map +1 -1
- package/lib/tracer.js +5 -9
- package/lib/tracer.js.map +1 -1
- package/lib/transfer-diagnostic.d.ts +33 -0
- package/lib/transfer-diagnostic.d.ts.map +1 -1
- package/lib/transfer-diagnostic.js +23 -0
- package/lib/transfer-diagnostic.js.map +1 -1
- package/lib/transfer-document.d.ts +70 -32
- package/lib/transfer-document.d.ts.map +1 -1
- package/lib/transfer-document.js +17 -9
- package/lib/transfer-document.js.map +1 -1
- package/lib/uri.d.ts.map +1 -1
- package/lib/uri.js.map +1 -1
- package/lib/util.d.ts +8 -2
- package/lib/util.d.ts.map +1 -1
- package/lib/util.js +32 -4
- package/lib/util.js.map +1 -1
- package/package.json +24 -40
- package/src/abstract-logger.ts +8 -0
- package/src/client/data-connection.ts +535 -0
- package/src/client/data-events.ts +33 -1
- package/src/client/data-port.ts +36 -25
- package/src/client/data-session.ts +1198 -135
- package/src/client/index.ts +14 -9
- package/src/client/message-relay.ts +4 -4
- package/src/client/post-message-transport.ts +219 -4
- package/src/client/rpc-connection.ts +281 -0
- package/src/client-ids.ts +49 -0
- package/src/clock.ts +68 -10
- package/src/console-logger.ts +39 -0
- package/src/data/data-protocol-methods.ts +13 -4
- package/src/data/data-server-protocol.ts +157 -41
- package/src/data/events.ts +123 -21
- package/src/data/requests.ts +74 -11
- package/src/debouncer.ts +7 -10
- package/src/errors.ts +312 -40
- package/src/glsp-request-model-args.ts +16 -0
- package/src/glsp-save-model-actions.ts +59 -0
- package/src/index.ts +6 -0
- package/src/latency-collector.ts +8 -3
- package/src/logger.ts +33 -7
- package/src/messages/index.ts +4 -2
- package/src/messages/primitives.ts +102 -10
- package/src/model-server.ts +64 -19
- package/src/model-service/base-version.ts +72 -0
- package/src/model-service/index.ts +4 -5
- package/src/model-service/reference-candidate.ts +5 -3
- package/src/node/index.ts +14 -0
- package/src/node/process-memory.ts +299 -0
- package/src/patch-merge.ts +97 -42
- package/src/profile-session.ts +9 -4
- package/src/random-uuid.ts +21 -0
- package/src/reconcile-write.ts +124 -0
- package/src/rpc/README.md +6 -6
- package/src/rpc/bind-rpc-methods.ts +59 -4
- package/src/rpc/create-rpc-proxy.ts +20 -2
- package/src/rpc/index.ts +1 -0
- package/src/rpc/send-by-method-name.ts +140 -0
- package/src/testing/catalogue-audit.ts +111 -0
- package/src/testing/data-doubles.ts +141 -19
- package/src/testing/fake-clock.ts +76 -48
- package/src/testing/index.ts +5 -2
- package/src/testing/node/duplex-connection.ts +3 -2
- package/src/testing/node/index.ts +2 -2
- package/src/testing/node/message-port-pair.ts +40 -0
- package/src/testing/wait-for.ts +38 -11
- package/src/tracer.ts +5 -9
- package/src/transfer-diagnostic.ts +40 -0
- package/src/transfer-document.ts +87 -34
- package/src/util.ts +33 -6
- package/lib/model-service/args.d.ts +0 -64
- package/lib/model-service/args.d.ts.map +0 -1
- package/lib/model-service/args.js.map +0 -1
- package/src/model-service/args.ts +0 -67
package/lib/tracer.js
CHANGED
|
@@ -14,6 +14,7 @@ const logger_1 = require("./logger");
|
|
|
14
14
|
const noop_logger_1 = require("./noop-logger");
|
|
15
15
|
const profile_session_1 = require("./profile-session");
|
|
16
16
|
const util_1 = require("./util");
|
|
17
|
+
const primitives_1 = require("./messages/primitives");
|
|
17
18
|
/** Module-global so nested timers don't reuse ids. */
|
|
18
19
|
let nextTimerId = 0;
|
|
19
20
|
/** Ops completing before this threshold are silent on success — only failures emit a retroactive start. */
|
|
@@ -114,15 +115,10 @@ class DefaultTracer {
|
|
|
114
115
|
const suffix = this.timingSuffix(status, elapsed, options);
|
|
115
116
|
this.logger[logLevel](`${label} [#${id} ${status}, ${logger_1.Format.elapsed(elapsed)}${currentExtras()}${suffix}]`);
|
|
116
117
|
if (status === 'failed') {
|
|
117
|
-
//
|
|
118
|
-
//
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
const detail = error instanceof Error ? error.message : String(error);
|
|
122
|
-
this.logger.warn(`${label} [#${id}] failed: ${detail}`);
|
|
123
|
-
if (error instanceof Error && error.stack) {
|
|
124
|
-
this.logger.debug(error.stack);
|
|
125
|
-
}
|
|
118
|
+
// Reporting the failure is the caller's, who receives it: a line at
|
|
119
|
+
// warn here would exist only while `logLevel` is enabled.
|
|
120
|
+
const detail = (0, primitives_1.describeErrorWithStack)(error);
|
|
121
|
+
this.logger.debug(`${label} [#${id}] failed: ${detail}`);
|
|
126
122
|
}
|
|
127
123
|
};
|
|
128
124
|
let result;
|
package/lib/tracer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../src/tracer.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;AAElF,mCAAkD;AAClD,qCAA6D;AAC7D,+CAA2C;AAC3C,uDAA+E;AAC/E,iCAAoC;
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../src/tracer.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
+
import { type MessageParams, type ResolvedMessage } from './messages/primitives';
|
|
9
10
|
/**
|
|
10
11
|
* Generic, transport-friendly diagnostic shape used by the model-server protocol.
|
|
11
12
|
*
|
|
@@ -55,6 +56,21 @@ export interface TransferDiagnostic {
|
|
|
55
56
|
* is not usable as a rule identity on its own.
|
|
56
57
|
*/
|
|
57
58
|
code?: number | string;
|
|
59
|
+
/**
|
|
60
|
+
* Substitutions for the placeholders in the message this {@link code} names,
|
|
61
|
+
* present only for a diagnostic raised from a framework message declaration.
|
|
62
|
+
*
|
|
63
|
+
* Without them a translated template renders with its `{name}` tokens left
|
|
64
|
+
* standing, because substitution leaves an unmatched token in place rather
|
|
65
|
+
* than raising — so a surface that translates from {@link code} alone is
|
|
66
|
+
* correct for a parameterless sentence and visibly wrong for a parameterised
|
|
67
|
+
* one. This is the field that makes the second case work; the LSP carrier has
|
|
68
|
+
* always moved the params, and no carrier below it did.
|
|
69
|
+
*
|
|
70
|
+
* Prefer {@link TransferDiagnostic.resolved} over reading this: it decides
|
|
71
|
+
* whether an identity is present at all, which a lone `params` cannot.
|
|
72
|
+
*/
|
|
73
|
+
params?: MessageParams;
|
|
58
74
|
}
|
|
59
75
|
export declare namespace TransferDiagnostic {
|
|
60
76
|
/** Path separator between AST nodes within an element location. */
|
|
@@ -65,6 +81,23 @@ export declare namespace TransferDiagnostic {
|
|
|
65
81
|
const ELEMENT_PROPERTY_SEPARATOR = "^";
|
|
66
82
|
function isError(diagnostic: TransferDiagnostic): boolean;
|
|
67
83
|
function isParseError(diagnostic: TransferDiagnostic): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* The diagnostic as a renderable message, for a surface that translates.
|
|
86
|
+
* `undefined` when it carries no framework identity — a syntactic error, an
|
|
87
|
+
* adopter's own check, a linker failure — which is the case a caller must
|
|
88
|
+
* distinguish rather than render.
|
|
89
|
+
*
|
|
90
|
+
* Hand the result to `renderFrameworkMessage` with whatever catalogue the
|
|
91
|
+
* host has loaded. The `text` is the server's English, so a code the
|
|
92
|
+
* catalogue does not carry still yields a complete sentence.
|
|
93
|
+
*
|
|
94
|
+
* `code` alone does not establish an identity: it also holds Langium's
|
|
95
|
+
* internal code and an adopter's own, and either would be looked up against a
|
|
96
|
+
* catalogue that cannot have it. Requiring `params` is what discriminates,
|
|
97
|
+
* and it is why a parameterless framework message still populates the field
|
|
98
|
+
* with an empty object rather than omitting it.
|
|
99
|
+
*/
|
|
100
|
+
function resolved(diagnostic: TransferDiagnostic): ResolvedMessage | undefined;
|
|
68
101
|
function getPath(diagnostic: TransferDiagnostic): string;
|
|
69
102
|
function errors(diagnostics: TransferDiagnostic[]): TransferDiagnostic[];
|
|
70
103
|
function hasErrors(diagnostics: TransferDiagnostic[]): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer-diagnostic.d.ts","sourceRoot":"","sources":["../src/transfer-diagnostic.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IAChC;;;;;OAKG;IACH,IAAI,EAAE,cAAc,GAAG,eAAe,GAAG,kBAAkB,CAAC;IAC5D;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,yBAAiB,kBAAkB,CAAC;IACjC,mEAAmE;IAC5D,MAAM,yBAAyB,MAAM,CAAC;IAC7C,wDAAwD;IACjD,MAAM,uBAAuB,MAAM,CAAC;IAC3C,sFAAsF;IAC/E,MAAM,0BAA0B,MAAM,CAAC;IAE9C,SAAgB,OAAO,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAE/D;IAED,SAAgB,YAAY,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAEpE;IAED,SAAgB,OAAO,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAE9D;IAED,SAAgB,MAAM,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAE9E;IAED,SAAgB,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAEpE;IAED,SAAgB,cAAc,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAEzE;CACH"}
|
|
1
|
+
{"version":3,"file":"transfer-diagnostic.d.ts","sourceRoot":"","sources":["../src/transfer-diagnostic.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IAChC;;;;;OAKG;IACH,IAAI,EAAE,cAAc,GAAG,eAAe,GAAG,kBAAkB,CAAC;IAC5D;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,yBAAiB,kBAAkB,CAAC;IACjC,mEAAmE;IAC5D,MAAM,yBAAyB,MAAM,CAAC;IAC7C,wDAAwD;IACjD,MAAM,uBAAuB,MAAM,CAAC;IAC3C,sFAAsF;IAC/E,MAAM,0BAA0B,MAAM,CAAC;IAE9C,SAAgB,OAAO,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAE/D;IAED,SAAgB,YAAY,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAEpE;IAED;;;;;;;;;;;;;;;OAeG;IACH,SAAgB,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,eAAe,GAAG,SAAS,CAKpF;IAED,SAAgB,OAAO,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAE9D;IAED,SAAgB,MAAM,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAE9E;IAED,SAAgB,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAEpE;IAED,SAAgB,cAAc,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAEzE;CACH"}
|
|
@@ -25,6 +25,29 @@ var TransferDiagnostic;
|
|
|
25
25
|
return diagnostic.type === 'parsing-error';
|
|
26
26
|
}
|
|
27
27
|
TransferDiagnostic.isParseError = isParseError;
|
|
28
|
+
/**
|
|
29
|
+
* The diagnostic as a renderable message, for a surface that translates.
|
|
30
|
+
* `undefined` when it carries no framework identity — a syntactic error, an
|
|
31
|
+
* adopter's own check, a linker failure — which is the case a caller must
|
|
32
|
+
* distinguish rather than render.
|
|
33
|
+
*
|
|
34
|
+
* Hand the result to `renderFrameworkMessage` with whatever catalogue the
|
|
35
|
+
* host has loaded. The `text` is the server's English, so a code the
|
|
36
|
+
* catalogue does not carry still yields a complete sentence.
|
|
37
|
+
*
|
|
38
|
+
* `code` alone does not establish an identity: it also holds Langium's
|
|
39
|
+
* internal code and an adopter's own, and either would be looked up against a
|
|
40
|
+
* catalogue that cannot have it. Requiring `params` is what discriminates,
|
|
41
|
+
* and it is why a parameterless framework message still populates the field
|
|
42
|
+
* with an empty object rather than omitting it.
|
|
43
|
+
*/
|
|
44
|
+
function resolved(diagnostic) {
|
|
45
|
+
if (typeof diagnostic.code !== 'string' || diagnostic.params === undefined) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
return { code: diagnostic.code, params: diagnostic.params, text: diagnostic.message };
|
|
49
|
+
}
|
|
50
|
+
TransferDiagnostic.resolved = resolved;
|
|
28
51
|
function getPath(diagnostic) {
|
|
29
52
|
return diagnostic.property ? `${diagnostic.element}${TransferDiagnostic.ELEMENT_PROPERTY_SEPARATOR}${diagnostic.property}` : diagnostic.element;
|
|
30
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer-diagnostic.js","sourceRoot":"","sources":["../src/transfer-diagnostic.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;
|
|
1
|
+
{"version":3,"file":"transfer-diagnostic.js","sourceRoot":"","sources":["../src/transfer-diagnostic.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;AAsElF,IAAiB,kBAAkB,CAsDlC;AAtDD,WAAiB,kBAAkB;IAChC,mEAAmE;IACtD,4CAAyB,GAAG,GAAG,CAAC;IAC7C,wDAAwD;IAC3C,0CAAuB,GAAG,GAAG,CAAC;IAC3C,sFAAsF;IACzE,6CAA0B,GAAG,GAAG,CAAC;IAE9C,SAAgB,OAAO,CAAC,UAA8B;QACnD,OAAO,UAAU,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC1C,CAAC;IAFe,mBAAA,OAAO,UAEtB,CAAA;IAED,SAAgB,YAAY,CAAC,UAA8B;QACxD,OAAO,UAAU,CAAC,IAAI,KAAK,eAAe,CAAC;IAC9C,CAAC;IAFe,mBAAA,YAAY,eAE3B,CAAA;IAED;;;;;;;;;;;;;;;OAeG;IACH,SAAgB,QAAQ,CAAC,UAA8B;QACpD,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1E,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;IACzF,CAAC;IALe,mBAAA,QAAQ,WAKvB,CAAA;IAED,SAAgB,OAAO,CAAC,UAA8B;QACnD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,GAAG,6CAA0B,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;IAChI,CAAC;IAFe,mBAAA,OAAO,UAEtB,CAAA;IAED,SAAgB,MAAM,CAAC,WAAiC;QACrD,OAAO,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAFe,mBAAA,MAAM,SAErB,CAAA;IAED,SAAgB,SAAS,CAAC,WAAiC;QACxD,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAFe,mBAAA,SAAS,YAExB,CAAA;IAED,SAAgB,cAAc,CAAC,WAAiC;QAC7D,OAAO,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAFe,mBAAA,cAAc,iBAE7B,CAAA;AACJ,CAAC,EAtDgB,kBAAkB,aAAlB,kBAAkB,GAAlB,kBAAkB,QAsDlC"}
|
|
@@ -8,46 +8,84 @@
|
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import type { TransferDiagnostic } from './transfer-diagnostic';
|
|
10
10
|
import type { TransferElement } from './transfer-element';
|
|
11
|
+
import { type ModelVersion, type TextVersion } from './model-service/base-version';
|
|
12
|
+
/** The model a data server built for a document, encoded for the wire. */
|
|
13
|
+
export interface TransferModelSnapshot<TRoot extends TransferElement, TDiagnostic = TransferDiagnostic> {
|
|
14
|
+
root: TRoot;
|
|
15
|
+
/** Absent until the document is validated; `[]` once it is and nothing was found. */
|
|
16
|
+
diagnostics?: TDiagnostic[];
|
|
17
|
+
/**
|
|
18
|
+
* The version of the text `root` was parsed from. A caller that mutates the
|
|
19
|
+
* model sends this back as the `baseVersion` of its write, and the server
|
|
20
|
+
* rejects the write with `ConflictError` once its text has moved past it.
|
|
21
|
+
*/
|
|
22
|
+
version: ModelVersion;
|
|
23
|
+
/**
|
|
24
|
+
* The data server's fingerprint of `root` and `diagnostics`, or under its
|
|
25
|
+
* `'text-diagnostics'` strategy of the text `root` was parsed from and
|
|
26
|
+
* `diagnostics`.
|
|
27
|
+
* Independent of `version`; an equal hash also means equally validated.
|
|
28
|
+
*/
|
|
29
|
+
hash: string;
|
|
30
|
+
}
|
|
31
|
+
/** The text a data server held for a document when it sent it. */
|
|
32
|
+
export interface TextState {
|
|
33
|
+
/**
|
|
34
|
+
* The server's version of that text. A `TransferModelSnapshot.version` below it
|
|
35
|
+
* means the model was parsed from older text, and an update at this version
|
|
36
|
+
* or a later one follows.
|
|
37
|
+
*/
|
|
38
|
+
version: TextVersion;
|
|
39
|
+
/**
|
|
40
|
+
* What `textHash` makes of the text alone: equal texts hash equal whatever
|
|
41
|
+
* their version or dirty state, across a revert or a server restart that
|
|
42
|
+
* numbers versions afresh.
|
|
43
|
+
*/
|
|
44
|
+
hash: string;
|
|
45
|
+
/**
|
|
46
|
+
* Whether the text differs from the file, as the server last knew the file.
|
|
47
|
+
* A later change arrives as `onDocumentDirtyChanged` to a client watching
|
|
48
|
+
* the document.
|
|
49
|
+
*/
|
|
50
|
+
dirty: boolean;
|
|
51
|
+
}
|
|
11
52
|
/**
|
|
12
53
|
* Wire envelope exchanged between the model-server's data-server head and
|
|
13
|
-
* its clients
|
|
14
|
-
*
|
|
54
|
+
* its clients: the server's model of a document and the text it holds for it,
|
|
55
|
+
* each absent where the server has none.
|
|
15
56
|
*
|
|
16
57
|
* The constraint `TTransfer extends TransferElement` pins the type system
|
|
17
58
|
* to the wire data shape (no `$container` cycles, references as strings;
|
|
18
|
-
* see {@link TransferElement}).
|
|
19
|
-
* `AstDocument<TAst extends AstNode, TDiagnostic>` in
|
|
20
|
-
* `@hydranium/core` — same structural shape, different generic
|
|
21
|
-
* constraint, used at the AST layer before the `TransferEncoder`
|
|
22
|
-
* translation produces a {@link TransferDocument}.
|
|
59
|
+
* see {@link TransferElement}).
|
|
23
60
|
*/
|
|
24
61
|
export interface TransferDocument<TTransfer extends TransferElement, TDiagnostic = TransferDiagnostic> {
|
|
25
62
|
uri: string;
|
|
26
63
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* (or `TransferSaveArgs.baseVersion`) so the server can detect stale-based
|
|
31
|
-
* updates and reject them with `ConflictError`.
|
|
32
|
-
*
|
|
33
|
-
* See `@hydranium/protocol#errors` for the conflict-detection contract.
|
|
34
|
-
*/
|
|
35
|
-
version: number;
|
|
36
|
-
/**
|
|
37
|
-
* Absent when the document does not exist — the server answers an unknown URI
|
|
38
|
-
* with a shaped envelope rather than an error, so absence is an ordinary
|
|
39
|
-
* branch and not a catch. Declared required it reads as a guarantee, and
|
|
40
|
-
* every `root.x` compiles into a throw.
|
|
64
|
+
* Absent when the document does not exist: the server answers an unknown
|
|
65
|
+
* URI with a shaped envelope rather than an error, so absence is an
|
|
66
|
+
* ordinary branch and not a catch.
|
|
41
67
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
68
|
+
model?: TransferModelSnapshot<TTransfer, TDiagnostic>;
|
|
69
|
+
/** Absent when the server holds no text for the document. */
|
|
70
|
+
text?: TextState;
|
|
44
71
|
}
|
|
45
72
|
/**
|
|
46
|
-
* A {@link TransferDocument} the server actually had, so `
|
|
73
|
+
* A {@link TransferDocument} the server actually had, so `model` is present.
|
|
47
74
|
* Narrowed to by {@link TransferDocument.isLoaded} / {@link TransferDocument.assertLoaded}.
|
|
48
75
|
*/
|
|
49
76
|
export type LoadedTransferDocument<TTransfer extends TransferElement, TDiagnostic = TransferDiagnostic> = TransferDocument<TTransfer, TDiagnostic> & {
|
|
50
|
-
|
|
77
|
+
model: TransferModelSnapshot<TTransfer, TDiagnostic>;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* What a save or a persist answers: the document, and in `persisted` the
|
|
81
|
+
* version of the text it wrote to the file. That can differ from
|
|
82
|
+
* `model.version` either way, since writes land between the build and the
|
|
83
|
+
* take, so a client marking a version saved takes it from here.
|
|
84
|
+
*/
|
|
85
|
+
export type TransferSavedDocument<TTransfer extends TransferElement, TDiagnostic = TransferDiagnostic> = TransferDocument<TTransfer, TDiagnostic> & {
|
|
86
|
+
persisted: {
|
|
87
|
+
version: TextVersion;
|
|
88
|
+
};
|
|
51
89
|
};
|
|
52
90
|
export declare namespace TransferDocument {
|
|
53
91
|
/**
|
|
@@ -56,18 +94,18 @@ export declare namespace TransferDocument {
|
|
|
56
94
|
*/
|
|
57
95
|
function isLoaded<TTransfer extends TransferElement, TDiagnostic = TransferDiagnostic>(document: TransferDocument<TTransfer, TDiagnostic>): document is LoadedTransferDocument<TTransfer, TDiagnostic>;
|
|
58
96
|
/**
|
|
59
|
-
* The same document with `
|
|
97
|
+
* The same document with `model` no longer optional, or a throw. For call
|
|
60
98
|
* sites where absence is a bug rather than a branch; the whole envelope is
|
|
61
|
-
* returned because a caller needing `
|
|
99
|
+
* returned because a caller needing `model` usually needs `uri` or `text`
|
|
62
100
|
* with it.
|
|
63
101
|
*/
|
|
64
102
|
function assertLoaded<TTransfer extends TransferElement, TDiagnostic = TransferDiagnostic>(document: TransferDocument<TTransfer, TDiagnostic>): LoadedTransferDocument<TTransfer, TDiagnostic>;
|
|
103
|
+
/** The envelope for a document the server does not have. */
|
|
104
|
+
function absent<TTransfer extends TransferElement, TDiagnostic = TransferDiagnostic>(uri: string): TransferDocument<TTransfer, TDiagnostic>;
|
|
65
105
|
/**
|
|
66
|
-
* Construct a {@link TransferDocument} envelope
|
|
67
|
-
*
|
|
68
|
-
* "no diagnostics yet" code paths don't need to repeat the empty array
|
|
69
|
-
* at every call site.
|
|
106
|
+
* Construct a {@link TransferDocument} envelope with a model, its version
|
|
107
|
+
* marked as coming from a read. `diagnostics` absent means not validated.
|
|
70
108
|
*/
|
|
71
|
-
function create<TTransfer extends TransferElement, TDiagnostic = TransferDiagnostic>(uri: string, version: number, root: TTransfer, diagnostics?: TDiagnostic[]): TransferDocument<TTransfer, TDiagnostic>;
|
|
109
|
+
function create<TTransfer extends TransferElement, TDiagnostic = TransferDiagnostic>(uri: string, version: number, root: TTransfer, hash: string, diagnostics?: TDiagnostic[], text?: TextState): TransferDocument<TTransfer, TDiagnostic>;
|
|
72
110
|
}
|
|
73
111
|
//# sourceMappingURL=transfer-document.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer-document.d.ts","sourceRoot":"","sources":["../src/transfer-document.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"transfer-document.d.ts","sourceRoot":"","sources":["../src/transfer-document.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAkB,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEnG,0EAA0E;AAC1E,MAAM,WAAW,qBAAqB,CAAC,KAAK,SAAS,eAAe,EAAE,WAAW,GAAG,kBAAkB;IACnG,IAAI,EAAE,KAAK,CAAC;IACZ,qFAAqF;IACrF,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;IAC5B;;;;OAIG;IACH,OAAO,EAAE,YAAY,CAAC;IACtB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;CACf;AAED,kEAAkE;AAClE,MAAM,WAAW,SAAS;IACvB;;;;OAIG;IACH,OAAO,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB,CAAC,SAAS,SAAS,eAAe,EAAE,WAAW,GAAG,kBAAkB;IAClG,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,KAAK,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACtD,6DAA6D;IAC7D,IAAI,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,CAAC,SAAS,SAAS,eAAe,EAAE,WAAW,GAAG,kBAAkB,IAAI,gBAAgB,CACvH,SAAS,EACT,WAAW,CACb,GAAG;IACD,KAAK,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;CACvD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,CAAC,SAAS,SAAS,eAAe,EAAE,WAAW,GAAG,kBAAkB,IAAI,gBAAgB,CACtH,SAAS,EACT,WAAW,CACb,GAAG;IACD,SAAS,EAAE;QAAE,OAAO,EAAE,WAAW,CAAA;KAAE,CAAC;CACtC,CAAC;AAEF,yBAAiB,gBAAgB,CAAC;IAC/B;;;OAGG;IACH,SAAgB,QAAQ,CAAC,SAAS,SAAS,eAAe,EAAE,WAAW,GAAG,kBAAkB,EACzF,QAAQ,EAAE,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,GAClD,QAAQ,IAAI,sBAAsB,CAAC,SAAS,EAAE,WAAW,CAAC,CAE5D;IAED;;;;;OAKG;IACH,SAAgB,YAAY,CAAC,SAAS,SAAS,eAAe,EAAE,WAAW,GAAG,kBAAkB,EAC7F,QAAQ,EAAE,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,GAClD,sBAAsB,CAAC,SAAS,EAAE,WAAW,CAAC,CAKhD;IAED,4DAA4D;IAC5D,SAAgB,MAAM,CAAC,SAAS,SAAS,eAAe,EAAE,WAAW,GAAG,kBAAkB,EACvF,GAAG,EAAE,MAAM,GACX,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAE1C;IAED;;;OAGG;IACH,SAAgB,MAAM,CAAC,SAAS,SAAS,eAAe,EAAE,WAAW,GAAG,kBAAkB,EACvF,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,WAAW,EAAE,EAC3B,IAAI,CAAC,EAAE,SAAS,GAChB,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAM1C;CACH"}
|
package/lib/transfer-document.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
********************************************************************************/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.TransferDocument = void 0;
|
|
12
|
+
const base_version_1 = require("./model-service/base-version");
|
|
12
13
|
var TransferDocument;
|
|
13
14
|
(function (TransferDocument) {
|
|
14
15
|
/**
|
|
@@ -16,13 +17,13 @@ var TransferDocument;
|
|
|
16
17
|
* ordinary state — a view bound to a file that may not exist yet.
|
|
17
18
|
*/
|
|
18
19
|
function isLoaded(document) {
|
|
19
|
-
return document.
|
|
20
|
+
return document.model !== undefined;
|
|
20
21
|
}
|
|
21
22
|
TransferDocument.isLoaded = isLoaded;
|
|
22
23
|
/**
|
|
23
|
-
* The same document with `
|
|
24
|
+
* The same document with `model` no longer optional, or a throw. For call
|
|
24
25
|
* sites where absence is a bug rather than a branch; the whole envelope is
|
|
25
|
-
* returned because a caller needing `
|
|
26
|
+
* returned because a caller needing `model` usually needs `uri` or `text`
|
|
26
27
|
* with it.
|
|
27
28
|
*/
|
|
28
29
|
function assertLoaded(document) {
|
|
@@ -32,14 +33,21 @@ var TransferDocument;
|
|
|
32
33
|
return document;
|
|
33
34
|
}
|
|
34
35
|
TransferDocument.assertLoaded = assertLoaded;
|
|
36
|
+
/** The envelope for a document the server does not have. */
|
|
37
|
+
function absent(uri) {
|
|
38
|
+
return { uri };
|
|
39
|
+
}
|
|
40
|
+
TransferDocument.absent = absent;
|
|
35
41
|
/**
|
|
36
|
-
* Construct a {@link TransferDocument} envelope
|
|
37
|
-
*
|
|
38
|
-
* "no diagnostics yet" code paths don't need to repeat the empty array
|
|
39
|
-
* at every call site.
|
|
42
|
+
* Construct a {@link TransferDocument} envelope with a model, its version
|
|
43
|
+
* marked as coming from a read. `diagnostics` absent means not validated.
|
|
40
44
|
*/
|
|
41
|
-
function create(uri, version, root, diagnostics
|
|
42
|
-
return {
|
|
45
|
+
function create(uri, version, root, hash, diagnostics, text) {
|
|
46
|
+
return {
|
|
47
|
+
uri,
|
|
48
|
+
model: { root, version: (0, base_version_1.asModelVersion)(version), hash, ...(diagnostics === undefined ? {} : { diagnostics }) },
|
|
49
|
+
...(text === undefined ? {} : { text })
|
|
50
|
+
};
|
|
43
51
|
}
|
|
44
52
|
TransferDocument.create = create;
|
|
45
53
|
})(TransferDocument || (exports.TransferDocument = TransferDocument = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer-document.js","sourceRoot":"","sources":["../src/transfer-document.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;
|
|
1
|
+
{"version":3,"file":"transfer-document.js","sourceRoot":"","sources":["../src/transfer-document.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;AAIlF,+DAAmG;AAyFnG,IAAiB,gBAAgB,CAmDhC;AAnDD,WAAiB,gBAAgB;IAC9B;;;OAGG;IACH,SAAgB,QAAQ,CACrB,QAAkD;QAElD,OAAO,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC;IACvC,CAAC;IAJe,iBAAA,QAAQ,WAIvB,CAAA;IAED;;;;;OAKG;IACH,SAAgB,YAAY,CACzB,QAAkD;QAElD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,QAAQ,CAAC;IACnB,CAAC;IAPe,iBAAA,YAAY,eAO3B,CAAA;IAED,4DAA4D;IAC5D,SAAgB,MAAM,CACnB,GAAW;QAEX,OAAO,EAAE,GAAG,EAAE,CAAC;IAClB,CAAC;IAJe,iBAAA,MAAM,SAIrB,CAAA;IAED;;;OAGG;IACH,SAAgB,MAAM,CACnB,GAAW,EACX,OAAe,EACf,IAAe,EACf,IAAY,EACZ,WAA2B,EAC3B,IAAgB;QAEhB,OAAO;YACJ,GAAG;YACH,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAA,6BAAc,EAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;YAC9G,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;SACzC,CAAC;IACL,CAAC;IAbe,iBAAA,MAAM,SAarB,CAAA;AACJ,CAAC,EAnDgB,gBAAgB,aAAhB,gBAAgB,GAAhB,gBAAgB,QAmDhC"}
|
package/lib/uri.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uri.d.ts","sourceRoot":"","sources":["../src/uri.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAA;CAAE,CAAC;AAEzE,uGAAuG;AACvG,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAEnF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"uri.d.ts","sourceRoot":"","sources":["../src/uri.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAA;CAAE,CAAC;AAEzE,uGAAuG;AACvG,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAEnF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAAW,MAAM,KAAG,YAAqC,CAAC;AAErF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,UAAW,MAAM,KAAG,iBAA+C,CAAC"}
|
package/lib/uri.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uri.js","sourceRoot":"","sources":["../src/uri.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;AAuClF;;;;;;GAMG;AACI,MAAM,cAAc,GAAG,CAAC,KAAa,EAAgB,EAAE,CAAC,KAAqB,CAAC;AAAxE,QAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"uri.js","sourceRoot":"","sources":["../src/uri.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;AAuClF;;;;;;GAMG;AACI,MAAM,cAAc,GAAG,CAAC,KAAa,EAAgB,EAAE,CAAC,KAAqB,CAAC;AAAxE,QAAA,cAAc,GAAd,cAAc,CAA0D;AAErF;;;;GAIG;AACI,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAqB,EAAE,CAAC,KAA0B,CAAC;AAAvF,QAAA,mBAAmB,GAAnB,mBAAmB,CAAoE"}
|
package/lib/util.d.ts
CHANGED
|
@@ -102,8 +102,6 @@ export type Mutable<T> = {
|
|
|
102
102
|
};
|
|
103
103
|
/** Returns the same value typed as a {@link Mutable}. Compile-time only. */
|
|
104
104
|
export declare function asMutable<T>(item: T): Mutable<T>;
|
|
105
|
-
/** Type-guard variant: narrows `item` to `Mutable<T> | undefined` if `guard` accepts it. */
|
|
106
|
-
export declare function toMutable<T>(item: unknown, guard: TypeGuard<T>): item is Mutable<T> | undefined;
|
|
107
105
|
/**
|
|
108
106
|
* Wrap `text` in `quoteChar`, escaping interior occurrences with `replaceChar`.
|
|
109
107
|
*
|
|
@@ -144,4 +142,12 @@ export declare function unreachable(input: never): never;
|
|
|
144
142
|
* uncertain, then narrow with a type-guard.
|
|
145
143
|
*/
|
|
146
144
|
export declare function getAt<T = unknown>(obj: unknown, path: string[]): T | undefined;
|
|
145
|
+
/**
|
|
146
|
+
* A stable, non-cryptographic digest of `text`, equal on every host for equal
|
|
147
|
+
* text: the `TextState.hash` a data server stamps, so a client can
|
|
148
|
+
* hash text of its own to compare. An array is read as its elements joined, so
|
|
149
|
+
* a large text is hashed in parts without concatenating it. It tells whether a
|
|
150
|
+
* text changed, not who could forge one.
|
|
151
|
+
*/
|
|
152
|
+
export declare function textHash(text: string | readonly string[]): string;
|
|
147
153
|
//# sourceMappingURL=util.d.ts.map
|
package/lib/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,qCAAqC;AACrC,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC;AAExD;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACxB,OAAO,IAAI,IAAI,CAAC;CAClB;AAED,yBAAiB,UAAU,CAAC;IACzB,SAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,UAAU,CAEtD;IACD;;;;;;OAMG;IACI,MAAM,KAAK,EAAE,UAAwD,CAAC;CAC/E;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,oBAAqB,YAAW,UAAU;IACpD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAM;IAClD,SAAS,CAAC,SAAS,UAAS;IAE5B,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU;
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/lib/util.js
CHANGED
|
@@ -11,7 +11,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
11
11
|
exports.Deferred = exports.DisposableCollection = exports.Disposable = void 0;
|
|
12
12
|
exports.isPromiseLike = isPromiseLike;
|
|
13
13
|
exports.asMutable = asMutable;
|
|
14
|
-
exports.toMutable = toMutable;
|
|
15
14
|
exports.quote = quote;
|
|
16
15
|
exports.unquote = unquote;
|
|
17
16
|
exports.toPascal = toPascal;
|
|
@@ -20,6 +19,7 @@ exports.identity = identity;
|
|
|
20
19
|
exports.findNextUnique = findNextUnique;
|
|
21
20
|
exports.unreachable = unreachable;
|
|
22
21
|
exports.getAt = getAt;
|
|
22
|
+
exports.textHash = textHash;
|
|
23
23
|
var Disposable;
|
|
24
24
|
(function (Disposable) {
|
|
25
25
|
function create(dispose) {
|
|
@@ -122,9 +122,6 @@ function isPromiseLike(value) {
|
|
|
122
122
|
function asMutable(item) {
|
|
123
123
|
return item;
|
|
124
124
|
}
|
|
125
|
-
function toMutable(item, guard) {
|
|
126
|
-
return guard ? guard(item) : true;
|
|
127
|
-
}
|
|
128
125
|
/**
|
|
129
126
|
* Wrap `text` in `quoteChar`, escaping interior occurrences with `replaceChar`.
|
|
130
127
|
*
|
|
@@ -208,4 +205,35 @@ function getAt(obj, path) {
|
|
|
208
205
|
}
|
|
209
206
|
return cur;
|
|
210
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* A stable, non-cryptographic digest of `text`, equal on every host for equal
|
|
210
|
+
* text: the `TextState.hash` a data server stamps, so a client can
|
|
211
|
+
* hash text of its own to compare. An array is read as its elements joined, so
|
|
212
|
+
* a large text is hashed in parts without concatenating it. It tells whether a
|
|
213
|
+
* text changed, not who could forge one.
|
|
214
|
+
*/
|
|
215
|
+
function textHash(text) {
|
|
216
|
+
const { high, low } = cyrb53(typeof text === 'string' ? [text] : text);
|
|
217
|
+
return high.toString(16).padStart(8, '0') + low.toString(16).padStart(8, '0');
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* The two 32-bit words cyrb53 ends on, each unsigned, for `parts` read as one
|
|
221
|
+
* string. It needs no `node:*` module, so every host runs it.
|
|
222
|
+
*/
|
|
223
|
+
function cyrb53(parts) {
|
|
224
|
+
let h1 = 0xdeadbeef;
|
|
225
|
+
let h2 = 0x41c6ce57;
|
|
226
|
+
for (const part of parts) {
|
|
227
|
+
for (let i = 0; i < part.length; i++) {
|
|
228
|
+
const code = part.charCodeAt(i);
|
|
229
|
+
h1 = Math.imul(h1 ^ code, 2654435761);
|
|
230
|
+
h2 = Math.imul(h2 ^ code, 1597334677);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507);
|
|
234
|
+
h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909);
|
|
235
|
+
h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507);
|
|
236
|
+
h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909);
|
|
237
|
+
return { high: h2 >>> 0, low: h1 >>> 0 };
|
|
238
|
+
}
|
|
211
239
|
//# sourceMappingURL=util.js.map
|
package/lib/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|