document-model 6.0.0-dev.105 → 6.0.0-dev.106
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/dist/index.d.ts +81 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +216 -0
- package/dist/index.js.map +1 -0
- package/dist/{src/core/node.d.ts → node.d.mts} +25 -23
- package/dist/node.d.mts.map +1 -0
- package/dist/node.mjs +151 -0
- package/dist/node.mjs.map +1 -0
- package/package.json +11 -15
- package/dist/src/core/actions.d.ts +0 -87
- package/dist/src/core/actions.d.ts.map +0 -1
- package/dist/src/core/actions.js +0 -187
- package/dist/src/core/actions.js.map +0 -1
- package/dist/src/core/controller.d.ts +0 -30
- package/dist/src/core/controller.d.ts.map +0 -1
- package/dist/src/core/controller.js +0 -60
- package/dist/src/core/controller.js.map +0 -1
- package/dist/src/core/crypto.d.ts +0 -8
- package/dist/src/core/crypto.d.ts.map +0 -1
- package/dist/src/core/crypto.js +0 -68
- package/dist/src/core/crypto.js.map +0 -1
- package/dist/src/core/documents.d.ts +0 -147
- package/dist/src/core/documents.d.ts.map +0 -1
- package/dist/src/core/documents.js +0 -845
- package/dist/src/core/documents.js.map +0 -1
- package/dist/src/core/errors.d.ts +0 -21
- package/dist/src/core/errors.d.ts.map +0 -1
- package/dist/src/core/errors.js +0 -46
- package/dist/src/core/errors.js.map +0 -1
- package/dist/src/core/files.d.ts +0 -27
- package/dist/src/core/files.d.ts.map +0 -1
- package/dist/src/core/files.js +0 -90
- package/dist/src/core/files.js.map +0 -1
- package/dist/src/core/header.d.ts +0 -63
- package/dist/src/core/header.d.ts.map +0 -1
- package/dist/src/core/header.js +0 -173
- package/dist/src/core/header.js.map +0 -1
- package/dist/src/core/index.d.ts +0 -16
- package/dist/src/core/index.d.ts.map +0 -1
- package/dist/src/core/index.js +0 -16
- package/dist/src/core/index.js.map +0 -1
- package/dist/src/core/logger-types.d.ts +0 -12
- package/dist/src/core/logger-types.d.ts.map +0 -1
- package/dist/src/core/logger-types.js +0 -2
- package/dist/src/core/logger-types.js.map +0 -1
- package/dist/src/core/logger.d.ts +0 -27
- package/dist/src/core/logger.d.ts.map +0 -1
- package/dist/src/core/logger.js +0 -127
- package/dist/src/core/logger.js.map +0 -1
- package/dist/src/core/node.d.ts.map +0 -1
- package/dist/src/core/node.js +0 -155
- package/dist/src/core/node.js.map +0 -1
- package/dist/src/core/operations.d.ts +0 -50
- package/dist/src/core/operations.d.ts.map +0 -1
- package/dist/src/core/operations.js +0 -126
- package/dist/src/core/operations.js.map +0 -1
- package/dist/src/core/ph-types.d.ts +0 -2
- package/dist/src/core/ph-types.d.ts.map +0 -1
- package/dist/src/core/ph-types.js +0 -2
- package/dist/src/core/ph-types.js.map +0 -1
- package/dist/src/core/reducer.d.ts +0 -63
- package/dist/src/core/reducer.d.ts.map +0 -1
- package/dist/src/core/reducer.js +0 -446
- package/dist/src/core/reducer.js.map +0 -1
- package/dist/src/core/schemas.d.ts +0 -75
- package/dist/src/core/schemas.d.ts.map +0 -1
- package/dist/src/core/schemas.js +0 -116
- package/dist/src/core/schemas.js.map +0 -1
- package/dist/src/core/state.d.ts +0 -26
- package/dist/src/core/state.d.ts.map +0 -1
- package/dist/src/core/state.js +0 -56
- package/dist/src/core/state.js.map +0 -1
- package/dist/src/core/types.d.ts +0 -2
- package/dist/src/core/types.d.ts.map +0 -1
- package/dist/src/core/types.js +0 -2
- package/dist/src/core/types.js.map +0 -1
- package/dist/src/core/utils.d.ts +0 -6
- package/dist/src/core/utils.d.ts.map +0 -1
- package/dist/src/core/utils.js +0 -15
- package/dist/src/core/utils.js.map +0 -1
- package/dist/src/core/validation.d.ts +0 -4
- package/dist/src/core/validation.d.ts.map +0 -1
- package/dist/src/core/validation.js +0 -27
- package/dist/src/core/validation.js.map +0 -1
- package/dist/src/document-model/actions.d.ts +0 -164
- package/dist/src/document-model/actions.d.ts.map +0 -1
- package/dist/src/document-model/actions.js +0 -111
- package/dist/src/document-model/actions.js.map +0 -1
- package/dist/src/document-model/constants.d.ts +0 -6
- package/dist/src/document-model/constants.d.ts.map +0 -1
- package/dist/src/document-model/constants.js +0 -584
- package/dist/src/document-model/constants.js.map +0 -1
- package/dist/src/document-model/controller.d.ts +0 -5
- package/dist/src/document-model/controller.d.ts.map +0 -1
- package/dist/src/document-model/controller.js +0 -5
- package/dist/src/document-model/controller.js.map +0 -1
- package/dist/src/document-model/document-schema.d.ts +0 -69
- package/dist/src/document-model/document-schema.d.ts.map +0 -1
- package/dist/src/document-model/document-schema.js +0 -43
- package/dist/src/document-model/document-schema.js.map +0 -1
- package/dist/src/document-model/document-type.d.ts +0 -2
- package/dist/src/document-model/document-type.d.ts.map +0 -1
- package/dist/src/document-model/document-type.js +0 -2
- package/dist/src/document-model/document-type.js.map +0 -1
- package/dist/src/document-model/files.d.ts +0 -5
- package/dist/src/document-model/files.d.ts.map +0 -1
- package/dist/src/document-model/files.js +0 -9
- package/dist/src/document-model/files.js.map +0 -1
- package/dist/src/document-model/index.d.ts +0 -12
- package/dist/src/document-model/index.d.ts.map +0 -1
- package/dist/src/document-model/index.js +0 -12
- package/dist/src/document-model/index.js.map +0 -1
- package/dist/src/document-model/module.d.ts +0 -3
- package/dist/src/document-model/module.d.ts.map +0 -1
- package/dist/src/document-model/module.js +0 -24
- package/dist/src/document-model/module.js.map +0 -1
- package/dist/src/document-model/reducers.d.ts +0 -11
- package/dist/src/document-model/reducers.d.ts.map +0 -1
- package/dist/src/document-model/reducers.js +0 -618
- package/dist/src/document-model/reducers.js.map +0 -1
- package/dist/src/document-model/schemas.d.ts +0 -189
- package/dist/src/document-model/schemas.d.ts.map +0 -1
- package/dist/src/document-model/schemas.js +0 -388
- package/dist/src/document-model/schemas.js.map +0 -1
- package/dist/src/document-model/state.d.ts +0 -15
- package/dist/src/document-model/state.d.ts.map +0 -1
- package/dist/src/document-model/state.js +0 -75
- package/dist/src/document-model/state.js.map +0 -1
- package/dist/src/document-model/types.d.ts +0 -584
- package/dist/src/document-model/types.d.ts.map +0 -1
- package/dist/src/document-model/types.js +0 -2
- package/dist/src/document-model/types.js.map +0 -1
- package/dist/src/document-model/validation.d.ts +0 -32
- package/dist/src/document-model/validation.d.ts.map +0 -1
- package/dist/src/document-model/validation.js +0 -166
- package/dist/src/document-model/validation.js.map +0 -1
- package/dist/src/index.d.ts +0 -6
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -3
- package/dist/src/index.js.map +0 -1
- package/dist/test/document/crypto.test.d.ts +0 -2
- package/dist/test/document/crypto.test.d.ts.map +0 -1
- package/dist/test/document/crypto.test.js +0 -192
- package/dist/test/document/crypto.test.js.map +0 -1
- package/dist/test/document/event-vs-command.test.d.ts +0 -2
- package/dist/test/document/event-vs-command.test.d.ts.map +0 -1
- package/dist/test/document/event-vs-command.test.js +0 -202
- package/dist/test/document/event-vs-command.test.js.map +0 -1
- package/dist/test/document/local.test.d.ts +0 -2
- package/dist/test/document/local.test.d.ts.map +0 -1
- package/dist/test/document/local.test.js +0 -226
- package/dist/test/document/local.test.js.map +0 -1
- package/dist/test/document/operation-id.test.d.ts +0 -2
- package/dist/test/document/operation-id.test.d.ts.map +0 -1
- package/dist/test/document/operation-id.test.js +0 -118
- package/dist/test/document/operation-id.test.js.map +0 -1
- package/dist/test/document/prune.test.d.ts +0 -2
- package/dist/test/document/prune.test.d.ts.map +0 -1
- package/dist/test/document/prune.test.js +0 -159
- package/dist/test/document/prune.test.js.map +0 -1
- package/dist/test/document/reducer.test.d.ts +0 -2
- package/dist/test/document/reducer.test.d.ts.map +0 -1
- package/dist/test/document/reducer.test.js +0 -284
- package/dist/test/document/reducer.test.js.map +0 -1
- package/dist/test/document/skip-operations.test.d.ts +0 -2
- package/dist/test/document/skip-operations.test.d.ts.map +0 -1
- package/dist/test/document/skip-operations.test.js +0 -495
- package/dist/test/document/skip-operations.test.js.map +0 -1
- package/dist/test/document/undo-redo-v2.test.d.ts +0 -2
- package/dist/test/document/undo-redo-v2.test.d.ts.map +0 -1
- package/dist/test/document/undo-redo-v2.test.js +0 -207
- package/dist/test/document/undo-redo-v2.test.js.map +0 -1
- package/dist/test/document/undo-redo.test.d.ts +0 -2
- package/dist/test/document/undo-redo.test.d.ts.map +0 -1
- package/dist/test/document/undo-redo.test.js +0 -413
- package/dist/test/document/undo-redo.test.js.map +0 -1
- package/dist/test/document/utils.test.d.ts +0 -2
- package/dist/test/document/utils.test.d.ts.map +0 -1
- package/dist/test/document/utils.test.js +0 -172
- package/dist/test/document/utils.test.js.map +0 -1
- package/dist/test/document-helpers/addUndo.test.d.ts +0 -2
- package/dist/test/document-helpers/addUndo.test.d.ts.map +0 -1
- package/dist/test/document-helpers/addUndo.test.js +0 -120
- package/dist/test/document-helpers/addUndo.test.js.map +0 -1
- package/dist/test/document-helpers/attachBranch.test.d.ts +0 -2
- package/dist/test/document-helpers/attachBranch.test.d.ts.map +0 -1
- package/dist/test/document-helpers/attachBranch.test.js +0 -364
- package/dist/test/document-helpers/attachBranch.test.js.map +0 -1
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts +0 -2
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts.map +0 -1
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js +0 -252
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js.map +0 -1
- package/dist/test/document-helpers/conflictResolution.test.d.ts +0 -2
- package/dist/test/document-helpers/conflictResolution.test.d.ts.map +0 -1
- package/dist/test/document-helpers/conflictResolution.test.js +0 -109
- package/dist/test/document-helpers/conflictResolution.test.js.map +0 -1
- package/dist/test/document-helpers/filterDuplicatedOperations.test.d.ts +0 -2
- package/dist/test/document-helpers/filterDuplicatedOperations.test.d.ts.map +0 -1
- package/dist/test/document-helpers/filterDuplicatedOperations.test.js +0 -126
- package/dist/test/document-helpers/filterDuplicatedOperations.test.js.map +0 -1
- package/dist/test/document-helpers/garbageCollect.test.d.ts +0 -2
- package/dist/test/document-helpers/garbageCollect.test.d.ts.map +0 -1
- package/dist/test/document-helpers/garbageCollect.test.js +0 -136
- package/dist/test/document-helpers/garbageCollect.test.js.map +0 -1
- package/dist/test/document-helpers/groupOperationsByScope.test.d.ts +0 -2
- package/dist/test/document-helpers/groupOperationsByScope.test.d.ts.map +0 -1
- package/dist/test/document-helpers/groupOperationsByScope.test.js +0 -102
- package/dist/test/document-helpers/groupOperationsByScope.test.js.map +0 -1
- package/dist/test/document-helpers/headerRevision.test.d.ts +0 -2
- package/dist/test/document-helpers/headerRevision.test.d.ts.map +0 -1
- package/dist/test/document-helpers/headerRevision.test.js +0 -203
- package/dist/test/document-helpers/headerRevision.test.js.map +0 -1
- package/dist/test/document-helpers/merge.test.d.ts +0 -2
- package/dist/test/document-helpers/merge.test.d.ts.map +0 -1
- package/dist/test/document-helpers/merge.test.js +0 -906
- package/dist/test/document-helpers/merge.test.js.map +0 -1
- package/dist/test/document-helpers/nextSkipNumber.test.d.ts +0 -2
- package/dist/test/document-helpers/nextSkipNumber.test.d.ts.map +0 -1
- package/dist/test/document-helpers/nextSkipNumber.test.js +0 -135
- package/dist/test/document-helpers/nextSkipNumber.test.js.map +0 -1
- package/dist/test/document-helpers/prepareOperations.test.d.ts +0 -2
- package/dist/test/document-helpers/prepareOperations.test.d.ts.map +0 -1
- package/dist/test/document-helpers/prepareOperations.test.js +0 -304
- package/dist/test/document-helpers/prepareOperations.test.js.map +0 -1
- package/dist/test/document-helpers/removeExistingOperations.test.d.ts +0 -2
- package/dist/test/document-helpers/removeExistingOperations.test.d.ts.map +0 -1
- package/dist/test/document-helpers/removeExistingOperations.test.js +0 -177
- package/dist/test/document-helpers/removeExistingOperations.test.js.map +0 -1
- package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts +0 -2
- package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts.map +0 -1
- package/dist/test/document-helpers/reshuffleByTimestamp.test.js +0 -148
- package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +0 -1
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts +0 -2
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts.map +0 -1
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +0 -200
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +0 -1
- package/dist/test/document-helpers/skipHeaderOperations.test.d.ts +0 -2
- package/dist/test/document-helpers/skipHeaderOperations.test.d.ts.map +0 -1
- package/dist/test/document-helpers/skipHeaderOperations.test.js +0 -72
- package/dist/test/document-helpers/skipHeaderOperations.test.js.map +0 -1
- package/dist/test/document-helpers/sortOperations.test.d.ts +0 -2
- package/dist/test/document-helpers/sortOperations.test.d.ts.map +0 -1
- package/dist/test/document-helpers/sortOperations.test.js +0 -101
- package/dist/test/document-helpers/sortOperations.test.js.map +0 -1
- package/dist/test/document-helpers/split.test.d.ts +0 -2
- package/dist/test/document-helpers/split.test.d.ts.map +0 -1
- package/dist/test/document-helpers/split.test.js +0 -121
- package/dist/test/document-helpers/split.test.js.map +0 -1
- package/dist/test/document-helpers/utils.d.ts +0 -15
- package/dist/test/document-helpers/utils.d.ts.map +0 -1
- package/dist/test/document-helpers/utils.js +0 -61
- package/dist/test/document-helpers/utils.js.map +0 -1
- package/dist/test/document-model/replay.test.d.ts +0 -2
- package/dist/test/document-model/replay.test.d.ts.map +0 -1
- package/dist/test/document-model/replay.test.js +0 -139
- package/dist/test/document-model/replay.test.js.map +0 -1
- package/dist/test/document-model/skip-operations.test.d.ts +0 -2
- package/dist/test/document-model/skip-operations.test.d.ts.map +0 -1
- package/dist/test/document-model/skip-operations.test.js +0 -214
- package/dist/test/document-model/skip-operations.test.js.map +0 -1
- package/dist/test/document-model/validation.test.d.ts +0 -2
- package/dist/test/document-model/validation.test.d.ts.map +0 -1
- package/dist/test/document-model/validation.test.js +0 -451
- package/dist/test/document-model/validation.test.js.map +0 -1
- package/dist/test/document-model/versioning.test.d.ts +0 -2
- package/dist/test/document-model/versioning.test.d.ts.map +0 -1
- package/dist/test/document-model/versioning.test.js +0 -93
- package/dist/test/document-model/versioning.test.js.map +0 -1
- package/dist/test/document-model/zip.test.d.ts +0 -2
- package/dist/test/document-model/zip.test.d.ts.map +0 -1
- package/dist/test/document-model/zip.test.js +0 -79
- package/dist/test/document-model/zip.test.js.map +0 -1
- package/dist/test/helpers.d.ts +0 -79
- package/dist/test/helpers.d.ts.map +0 -1
- package/dist/test/helpers.js +0 -121
- package/dist/test/helpers.js.map +0 -1
- package/dist/test/index.d.ts +0 -4
- package/dist/test/index.d.ts.map +0 -1
- package/dist/test/index.js +0 -3
- package/dist/test/index.js.map +0 -1
- package/dist/test/types.d.ts +0 -6
- package/dist/test/types.d.ts.map +0 -1
- package/dist/test/types.js +0 -2
- package/dist/test/types.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -7
- package/dist/vitest.config.js.map +0 -1
package/dist/src/core/logger.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
const tokenSub = /@([a-zA-Z0-9_]+)/g;
|
|
2
|
-
const dtf = new Intl.DateTimeFormat(undefined, {
|
|
3
|
-
hour12: false,
|
|
4
|
-
hour: "2-digit",
|
|
5
|
-
minute: "2-digit",
|
|
6
|
-
second: "2-digit",
|
|
7
|
-
fractionalSecondDigits: 2,
|
|
8
|
-
});
|
|
9
|
-
const formatMessage = (tagString, message, replacements) => {
|
|
10
|
-
const meta = {};
|
|
11
|
-
const uniqueTokens = [];
|
|
12
|
-
let results;
|
|
13
|
-
while ((results = tokenSub.exec(message)) !== null) {
|
|
14
|
-
const tokenName = results[1];
|
|
15
|
-
const index = uniqueTokens.indexOf(tokenName);
|
|
16
|
-
if (index === -1) {
|
|
17
|
-
uniqueTokens.push(tokenName);
|
|
18
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
19
|
-
const replacement = replacements[uniqueTokens.length - 1];
|
|
20
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
21
|
-
meta[tokenName] = replacement;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
// replace
|
|
25
|
-
for (const [key, value] of Object.entries(meta)) {
|
|
26
|
-
let stringValue;
|
|
27
|
-
if (!value) {
|
|
28
|
-
stringValue = "null";
|
|
29
|
-
}
|
|
30
|
-
else if (typeof value === "string") {
|
|
31
|
-
stringValue = value;
|
|
32
|
-
}
|
|
33
|
-
else if (typeof value === "object") {
|
|
34
|
-
stringValue = JSON.stringify(value);
|
|
35
|
-
}
|
|
36
|
-
else if (typeof value === "function") {
|
|
37
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
38
|
-
const name = value.name;
|
|
39
|
-
stringValue = name ? `${name}()` : "anonymous()";
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
stringValue = String(value);
|
|
43
|
-
}
|
|
44
|
-
message = message.replaceAll(`@${key}`, stringValue);
|
|
45
|
-
}
|
|
46
|
-
if (tagString.length > 0) {
|
|
47
|
-
message = `${tagString} ${message}`;
|
|
48
|
-
}
|
|
49
|
-
// timestamp
|
|
50
|
-
const now = new Date();
|
|
51
|
-
const timestamp = dtf.format(now);
|
|
52
|
-
meta["timestamp"] = timestamp;
|
|
53
|
-
return [message, meta];
|
|
54
|
-
};
|
|
55
|
-
const LOG_LEVELS = {
|
|
56
|
-
verbose: 0,
|
|
57
|
-
debug: 1,
|
|
58
|
-
info: 2,
|
|
59
|
-
warn: 3,
|
|
60
|
-
error: 4,
|
|
61
|
-
};
|
|
62
|
-
export class ConsoleLogger {
|
|
63
|
-
#tags;
|
|
64
|
-
#tagString;
|
|
65
|
-
#level = LOG_LEVELS.info;
|
|
66
|
-
errorHandler;
|
|
67
|
-
constructor(tags, handler) {
|
|
68
|
-
this.#tags = tags || [];
|
|
69
|
-
this.#tagString = this.#tags.map((tag) => `[${tag}]`).join("");
|
|
70
|
-
this.errorHandler = handler ?? (() => { });
|
|
71
|
-
}
|
|
72
|
-
get level() {
|
|
73
|
-
return Object.keys(LOG_LEVELS).find((key) => LOG_LEVELS[key] === this.#level);
|
|
74
|
-
}
|
|
75
|
-
set level(value) {
|
|
76
|
-
this.#level = LOG_LEVELS[value];
|
|
77
|
-
}
|
|
78
|
-
child(tags) {
|
|
79
|
-
const logger = new ConsoleLogger([...this.#tags, ...tags], this.errorHandler);
|
|
80
|
-
logger.level = this.level;
|
|
81
|
-
return logger;
|
|
82
|
-
}
|
|
83
|
-
verbose(message, ...replacements) {
|
|
84
|
-
if (this.#level <= LOG_LEVELS.verbose) {
|
|
85
|
-
const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
|
|
86
|
-
console.debug(`[${meta["timestamp"]}] ${formattedMessage}`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
debug(message, ...replacements) {
|
|
90
|
-
if (this.#level <= LOG_LEVELS.debug) {
|
|
91
|
-
const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
|
|
92
|
-
console.debug(`[${meta["timestamp"]}] ${formattedMessage}`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
info(message, ...replacements) {
|
|
96
|
-
if (this.#level <= LOG_LEVELS.info) {
|
|
97
|
-
const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
|
|
98
|
-
console.info(`[${meta["timestamp"]}] ${formattedMessage}`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
warn(message, ...replacements) {
|
|
102
|
-
if (this.#level <= LOG_LEVELS.warn) {
|
|
103
|
-
const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
|
|
104
|
-
console.warn(`[${meta["timestamp"]}] ${formattedMessage}`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
error(message, ...replacements) {
|
|
108
|
-
if (this.#level <= LOG_LEVELS.error) {
|
|
109
|
-
const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
|
|
110
|
-
console.error(`[${meta["timestamp"]}] ${formattedMessage}`);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
// Singleton instance
|
|
115
|
-
export const logger = new ConsoleLogger();
|
|
116
|
-
// Global configuration
|
|
117
|
-
export const setLogLevel = (level) => {
|
|
118
|
-
logger.level = level;
|
|
119
|
-
};
|
|
120
|
-
export const setErrorHandler = (handler) => {
|
|
121
|
-
logger.errorHandler = handler;
|
|
122
|
-
};
|
|
123
|
-
// Backwards-compatible factory function
|
|
124
|
-
export const childLogger = (tags) => {
|
|
125
|
-
return logger.child(tags);
|
|
126
|
-
};
|
|
127
|
-
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/core/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EACf,WAAW,EACX,UAAU,EACV,OAAO,EACP,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK9C,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AASpB;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAMzE;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAWzE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,SAAS,WAAW,GAAG,WAAW,EAExC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EACxB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAG7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,mBAgBd;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,mBAgBlB;AAED,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,mBAExC;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBhD;AAED,eAAO,MAAM,WAAW,GAAU,MAAM,MAAM,6BAE7C,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,MAAM,UAAU,EAChB,kBAAkB,EAClB,WAAU,QAAQ,GAAG,KAAgB,EACrC,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAelC,CAAC"}
|
package/dist/src/core/node.js
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import mime from "mime/lite";
|
|
2
|
-
import { createHash } from "node:crypto";
|
|
3
|
-
import fs from "node:fs";
|
|
4
|
-
import https from "node:https";
|
|
5
|
-
import { join } from "node:path";
|
|
6
|
-
import { baseLoadFromInput, createMinimalZip, createZip, } from "./files.js";
|
|
7
|
-
function getFileAttributes(file) {
|
|
8
|
-
const extension = file.replace(/^.*\./, "") || undefined;
|
|
9
|
-
const fileName = file.replace(/^.*[/\\]/, "") || undefined;
|
|
10
|
-
return { extension, fileName };
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Reads an attachment from a file and returns its base64-encoded data and MIME type.
|
|
14
|
-
* @param path - The path of the attachment file to read.
|
|
15
|
-
* @returns A Promise that resolves to an object containing the base64-encoded data and MIME type of the attachment.
|
|
16
|
-
*/
|
|
17
|
-
export async function getLocalFile(path) {
|
|
18
|
-
const buffer = await getFileNode(path);
|
|
19
|
-
const mimeType = mime.getType(path) || "application/octet-stream";
|
|
20
|
-
const attributes = getFileAttributes(path);
|
|
21
|
-
const data = buffer.toString("base64");
|
|
22
|
-
return { data, hash: hashNode(data), mimeType, ...attributes };
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Fetches an attachment from a URL and returns its base64-encoded data and MIME type.
|
|
26
|
-
* @param url - The URL of the attachment to fetch.
|
|
27
|
-
* @returns A Promise that resolves to an object containing the base64-encoded data and MIME type of the attachment.
|
|
28
|
-
*/
|
|
29
|
-
export async function getRemoteFile(url) {
|
|
30
|
-
const { buffer, mimeType = "application/octet-stream" } = await fetchFileNode(url);
|
|
31
|
-
const attributes = getFileAttributes(url);
|
|
32
|
-
const data = buffer.toString("base64");
|
|
33
|
-
return {
|
|
34
|
-
data,
|
|
35
|
-
hash: hashNode(data),
|
|
36
|
-
mimeType,
|
|
37
|
-
...attributes,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Loads a document from a ZIP file.
|
|
42
|
-
*
|
|
43
|
-
* @remarks
|
|
44
|
-
* This function reads a ZIP file and returns the document state after
|
|
45
|
-
* applying all the operations. The reducer is used to apply the operations.
|
|
46
|
-
*
|
|
47
|
-
* @typeParam S - The type of the state object.
|
|
48
|
-
* @typeParam A - The type of the actions that can be applied to the state object.
|
|
49
|
-
*
|
|
50
|
-
* @param path - The path to the ZIP file.
|
|
51
|
-
* @param reducer - The reducer to apply the operations to the state object.
|
|
52
|
-
* @returns A promise that resolves to the document state after applying all the operations.
|
|
53
|
-
* @throws An error if the initial state or the operations history is not found in the ZIP file.
|
|
54
|
-
*/
|
|
55
|
-
export async function baseLoadFromFile(path, reducer, options) {
|
|
56
|
-
const file = readFileNode(path);
|
|
57
|
-
return baseLoadFromInput(file, reducer, options);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Saves a document to a ZIP file.
|
|
61
|
-
*
|
|
62
|
-
* @remarks
|
|
63
|
-
* This function creates a ZIP file containing the document's state, operations,
|
|
64
|
-
* and file attachments. The file is saved to the specified path.
|
|
65
|
-
*
|
|
66
|
-
* @param document - The document to save to the file.
|
|
67
|
-
* @param path - The path to save the file to.
|
|
68
|
-
* @param extension - The extension to use for the file.
|
|
69
|
-
* @returns A promise that resolves to the path of the saved file.
|
|
70
|
-
*/
|
|
71
|
-
export async function baseSaveToFile(document, path, extension, name) {
|
|
72
|
-
// create zip file
|
|
73
|
-
const zip = createZip(document);
|
|
74
|
-
const file = await zip.generateAsync({
|
|
75
|
-
type: "uint8array",
|
|
76
|
-
streamFiles: true,
|
|
77
|
-
});
|
|
78
|
-
const fileName = name ?? document.header.name;
|
|
79
|
-
const fileExtension = extension ? `.${extension}.phd` : ".phd";
|
|
80
|
-
return writeFileNode(path, fileName.endsWith(fileExtension) ? fileName : `${fileName}${fileExtension}`, file);
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Saves a minimal document backup to a .phd file.
|
|
84
|
-
* Used when the full document is not available (e.g., in onOperations handler).
|
|
85
|
-
* Creates a file with minimal header and empty operations.
|
|
86
|
-
*/
|
|
87
|
-
export async function baseMinimalSaveToFile(data, path, extension) {
|
|
88
|
-
const zip = createMinimalZip(data);
|
|
89
|
-
const file = await zip.generateAsync({
|
|
90
|
-
type: "uint8array",
|
|
91
|
-
streamFiles: true,
|
|
92
|
-
});
|
|
93
|
-
const fileExtension = extension ? `.${extension}.phd` : ".phd";
|
|
94
|
-
return writeFileNode(path, data.name.endsWith(fileExtension)
|
|
95
|
-
? data.name
|
|
96
|
-
: `${data.name}${fileExtension}`, file);
|
|
97
|
-
}
|
|
98
|
-
export function writeFileNode(path, name, data) {
|
|
99
|
-
const filePath = join(path, name);
|
|
100
|
-
fs.mkdirSync(path, { recursive: true });
|
|
101
|
-
return new Promise((resolve, reject) => {
|
|
102
|
-
try {
|
|
103
|
-
fs.writeFile(filePath, data, {}, (err) => {
|
|
104
|
-
if (err) {
|
|
105
|
-
reject(err);
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
resolve(filePath);
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
if (error instanceof Error) {
|
|
114
|
-
reject(error);
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
reject(new Error(String(error)));
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
export function readFileNode(path) {
|
|
123
|
-
return fs.readFileSync(path);
|
|
124
|
-
}
|
|
125
|
-
export function fetchFileNode(url) {
|
|
126
|
-
return new Promise((resolve, reject) => {
|
|
127
|
-
https
|
|
128
|
-
.get(url, (resp) => {
|
|
129
|
-
const data = [];
|
|
130
|
-
const mimeType = resp.headers["content-type"];
|
|
131
|
-
resp.on("data", (chunk) => {
|
|
132
|
-
data.push(chunk);
|
|
133
|
-
});
|
|
134
|
-
resp.on("end", () => {
|
|
135
|
-
resolve({ buffer: Buffer.concat(data), mimeType });
|
|
136
|
-
});
|
|
137
|
-
})
|
|
138
|
-
.on("error", (err) => {
|
|
139
|
-
reject(err);
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
export const getFileNode = async (file) => {
|
|
144
|
-
return readFileNode(file);
|
|
145
|
-
};
|
|
146
|
-
export const hashNode = (data, algorithm = "sha1", encoding = "base64", _params) => {
|
|
147
|
-
if (!["sha1", "sha256", "sha512"].includes(algorithm)) {
|
|
148
|
-
throw new Error(`Hashing algorithm not supported: "${algorithm}". Available: sha1, sha256, sha512`);
|
|
149
|
-
}
|
|
150
|
-
if (!["base64", "hex"].includes(encoding)) {
|
|
151
|
-
throw new Error(`Hash encoding not supported: "${encoding}". Available: base64, hex`);
|
|
152
|
-
}
|
|
153
|
-
return createHash(algorithm).update(data).digest(encoding);
|
|
154
|
-
};
|
|
155
|
-
//# sourceMappingURL=node.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/core/node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { Action, PHBaseState, PHDocument } from "./ph-types.js";
|
|
2
|
-
import type { LoadStateActionInput } from "./types.js";
|
|
3
|
-
export declare function setNameOperation<TDocument extends PHDocument>(document: TDocument, input: {
|
|
4
|
-
name: string;
|
|
5
|
-
}): TDocument & {
|
|
6
|
-
header: {
|
|
7
|
-
name: string;
|
|
8
|
-
id: string;
|
|
9
|
-
sig: import("./ph-types.js").PHDocumentSignatureInfo;
|
|
10
|
-
documentType: string;
|
|
11
|
-
createdAtUtcIso: string;
|
|
12
|
-
slug: string;
|
|
13
|
-
branch: string;
|
|
14
|
-
revision: {
|
|
15
|
-
[scope: string]: number;
|
|
16
|
-
};
|
|
17
|
-
lastModifiedAtUtcIso: string;
|
|
18
|
-
protocolVersions?: {
|
|
19
|
-
[key: string]: number;
|
|
20
|
-
};
|
|
21
|
-
meta?: import("./ph-types.js").PHDocumentMeta;
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
export declare function undoOperation<TDocument extends PHDocument>(document: TDocument, action: Action, skip: number): {
|
|
25
|
-
document: TDocument;
|
|
26
|
-
action: Action;
|
|
27
|
-
skip: number;
|
|
28
|
-
reuseLastOperationIndex: boolean;
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* V2 of undoOperation for protocol version 2+.
|
|
32
|
-
* Key differences from undoOperation:
|
|
33
|
-
* - Never reuses operation index (always increments)
|
|
34
|
-
* - Always sets skip=1 (consecutive NOOPs are handled during rebuild/GC)
|
|
35
|
-
* - No complex skip calculation - simpler model where each UNDO is independent
|
|
36
|
-
*/
|
|
37
|
-
export declare function undoOperationV2<TDocument extends PHDocument>(document: TDocument, action: Action, skip: number): {
|
|
38
|
-
document: TDocument;
|
|
39
|
-
action: Action;
|
|
40
|
-
skip: number;
|
|
41
|
-
reuseLastOperationIndex: false;
|
|
42
|
-
};
|
|
43
|
-
export declare function redoOperation<TDocument extends PHDocument>(document: TDocument, action: Action, skip: number): {
|
|
44
|
-
document: TDocument;
|
|
45
|
-
action: Action;
|
|
46
|
-
skip: number;
|
|
47
|
-
reuseLastOperationIndex: boolean;
|
|
48
|
-
};
|
|
49
|
-
export declare function loadStateOperation<TState extends PHBaseState>(document: PHDocument<TState>, action: LoadStateActionInput): PHDocument<TState>;
|
|
50
|
-
//# sourceMappingURL=operations.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../src/core/operations.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,UAAU,EAC3D,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;EAGxB;AAED,wBAAgB,aAAa,CAAC,SAAS,SAAS,UAAU,EACxD,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB,EAAE,OAAO,CAAC;CAClC,CA8CA;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,SAAS,SAAS,UAAU,EAC1D,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB,EAAE,KAAK,CAAC;CAChC,CAuCA;AAED,wBAAgB,aAAa,CAAC,SAAS,SAAS,UAAU,EACxD,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB,EAAE,OAAO,CAAC;CAClC,CAoDA;AAED,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,WAAW,EAC3D,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,EAC5B,MAAM,EAAE,oBAAoB,GAC3B,UAAU,CAAC,MAAM,CAAC,CAMpB"}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { castDraft, create } from "mutative";
|
|
2
|
-
import { noop } from "./actions.js";
|
|
3
|
-
import { nextSkipNumber, sortOperations } from "./documents.js";
|
|
4
|
-
// updates the name of the document
|
|
5
|
-
export function setNameOperation(document, input) {
|
|
6
|
-
return { ...document, header: { ...document.header, name: input.name } };
|
|
7
|
-
}
|
|
8
|
-
export function undoOperation(document, action, skip) {
|
|
9
|
-
// const scope = action.scope;
|
|
10
|
-
const { scope } = action;
|
|
11
|
-
const defaultResult = {
|
|
12
|
-
document,
|
|
13
|
-
action,
|
|
14
|
-
skip,
|
|
15
|
-
reuseLastOperationIndex: false,
|
|
16
|
-
};
|
|
17
|
-
return create(defaultResult, (draft) => {
|
|
18
|
-
const operations = [...document.operations[scope]];
|
|
19
|
-
const sortedOperations = sortOperations(operations);
|
|
20
|
-
draft.action = noop(scope);
|
|
21
|
-
const lastOperation = sortedOperations.at(-1);
|
|
22
|
-
let nextIndex = lastOperation?.index ?? -1;
|
|
23
|
-
const isNewNoop = lastOperation?.action.type !== "NOOP";
|
|
24
|
-
if (isNewNoop) {
|
|
25
|
-
nextIndex = nextIndex + 1;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
draft.reuseLastOperationIndex = true;
|
|
29
|
-
}
|
|
30
|
-
const nextOperationHistory = isNewNoop
|
|
31
|
-
? [...sortedOperations, { index: nextIndex, skip: 0 }]
|
|
32
|
-
: sortedOperations;
|
|
33
|
-
draft.skip = nextSkipNumber(nextOperationHistory);
|
|
34
|
-
if (lastOperation && draft.skip > lastOperation.skip + 1) {
|
|
35
|
-
// there's an overlap with a previous skip operation
|
|
36
|
-
// (add 1 to the skip value because we are adding a new operation to the history)
|
|
37
|
-
draft.skip = draft.skip + 1;
|
|
38
|
-
}
|
|
39
|
-
if (draft.skip < 0) {
|
|
40
|
-
throw new Error(`Cannot undo: you can't undo more operations than the ones in the scope history`);
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* V2 of undoOperation for protocol version 2+.
|
|
46
|
-
* Key differences from undoOperation:
|
|
47
|
-
* - Never reuses operation index (always increments)
|
|
48
|
-
* - Always sets skip=1 (consecutive NOOPs are handled during rebuild/GC)
|
|
49
|
-
* - No complex skip calculation - simpler model where each UNDO is independent
|
|
50
|
-
*/
|
|
51
|
-
export function undoOperationV2(document, action, skip) {
|
|
52
|
-
const { scope } = action;
|
|
53
|
-
const defaultResult = {
|
|
54
|
-
document,
|
|
55
|
-
action,
|
|
56
|
-
skip,
|
|
57
|
-
reuseLastOperationIndex: false,
|
|
58
|
-
};
|
|
59
|
-
return create(defaultResult, (draft) => {
|
|
60
|
-
const operations = document.operations[scope] || [];
|
|
61
|
-
const sortedOperations = sortOperations([...operations]);
|
|
62
|
-
// Count non-NOOP operations to determine if there's anything to undo
|
|
63
|
-
const nonNoopOps = sortedOperations.filter((op) => op.action.type !== "NOOP");
|
|
64
|
-
// Count consecutive NOOPs at the end (these represent pending undos)
|
|
65
|
-
let noopChainLength = 0;
|
|
66
|
-
for (let i = sortedOperations.length - 1; i >= 0; i--) {
|
|
67
|
-
if (sortedOperations[i].action.type === "NOOP") {
|
|
68
|
-
noopChainLength++;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
// Check if we can undo: need more non-NOOP ops than the current NOOP chain
|
|
75
|
-
if (nonNoopOps.length <= noopChainLength) {
|
|
76
|
-
throw new Error(`Cannot undo: no more operations to undo in scope history`);
|
|
77
|
-
}
|
|
78
|
-
draft.action = noop(scope);
|
|
79
|
-
draft.skip = 1;
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
export function redoOperation(document, action, skip) {
|
|
83
|
-
const { scope, input } = action;
|
|
84
|
-
const defaultResult = {
|
|
85
|
-
document,
|
|
86
|
-
action,
|
|
87
|
-
skip,
|
|
88
|
-
reuseLastOperationIndex: false,
|
|
89
|
-
};
|
|
90
|
-
return create(defaultResult, (draft) => {
|
|
91
|
-
if (draft.skip > 0) {
|
|
92
|
-
throw new Error(`Cannot redo: skip value from reducer cannot be used with REDO action`);
|
|
93
|
-
}
|
|
94
|
-
// Handle both object format { count: number } and legacy number format
|
|
95
|
-
const count = typeof input === "object" && input !== null && "count" in input
|
|
96
|
-
? input.count
|
|
97
|
-
: input;
|
|
98
|
-
if (typeof count !== "number" || count > 1) {
|
|
99
|
-
throw new Error(`Cannot redo: you can only redo one operation at a time`);
|
|
100
|
-
}
|
|
101
|
-
if (typeof count !== "number" || count < 1) {
|
|
102
|
-
throw new Error(`Invalid REDO action: invalid redo input value`);
|
|
103
|
-
}
|
|
104
|
-
if (draft.document.clipboard.length < 1) {
|
|
105
|
-
throw new Error(`Cannot redo: no operations in the clipboard`);
|
|
106
|
-
}
|
|
107
|
-
const operationIndex = draft.document.clipboard.findLastIndex((op) => op.action.scope === scope);
|
|
108
|
-
if (operationIndex < 0) {
|
|
109
|
-
throw new Error(`Cannot redo: no operations in clipboard for scope "${scope}"`);
|
|
110
|
-
}
|
|
111
|
-
const operation = draft.document.clipboard.splice(operationIndex, 1)[0];
|
|
112
|
-
draft.action = castDraft({
|
|
113
|
-
type: operation.action.type,
|
|
114
|
-
scope: operation.action.scope,
|
|
115
|
-
input: operation.action.input,
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
export function loadStateOperation(document, action) {
|
|
120
|
-
return {
|
|
121
|
-
...document,
|
|
122
|
-
header: { ...document.header, name: action.state.name },
|
|
123
|
-
state: action.state.data,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
//# sourceMappingURL=operations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/core/operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ph-types.d.ts","sourceRoot":"","sources":["../../../src/core/ph-types.ts"],"names":[],"mappings":"AAOA,mBAAmB,oDAAoD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ph-types.js","sourceRoot":"","sources":["../../../src/core/ph-types.ts"],"names":[],"mappings":""}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { type OperationContext } from "./actions.js";
|
|
2
|
-
import type { Action, DocumentOperations, Operation, PHBaseState, PHDocument, PHDocumentHeader } from "./ph-types.js";
|
|
3
|
-
import type { PruneActionInput, Reducer, ReducerOptions, ReplayDocumentOptions, SignalDispatch, SkipHeaderOperations, StateReducer } from "./types.js";
|
|
4
|
-
export declare function replayOperations<TState extends PHBaseState = PHBaseState>(initialState: TState, clearedOperations: DocumentOperations, stateReducer: StateReducer<TState>, header: PHDocumentHeader, dispatch?: SignalDispatch, documentReducer?: typeof baseReducer, skipHeaderOperations?: SkipHeaderOperations, options?: ReplayDocumentOptions): PHDocument<TState>;
|
|
5
|
-
/**
|
|
6
|
-
* Updates the document state based on the provided action.
|
|
7
|
-
*
|
|
8
|
-
* @param state The current state of the document.
|
|
9
|
-
* @param action The action being applied to the document.
|
|
10
|
-
* @param skip The number of operations to skip before applying the action.
|
|
11
|
-
* @param reuseLastOperationIndex Whether to reuse the last operation index (used when a an UNDO operation is performed after an existing one).
|
|
12
|
-
* @param context The operation context for deterministic ID generation.
|
|
13
|
-
* @returns The updated document state.
|
|
14
|
-
*/
|
|
15
|
-
export declare function updateDocument<TDocument extends PHDocument>(document: TDocument, action: Action, reuseLastOperationIndex: boolean, skip: number, context: OperationContext, operation?: Operation, skipIndexValidation?: boolean): TDocument;
|
|
16
|
-
/**
|
|
17
|
-
* Processes an UNDO or REDO action.
|
|
18
|
-
*
|
|
19
|
-
* @param document The current state of the document.
|
|
20
|
-
* @param action The action being applied to the document.
|
|
21
|
-
* @param skip The number of operations to skip before applying the action.
|
|
22
|
-
* @returns The updated document, calculated skip value and transformed action (if applied).
|
|
23
|
-
*/
|
|
24
|
-
export declare function processUndoRedo<TState extends PHBaseState = PHBaseState>(document: PHDocument<TState>, action: Action, skip: number, protocolVersion?: number): {
|
|
25
|
-
document: PHDocument<TState>;
|
|
26
|
-
action: Action;
|
|
27
|
-
skip: number;
|
|
28
|
-
reuseLastOperationIndex: boolean;
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Base document reducer that wraps a custom document reducer and handles
|
|
32
|
-
* document-level actions such as undo, redo, prune, and set name.
|
|
33
|
-
*
|
|
34
|
-
* @template TGlobalState - The type of the state of the custom reducer.
|
|
35
|
-
* @template TAction - The type of the actions of the custom reducer.
|
|
36
|
-
* @param state - The current state of the document.
|
|
37
|
-
* @param action - The action object to apply to the state.
|
|
38
|
-
* @param customReducer - The custom reducer that implements the application logic
|
|
39
|
-
* specific to the document's state.
|
|
40
|
-
* @returns The new state of the document.
|
|
41
|
-
*/
|
|
42
|
-
export declare function baseReducer<TState extends PHBaseState = PHBaseState>(document: PHDocument<TState>, action: Action, customReducer: StateReducer<TState>, dispatch?: SignalDispatch, options?: ReducerOptions): PHDocument<TState>;
|
|
43
|
-
/**
|
|
44
|
-
* Helper function to create a document model reducer.
|
|
45
|
-
*
|
|
46
|
-
* @remarks
|
|
47
|
-
* This function creates a new reducer that wraps the provided `reducer` with
|
|
48
|
-
* `documentReducer`, adding support for document actions:
|
|
49
|
-
* - `SET_NAME`
|
|
50
|
-
* - `UNDO`
|
|
51
|
-
* - `REDO`
|
|
52
|
-
* - `PRUNE`
|
|
53
|
-
*
|
|
54
|
-
* It also updates the document-related attributes on every operation.
|
|
55
|
-
*
|
|
56
|
-
* @param reducer - The custom reducer to wrap.
|
|
57
|
-
* @param documentReducer - The document reducer to use.
|
|
58
|
-
*
|
|
59
|
-
* @returns The new reducer.
|
|
60
|
-
*/
|
|
61
|
-
export declare function createReducer<TState extends PHBaseState = PHBaseState>(stateReducer: StateReducer<TState>, documentReducer?: typeof baseReducer): Reducer<TState>;
|
|
62
|
-
export declare function pruneOperation<TState extends PHBaseState = PHBaseState>(document: PHDocument<TState>, input: PruneActionInput, wrappedReducer: StateReducer<TState>): PHDocument<TState>;
|
|
63
|
-
//# sourceMappingURL=reducer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../src/core/reducer.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AAuBtB,OAAO,KAAK,EACV,MAAM,EACN,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,UAAU,EACV,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,WAAW,GAAG,WAAW,EACvE,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,kBAAkB,EACrC,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,EAClC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,CAAC,EAAE,cAAc,EACzB,eAAe,qBAAc,EAC7B,oBAAoB,GAAE,oBAAyB,EAC/C,OAAO,CAAC,EAAE,qBAAqB,GAC9B,UAAU,CAAC,MAAM,CAAC,CAcpB;AAmFD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,SAAS,SAAS,UAAU,EACzD,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,MAAM,EACd,uBAAuB,EAAE,OAAO,EAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,gBAAgB,EACzB,SAAS,CAAC,EAAE,SAAS,EACrB,mBAAmB,CAAC,EAAE,OAAO,GAC5B,SAAS,CA6BX;AA+BD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,SAAS,WAAW,GAAG,WAAW,EACtE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,EAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,eAAe,SAAI,GAClB;IACD,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB,EAAE,OAAO,CAAC;CAClC,CAYA;AAqHD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,MAAM,SAAS,WAAW,GAAG,WAAW,EAClE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,EAC5B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,EACnC,QAAQ,CAAC,EAAE,cAAc,EACzB,OAAO,GAAE,cAAmB,GAC3B,UAAU,CAAC,MAAM,CAAC,CA+OpB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAS,WAAW,GAAG,WAAW,EACpE,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,EAClC,eAAe,qBAAc,GAC5B,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,wBAAgB,cAAc,CAAC,MAAM,SAAS,WAAW,GAAG,WAAW,EACrE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,EAC5B,KAAK,EAAE,gBAAgB,EACvB,cAAc,EAAE,YAAY,CAAC,MAAM,CAAC,GACnC,UAAU,CAAC,MAAM,CAAC,CAoEpB"}
|