pushwork 2.0.0-a.sub.1 → 2.0.0-preview
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/branches.d.ts +19 -0
- package/dist/branches.d.ts.map +1 -0
- package/dist/branches.js +111 -0
- package/dist/branches.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +238 -272
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +17 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +84 -0
- package/dist/config.js.map +1 -0
- package/dist/fs-tree.d.ts +6 -0
- package/dist/fs-tree.d.ts.map +1 -0
- package/dist/fs-tree.js +99 -0
- package/dist/fs-tree.js.map +1 -0
- package/dist/ignore.d.ts +6 -0
- package/dist/ignore.d.ts.map +1 -0
- package/dist/ignore.js +74 -0
- package/dist/ignore.js.map +1 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -4
- package/dist/index.js.map +1 -1
- package/dist/log.d.ts +3 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +14 -0
- package/dist/log.js.map +1 -0
- package/dist/pushwork.d.ts +115 -0
- package/dist/pushwork.d.ts.map +1 -0
- package/dist/pushwork.js +918 -0
- package/dist/pushwork.js.map +1 -0
- package/dist/repo.d.ts +14 -0
- package/dist/repo.d.ts.map +1 -0
- package/dist/repo.js +60 -0
- package/dist/repo.js.map +1 -0
- package/dist/shapes/custom.d.ts +3 -0
- package/dist/shapes/custom.d.ts.map +1 -0
- package/dist/shapes/custom.js +57 -0
- package/dist/shapes/custom.js.map +1 -0
- package/dist/shapes/file.d.ts +20 -0
- package/dist/shapes/file.d.ts.map +1 -0
- package/dist/shapes/file.js +140 -0
- package/dist/shapes/file.js.map +1 -0
- package/dist/shapes/index.d.ts +10 -0
- package/dist/shapes/index.d.ts.map +1 -0
- package/dist/shapes/index.js +35 -0
- package/dist/shapes/index.js.map +1 -0
- package/dist/shapes/patchwork-folder.d.ts +3 -0
- package/dist/shapes/patchwork-folder.d.ts.map +1 -0
- package/dist/shapes/patchwork-folder.js +160 -0
- package/dist/shapes/patchwork-folder.js.map +1 -0
- package/dist/shapes/types.d.ts +37 -0
- package/dist/shapes/types.d.ts.map +1 -0
- package/dist/shapes/types.js +52 -0
- package/dist/shapes/types.js.map +1 -0
- package/dist/shapes/vfs.d.ts +3 -0
- package/dist/shapes/vfs.d.ts.map +1 -0
- package/dist/shapes/vfs.js +88 -0
- package/dist/shapes/vfs.js.map +1 -0
- package/dist/stash.d.ts +23 -0
- package/dist/stash.d.ts.map +1 -0
- package/dist/stash.js +118 -0
- package/dist/stash.js.map +1 -0
- package/flake.lock +128 -0
- package/flake.nix +66 -0
- package/package.json +15 -48
- package/patches/@automerge__automerge-repo@2.6.0-subduction.15.patch +26 -0
- package/pnpm-workspace.yaml +5 -0
- package/src/branches.ts +93 -0
- package/src/cli.ts +258 -408
- package/src/config.ts +64 -0
- package/src/fs-tree.ts +70 -0
- package/src/ignore.ts +33 -0
- package/src/index.ts +38 -4
- package/src/log.ts +8 -0
- package/src/pushwork.ts +1055 -0
- package/src/repo.ts +76 -0
- package/src/shapes/custom.ts +29 -0
- package/src/shapes/file.ts +115 -0
- package/src/shapes/index.ts +19 -0
- package/src/shapes/patchwork-folder.ts +156 -0
- package/src/shapes/types.ts +79 -0
- package/src/shapes/vfs.ts +93 -0
- package/src/stash.ts +106 -0
- package/test/integration/branches.test.ts +389 -0
- package/test/integration/pushwork.test.ts +547 -0
- package/test/setup.ts +29 -0
- package/test/unit/doc-shape.test.ts +612 -0
- package/tsconfig.json +2 -3
- package/vitest.config.ts +14 -0
- package/ARCHITECTURE-ACCORDING-TO-CLAUDE.md +0 -248
- package/CLAUDE.md +0 -141
- package/README.md +0 -221
- package/babel.config.js +0 -5
- package/dist/cli/commands.d.ts +0 -71
- package/dist/cli/commands.d.ts.map +0 -1
- package/dist/cli/commands.js +0 -794
- package/dist/cli/commands.js.map +0 -1
- package/dist/cli/index.d.ts +0 -2
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -19
- package/dist/cli/index.js.map +0 -1
- package/dist/commands.d.ts +0 -61
- package/dist/commands.d.ts.map +0 -1
- package/dist/commands.js +0 -861
- package/dist/commands.js.map +0 -1
- package/dist/config/index.d.ts +0 -71
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -314
- package/dist/config/index.js.map +0 -1
- package/dist/core/change-detection.d.ts +0 -80
- package/dist/core/change-detection.d.ts.map +0 -1
- package/dist/core/change-detection.js +0 -523
- package/dist/core/change-detection.js.map +0 -1
- package/dist/core/config.d.ts +0 -81
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js +0 -258
- package/dist/core/config.js.map +0 -1
- package/dist/core/index.d.ts +0 -6
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -6
- package/dist/core/index.js.map +0 -1
- package/dist/core/move-detection.d.ts +0 -34
- package/dist/core/move-detection.d.ts.map +0 -1
- package/dist/core/move-detection.js +0 -121
- package/dist/core/move-detection.js.map +0 -1
- package/dist/core/snapshot.d.ts +0 -105
- package/dist/core/snapshot.d.ts.map +0 -1
- package/dist/core/snapshot.js +0 -217
- package/dist/core/snapshot.js.map +0 -1
- package/dist/core/sync-engine.d.ts +0 -157
- package/dist/core/sync-engine.d.ts.map +0 -1
- package/dist/core/sync-engine.js +0 -1379
- package/dist/core/sync-engine.js.map +0 -1
- package/dist/types/config.d.ts +0 -99
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -5
- package/dist/types/config.js.map +0 -1
- package/dist/types/documents.d.ts +0 -88
- package/dist/types/documents.d.ts.map +0 -1
- package/dist/types/documents.js +0 -20
- package/dist/types/documents.js.map +0 -1
- package/dist/types/index.d.ts +0 -4
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -4
- package/dist/types/index.js.map +0 -1
- package/dist/types/snapshot.d.ts +0 -64
- package/dist/types/snapshot.d.ts.map +0 -1
- package/dist/types/snapshot.js +0 -2
- package/dist/types/snapshot.js.map +0 -1
- package/dist/utils/content-similarity.d.ts +0 -53
- package/dist/utils/content-similarity.d.ts.map +0 -1
- package/dist/utils/content-similarity.js +0 -155
- package/dist/utils/content-similarity.js.map +0 -1
- package/dist/utils/content.d.ts +0 -10
- package/dist/utils/content.d.ts.map +0 -1
- package/dist/utils/content.js +0 -31
- package/dist/utils/content.js.map +0 -1
- package/dist/utils/directory.d.ts +0 -24
- package/dist/utils/directory.d.ts.map +0 -1
- package/dist/utils/directory.js +0 -52
- package/dist/utils/directory.js.map +0 -1
- package/dist/utils/fs.d.ts +0 -74
- package/dist/utils/fs.d.ts.map +0 -1
- package/dist/utils/fs.js +0 -248
- package/dist/utils/fs.js.map +0 -1
- package/dist/utils/index.d.ts +0 -5
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -5
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/mime-types.d.ts +0 -13
- package/dist/utils/mime-types.d.ts.map +0 -1
- package/dist/utils/mime-types.js +0 -209
- package/dist/utils/mime-types.js.map +0 -1
- package/dist/utils/network-sync.d.ts +0 -36
- package/dist/utils/network-sync.d.ts.map +0 -1
- package/dist/utils/network-sync.js +0 -250
- package/dist/utils/network-sync.js.map +0 -1
- package/dist/utils/node-polyfills.d.ts +0 -9
- package/dist/utils/node-polyfills.d.ts.map +0 -1
- package/dist/utils/node-polyfills.js +0 -9
- package/dist/utils/node-polyfills.js.map +0 -1
- package/dist/utils/output.d.ts +0 -129
- package/dist/utils/output.d.ts.map +0 -1
- package/dist/utils/output.js +0 -368
- package/dist/utils/output.js.map +0 -1
- package/dist/utils/repo-factory.d.ts +0 -13
- package/dist/utils/repo-factory.d.ts.map +0 -1
- package/dist/utils/repo-factory.js +0 -46
- package/dist/utils/repo-factory.js.map +0 -1
- package/dist/utils/string-similarity.d.ts +0 -14
- package/dist/utils/string-similarity.d.ts.map +0 -1
- package/dist/utils/string-similarity.js +0 -39
- package/dist/utils/string-similarity.js.map +0 -1
- package/dist/utils/text-diff.d.ts +0 -37
- package/dist/utils/text-diff.d.ts.map +0 -1
- package/dist/utils/text-diff.js +0 -93
- package/dist/utils/text-diff.js.map +0 -1
- package/dist/utils/trace.d.ts +0 -19
- package/dist/utils/trace.d.ts.map +0 -1
- package/dist/utils/trace.js +0 -63
- package/dist/utils/trace.js.map +0 -1
- package/src/commands.ts +0 -1134
- package/src/core/change-detection.ts +0 -712
- package/src/core/config.ts +0 -313
- package/src/core/index.ts +0 -5
- package/src/core/move-detection.ts +0 -169
- package/src/core/snapshot.ts +0 -275
- package/src/core/sync-engine.ts +0 -1795
- package/src/types/config.ts +0 -111
- package/src/types/documents.ts +0 -91
- package/src/types/index.ts +0 -3
- package/src/types/snapshot.ts +0 -67
- package/src/utils/content.ts +0 -34
- package/src/utils/directory.ts +0 -73
- package/src/utils/fs.ts +0 -297
- package/src/utils/index.ts +0 -4
- package/src/utils/mime-types.ts +0 -244
- package/src/utils/network-sync.ts +0 -319
- package/src/utils/node-polyfills.ts +0 -8
- package/src/utils/output.ts +0 -450
- package/src/utils/repo-factory.ts +0 -73
- package/src/utils/string-similarity.ts +0 -54
- package/src/utils/text-diff.ts +0 -101
- package/src/utils/trace.ts +0 -70
- package/test/integration/README.md +0 -328
- package/test/integration/clone-test.sh +0 -310
- package/test/integration/conflict-resolution-test.sh +0 -309
- package/test/integration/debug-both-nested.sh +0 -74
- package/test/integration/debug-concurrent-nested.sh +0 -87
- package/test/integration/debug-nested.sh +0 -73
- package/test/integration/deletion-behavior-test.sh +0 -487
- package/test/integration/deletion-sync-test-simple.sh +0 -193
- package/test/integration/deletion-sync-test.sh +0 -297
- package/test/integration/exclude-patterns.test.ts +0 -144
- package/test/integration/full-integration-test.sh +0 -363
- package/test/integration/fuzzer.test.ts +0 -818
- package/test/integration/in-memory-sync.test.ts +0 -830
- package/test/integration/init-sync.test.ts +0 -89
- package/test/integration/manual-sync-test.sh +0 -84
- package/test/integration/sync-deletion.test.ts +0 -280
- package/test/integration/sync-flow.test.ts +0 -291
- package/test/jest.setup.ts +0 -34
- package/test/run-tests.sh +0 -225
- package/test/unit/deletion-behavior.test.ts +0 -249
- package/test/unit/enhanced-mime-detection.test.ts +0 -244
- package/test/unit/snapshot.test.ts +0 -404
- package/test/unit/sync-convergence.test.ts +0 -298
- package/test/unit/sync-timing.test.ts +0 -134
- package/test/unit/utils.test.ts +0 -366
package/dist/utils/output.d.ts
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Clean terminal output manager (Singleton)
|
|
3
|
-
* - Progress stays on one line (spinner updates in place)
|
|
4
|
-
* - No emojis
|
|
5
|
-
* - Background colors for section headers
|
|
6
|
-
* - Minimal output
|
|
7
|
-
* - Supports scrolling task lines (max-lines)
|
|
8
|
-
*/
|
|
9
|
-
export declare class Output {
|
|
10
|
-
#private;
|
|
11
|
-
private static instance;
|
|
12
|
-
private spinner;
|
|
13
|
-
private taskStartTime;
|
|
14
|
-
private taskOriginalMessage;
|
|
15
|
-
private taskCurrentMessage;
|
|
16
|
-
private taskLines;
|
|
17
|
-
private taskMaxLines;
|
|
18
|
-
private constructor();
|
|
19
|
-
/**
|
|
20
|
-
* Get the singleton instance
|
|
21
|
-
*/
|
|
22
|
-
static getInstance(): Output;
|
|
23
|
-
/**
|
|
24
|
-
* Reset the singleton (useful for testing)
|
|
25
|
-
*/
|
|
26
|
-
static reset(): void;
|
|
27
|
-
/**
|
|
28
|
-
* Start a task with spinner - updates in place
|
|
29
|
-
* Completes any previous task before starting the new one
|
|
30
|
-
* @param message - The task message
|
|
31
|
-
* @param maxLines - Maximum number of task lines to show (0 = unlimited, lines scroll)
|
|
32
|
-
*/
|
|
33
|
-
task(message: string, maxLines?: number): void;
|
|
34
|
-
/**
|
|
35
|
-
* Update spinner text (stays on same line)
|
|
36
|
-
*/
|
|
37
|
-
update(message: string): void;
|
|
38
|
-
/**
|
|
39
|
-
* Add a line to the active task (appears below spinner, scrolls if max-lines set)
|
|
40
|
-
* Lines are dimmed and temporary - they disappear when task completes unless kept
|
|
41
|
-
* If no task is active, displays as a regular log message
|
|
42
|
-
*/
|
|
43
|
-
taskLine(message: string, keepOnComplete?: boolean): void;
|
|
44
|
-
/**
|
|
45
|
-
* Clear all task lines (useful when you want to reset the scrolling window)
|
|
46
|
-
*/
|
|
47
|
-
clearTaskLines(): void;
|
|
48
|
-
/**
|
|
49
|
-
* Complete task with optional duration display
|
|
50
|
-
* Defaults to showing the original task message with duration
|
|
51
|
-
* Task lines marked with keepOnComplete will be preserved, others are cleared
|
|
52
|
-
*/
|
|
53
|
-
done(message?: string, showTime?: boolean): void;
|
|
54
|
-
/**
|
|
55
|
-
* Show an object as a table of key-value pairs
|
|
56
|
-
* Filters out undefined values and applies optional transforms
|
|
57
|
-
* Automatically calculates key padding from max key length
|
|
58
|
-
*/
|
|
59
|
-
obj(obj: Record<string, any>, keyTransform?: (key: string) => string, valueTransform?: (value: any, key: string) => string): void;
|
|
60
|
-
/**
|
|
61
|
-
* Display array as bulleted list
|
|
62
|
-
* Each item shown with dim bullet and white text
|
|
63
|
-
*/
|
|
64
|
-
arr(items: any[]): void;
|
|
65
|
-
/**
|
|
66
|
-
* Show plain message with optional color
|
|
67
|
-
*/
|
|
68
|
-
log(message: string, color?: "red" | "green" | "yellow" | "blue" | "cyan" | "magenta" | "gray" | "dim"): void;
|
|
69
|
-
/**
|
|
70
|
-
* Show success message (green text)
|
|
71
|
-
*/
|
|
72
|
-
success(message: string): void;
|
|
73
|
-
/**
|
|
74
|
-
* Show success block (green background label + optional message)
|
|
75
|
-
*/
|
|
76
|
-
successBlock(label: string, message?: string): void;
|
|
77
|
-
/**
|
|
78
|
-
* Show success message (green text)
|
|
79
|
-
*/
|
|
80
|
-
spicy(message: string): void;
|
|
81
|
-
/**
|
|
82
|
-
* Show success block (green background label + optional message)
|
|
83
|
-
*/
|
|
84
|
-
spicyBlock(label: string, message?: string): void;
|
|
85
|
-
/**
|
|
86
|
-
* Show message with rainbow gradient
|
|
87
|
-
*/
|
|
88
|
-
rainbow(message: string): void;
|
|
89
|
-
/**
|
|
90
|
-
* Show info message (dim text)
|
|
91
|
-
*/
|
|
92
|
-
info(message: string): void;
|
|
93
|
-
/**
|
|
94
|
-
* Show info block (grey background label + optional message)
|
|
95
|
-
*/
|
|
96
|
-
infoBlock(label: string, message?: string): void;
|
|
97
|
-
/**
|
|
98
|
-
* Show error message (red text) - fails spinner if running
|
|
99
|
-
*/
|
|
100
|
-
error(message: string | Error | unknown): void;
|
|
101
|
-
/**
|
|
102
|
-
* Show error block (red background label + optional message) - fails spinner if running
|
|
103
|
-
*/
|
|
104
|
-
errorBlock(label: string, message?: string): void;
|
|
105
|
-
/**
|
|
106
|
-
* Show warning message (yellow text)
|
|
107
|
-
*/
|
|
108
|
-
warn(message: string): void;
|
|
109
|
-
/**
|
|
110
|
-
* Show warning block (yellow background label + optional message)
|
|
111
|
-
*/
|
|
112
|
-
warnBlock(label: string, message?: string): void;
|
|
113
|
-
/**
|
|
114
|
-
* Show detailed error information and exit the program
|
|
115
|
-
* Use this when an unexpected/unrecoverable error occurs
|
|
116
|
-
* Shows error message and stack trace, then exits
|
|
117
|
-
*/
|
|
118
|
-
crash(error: unknown, exitCode?: number): never;
|
|
119
|
-
/**
|
|
120
|
-
* Exit with code
|
|
121
|
-
*/
|
|
122
|
-
exit(code?: number): never;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Global singleton output instance
|
|
126
|
-
* Import and use this anywhere in your code
|
|
127
|
-
*/
|
|
128
|
-
export declare const out: Output;
|
|
129
|
-
//# sourceMappingURL=output.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,qBAAa,MAAM;;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuB;IAC9C,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,YAAY,CAAa;IAEjC,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,MAAM;IAO5B;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAQpB;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,IAAI;IAcjD;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO7B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,GAAE,OAAe,GAAG,IAAI;IAkBhE;;OAEG;IACH,cAAc,IAAI,IAAI;IAiCtB;;;;OAIG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAc,GAAG,IAAI;IAuCtD;;;;OAIG;IACH,GAAG,CACD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EACtC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,GACnD,IAAI;IA0BP;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI;IASvB;;OAEG;IACH,GAAG,CACD,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EACF,KAAK,GACL,OAAO,GACP,QAAQ,GACR,MAAM,GACN,MAAM,GACN,SAAS,GACT,MAAM,GACN,KAAK,GACR,IAAI;IAWP;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAW,GAAG,IAAI;IAOvD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK5B;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAW,GAAG,IAAI;IAOrD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IA8B9B;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK3B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAW,GAAG,IAAI;IAOpD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI;IAmB9C;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAW,GAAG,IAAI;IAarD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK3B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAW,GAAG,IAAI;IAOpD;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAE,MAAU,GAAG,KAAK;IAuBlD;;OAEG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK;CAoB3B;AAED;;;GAGG;AACH,eAAO,MAAM,GAAG,QAAuB,CAAC"}
|
package/dist/utils/output.js
DELETED
|
@@ -1,368 +0,0 @@
|
|
|
1
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
-
};
|
|
6
|
-
var _Output_instances, _Output_updateTaskDisplay, _Output_stopTask;
|
|
7
|
-
import chalk from "chalk";
|
|
8
|
-
import ora from "ora";
|
|
9
|
-
/**
|
|
10
|
-
* Clean terminal output manager (Singleton)
|
|
11
|
-
* - Progress stays on one line (spinner updates in place)
|
|
12
|
-
* - No emojis
|
|
13
|
-
* - Background colors for section headers
|
|
14
|
-
* - Minimal output
|
|
15
|
-
* - Supports scrolling task lines (max-lines)
|
|
16
|
-
*/
|
|
17
|
-
export class Output {
|
|
18
|
-
constructor() {
|
|
19
|
-
_Output_instances.add(this);
|
|
20
|
-
this.spinner = null;
|
|
21
|
-
this.taskStartTime = null;
|
|
22
|
-
this.taskOriginalMessage = null; // Original task message for done()
|
|
23
|
-
this.taskCurrentMessage = null; // Current display message (can be updated)
|
|
24
|
-
this.taskLines = []; // Lines written during active task
|
|
25
|
-
this.taskMaxLines = 0; // 0 = unlimited
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Get the singleton instance
|
|
29
|
-
*/
|
|
30
|
-
static getInstance() {
|
|
31
|
-
if (!Output.instance) {
|
|
32
|
-
Output.instance = new Output();
|
|
33
|
-
}
|
|
34
|
-
return Output.instance;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Reset the singleton (useful for testing)
|
|
38
|
-
*/
|
|
39
|
-
static reset() {
|
|
40
|
-
if (Output.instance?.spinner) {
|
|
41
|
-
Output.instance.spinner.stop();
|
|
42
|
-
Output.instance.spinner.clear();
|
|
43
|
-
}
|
|
44
|
-
Output.instance = null;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Start a task with spinner - updates in place
|
|
48
|
-
* Completes any previous task before starting the new one
|
|
49
|
-
* @param message - The task message
|
|
50
|
-
* @param maxLines - Maximum number of task lines to show (0 = unlimited, lines scroll)
|
|
51
|
-
*/
|
|
52
|
-
task(message, maxLines = 0) {
|
|
53
|
-
// Complete any existing task first
|
|
54
|
-
if (this.spinner) {
|
|
55
|
-
this.done();
|
|
56
|
-
}
|
|
57
|
-
this.taskStartTime = Date.now();
|
|
58
|
-
this.taskOriginalMessage = message;
|
|
59
|
-
this.taskCurrentMessage = message;
|
|
60
|
-
this.taskMaxLines = maxLines;
|
|
61
|
-
this.taskLines = [];
|
|
62
|
-
this.spinner = ora(message).start();
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Update spinner text (stays on same line)
|
|
66
|
-
*/
|
|
67
|
-
update(message) {
|
|
68
|
-
if (this.spinner) {
|
|
69
|
-
this.taskCurrentMessage = message;
|
|
70
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_updateTaskDisplay).call(this);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Add a line to the active task (appears below spinner, scrolls if max-lines set)
|
|
75
|
-
* Lines are dimmed and temporary - they disappear when task completes unless kept
|
|
76
|
-
* If no task is active, displays as a regular log message
|
|
77
|
-
*/
|
|
78
|
-
taskLine(message, keepOnComplete = false) {
|
|
79
|
-
if (!this.spinner) {
|
|
80
|
-
// No active task, just log normally as regular output
|
|
81
|
-
this.info(message);
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
// Add to task lines buffer with keep flag
|
|
85
|
-
this.taskLines.push(keepOnComplete ? `[keep]${message}` : message);
|
|
86
|
-
// If max lines set, trim from the start (scroll)
|
|
87
|
-
if (this.taskMaxLines > 0 && this.taskLines.length > this.taskMaxLines) {
|
|
88
|
-
this.taskLines = this.taskLines.slice(-this.taskMaxLines);
|
|
89
|
-
}
|
|
90
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_updateTaskDisplay).call(this);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Clear all task lines (useful when you want to reset the scrolling window)
|
|
94
|
-
*/
|
|
95
|
-
clearTaskLines() {
|
|
96
|
-
this.taskLines = [];
|
|
97
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_updateTaskDisplay).call(this);
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Complete task with optional duration display
|
|
101
|
-
* Defaults to showing the original task message with duration
|
|
102
|
-
* Task lines marked with keepOnComplete will be preserved, others are cleared
|
|
103
|
-
*/
|
|
104
|
-
done(message, showTime = true) {
|
|
105
|
-
if (!this.spinner)
|
|
106
|
-
return;
|
|
107
|
-
let text = message || this.taskOriginalMessage || "done";
|
|
108
|
-
if (showTime && this.taskStartTime) {
|
|
109
|
-
const durationMs = Date.now() - this.taskStartTime;
|
|
110
|
-
const durationText = (() => {
|
|
111
|
-
switch (true) {
|
|
112
|
-
case durationMs < 1000:
|
|
113
|
-
return `${durationMs}ms`;
|
|
114
|
-
case durationMs < 2000:
|
|
115
|
-
return `${(durationMs / 1000).toFixed(2)}s`;
|
|
116
|
-
default:
|
|
117
|
-
return `${(durationMs / 1000).toFixed(1)}s`;
|
|
118
|
-
}
|
|
119
|
-
})();
|
|
120
|
-
text += chalk.dim(` (${durationText})`);
|
|
121
|
-
}
|
|
122
|
-
// Clear multiline text and set to just completion message
|
|
123
|
-
this.spinner.text = text;
|
|
124
|
-
this.spinner.succeed();
|
|
125
|
-
this.spinner = null;
|
|
126
|
-
// Print kept task lines after completion
|
|
127
|
-
const keptLines = this.taskLines.filter((line) => line.startsWith("[keep]"));
|
|
128
|
-
for (const line of keptLines) {
|
|
129
|
-
console.log(chalk.dim(` ${line.slice(6)}`));
|
|
130
|
-
}
|
|
131
|
-
this.taskStartTime = null;
|
|
132
|
-
this.taskOriginalMessage = null;
|
|
133
|
-
this.taskCurrentMessage = null;
|
|
134
|
-
this.taskLines = [];
|
|
135
|
-
this.taskMaxLines = 0;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Show an object as a table of key-value pairs
|
|
139
|
-
* Filters out undefined values and applies optional transforms
|
|
140
|
-
* Automatically calculates key padding from max key length
|
|
141
|
-
*/
|
|
142
|
-
obj(obj, keyTransform, valueTransform) {
|
|
143
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_stopTask).call(this);
|
|
144
|
-
// Filter out undefined values and apply key transform
|
|
145
|
-
const entries = [];
|
|
146
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
147
|
-
if (value === undefined)
|
|
148
|
-
continue;
|
|
149
|
-
const displayKey = keyTransform ? keyTransform(key) : key;
|
|
150
|
-
entries.push([key, displayKey, value]);
|
|
151
|
-
}
|
|
152
|
-
// Calculate max key length for padding
|
|
153
|
-
const maxKeyLength = Math.max(...entries.map(([, displayKey]) => displayKey.length));
|
|
154
|
-
// Print each entry
|
|
155
|
-
for (const [key, displayKey, value] of entries) {
|
|
156
|
-
const displayValue = valueTransform
|
|
157
|
-
? valueTransform(value, key)
|
|
158
|
-
: String(value);
|
|
159
|
-
const keyFormatted = chalk.dim(displayKey.padEnd(maxKeyLength + 2));
|
|
160
|
-
console.log(`${keyFormatted}${displayValue}`);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Display array as bulleted list
|
|
165
|
-
* Each item shown with dim bullet and white text
|
|
166
|
-
*/
|
|
167
|
-
arr(items) {
|
|
168
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_stopTask).call(this);
|
|
169
|
-
for (const item of items) {
|
|
170
|
-
const bullet = chalk.dim("• ");
|
|
171
|
-
console.log(`${bullet}${String(item)}`);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Show plain message with optional color
|
|
176
|
-
*/
|
|
177
|
-
log(message, color) {
|
|
178
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_stopTask).call(this);
|
|
179
|
-
if (color) {
|
|
180
|
-
const colorFn = color === "dim" ? chalk.dim : chalk[color];
|
|
181
|
-
console.log(colorFn(message));
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
console.log(message);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Show success message (green text)
|
|
189
|
-
*/
|
|
190
|
-
success(message) {
|
|
191
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_stopTask).call(this);
|
|
192
|
-
console.log(chalk.green(message));
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Show success block (green background label + optional message)
|
|
196
|
-
*/
|
|
197
|
-
successBlock(label, message = "") {
|
|
198
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_stopTask).call(this);
|
|
199
|
-
console.log(`\n${chalk.bgGreen.black(` ${label} `)}${message && ` ${message}`}`);
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Show success message (green text)
|
|
203
|
-
*/
|
|
204
|
-
spicy(message) {
|
|
205
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_stopTask).call(this);
|
|
206
|
-
console.log(chalk.cyan(message));
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Show success block (green background label + optional message)
|
|
210
|
-
*/
|
|
211
|
-
spicyBlock(label, message = "") {
|
|
212
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_stopTask).call(this);
|
|
213
|
-
console.log(`\n${chalk.bgCyan.black(` ${label} `)}${message && ` ${message}`}`);
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Show message with rainbow gradient
|
|
217
|
-
*/
|
|
218
|
-
rainbow(message) {
|
|
219
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_stopTask).call(this);
|
|
220
|
-
// Rainbow colors in order
|
|
221
|
-
const colors = [
|
|
222
|
-
chalk.red,
|
|
223
|
-
chalk.rgb(255, 165, 0), // orange
|
|
224
|
-
chalk.yellow,
|
|
225
|
-
chalk.green,
|
|
226
|
-
chalk.cyan,
|
|
227
|
-
chalk.blue,
|
|
228
|
-
chalk.magenta,
|
|
229
|
-
];
|
|
230
|
-
const chars = message.split("");
|
|
231
|
-
const colorCount = colors.length;
|
|
232
|
-
// Spread colors across the string
|
|
233
|
-
const rainbow = chars
|
|
234
|
-
.map((char, i) => {
|
|
235
|
-
// Calculate which color to use based on position
|
|
236
|
-
const colorIndex = Math.floor((i / chars.length) * colorCount);
|
|
237
|
-
const color = colors[Math.min(colorIndex, colorCount - 1)];
|
|
238
|
-
return color(char);
|
|
239
|
-
})
|
|
240
|
-
.join("");
|
|
241
|
-
console.log(rainbow);
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Show info message (dim text)
|
|
245
|
-
*/
|
|
246
|
-
info(message) {
|
|
247
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_stopTask).call(this);
|
|
248
|
-
console.log(chalk.dim(message));
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Show info block (grey background label + optional message)
|
|
252
|
-
*/
|
|
253
|
-
infoBlock(label, message = "") {
|
|
254
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_stopTask).call(this);
|
|
255
|
-
console.log(`\n${chalk.bgGrey.white(` ${label} `)}${message && ` ${message}`}`);
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Show error message (red text) - fails spinner if running
|
|
259
|
-
*/
|
|
260
|
-
error(message) {
|
|
261
|
-
if (this.spinner) {
|
|
262
|
-
this.spinner.fail("failed");
|
|
263
|
-
this.spinner = null;
|
|
264
|
-
this.taskStartTime = null;
|
|
265
|
-
this.taskOriginalMessage = null;
|
|
266
|
-
this.taskCurrentMessage = null;
|
|
267
|
-
}
|
|
268
|
-
console.log(chalk.red(message instanceof Error
|
|
269
|
-
? message.message
|
|
270
|
-
: message instanceof Object
|
|
271
|
-
? JSON.stringify(message)
|
|
272
|
-
: String(message)));
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Show error block (red background label + optional message) - fails spinner if running
|
|
276
|
-
*/
|
|
277
|
-
errorBlock(label, message = "") {
|
|
278
|
-
if (this.spinner) {
|
|
279
|
-
this.spinner.fail("failed");
|
|
280
|
-
this.spinner = null;
|
|
281
|
-
this.taskStartTime = null;
|
|
282
|
-
this.taskOriginalMessage = null;
|
|
283
|
-
this.taskCurrentMessage = null;
|
|
284
|
-
}
|
|
285
|
-
console.log(`\n${chalk.bgRed.white(` ${label} `)}${message && ` ${message}`}`);
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Show warning message (yellow text)
|
|
289
|
-
*/
|
|
290
|
-
warn(message) {
|
|
291
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_stopTask).call(this);
|
|
292
|
-
console.log(chalk.yellow(message));
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* Show warning block (yellow background label + optional message)
|
|
296
|
-
*/
|
|
297
|
-
warnBlock(label, message = "") {
|
|
298
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_stopTask).call(this);
|
|
299
|
-
console.log(`\n${chalk.bgYellow.black(` ${label} `)}${message && ` ${message}`}`);
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* Show detailed error information and exit the program
|
|
303
|
-
* Use this when an unexpected/unrecoverable error occurs
|
|
304
|
-
* Shows error message and stack trace, then exits
|
|
305
|
-
*/
|
|
306
|
-
crash(error, exitCode = 1) {
|
|
307
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_stopTask).call(this);
|
|
308
|
-
if (error instanceof Error) {
|
|
309
|
-
// Error type and message
|
|
310
|
-
console.log(chalk.red(`${error.name}: ${error.message}`));
|
|
311
|
-
// Stack trace
|
|
312
|
-
if (error.stack) {
|
|
313
|
-
console.log("");
|
|
314
|
-
console.log(chalk.dim("Stack trace:"));
|
|
315
|
-
const stackLines = error.stack.split("\n").slice(1); // Skip first line (error message)
|
|
316
|
-
stackLines.forEach((line) => console.log(chalk.dim(` ${line.trim()}`)));
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
else {
|
|
320
|
-
console.log(chalk.red(String(error)));
|
|
321
|
-
}
|
|
322
|
-
process.exit(exitCode);
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* Exit with code
|
|
326
|
-
*/
|
|
327
|
-
exit(code) {
|
|
328
|
-
__classPrivateFieldGet(this, _Output_instances, "m", _Output_stopTask).call(this);
|
|
329
|
-
process.exit(code || 0);
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
_Output_instances = new WeakSet(), _Output_updateTaskDisplay = function _Output_updateTaskDisplay() {
|
|
333
|
-
if (!this.spinner)
|
|
334
|
-
return;
|
|
335
|
-
const currentText = this.taskCurrentMessage || this.spinner.text.split("\n")[0] || "";
|
|
336
|
-
// If no task lines, show just the spinner message
|
|
337
|
-
if (this.taskLines.length === 0) {
|
|
338
|
-
this.spinner.text = currentText;
|
|
339
|
-
return;
|
|
340
|
-
}
|
|
341
|
-
// Build multiline text: spinner message + task lines below
|
|
342
|
-
const taskLinesText = this.taskLines
|
|
343
|
-
.map((line) => {
|
|
344
|
-
const cleanLine = line.startsWith("[keep]") ? line.slice(6) : line;
|
|
345
|
-
return chalk.dim(` ${cleanLine}`);
|
|
346
|
-
})
|
|
347
|
-
.join("\n");
|
|
348
|
-
// Set spinner text to include task lines (ora handles multiline rendering)
|
|
349
|
-
this.spinner.text = `${currentText}\n${taskLinesText}`;
|
|
350
|
-
}, _Output_stopTask = function _Output_stopTask() {
|
|
351
|
-
if (this.spinner) {
|
|
352
|
-
this.spinner.stop();
|
|
353
|
-
this.spinner.clear();
|
|
354
|
-
this.spinner = null;
|
|
355
|
-
}
|
|
356
|
-
this.taskStartTime = null;
|
|
357
|
-
this.taskOriginalMessage = null;
|
|
358
|
-
this.taskCurrentMessage = null;
|
|
359
|
-
this.taskLines = [];
|
|
360
|
-
this.taskMaxLines = 0;
|
|
361
|
-
};
|
|
362
|
-
Output.instance = null;
|
|
363
|
-
/**
|
|
364
|
-
* Global singleton output instance
|
|
365
|
-
* Import and use this anywhere in your code
|
|
366
|
-
*/
|
|
367
|
-
export const out = Output.getInstance();
|
|
368
|
-
//# sourceMappingURL=output.js.map
|
package/dist/utils/output.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import "./node-polyfills.js";
|
|
2
|
-
import { Repo } from "@automerge/automerge-repo";
|
|
3
|
-
import { DirectoryConfig } from "../types/index.js";
|
|
4
|
-
/**
|
|
5
|
-
* Create an Automerge repository with Subduction-based setup
|
|
6
|
-
*/
|
|
7
|
-
export declare function createRepo(workingDir: string, config: DirectoryConfig): Promise<Repo>;
|
|
8
|
-
/**
|
|
9
|
-
* Create an ephemeral Automerge repository for remote reads.
|
|
10
|
-
* Uses a temporary directory for storage.
|
|
11
|
-
*/
|
|
12
|
-
export declare function createEphemeralRepo(syncServer: string): Promise<Repo>;
|
|
13
|
-
//# sourceMappingURL=repo-factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repo-factory.d.ts","sourceRoot":"","sources":["../../src/utils/repo-factory.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AASjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAapD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAgBf"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import "./node-polyfills.js";
|
|
2
|
-
import { Repo } from "@automerge/automerge-repo";
|
|
3
|
-
import { NodeFSStorageAdapter } from "@automerge/automerge-repo-storage-nodefs";
|
|
4
|
-
import * as subductionModule from "@automerge/automerge-subduction";
|
|
5
|
-
import { initSubductionModule, SubductionStorageBridge, } from "@automerge/automerge-repo-subduction-bridge";
|
|
6
|
-
import * as path from "path";
|
|
7
|
-
import * as os from "os";
|
|
8
|
-
const { WebCryptoSigner, Subduction } = subductionModule;
|
|
9
|
-
let subductionModuleInitialized = false;
|
|
10
|
-
function ensureSubductionModuleInit() {
|
|
11
|
-
if (!subductionModuleInitialized) {
|
|
12
|
-
initSubductionModule(subductionModule);
|
|
13
|
-
subductionModuleInitialized = true;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Create an Automerge repository with Subduction-based setup
|
|
18
|
-
*/
|
|
19
|
-
export async function createRepo(workingDir, config) {
|
|
20
|
-
ensureSubductionModuleInit();
|
|
21
|
-
const syncToolDir = path.join(workingDir, ".pushwork");
|
|
22
|
-
const nodeStorage = new NodeFSStorageAdapter(path.join(syncToolDir, "automerge"));
|
|
23
|
-
const signer = await WebCryptoSigner.setup();
|
|
24
|
-
const storageBridge = new SubductionStorageBridge(nodeStorage);
|
|
25
|
-
const subduction = await Subduction.hydrate(signer, storageBridge);
|
|
26
|
-
// Connect to sync server if sync is enabled
|
|
27
|
-
if (config.sync_enabled && config.sync_server) {
|
|
28
|
-
await subduction.connectDiscover(new URL(config.sync_server), signer);
|
|
29
|
-
}
|
|
30
|
-
return new Repo({ subduction });
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Create an ephemeral Automerge repository for remote reads.
|
|
34
|
-
* Uses a temporary directory for storage.
|
|
35
|
-
*/
|
|
36
|
-
export async function createEphemeralRepo(syncServer) {
|
|
37
|
-
ensureSubductionModuleInit();
|
|
38
|
-
const tmpDir = path.join(os.tmpdir(), `pushwork-ephemeral-${Date.now()}`);
|
|
39
|
-
const nodeStorage = new NodeFSStorageAdapter(tmpDir);
|
|
40
|
-
const signer = await WebCryptoSigner.setup();
|
|
41
|
-
const storageBridge = new SubductionStorageBridge(nodeStorage);
|
|
42
|
-
const subduction = await Subduction.hydrate(signer, storageBridge);
|
|
43
|
-
await subduction.connectDiscover(new URL(syncServer), signer);
|
|
44
|
-
return new Repo({ subduction });
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=repo-factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repo-factory.js","sourceRoot":"","sources":["../../src/utils/repo-factory.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,gBAAgB,MAAM,iCAAiC,CAAC;AACpE,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAGzB,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,gBAAgB,CAAC;AAEzD,IAAI,2BAA2B,GAAG,KAAK,CAAC;AAExC,SAAS,0BAA0B;IACjC,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACjC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QACvC,2BAA2B,GAAG,IAAI,CAAC;IACrC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,UAAkB,EAClB,MAAuB;IAEvB,0BAA0B,EAAE,CAAC;IAE7B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;IAElF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;IAC7C,MAAM,aAAa,GAAG,IAAI,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAEnE,4CAA4C;IAC5C,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,UAAU,CAAC,eAAe,CAC9B,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,EAC3B,MAAM,CACP,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,IAAI,CAAC,EAAE,UAAU,EAAS,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAkB;IAElB,0BAA0B,EAAE,CAAC;IAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;IAC7C,MAAM,aAAa,GAAG,IAAI,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAEnE,MAAM,UAAU,CAAC,eAAe,CAC9B,IAAI,GAAG,CAAC,UAAU,CAAC,EACnB,MAAM,CACP,CAAC;IAEF,OAAO,IAAI,IAAI,CAAC,EAAE,UAAU,EAAS,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
* Calculate similarity between two strings
|
|
4
|
-
|
|
5
|
-
* @param {string} str1 First string to match
|
|
6
|
-
* @param {string} str2 Second string to match
|
|
7
|
-
* @param {number} [substringLength=2] Optional. Length of substring to be used in calculating similarity. Default 2.
|
|
8
|
-
* @param {boolean} [caseSensitive=false] Optional. Whether you want to consider case in string matching. Default false;
|
|
9
|
-
|
|
10
|
-
* @returns Number between 0 and 1, with 0 being a low match score.
|
|
11
|
-
|
|
12
|
-
*/
|
|
13
|
-
export declare const stringSimilarity: (str1: string, str2: string, substringLength?: number, caseSensitive?: boolean) => number;
|
|
14
|
-
//# sourceMappingURL=string-similarity.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"string-similarity.d.ts","sourceRoot":"","sources":["../../src/utils/string-similarity.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,kBAAiB,MAAU,EAC3B,gBAAe,OAAe,WAkC/B,CAAC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/* Based on the Sørensen–Dice coefficient, code from https://github.com/stephenjjbrown/string-similarity-js */
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
* Calculate similarity between two strings
|
|
5
|
-
|
|
6
|
-
* @param {string} str1 First string to match
|
|
7
|
-
* @param {string} str2 Second string to match
|
|
8
|
-
* @param {number} [substringLength=2] Optional. Length of substring to be used in calculating similarity. Default 2.
|
|
9
|
-
* @param {boolean} [caseSensitive=false] Optional. Whether you want to consider case in string matching. Default false;
|
|
10
|
-
|
|
11
|
-
* @returns Number between 0 and 1, with 0 being a low match score.
|
|
12
|
-
|
|
13
|
-
*/
|
|
14
|
-
export const stringSimilarity = (str1, str2, substringLength = 2, caseSensitive = false) => {
|
|
15
|
-
if (str1 === str2)
|
|
16
|
-
return 1;
|
|
17
|
-
if (!caseSensitive) {
|
|
18
|
-
str1 = str1.toLowerCase();
|
|
19
|
-
str2 = str2.toLowerCase();
|
|
20
|
-
}
|
|
21
|
-
if (str1.length < substringLength || str2.length < substringLength)
|
|
22
|
-
return 0;
|
|
23
|
-
const map = new Map();
|
|
24
|
-
for (let i = 0; i < str1.length - (substringLength - 1); i++) {
|
|
25
|
-
const substr1 = str1.substring(i, i + substringLength);
|
|
26
|
-
map.set(substr1, map.has(substr1) ? map.get(substr1) + 1 : 1);
|
|
27
|
-
}
|
|
28
|
-
let match = 0;
|
|
29
|
-
for (let j = 0; j < str2.length - (substringLength - 1); j++) {
|
|
30
|
-
const substr2 = str2.substring(j, j + substringLength);
|
|
31
|
-
const count = map.has(substr2) ? map.get(substr2) : 0;
|
|
32
|
-
if (count > 0) {
|
|
33
|
-
map.set(substr2, count - 1);
|
|
34
|
-
match++;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return (match * 2) / (str1.length + str2.length - (substringLength - 1) * 2);
|
|
38
|
-
};
|
|
39
|
-
//# sourceMappingURL=string-similarity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"string-similarity.js","sourceRoot":"","sources":["../../src/utils/string-similarity.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAE9G;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAY,EACZ,IAAY,EACZ,kBAA0B,CAAC,EAC3B,gBAAyB,KAAK,EAC9B,EAAE;IACF,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAE1B,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe;QAAE,OAAO,CAAC,CAAC;IAE7E,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC;QAEvD,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC;QAEvD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAE5B,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/E,CAAC,CAAC"}
|