@tinyrack/dotweave 0.42.13 → 0.42.21
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 +6 -2
- package/dist/application.d.ts +0 -3
- package/dist/application.d.ts.map +1 -1
- package/dist/application.js +23 -22
- package/dist/application.js.map +1 -1
- package/dist/cli/autocomplete.d.ts +5 -4
- package/dist/cli/autocomplete.d.ts.map +1 -1
- package/dist/cli/autocomplete.js +33 -28
- package/dist/cli/autocomplete.js.map +1 -1
- package/dist/cli/cd.d.ts +2 -2
- package/dist/cli/cd.d.ts.map +1 -1
- package/dist/cli/cd.js +1 -4
- package/dist/cli/cd.js.map +1 -1
- package/dist/cli/doctor.d.ts +2 -2
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +19 -28
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +1 -3
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +2 -2
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +9 -15
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/profile/add.d.ts +4 -0
- package/dist/cli/profile/add.d.ts.map +1 -0
- package/dist/cli/profile/add.js +29 -0
- package/dist/cli/profile/add.js.map +1 -0
- package/dist/cli/profile/index.d.ts +1 -1
- package/dist/cli/profile/index.d.ts.map +1 -1
- package/dist/cli/profile/index.js +5 -1
- package/dist/cli/profile/index.js.map +1 -1
- package/dist/cli/profile/list.d.ts +2 -2
- package/dist/cli/profile/list.d.ts.map +1 -1
- package/dist/cli/profile/list.js +8 -26
- package/dist/cli/profile/list.js.map +1 -1
- package/dist/cli/profile/remove.d.ts +4 -0
- package/dist/cli/profile/remove.d.ts.map +1 -0
- package/dist/cli/profile/remove.js +29 -0
- package/dist/cli/profile/remove.js.map +1 -0
- package/dist/cli/profile/use.d.ts +2 -2
- package/dist/cli/profile/use.d.ts.map +1 -1
- package/dist/cli/profile/use.js +5 -14
- package/dist/cli/profile/use.js.map +1 -1
- package/dist/cli/pull.d.ts +2 -2
- package/dist/cli/pull.d.ts.map +1 -1
- package/dist/cli/pull.js +22 -41
- package/dist/cli/pull.js.map +1 -1
- package/dist/cli/push.d.ts +2 -2
- package/dist/cli/push.d.ts.map +1 -1
- package/dist/cli/push.js +17 -23
- package/dist/cli/push.js.map +1 -1
- package/dist/cli/root-commands.d.ts +9 -10
- package/dist/cli/root-commands.d.ts.map +1 -1
- package/dist/cli/root-commands.js +0 -4
- package/dist/cli/root-commands.js.map +1 -1
- package/dist/cli/shared-flags.d.ts +9 -0
- package/dist/cli/shared-flags.d.ts.map +1 -0
- package/dist/cli/shared-flags.js +8 -0
- package/dist/cli/shared-flags.js.map +1 -0
- package/dist/cli/status.d.ts +2 -2
- package/dist/cli/status.d.ts.map +1 -1
- package/dist/cli/status.js +26 -55
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/track.d.ts +2 -2
- package/dist/cli/track.d.ts.map +1 -1
- package/dist/cli/track.js +19 -35
- package/dist/cli/track.js.map +1 -1
- package/dist/cli/untrack.d.ts +2 -2
- package/dist/cli/untrack.d.ts.map +1 -1
- package/dist/cli/untrack.js +5 -14
- package/dist/cli/untrack.js.map +1 -1
- package/dist/config/constants.d.ts +2 -2
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +2 -2
- package/dist/config/constants.js.map +1 -1
- package/dist/config/global-config.d.ts +3 -3
- package/dist/config/global-config.d.ts.map +1 -1
- package/dist/config/global-config.js +7 -8
- package/dist/config/global-config.js.map +1 -1
- package/dist/config/identity-file.d.ts +0 -7
- package/dist/config/identity-file.d.ts.map +1 -1
- package/dist/config/identity-file.js +2 -44
- package/dist/config/identity-file.js.map +1 -1
- package/dist/config/migration.d.ts +6 -0
- package/dist/config/migration.d.ts.map +1 -1
- package/dist/config/migration.js +35 -13
- package/dist/config/migration.js.map +1 -1
- package/dist/config/runtime-env.d.ts.map +1 -1
- package/dist/config/runtime-env.js +2 -7
- package/dist/config/runtime-env.js.map +1 -1
- package/dist/config/{sync-entry.d.ts → sync-queries.d.ts} +5 -3
- package/dist/config/sync-queries.d.ts.map +1 -0
- package/dist/config/{sync-entry.js → sync-queries.js} +15 -6
- package/dist/config/sync-queries.js.map +1 -0
- package/dist/config/sync-schema.d.ts +13 -8
- package/dist/config/sync-schema.d.ts.map +1 -1
- package/dist/config/sync-schema.js +138 -18
- package/dist/config/sync-schema.js.map +1 -1
- package/dist/config/xdg.d.ts.map +1 -1
- package/dist/config/xdg.js +15 -34
- package/dist/config/xdg.js.map +1 -1
- package/dist/lib/error.js +1 -1
- package/dist/lib/error.js.map +1 -1
- package/dist/lib/git.d.ts +3 -4
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +7 -48
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/jsonc.d.ts +1 -1
- package/dist/lib/jsonc.d.ts.map +1 -1
- package/dist/lib/jsonc.js +1 -1
- package/dist/lib/jsonc.js.map +1 -1
- package/dist/lib/path.d.ts +3 -16
- package/dist/lib/path.d.ts.map +1 -1
- package/dist/lib/path.js +36 -19
- package/dist/lib/path.js.map +1 -1
- package/dist/lib/string.d.ts +1 -4
- package/dist/lib/string.d.ts.map +1 -1
- package/dist/lib/string.js +6 -4
- package/dist/lib/string.js.map +1 -1
- package/dist/lib/version.d.ts.map +1 -1
- package/dist/lib/version.js +2 -2
- package/dist/lib/version.js.map +1 -1
- package/dist/migrations/sync-v8.d.ts +3 -0
- package/dist/migrations/sync-v8.d.ts.map +1 -0
- package/dist/migrations/sync-v8.js +66 -0
- package/dist/migrations/sync-v8.js.map +1 -0
- package/dist/services/autocomplete.js +13 -13
- package/dist/services/autocomplete.js.map +1 -1
- package/dist/services/config-file.d.ts +6 -5
- package/dist/services/config-file.d.ts.map +1 -1
- package/dist/services/config-file.js +9 -8
- package/dist/services/config-file.js.map +1 -1
- package/dist/services/doctor.d.ts +1 -4
- package/dist/services/doctor.d.ts.map +1 -1
- package/dist/services/doctor.js +10 -37
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/init.d.ts +1 -5
- package/dist/services/init.d.ts.map +1 -1
- package/dist/services/init.js +25 -59
- package/dist/services/init.js.map +1 -1
- package/dist/services/local-snapshot.d.ts +2 -7
- package/dist/services/local-snapshot.d.ts.map +1 -1
- package/dist/services/local-snapshot.js +12 -35
- package/dist/services/local-snapshot.js.map +1 -1
- package/dist/services/profile.d.ts +8 -4
- package/dist/services/profile.d.ts.map +1 -1
- package/dist/services/profile.js +110 -34
- package/dist/services/profile.js.map +1 -1
- package/dist/services/pull-apply.d.ts +30 -0
- package/dist/services/pull-apply.d.ts.map +1 -0
- package/dist/services/{local-materialization.js → pull-apply.js} +150 -210
- package/dist/services/pull-apply.js.map +1 -0
- package/dist/services/pull.d.ts +7 -10
- package/dist/services/pull.d.ts.map +1 -1
- package/dist/services/pull.js +19 -30
- package/dist/services/pull.js.map +1 -1
- package/dist/services/push.d.ts +4 -7
- package/dist/services/push.d.ts.map +1 -1
- package/dist/services/push.js +15 -38
- package/dist/services/push.js.map +1 -1
- package/dist/services/repo-artifacts.d.ts +5 -6
- package/dist/services/repo-artifacts.d.ts.map +1 -1
- package/dist/services/repo-artifacts.js +21 -60
- package/dist/services/repo-artifacts.js.map +1 -1
- package/dist/services/repo-snapshot.d.ts +2 -3
- package/dist/services/repo-snapshot.d.ts.map +1 -1
- package/dist/services/repo-snapshot.js +14 -26
- package/dist/services/repo-snapshot.js.map +1 -1
- package/dist/services/status.d.ts +1 -5
- package/dist/services/status.d.ts.map +1 -1
- package/dist/services/status.js +7 -17
- package/dist/services/status.js.map +1 -1
- package/dist/services/{runtime.d.ts → sync-context.d.ts} +9 -3
- package/dist/services/sync-context.d.ts.map +1 -0
- package/dist/services/{runtime.js → sync-context.js} +24 -8
- package/dist/services/sync-context.js.map +1 -0
- package/dist/services/{set.d.ts → sync-mode.d.ts} +7 -9
- package/dist/services/sync-mode.d.ts.map +1 -0
- package/dist/services/{set.js → sync-mode.js} +9 -23
- package/dist/services/sync-mode.js.map +1 -0
- package/dist/services/{paths.d.ts → sync-paths.d.ts} +2 -2
- package/dist/services/sync-paths.d.ts.map +1 -0
- package/dist/services/{paths.js → sync-paths.js} +4 -6
- package/dist/services/sync-paths.js.map +1 -0
- package/dist/services/terminal/logger.d.ts +30 -5
- package/dist/services/terminal/logger.d.ts.map +1 -1
- package/dist/services/terminal/logger.js +61 -14
- package/dist/services/terminal/logger.js.map +1 -1
- package/dist/services/terminal/path-completion.d.ts +2 -2
- package/dist/services/terminal/path-completion.d.ts.map +1 -1
- package/dist/services/terminal/path-completion.js +16 -13
- package/dist/services/terminal/path-completion.js.map +1 -1
- package/dist/services/terminal/shell.d.ts +1 -12
- package/dist/services/terminal/shell.d.ts.map +1 -1
- package/dist/services/terminal/shell.js +7 -160
- package/dist/services/terminal/shell.js.map +1 -1
- package/dist/services/terminal/spinner.d.ts +10 -0
- package/dist/services/terminal/spinner.d.ts.map +1 -0
- package/dist/services/terminal/spinner.js +61 -0
- package/dist/services/terminal/spinner.js.map +1 -0
- package/dist/services/terminal/theme.d.ts +31 -0
- package/dist/services/terminal/theme.d.ts.map +1 -0
- package/dist/services/terminal/theme.js +32 -0
- package/dist/services/terminal/theme.js.map +1 -0
- package/dist/services/track.d.ts +1 -3
- package/dist/services/track.d.ts.map +1 -1
- package/dist/services/track.js +27 -23
- package/dist/services/track.js.map +1 -1
- package/dist/services/untrack.d.ts +0 -2
- package/dist/services/untrack.d.ts.map +1 -1
- package/dist/services/untrack.js +4 -11
- package/dist/services/untrack.js.map +1 -1
- package/package.json +1 -2
- package/dist/config/sync-entry.d.ts.map +0 -1
- package/dist/config/sync-entry.js.map +0 -1
- package/dist/config/sync.d.ts +0 -8
- package/dist/config/sync.d.ts.map +0 -1
- package/dist/config/sync.js +0 -53
- package/dist/config/sync.js.map +0 -1
- package/dist/services/local-materialization.d.ts +0 -30
- package/dist/services/local-materialization.d.ts.map +0 -1
- package/dist/services/local-materialization.js.map +0 -1
- package/dist/services/paths.d.ts.map +0 -1
- package/dist/services/paths.js.map +0 -1
- package/dist/services/runtime.d.ts.map +0 -1
- package/dist/services/runtime.js.map +0 -1
- package/dist/services/set.d.ts.map +0 -1
- package/dist/services/set.js.map +0 -1
- package/dist/services/terminal/cli-runtime.d.ts +0 -18
- package/dist/services/terminal/cli-runtime.d.ts.map +0 -1
- package/dist/services/terminal/cli-runtime.js +0 -19
- package/dist/services/terminal/cli-runtime.js.map +0 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { AppConstants } from "#app/config/constants.ts";
|
|
2
|
+
import { DotweaveError } from "#app/lib/error.ts";
|
|
3
|
+
const isRecord = (value) => {
|
|
4
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
5
|
+
};
|
|
6
|
+
const normalizeLegacyProfileName = (value) => {
|
|
7
|
+
const normalizedValue = value.trim();
|
|
8
|
+
if (normalizedValue.length === 0) {
|
|
9
|
+
throw new DotweaveError("Profile name must not be empty.", {
|
|
10
|
+
code: "INVALID_PROFILE_NAME",
|
|
11
|
+
details: [`Profile name: ${value}`],
|
|
12
|
+
hint: "Use a short profile name like 'work' or 'personal'.",
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(normalizedValue)) {
|
|
16
|
+
throw new DotweaveError("Profile name contains unsupported characters.", {
|
|
17
|
+
code: "INVALID_PROFILE_NAME",
|
|
18
|
+
details: [`Profile name: ${value}`],
|
|
19
|
+
hint: "Use letters, numbers, dots, underscores, or hyphens, and start with a letter or number.",
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
if (normalizedValue.startsWith(".")) {
|
|
23
|
+
throw new DotweaveError("Profile name must not start with '.'.", {
|
|
24
|
+
code: "INVALID_PROFILE_NAME",
|
|
25
|
+
details: [`Profile name: ${value}`],
|
|
26
|
+
hint: "Use a plain name like 'work' instead of hidden-path style names.",
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
if (normalizedValue === "." || normalizedValue === "..") {
|
|
30
|
+
throw new DotweaveError("Profile name is invalid.", {
|
|
31
|
+
code: "INVALID_PROFILE_NAME",
|
|
32
|
+
details: [`Profile name: ${value}`],
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return normalizedValue;
|
|
36
|
+
};
|
|
37
|
+
export const migrateSyncConfigV7ToV8 = (config) => {
|
|
38
|
+
const profiles = new Set();
|
|
39
|
+
const typedConfig = config;
|
|
40
|
+
const entries = Array.isArray(typedConfig.entries) ? typedConfig.entries : [];
|
|
41
|
+
for (const entry of entries) {
|
|
42
|
+
const typedEntry = entry;
|
|
43
|
+
if (!isRecord(entry) || !Array.isArray(typedEntry.profiles)) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
for (const profile of typedEntry.profiles) {
|
|
47
|
+
if (typeof profile !== "string") {
|
|
48
|
+
throw new DotweaveError("Profile name must be a string.", {
|
|
49
|
+
code: "INVALID_PROFILE_NAME",
|
|
50
|
+
details: [`Profile value: ${String(profile)}`],
|
|
51
|
+
hint: "Use a short profile name like 'work' or 'personal'.",
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const normalizedProfile = normalizeLegacyProfileName(profile);
|
|
55
|
+
if (normalizedProfile !== AppConstants.SYNC.DEFAULT_PROFILE) {
|
|
56
|
+
profiles.add(normalizedProfile);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
...config,
|
|
62
|
+
version: 8,
|
|
63
|
+
profiles: [...profiles].sort((left, right) => left.localeCompare(right)),
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=sync-v8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-v8.js","sourceRoot":"","sources":["../../src/migrations/sync-v8.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AppConstants } from "#app/config/constants.ts";
|
|
2
2
|
const COMPLETION_FUNCTION_NAME = "__dotweave_complete";
|
|
3
3
|
const ENSURE_FUNCTION_NAME = "__dotweave_ensure_completion";
|
|
4
4
|
export const BASH_AUTOCOMPLETE_SCRIPT = `\
|
|
@@ -6,12 +6,12 @@ ${COMPLETION_FUNCTION_NAME}() {
|
|
|
6
6
|
local -a inputs
|
|
7
7
|
local rawCompletions completion
|
|
8
8
|
inputs=("\${COMP_WORDS[@]}")
|
|
9
|
-
if [[ \${#inputs[@]} -eq 1 && \${COMP_CWORD:-0} -eq 0 && "\${inputs[0]}" == "${
|
|
9
|
+
if [[ \${#inputs[@]} -eq 1 && \${COMP_CWORD:-0} -eq 0 && "\${inputs[0]}" == "${AppConstants.AUTOCOMPLETE.CLI_COMMAND_NAME}" ]]; then
|
|
10
10
|
inputs+=("")
|
|
11
11
|
elif [[ \${COMP_CWORD:-0} -ge \${#inputs[@]} ]]; then
|
|
12
12
|
inputs+=("")
|
|
13
13
|
fi
|
|
14
|
-
if ! rawCompletions="$(env -u COMP_LINE ${
|
|
14
|
+
if ! rawCompletions="$(env -u COMP_LINE ${AppConstants.AUTOCOMPLETE.COMMAND} "\${inputs[@]}")"; then
|
|
15
15
|
return 1
|
|
16
16
|
fi
|
|
17
17
|
|
|
@@ -62,16 +62,16 @@ ${COMPLETION_FUNCTION_NAME}() {
|
|
|
62
62
|
|
|
63
63
|
return 0
|
|
64
64
|
}
|
|
65
|
-
complete -o default -o nospace -F ${COMPLETION_FUNCTION_NAME} ${
|
|
65
|
+
complete -o default -o nospace -F ${COMPLETION_FUNCTION_NAME} ${AppConstants.AUTOCOMPLETE.CLI_COMMAND_NAME}
|
|
66
66
|
`;
|
|
67
67
|
export const POWERSHELL_AUTOCOMPLETE_SCRIPT = `\
|
|
68
|
-
Register-ArgumentCompleter -Native -CommandName ${
|
|
68
|
+
Register-ArgumentCompleter -Native -CommandName ${AppConstants.AUTOCOMPLETE.CLI_COMMAND_NAME} -ScriptBlock {
|
|
69
69
|
param($wordToComplete, $commandAst, $cursorPosition)
|
|
70
70
|
$inputs = $commandAst.ToString().Split(' ', [System.StringSplitOptions]::RemoveEmptyEntries)
|
|
71
71
|
if ($cursorPosition -gt $commandAst.ToString().Length) {
|
|
72
72
|
$inputs += ''
|
|
73
73
|
}
|
|
74
|
-
$rawCompletions = & ${
|
|
74
|
+
$rawCompletions = & ${AppConstants.AUTOCOMPLETE.COMMAND.replace(" ", " ")} $inputs 2>$null
|
|
75
75
|
if (-not $rawCompletions) { return }
|
|
76
76
|
foreach ($line in $rawCompletions) {
|
|
77
77
|
$parts = $line.Split([char]9, 2)
|
|
@@ -97,12 +97,12 @@ ${COMPLETION_FUNCTION_NAME}() {
|
|
|
97
97
|
local -a directories inputs plainCompletions
|
|
98
98
|
local rawCompletions
|
|
99
99
|
inputs=("\${words[@]}")
|
|
100
|
-
if (( CURRENT == 1 && \${#inputs[@]} == 1 )) && [[ "\${inputs[1]}" == "${
|
|
100
|
+
if (( CURRENT == 1 && \${#inputs[@]} == 1 )) && [[ "\${inputs[1]}" == "${AppConstants.AUTOCOMPLETE.CLI_COMMAND_NAME}" ]]; then
|
|
101
101
|
inputs+=("")
|
|
102
102
|
elif (( CURRENT > \${#inputs[@]} )); then
|
|
103
103
|
inputs+=("")
|
|
104
104
|
fi
|
|
105
|
-
if ! rawCompletions="$(env -u COMP_LINE ${
|
|
105
|
+
if ! rawCompletions="$(env -u COMP_LINE ${AppConstants.AUTOCOMPLETE.COMMAND} "\${inputs[@]}")"; then
|
|
106
106
|
return 1
|
|
107
107
|
fi
|
|
108
108
|
|
|
@@ -147,11 +147,11 @@ ${COMPLETION_FUNCTION_NAME}() {
|
|
|
147
147
|
compadd -Q -S "" -l -d dirDisplays -- "\${directories[@]}"
|
|
148
148
|
fi
|
|
149
149
|
}
|
|
150
|
-
compdef ${COMPLETION_FUNCTION_NAME} ${
|
|
150
|
+
compdef ${COMPLETION_FUNCTION_NAME} ${AppConstants.AUTOCOMPLETE.CLI_COMMAND_NAME}
|
|
151
151
|
|
|
152
152
|
${ENSURE_FUNCTION_NAME}() {
|
|
153
|
-
if (( $+functions[compdef] )) && [[ "\${_comps[${
|
|
154
|
-
compdef ${COMPLETION_FUNCTION_NAME} ${
|
|
153
|
+
if (( $+functions[compdef] )) && [[ "\${_comps[${AppConstants.AUTOCOMPLETE.CLI_COMMAND_NAME}]}" != ${COMPLETION_FUNCTION_NAME} ]]; then
|
|
154
|
+
compdef ${COMPLETION_FUNCTION_NAME} ${AppConstants.AUTOCOMPLETE.CLI_COMMAND_NAME}
|
|
155
155
|
fi
|
|
156
156
|
}
|
|
157
157
|
autoload -Uz add-zsh-hook
|
|
@@ -159,8 +159,8 @@ add-zsh-hook precmd ${ENSURE_FUNCTION_NAME}
|
|
|
159
159
|
`;
|
|
160
160
|
const isCliCommandToken = (input) => {
|
|
161
161
|
const normalizedInput = input.replace(/\\/gu, "/").split("/").pop() ?? input;
|
|
162
|
-
return (normalizedInput ===
|
|
163
|
-
normalizedInput === `${
|
|
162
|
+
return (normalizedInput === AppConstants.AUTOCOMPLETE.CLI_COMMAND_NAME ||
|
|
163
|
+
normalizedInput === `${AppConstants.AUTOCOMPLETE.CLI_COMMAND_NAME}.exe`);
|
|
164
164
|
};
|
|
165
165
|
const normalizeCompletionInputs = (inputs) => {
|
|
166
166
|
const firstInput = inputs[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../../src/services/autocomplete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../../src/services/autocomplete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AACvD,MAAM,oBAAoB,GAAG,8BAA8B,CAAC;AAE5D,MAAM,CAAC,MAAM,wBAAwB,GAAG;EACtC,wBAAwB;;;;iFAIuD,YAAY,CAAC,YAAY,CAAC,gBAAgB;;;;;4CAK/E,YAAY,CAAC,YAAY,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAmDzC,wBAAwB,IAAI,YAAY,CAAC,YAAY,CAAC,gBAAgB;CACzG,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG;kDACI,YAAY,CAAC,YAAY,CAAC,gBAAgB;;;;;;wBAMpE,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;;;;;;;;;;CAc1E,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;EAMrC,wBAAwB;;;;;2EAKiD,YAAY,CAAC,YAAY,CAAC,gBAAgB;;;;;4CAKzE,YAAY,CAAC,YAAY,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA6CnE,wBAAwB,IAAI,YAAY,CAAC,YAAY,CAAC,gBAAgB;;EAE9E,oBAAoB;mDAC6B,YAAY,CAAC,YAAY,CAAC,gBAAgB,UAAU,wBAAwB;cACjH,wBAAwB,IAAI,YAAY,CAAC,YAAY,CAAC,gBAAgB;;;;sBAI9D,oBAAoB;CACzC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAE,EAAE;IAC1C,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC;IAE7E,OAAO,CACL,eAAe,KAAK,YAAY,CAAC,YAAY,CAAC,gBAAgB;QAC9D,eAAe,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,gBAAgB,MAAM,CACxE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAC,MAAyB,EAAE,EAAE;IAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE7B,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/D,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAyB,EAAE,EAAE;IACnE,MAAM,WAAW,GAA+C,OAAO,CAAC,GAAG,CAAC;IAC5E,MAAM,cAAc,GAAG,WAAW,CAAC,SAAS,CAAC;IAE7C,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;IAEhD,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEpD,OAAO,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;AACrD,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export declare const sortSyncConfigEntries: (entries: readonly
|
|
1
|
+
import { type RawSyncConfig, type ResolvedSyncConfig } from "#app/config/sync-schema.ts";
|
|
2
|
+
export declare const sortSyncConfigEntries: (entries: readonly RawSyncConfig["entries"][number][]) => {
|
|
3
3
|
kind: "file" | "directory";
|
|
4
4
|
localPath: {
|
|
5
5
|
default: string;
|
|
@@ -31,9 +31,10 @@ export declare const sortSyncConfigEntries: (entries: readonly SyncConfig["entri
|
|
|
31
31
|
wsl?: string | undefined;
|
|
32
32
|
} | undefined;
|
|
33
33
|
}[];
|
|
34
|
-
export declare const buildSyncConfigDocument: (config: ResolvedSyncConfig) =>
|
|
35
|
-
export declare const writeValidatedSyncConfig: (syncDirectory: string, config:
|
|
36
|
-
version: 7;
|
|
34
|
+
export declare const buildSyncConfigDocument: (config: ResolvedSyncConfig) => RawSyncConfig;
|
|
35
|
+
export declare const writeValidatedSyncConfig: (syncDirectory: string, config: RawSyncConfig) => Promise<{
|
|
36
|
+
version: 8 | 7;
|
|
37
|
+
profiles: string[];
|
|
37
38
|
entries: {
|
|
38
39
|
kind: "file" | "directory";
|
|
39
40
|
localPath: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../../src/services/config-file.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../../src/services/config-file.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EAIxB,MAAM,4BAA4B,CAAC;AAGpC,eAAO,MAAM,qBAAqB,GAChC,SAAS,SAAS,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAKrD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,QAAQ,kBAAkB,KACzB,aA4BF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,eAAe,MAAM,EACrB,QAAQ,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWtB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { formatSyncConfig,
|
|
1
|
+
import { AppConstants } from "#app/config/constants.ts";
|
|
2
|
+
import { formatSyncConfig, resolveSyncConfigFilePath, syncConfigSchema, validateRawSyncConfigProfileRegistry, } from "#app/config/sync-schema.ts";
|
|
3
3
|
import { writeTextFileAtomically } from "#app/lib/filesystem.ts";
|
|
4
4
|
export const sortSyncConfigEntries = (entries) => {
|
|
5
5
|
return [...entries].sort((left, right) => {
|
|
@@ -20,7 +20,7 @@ export const buildSyncConfigDocument = (config) => {
|
|
|
20
20
|
...(entry.profilesExplicit ? { profiles: [...entry.profiles] } : {}),
|
|
21
21
|
})));
|
|
22
22
|
return {
|
|
23
|
-
version:
|
|
23
|
+
version: AppConstants.SYNC.CONFIG_VERSION,
|
|
24
24
|
...(config.age === undefined
|
|
25
25
|
? {}
|
|
26
26
|
: {
|
|
@@ -28,13 +28,14 @@ export const buildSyncConfigDocument = (config) => {
|
|
|
28
28
|
recipients: [...config.age.recipients],
|
|
29
29
|
},
|
|
30
30
|
}),
|
|
31
|
+
profiles: [...(config.profiles ?? [])],
|
|
31
32
|
entries,
|
|
32
33
|
};
|
|
33
34
|
};
|
|
34
|
-
export const writeValidatedSyncConfig = async (syncDirectory, config
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
await writeTextFileAtomically(resolveSyncConfigFilePath(syncDirectory), formatSyncConfig(
|
|
38
|
-
return
|
|
35
|
+
export const writeValidatedSyncConfig = async (syncDirectory, config) => {
|
|
36
|
+
const parsed = syncConfigSchema.parse(config);
|
|
37
|
+
validateRawSyncConfigProfileRegistry(parsed);
|
|
38
|
+
await writeTextFileAtomically(resolveSyncConfigFilePath(syncDirectory), formatSyncConfig(config));
|
|
39
|
+
return config;
|
|
39
40
|
};
|
|
40
41
|
//# sourceMappingURL=config-file.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-file.js","sourceRoot":"","sources":["../../src/services/config-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config-file.js","sourceRoot":"","sources":["../../src/services/config-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EACL,gBAAgB,EAGhB,yBAAyB,EACzB,gBAAgB,EAChB,oCAAoC,GACrC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,OAAoD,EACpD,EAAE;IACF,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,MAA0B,EACX,EAAE;IACjB,MAAM,OAAO,GAAG,qBAAqB,CACnC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAoC,EAAE,CAAC,CAAC;QAC/D,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,mBAAmB;QACpC,GAAG,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC3C,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,KAAK,CAAC,kBAAkB;YAC1B,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,oBAAoB,EAAE;YAC5C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAC,CAAC,CACJ,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,cAAc;QACzC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS;YAC1B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,GAAG,EAAE;oBACH,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;iBACvC;aACF,CAAC;QACN,QAAQ,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACtC,OAAO;KACS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC3C,aAAqB,EACrB,MAAqB,EACrB,EAAE;IACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,oCAAoC,CAAC,MAAM,CAAC,CAAC;IAE7C,MAAM,uBAAuB,CAC3B,yBAAyB,CAAC,aAAa,CAAC,EACxC,gBAAgB,CAAC,MAAM,CAAC,CACzB,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { ConsolaInstance } from "consola";
|
|
2
1
|
export type DoctorCheckLevel = "fail" | "ok" | "warn";
|
|
3
2
|
export type DoctorCheck = Readonly<{
|
|
4
3
|
checkId: string;
|
|
@@ -7,10 +6,8 @@ export type DoctorCheck = Readonly<{
|
|
|
7
6
|
}>;
|
|
8
7
|
export type DoctorResult = Readonly<{
|
|
9
8
|
checks: readonly DoctorCheck[];
|
|
10
|
-
configPath: string;
|
|
11
9
|
hasFailures: boolean;
|
|
12
10
|
hasWarnings: boolean;
|
|
13
|
-
syncDirectory: string;
|
|
14
11
|
}>;
|
|
15
|
-
export declare const runDoctorChecks: (
|
|
12
|
+
export declare const runDoctorChecks: () => Promise<DoctorResult>;
|
|
16
13
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/services/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/services/doctor.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAEtD,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,gBAAgB,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC,CAAC;AAoBH,eAAO,MAAM,eAAe,QAAa,OAAO,CAAC,YAAY,CA+H5D,CAAC"}
|
package/dist/services/doctor.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { resolveSyncConfigFilePath } from "#app/config/sync.ts";
|
|
2
1
|
import { formatDotweaveError } from "#app/lib/error.ts";
|
|
3
2
|
import { pathExists } from "#app/lib/filesystem.ts";
|
|
4
|
-
import {
|
|
5
|
-
import { buildEntryMaterialization } from "./
|
|
3
|
+
import { verifyIsGitRepository } from "#app/lib/git.ts";
|
|
4
|
+
import { buildEntryMaterialization } from "./pull-apply.js";
|
|
6
5
|
import { buildRepositorySnapshot } from "./repo-snapshot.js";
|
|
7
|
-
import { loadSyncConfig, resolveSyncPaths, } from "./
|
|
6
|
+
import { loadSyncConfig, resolveSyncPaths, } from "./sync-context.js";
|
|
8
7
|
const ok = (checkId, detail) => ({
|
|
9
8
|
checkId,
|
|
10
9
|
detail,
|
|
@@ -20,29 +19,23 @@ const fail = (checkId, detail) => ({
|
|
|
20
19
|
detail,
|
|
21
20
|
level: "fail",
|
|
22
21
|
});
|
|
23
|
-
export const runDoctorChecks = async (
|
|
24
|
-
reporter?.start("Running doctor checks...");
|
|
22
|
+
export const runDoctorChecks = async () => {
|
|
25
23
|
const { syncDirectory } = resolveSyncPaths();
|
|
26
|
-
const configPath = resolveSyncConfigFilePath(syncDirectory);
|
|
27
24
|
const checks = [];
|
|
28
25
|
try {
|
|
29
|
-
|
|
30
|
-
await ensureRepository(syncDirectory);
|
|
26
|
+
await verifyIsGitRepository(syncDirectory);
|
|
31
27
|
checks.push(ok("git", "Sync directory is a git repository."));
|
|
32
28
|
}
|
|
33
29
|
catch (error) {
|
|
34
30
|
checks.push(fail("git", error instanceof Error ? error.message : "Git repository check failed."));
|
|
35
31
|
return {
|
|
36
32
|
checks,
|
|
37
|
-
configPath,
|
|
38
33
|
hasFailures: true,
|
|
39
34
|
hasWarnings: false,
|
|
40
|
-
syncDirectory,
|
|
41
35
|
};
|
|
42
36
|
}
|
|
43
37
|
let config;
|
|
44
38
|
try {
|
|
45
|
-
reporter?.start("Loading sync configuration...");
|
|
46
39
|
const { effectiveConfig, fullConfig } = await loadSyncConfig(syncDirectory);
|
|
47
40
|
config = effectiveConfig;
|
|
48
41
|
checks.push(ok("config", `Loaded config with ${fullConfig.entries.length} entries and ${effectiveConfig.age.recipients.length} recipients.`));
|
|
@@ -56,13 +49,10 @@ export const runDoctorChecks = async (reporter) => {
|
|
|
56
49
|
: "Sync configuration could not be read."));
|
|
57
50
|
return {
|
|
58
51
|
checks,
|
|
59
|
-
configPath,
|
|
60
52
|
hasFailures: true,
|
|
61
53
|
hasWarnings: false,
|
|
62
|
-
syncDirectory,
|
|
63
54
|
};
|
|
64
55
|
}
|
|
65
|
-
reporter?.start("Checking age identity...");
|
|
66
56
|
checks.push((await pathExists(config.age.identityFile))
|
|
67
57
|
? ok("age", `Age identity file exists at ${config.age.identityFile}.`)
|
|
68
58
|
: fail("age", `Age identity file is missing: ${config.age.identityFile}`));
|
|
@@ -72,25 +62,14 @@ export const runDoctorChecks = async (reporter) => {
|
|
|
72
62
|
const missingEntries = config.entries.filter((entry) => {
|
|
73
63
|
return entry.mode !== "ignore" && entry.localPath.length > 0;
|
|
74
64
|
});
|
|
75
|
-
const missingCount = 0;
|
|
76
|
-
let checkedLocalPathCount = 0;
|
|
77
65
|
const healthyMissingEntries = new Set();
|
|
78
|
-
|
|
79
|
-
const repositorySnapshot = await buildRepositorySnapshot(syncDirectory, config, reporter);
|
|
80
|
-
reporter?.start("Checking tracked local paths...");
|
|
66
|
+
const repositorySnapshot = await buildRepositorySnapshot(syncDirectory, config);
|
|
81
67
|
try {
|
|
82
68
|
for (const entry of missingEntries) {
|
|
83
|
-
checkedLocalPathCount += 1;
|
|
84
|
-
if ((reporter?.level ?? 0) >= 4) {
|
|
85
|
-
reporter?.verbose(`checked tracked local path ${entry.localPath}`);
|
|
86
|
-
}
|
|
87
|
-
else if (checkedLocalPathCount % 100 === 0) {
|
|
88
|
-
reporter?.start(`Checked ${checkedLocalPathCount} tracked local paths...`);
|
|
89
|
-
}
|
|
90
69
|
if (await pathExists(entry.localPath)) {
|
|
91
70
|
continue;
|
|
92
71
|
}
|
|
93
|
-
buildEntryMaterialization(entry, repositorySnapshot, config
|
|
72
|
+
buildEntryMaterialization(entry, repositorySnapshot, config);
|
|
94
73
|
healthyMissingEntries.add(entry.repoPath);
|
|
95
74
|
}
|
|
96
75
|
}
|
|
@@ -102,25 +81,19 @@ export const runDoctorChecks = async (reporter) => {
|
|
|
102
81
|
const hasWarnings = checks.some((check) => check.level === "warn");
|
|
103
82
|
return {
|
|
104
83
|
checks,
|
|
105
|
-
configPath,
|
|
106
84
|
hasFailures,
|
|
107
85
|
hasWarnings,
|
|
108
|
-
syncDirectory,
|
|
109
86
|
};
|
|
110
87
|
}
|
|
111
|
-
checks.push(
|
|
112
|
-
?
|
|
113
|
-
|
|
114
|
-
: `All missing local paths are healthy for the current sync state (${healthyMissingEntries.size} entr${healthyMissingEntries.size === 1 ? "y" : "ies"}).`)
|
|
115
|
-
: warn("local-paths", `${missingCount} tracked local path${missingCount === 1 ? " is" : "s are"} missing.`));
|
|
88
|
+
checks.push(ok("local-paths", healthyMissingEntries.size === 0
|
|
89
|
+
? "All tracked local paths currently exist."
|
|
90
|
+
: `All missing local paths are healthy for the current sync state (${healthyMissingEntries.size} entr${healthyMissingEntries.size === 1 ? "y" : "ies"}).`));
|
|
116
91
|
const hasFailures = checks.some((check) => check.level === "fail");
|
|
117
92
|
const hasWarnings = checks.some((check) => check.level === "warn");
|
|
118
93
|
return {
|
|
119
94
|
checks,
|
|
120
|
-
configPath,
|
|
121
95
|
hasFailures,
|
|
122
96
|
hasWarnings,
|
|
123
|
-
syncDirectory,
|
|
124
97
|
};
|
|
125
98
|
};
|
|
126
99
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/services/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/services/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/services/init.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { ConsolaInstance } from "consola";
|
|
2
1
|
import { DotweaveError } from "#app/lib/error.ts";
|
|
3
2
|
export type InitRequest = Readonly<{
|
|
4
3
|
ageIdentity?: string;
|
|
@@ -9,16 +8,13 @@ export type InitRequest = Readonly<{
|
|
|
9
8
|
}>;
|
|
10
9
|
export type InitResult = Readonly<{
|
|
11
10
|
alreadyInitialized: boolean;
|
|
12
|
-
configPath: string;
|
|
13
11
|
entryCount: number;
|
|
14
12
|
gitAction: "cloned" | "existing" | "initialized";
|
|
15
13
|
gitSource?: string;
|
|
16
14
|
identityFile: string;
|
|
17
15
|
generatedIdentity: boolean;
|
|
18
16
|
recipientCount: number;
|
|
19
|
-
syncDirectory: string;
|
|
20
17
|
}>;
|
|
21
|
-
export declare const defaultSyncIdentityFile: "~/.config/dotweave/keys.txt";
|
|
22
18
|
export declare const createMissingRepositoryAgeKeyError: () => DotweaveError;
|
|
23
|
-
export declare const initializeSyncDirectory: (request: InitRequest
|
|
19
|
+
export declare const initializeSyncDirectory: (request: InitRequest) => Promise<InitResult>;
|
|
24
20
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAcpE,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAAC;AAKH,eAAO,MAAM,kCAAkC,qBAQ9C,CAAC;AAqJF,eAAO,MAAM,uBAAuB,GAClC,SAAS,WAAW,KACnB,OAAO,CAAC,UAAU,CA4JpB,CAAC"}
|