@tinyrack/devsync 1.1.0 → 1.3.0

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.
Files changed (220) hide show
  1. package/README.md +230 -62
  2. package/dist/cli/base-command.d.ts +14 -0
  3. package/dist/cli/base-command.d.ts.map +1 -0
  4. package/dist/cli/base-command.js +22 -0
  5. package/dist/cli/base-command.js.map +1 -0
  6. package/dist/cli/commands/dir.d.ts +8 -0
  7. package/dist/cli/commands/dir.d.ts.map +1 -0
  8. package/dist/cli/commands/dir.js +16 -0
  9. package/dist/cli/commands/dir.js.map +1 -0
  10. package/dist/cli/commands/doctor.d.ts +8 -0
  11. package/dist/cli/commands/doctor.d.ts.map +1 -0
  12. package/dist/cli/commands/doctor.js +18 -0
  13. package/dist/cli/commands/doctor.js.map +1 -0
  14. package/dist/cli/commands/index.d.ts +23 -0
  15. package/dist/cli/commands/index.d.ts.map +1 -0
  16. package/dist/cli/commands/index.js +23 -0
  17. package/dist/cli/commands/index.js.map +1 -0
  18. package/dist/cli/commands/init.d.ts +15 -0
  19. package/dist/cli/commands/init.d.ts.map +1 -0
  20. package/dist/cli/commands/init.js +43 -0
  21. package/dist/cli/commands/init.js.map +1 -0
  22. package/dist/cli/commands/machine/list.d.ts +7 -0
  23. package/dist/cli/commands/machine/list.d.ts.map +1 -0
  24. package/dist/cli/commands/machine/list.js +12 -0
  25. package/dist/cli/commands/machine/list.js.map +1 -0
  26. package/dist/cli/commands/machine/use.d.ts +11 -0
  27. package/dist/cli/commands/machine/use.d.ts.map +1 -0
  28. package/dist/cli/commands/machine/use.js +28 -0
  29. package/dist/cli/commands/machine/use.js.map +1 -0
  30. package/dist/cli/commands/pull.d.ts +12 -0
  31. package/dist/cli/commands/pull.d.ts.map +1 -0
  32. package/dist/cli/commands/pull.js +34 -0
  33. package/dist/cli/commands/pull.js.map +1 -0
  34. package/dist/cli/commands/push.d.ts +12 -0
  35. package/dist/cli/commands/push.d.ts.map +1 -0
  36. package/dist/cli/commands/push.js +34 -0
  37. package/dist/cli/commands/push.js.map +1 -0
  38. package/dist/cli/commands/status.d.ts +11 -0
  39. package/dist/cli/commands/status.d.ts.map +1 -0
  40. package/dist/cli/commands/status.js +27 -0
  41. package/dist/cli/commands/status.js.map +1 -0
  42. package/dist/cli/commands/track.d.ts +16 -0
  43. package/dist/cli/commands/track.d.ts.map +1 -0
  44. package/dist/cli/commands/track.js +82 -0
  45. package/dist/cli/commands/track.js.map +1 -0
  46. package/dist/cli/commands/untrack.d.ts +11 -0
  47. package/dist/cli/commands/untrack.d.ts.map +1 -0
  48. package/dist/cli/commands/untrack.js +28 -0
  49. package/dist/cli/commands/untrack.js.map +1 -0
  50. package/dist/config/global-config.d.ts +21 -0
  51. package/dist/config/global-config.d.ts.map +1 -0
  52. package/dist/config/global-config.js +106 -0
  53. package/dist/config/global-config.js.map +1 -0
  54. package/dist/config/platform.d.ts +11 -0
  55. package/dist/config/platform.d.ts.map +1 -0
  56. package/dist/config/platform.js +19 -0
  57. package/dist/config/platform.js.map +1 -0
  58. package/dist/config/sync.d.ts +107 -0
  59. package/dist/config/sync.d.ts.map +1 -0
  60. package/dist/config/sync.js +424 -0
  61. package/dist/config/sync.js.map +1 -0
  62. package/dist/config/xdg.d.ts +14 -0
  63. package/dist/config/xdg.d.ts.map +1 -0
  64. package/dist/config/xdg.js +102 -0
  65. package/dist/config/xdg.js.map +1 -0
  66. package/dist/index.d.ts +3 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/{src/index.ts → dist/index.js} +1 -1
  69. package/dist/index.js.map +1 -0
  70. package/dist/lib/file-mode.d.ts +3 -0
  71. package/dist/lib/file-mode.d.ts.map +1 -0
  72. package/dist/lib/file-mode.js +7 -0
  73. package/dist/lib/file-mode.js.map +1 -0
  74. package/dist/lib/output.d.ts +31 -0
  75. package/dist/lib/output.d.ts.map +1 -0
  76. package/dist/lib/output.js +198 -0
  77. package/dist/lib/output.js.map +1 -0
  78. package/dist/lib/path.d.ts +5 -0
  79. package/dist/lib/path.d.ts.map +1 -0
  80. package/dist/lib/path.js +25 -0
  81. package/dist/lib/path.js.map +1 -0
  82. package/dist/lib/string.d.ts +2 -0
  83. package/dist/lib/string.d.ts.map +1 -0
  84. package/dist/lib/string.js +4 -0
  85. package/dist/lib/string.js.map +1 -0
  86. package/dist/lib/validation.d.ts +3 -0
  87. package/dist/lib/validation.d.ts.map +1 -0
  88. package/dist/lib/validation.js +9 -0
  89. package/dist/lib/validation.js.map +1 -0
  90. package/dist/services/add.d.ts +20 -0
  91. package/dist/services/add.d.ts.map +1 -0
  92. package/dist/services/add.js +161 -0
  93. package/dist/services/add.js.map +1 -0
  94. package/dist/services/config-file.d.ts +45 -0
  95. package/dist/services/config-file.d.ts.map +1 -0
  96. package/dist/services/config-file.js +35 -0
  97. package/dist/services/config-file.js.map +1 -0
  98. package/dist/services/crypto.d.ts +9 -0
  99. package/dist/services/crypto.d.ts.map +1 -0
  100. package/dist/services/crypto.js +75 -0
  101. package/dist/services/crypto.js.map +1 -0
  102. package/dist/services/doctor.d.ts +16 -0
  103. package/dist/services/doctor.d.ts.map +1 -0
  104. package/dist/services/doctor.js +84 -0
  105. package/dist/services/doctor.js.map +1 -0
  106. package/dist/services/error.d.ts +14 -0
  107. package/dist/services/error.d.ts.map +1 -0
  108. package/dist/services/error.js +38 -0
  109. package/dist/services/error.js.map +1 -0
  110. package/dist/services/filesystem.d.ts +15 -0
  111. package/dist/services/filesystem.d.ts.map +1 -0
  112. package/dist/services/filesystem.js +113 -0
  113. package/dist/services/filesystem.js.map +1 -0
  114. package/dist/services/forget.d.ts +14 -0
  115. package/dist/services/forget.d.ts.map +1 -0
  116. package/dist/services/forget.js +124 -0
  117. package/dist/services/forget.js.map +1 -0
  118. package/dist/services/git.d.ts +10 -0
  119. package/dist/services/git.d.ts.map +1 -0
  120. package/dist/services/git.js +57 -0
  121. package/dist/services/git.js.map +1 -0
  122. package/dist/services/init.d.ts +19 -0
  123. package/dist/services/init.d.ts.map +1 -0
  124. package/dist/services/init.js +203 -0
  125. package/dist/services/init.js.map +1 -0
  126. package/dist/services/local-materialization.d.ts +28 -0
  127. package/dist/services/local-materialization.d.ts.map +1 -0
  128. package/dist/services/local-materialization.js +262 -0
  129. package/dist/services/local-materialization.js.map +1 -0
  130. package/dist/services/local-snapshot.d.ts +25 -0
  131. package/dist/services/local-snapshot.d.ts.map +1 -0
  132. package/dist/services/local-snapshot.js +93 -0
  133. package/dist/services/local-snapshot.js.map +1 -0
  134. package/dist/services/machine.d.ts +40 -0
  135. package/dist/services/machine.d.ts.map +1 -0
  136. package/dist/services/machine.js +113 -0
  137. package/dist/services/machine.js.map +1 -0
  138. package/dist/services/paths.d.ts +13 -0
  139. package/dist/services/paths.d.ts.map +1 -0
  140. package/dist/services/paths.js +71 -0
  141. package/dist/services/paths.js.map +1 -0
  142. package/dist/services/pull.d.ts +28 -0
  143. package/dist/services/pull.d.ts.map +1 -0
  144. package/dist/services/pull.js +67 -0
  145. package/dist/services/pull.js.map +1 -0
  146. package/dist/services/push.d.ts +35 -0
  147. package/dist/services/push.d.ts.map +1 -0
  148. package/dist/services/push.js +96 -0
  149. package/dist/services/push.js.map +1 -0
  150. package/dist/services/repo-artifacts.d.ts +52 -0
  151. package/dist/services/repo-artifacts.d.ts.map +1 -0
  152. package/dist/services/repo-artifacts.js +251 -0
  153. package/dist/services/repo-artifacts.js.map +1 -0
  154. package/dist/services/repo-snapshot.d.ts +6 -0
  155. package/dist/services/repo-snapshot.d.ts.map +1 -0
  156. package/dist/services/repo-snapshot.js +163 -0
  157. package/dist/services/repo-snapshot.js.map +1 -0
  158. package/dist/services/runtime.d.ts +40 -0
  159. package/dist/services/runtime.d.ts.map +1 -0
  160. package/dist/services/runtime.js +71 -0
  161. package/dist/services/runtime.js.map +1 -0
  162. package/dist/services/set.d.ts +38 -0
  163. package/dist/services/set.d.ts.map +1 -0
  164. package/dist/services/set.js +184 -0
  165. package/dist/services/set.js.map +1 -0
  166. package/dist/services/status.d.ts +30 -0
  167. package/dist/services/status.d.ts.map +1 -0
  168. package/dist/services/status.js +35 -0
  169. package/dist/services/status.js.map +1 -0
  170. package/package.json +15 -7
  171. package/src/cli/commands/add.ts +0 -40
  172. package/src/cli/commands/cd.ts +0 -80
  173. package/src/cli/commands/doctor.ts +0 -20
  174. package/src/cli/commands/forget.ts +0 -32
  175. package/src/cli/commands/index.ts +0 -23
  176. package/src/cli/commands/init.ts +0 -43
  177. package/src/cli/commands/list.ts +0 -17
  178. package/src/cli/commands/pull.ts +0 -31
  179. package/src/cli/commands/push.ts +0 -31
  180. package/src/cli/commands/set.ts +0 -47
  181. package/src/cli/commands/status.ts +0 -18
  182. package/src/cli/sync-output.test.ts +0 -173
  183. package/src/cli/sync-output.ts +0 -200
  184. package/src/config/sync.test.ts +0 -609
  185. package/src/config/sync.ts +0 -572
  186. package/src/config/xdg.ts +0 -138
  187. package/src/lib/string.test.ts +0 -13
  188. package/src/lib/string.ts +0 -3
  189. package/src/lib/validation.test.ts +0 -32
  190. package/src/lib/validation.ts +0 -11
  191. package/src/services/add.ts +0 -178
  192. package/src/services/config-file.test.ts +0 -161
  193. package/src/services/config-file.ts +0 -101
  194. package/src/services/crypto.test.ts +0 -132
  195. package/src/services/crypto.ts +0 -83
  196. package/src/services/doctor.ts +0 -142
  197. package/src/services/error.ts +0 -6
  198. package/src/services/filesystem.test.ts +0 -171
  199. package/src/services/filesystem.ts +0 -183
  200. package/src/services/forget.ts +0 -261
  201. package/src/services/git.test.ts +0 -83
  202. package/src/services/git.ts +0 -74
  203. package/src/services/init.test.ts +0 -109
  204. package/src/services/init.ts +0 -244
  205. package/src/services/list.ts +0 -63
  206. package/src/services/local-materialization.ts +0 -421
  207. package/src/services/local-snapshot.ts +0 -173
  208. package/src/services/paths.test.ts +0 -74
  209. package/src/services/paths.ts +0 -98
  210. package/src/services/pull.ts +0 -144
  211. package/src/services/push.ts +0 -168
  212. package/src/services/repo-artifacts.ts +0 -262
  213. package/src/services/repo-snapshot.ts +0 -197
  214. package/src/services/runtime.ts +0 -57
  215. package/src/services/set.ts +0 -383
  216. package/src/services/status.ts +0 -57
  217. package/src/services/sync.dry-run.test.ts +0 -179
  218. package/src/services/sync.runtime.test.ts +0 -756
  219. package/src/services/sync.service.test.ts +0 -1169
  220. package/src/test/helpers/sync-fixture.ts +0 -47
@@ -0,0 +1,102 @@
1
+ import { homedir } from "node:os";
2
+ import { isAbsolute, resolve } from "node:path";
3
+ const readTrimmedEnvironmentValue = (environment, key) => {
4
+ const value = environment[key];
5
+ if (value === undefined) {
6
+ return undefined;
7
+ }
8
+ const trimmedValue = value.trim();
9
+ return trimmedValue === "" ? undefined : trimmedValue;
10
+ };
11
+ const bracedXdgConfigHomeToken = "$" + "{XDG_CONFIG_HOME}";
12
+ const bracedXdgConfigHomePrefix = `${bracedXdgConfigHomeToken}/`;
13
+ export const resolveHomeDirectory = (environment = process.env) => {
14
+ const configuredValue = readTrimmedEnvironmentValue(environment, "HOME");
15
+ if (configuredValue !== undefined) {
16
+ return resolve(configuredValue);
17
+ }
18
+ return resolve(homedir());
19
+ };
20
+ export const resolveXdgConfigHome = (environment = process.env) => {
21
+ const configuredValue = readTrimmedEnvironmentValue(environment, "XDG_CONFIG_HOME");
22
+ if (configuredValue !== undefined) {
23
+ return resolve(configuredValue);
24
+ }
25
+ return resolve(resolveHomeDirectory(environment), ".config");
26
+ };
27
+ export const resolveDevsyncConfigDirectory = (environment = process.env) => {
28
+ return resolve(resolveXdgConfigHome(environment), "devsync");
29
+ };
30
+ export const resolveDevsyncGlobalConfigFilePath = (environment = process.env) => {
31
+ return resolve(resolveDevsyncConfigDirectory(environment), "settings.json");
32
+ };
33
+ export const resolveDevsyncSyncDirectory = (environment = process.env) => {
34
+ return resolve(resolveDevsyncConfigDirectory(environment), "sync");
35
+ };
36
+ export const resolveDevsyncAgeDirectory = (environment = process.env) => {
37
+ return resolve(resolveDevsyncConfigDirectory(environment), "age");
38
+ };
39
+ export const expandHomePath = (value, environment = process.env) => {
40
+ let expandedValue = value.trim();
41
+ if (expandedValue === "~") {
42
+ expandedValue = resolveHomeDirectory(environment);
43
+ }
44
+ else if (expandedValue.startsWith("~/")) {
45
+ expandedValue = resolve(resolveHomeDirectory(environment), expandedValue.slice(2));
46
+ }
47
+ return expandedValue;
48
+ };
49
+ export const expandConfiguredPath = (value, environment = process.env) => {
50
+ let expandedValue = expandHomePath(value, environment);
51
+ if (expandedValue === "$XDG_CONFIG_HOME") {
52
+ expandedValue = resolveXdgConfigHome(environment);
53
+ }
54
+ else if (expandedValue.startsWith("$XDG_CONFIG_HOME/")) {
55
+ expandedValue = resolve(resolveXdgConfigHome(environment), expandedValue.slice("$XDG_CONFIG_HOME/".length));
56
+ }
57
+ else if (expandedValue === bracedXdgConfigHomeToken) {
58
+ expandedValue = resolveXdgConfigHome(environment);
59
+ }
60
+ else if (expandedValue.startsWith(bracedXdgConfigHomePrefix)) {
61
+ expandedValue = resolve(resolveXdgConfigHome(environment), expandedValue.slice(bracedXdgConfigHomePrefix.length));
62
+ }
63
+ return expandedValue;
64
+ };
65
+ export const resolveConfiguredAbsolutePath = (value, environment = process.env) => {
66
+ const expandedValue = expandConfiguredPath(value, environment);
67
+ if (!isAbsolute(expandedValue)) {
68
+ throw new Error(`Configured path must be absolute or start with ~ or $XDG_CONFIG_HOME: ${value}`);
69
+ }
70
+ return resolve(expandedValue);
71
+ };
72
+ export const expandWindowsEnvVars = (value, environment = process.env) => {
73
+ return value.replace(/%([^%]+)%/g, (_match, varName) => {
74
+ const envValue = readTrimmedEnvironmentValue(environment, varName);
75
+ if (envValue === undefined) {
76
+ throw new Error(`Environment variable %${varName}% is not defined.`);
77
+ }
78
+ return envValue;
79
+ });
80
+ };
81
+ export const expandPlatformConfiguredPath = (value, environment = process.env) => {
82
+ let expanded = value.trim();
83
+ if (expanded.includes("%")) {
84
+ expanded = expandWindowsEnvVars(expanded, environment);
85
+ }
86
+ return expandConfiguredPath(expanded, environment);
87
+ };
88
+ export const resolvePlatformConfiguredAbsolutePath = (value, environment = process.env) => {
89
+ const expandedValue = expandPlatformConfiguredPath(value, environment);
90
+ if (!isAbsolute(expandedValue)) {
91
+ throw new Error(`Configured path must be absolute or start with ~, $XDG_CONFIG_HOME, or %ENV_VAR%: ${value}`);
92
+ }
93
+ return resolve(expandedValue);
94
+ };
95
+ export const resolveHomeConfiguredAbsolutePath = (value, environment = process.env) => {
96
+ const expandedValue = expandHomePath(value, environment);
97
+ if (!isAbsolute(expandedValue)) {
98
+ throw new Error(`Configured path must be absolute or start with ~: ${value}`);
99
+ }
100
+ return resolve(expandedValue);
101
+ };
102
+ //# sourceMappingURL=xdg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xdg.js","sourceRoot":"","sources":["../../src/config/xdg.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
  import { execute } from "@oclif/core";
3
-
4
3
  await execute({ dir: import.meta.url });
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const buildExecutableMode: (executable: boolean) => 493 | 420;
2
+ export declare const isExecutableMode: (mode: number | bigint) => boolean;
3
+ //# sourceMappingURL=file-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-mode.d.ts","sourceRoot":"","sources":["../../src/lib/file-mode.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,GAAI,YAAY,OAAO,cAEtD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,GAAG,MAAM,YAErD,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const buildExecutableMode = (executable) => {
2
+ return executable ? 0o755 : 0o644;
3
+ };
4
+ export const isExecutableMode = (mode) => {
5
+ return (Number(mode) & 0o111) !== 0;
6
+ };
7
+ //# sourceMappingURL=file-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-mode.js","sourceRoot":"","sources":["../../src/lib/file-mode.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAmB,EAAE,EAAE;IACzD,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAqB,EAAE,EAAE;IACxD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { SyncAddResult } from "#app/services/add.js";
2
+ import type { SyncDoctorResult } from "#app/services/doctor.js";
3
+ import type { SyncForgetResult } from "#app/services/forget.js";
4
+ import type { SyncInitResult } from "#app/services/init.js";
5
+ import type { SyncMachineListResult, SyncMachineUpdateResult } from "#app/services/machine.js";
6
+ import type { SyncPullResult } from "#app/services/pull.js";
7
+ import type { SyncPushResult } from "#app/services/push.js";
8
+ import type { SyncSetResult } from "#app/services/set.js";
9
+ import type { SyncStatusResult } from "#app/services/status.js";
10
+ type OutputLine = false | null | string | undefined;
11
+ export declare const output: (...lines: OutputLine[]) => string;
12
+ export declare const writeStdout: (value: string) => void;
13
+ export declare const writeStderr: (value: string) => void;
14
+ export declare const line: (label: string, value: number | string) => string;
15
+ export declare const summary: (...parts: string[]) => string;
16
+ export declare const bullets: (items: readonly string[], indent?: string) => string[];
17
+ export declare const preview: (label: string, items: readonly string[], emptyText: string) => string[];
18
+ export declare const levelTag: (level: "fail" | "ok" | "warn") => string;
19
+ export declare const formatErrorMessage: (message: Error | string) => string;
20
+ export declare const formatSyncInitResult: (result: SyncInitResult) => string;
21
+ export declare const formatSyncAddResult: (result: SyncAddResult) => string;
22
+ export declare const formatSyncForgetResult: (result: SyncForgetResult) => string;
23
+ export declare const formatSyncSetResult: (result: SyncSetResult) => string;
24
+ export declare const formatSyncPushResult: (result: SyncPushResult) => string;
25
+ export declare const formatSyncPullResult: (result: SyncPullResult) => string;
26
+ export declare const formatSyncStatusResult: (result: SyncStatusResult) => string;
27
+ export declare const formatSyncDoctorResult: (result: SyncDoctorResult) => string;
28
+ export declare const formatSyncMachineListResult: (result: SyncMachineListResult) => string;
29
+ export declare const formatSyncMachineUpdateResult: (result: SyncMachineUpdateResult) => string;
30
+ export {};
31
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,KAAK,UAAU,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAsBpD,eAAO,MAAM,MAAM,GAAI,GAAG,OAAO,UAAU,EAAE,WAE5C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,SAExC,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,SAExC,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,GAAG,MAAM,WAEzD,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,GAAG,OAAO,MAAM,EAAE,WAEzC,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,OAAO,SAAS,MAAM,EAAE,EAAE,eAAsB,aAIvE,CAAC;AAEF,eAAO,MAAM,OAAO,GAClB,OAAO,MAAM,EACb,OAAO,SAAS,MAAM,EAAE,EACxB,WAAW,MAAM,aAUlB,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,GAAG,IAAI,GAAG,MAAM,WASrD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,SAAS,KAAK,GAAG,MAAM,WAEzD,CAAC;AAqHF,eAAO,MAAM,oBAAoB,GAAI,QAAQ,cAAc,WA4B1D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,aAAa,WAmBxD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,QAAQ,gBAAgB,WAY9D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,aAAa,WAgBxD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,QAAQ,cAAc,WAa1D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,QAAQ,cAAc,WAa1D,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,QAAQ,gBAAgB,WAgB9D,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,QAAQ,gBAAgB,WAW9D,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,QAAQ,qBAAqB,WAkCxE,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,QAAQ,uBAAuB,WAehC,CAAC"}
@@ -0,0 +1,198 @@
1
+ import { createColors } from "picocolors";
2
+ import { ensureTrailingNewline } from "#app/lib/string.js";
3
+ import { formatDevsyncError } from "#app/services/error.js";
4
+ const OUTPUT_INDENT = " ";
5
+ const colors = createColors(process.stdout.isTTY || process.stderr.isTTY);
6
+ const style = {
7
+ bullet: (value) => colors.dim(value),
8
+ detail: (value) => colors.dim(value),
9
+ error: (value) => colors.bold(colors.red(value)),
10
+ headline: (value) => colors.bold(colors.cyan(value)),
11
+ success: (value) => colors.bold(colors.green(value)),
12
+ value: (value) => colors.reset(value),
13
+ warn: (value) => colors.bold(colors.yellow(value)),
14
+ };
15
+ const compactLines = (lines) => {
16
+ return lines.filter((line) => line !== undefined && line !== null && line !== false);
17
+ };
18
+ export const output = (...lines) => {
19
+ return ensureTrailingNewline(compactLines(lines).join("\n"));
20
+ };
21
+ export const writeStdout = (value) => {
22
+ process.stdout.write(value);
23
+ };
24
+ export const writeStderr = (value) => {
25
+ process.stderr.write(value);
26
+ };
27
+ export const line = (label, value) => {
28
+ return `${style.detail(label)}: ${style.value(String(value))}`;
29
+ };
30
+ export const summary = (...parts) => {
31
+ return line("Summary", parts.join(", "));
32
+ };
33
+ export const bullets = (items, indent = OUTPUT_INDENT) => {
34
+ return items.map((item) => `${indent}${style.bullet("-")} ${style.value(item)}`);
35
+ };
36
+ export const preview = (label, items, emptyText) => {
37
+ if (items.length === 0) {
38
+ return [line(label, emptyText)];
39
+ }
40
+ return [
41
+ line(label, `${items.length} path${items.length === 1 ? "" : "s"}`),
42
+ ...bullets(items),
43
+ ];
44
+ };
45
+ export const levelTag = (level) => {
46
+ switch (level) {
47
+ case "fail":
48
+ return style.error("FAIL");
49
+ case "warn":
50
+ return style.warn("WARN");
51
+ default:
52
+ return style.success("OK");
53
+ }
54
+ };
55
+ export const formatErrorMessage = (message) => {
56
+ return output(...formatDevsyncError(message).split("\n").map(style.error));
57
+ };
58
+ const formatHeadline = (message, tone = "default") => {
59
+ switch (tone) {
60
+ case "error":
61
+ return style.error(message);
62
+ case "success":
63
+ return style.success(message);
64
+ case "warn":
65
+ return style.warn(message);
66
+ default:
67
+ return style.headline(message);
68
+ }
69
+ };
70
+ const formatSetReason = (reason, mode) => {
71
+ switch (reason) {
72
+ case "already-set":
73
+ return `This target already has ${mode} mode.`;
74
+ default:
75
+ return undefined;
76
+ }
77
+ };
78
+ const formatStoragePath = (repoPath) => {
79
+ return `default/${repoPath}`;
80
+ };
81
+ const formatPushSummary = (result) => {
82
+ return summary(`${result.plainFileCount} plain files`, `${result.encryptedFileCount} encrypted files`, `${result.symlinkCount} symlinks`, `${result.directoryCount} directory roots`, result.dryRun
83
+ ? `${result.deletedArtifactCount} stale repository artifacts would be removed`
84
+ : `${result.deletedArtifactCount} stale repository artifacts removed`);
85
+ };
86
+ const formatPullSummary = (result) => {
87
+ return summary(`${result.plainFileCount} plain files`, `${result.decryptedFileCount} decrypted files`, `${result.symlinkCount} symlinks`, `${result.directoryCount} directory roots`, result.dryRun
88
+ ? `${result.deletedLocalCount} local paths would be removed`
89
+ : `${result.deletedLocalCount} local paths removed`);
90
+ };
91
+ const formatTrackedEntry = (entry) => {
92
+ const lines = [
93
+ `${style.bullet("-")} ${style.value(entry.repoPath)} ${style.detail(`[${entry.kind}, ${entry.mode}] -> ${entry.localPath}`)}`,
94
+ `${OUTPUT_INDENT}${style.detail("storage")} ${style.value(formatStoragePath(entry.repoPath))}`,
95
+ ...(entry.machines.length > 0
96
+ ? [
97
+ `${OUTPUT_INDENT}${style.detail("machines")} ${style.value(entry.machines.join(", "))}`,
98
+ ]
99
+ : []),
100
+ ];
101
+ return lines;
102
+ };
103
+ const formatPushPlan = (result) => {
104
+ return [
105
+ line("Push plan", `${result.plainFileCount} plain files, ${result.encryptedFileCount} encrypted files, ${result.symlinkCount} symlinks, ${result.directoryCount} directory roots, ${result.deletedArtifactCount} stale repository artifacts.`),
106
+ ...preview("Push preview", result.preview, "no tracked paths"),
107
+ ];
108
+ };
109
+ const formatPullPlan = (result) => {
110
+ return [
111
+ line("Pull plan", `${result.plainFileCount} plain files, ${result.decryptedFileCount} decrypted files, ${result.symlinkCount} symlinks, ${result.directoryCount} directory roots, ${result.deletedLocalCount} local paths.`),
112
+ ...preview("Pull preview", result.preview, "no tracked paths"),
113
+ ];
114
+ };
115
+ const formatDoctorCounts = (checks) => {
116
+ const counts = checks.reduce((accumulator, check) => {
117
+ accumulator[check.level] += 1;
118
+ return accumulator;
119
+ }, {
120
+ fail: 0,
121
+ ok: 0,
122
+ warn: 0,
123
+ });
124
+ return summary(`${counts.ok} ok`, `${counts.warn} warnings`, `${counts.fail} failures`);
125
+ };
126
+ const formatDoctorCheck = (check) => {
127
+ return `${levelTag(check.level)} ${check.name}: ${check.detail}`;
128
+ };
129
+ export const formatSyncInitResult = (result) => {
130
+ return output(formatHeadline(result.alreadyInitialized
131
+ ? "Sync directory already initialized."
132
+ : "Initialized sync directory.", result.alreadyInitialized ? "warn" : "success"), line("Sync directory", result.syncDirectory), line("Config file", result.configPath), line("Age identity file", result.identityFile), (() => {
133
+ switch (result.gitAction) {
134
+ case "cloned":
135
+ return line("Git repository", `cloned from ${result.gitSource}`);
136
+ case "initialized":
137
+ return line("Git repository", "initialized new repository");
138
+ default:
139
+ return line("Git repository", "using existing repository");
140
+ }
141
+ })(), result.generatedIdentity &&
142
+ "Age bootstrap: generated a new local identity.", summary(`${result.recipientCount} recipients`, `${result.entryCount} entries`));
143
+ };
144
+ export const formatSyncAddResult = (result) => {
145
+ const headline = !result.alreadyTracked
146
+ ? "Tracked sync target."
147
+ : result.changed
148
+ ? "Updated sync target."
149
+ : "Sync target already tracked.";
150
+ const tone = !result.alreadyTracked || result.changed ? "success" : "warn";
151
+ return output(formatHeadline(headline, tone), line("Sync directory", result.syncDirectory), line("Config file", result.configPath), line("Local path", result.localPath), line("Repository path", result.repoPath), line("Repository storage", formatStoragePath(result.repoPath)), line("Kind", result.kind), line("Mode", result.mode), result.machines.length > 0 && line("Machines", result.machines.join(", ")));
152
+ };
153
+ export const formatSyncForgetResult = (result) => {
154
+ return output(formatHeadline("Untracked sync target.", "warn"), line("Sync directory", result.syncDirectory), line("Config file", result.configPath), line("Local path", result.localPath), line("Repository path", result.repoPath), line("Removed repo artifacts", `${result.plainArtifactCount} plain, ${result.secretArtifactCount} secret.`));
155
+ };
156
+ export const formatSyncSetResult = (result) => {
157
+ return output(formatHeadline(result.action === "unchanged"
158
+ ? "Sync mode unchanged."
159
+ : "Updated sync mode.", result.action === "unchanged" ? "warn" : "success"), line("Sync directory", result.syncDirectory), line("Config file", result.configPath), line("Owning entry", result.entryRepoPath), line("Target repository path", result.repoPath), line("Mode", result.mode), line("Action", result.action), formatSetReason(result.reason, result.mode));
160
+ };
161
+ export const formatSyncPushResult = (result) => {
162
+ return output(formatHeadline(result.dryRun
163
+ ? "Dry run for sync push."
164
+ : "Synchronized local config into the sync repository.", result.dryRun ? "warn" : "success"), line("Sync directory", result.syncDirectory), line("Config file", result.configPath), formatPushSummary(result), result.dryRun && "No filesystem changes were made.");
165
+ };
166
+ export const formatSyncPullResult = (result) => {
167
+ return output(formatHeadline(result.dryRun
168
+ ? "Dry run for sync pull."
169
+ : "Applied sync repository to local config.", result.dryRun ? "warn" : "success"), line("Sync directory", result.syncDirectory), line("Config file", result.configPath), formatPullSummary(result), result.dryRun && "No filesystem changes were made.");
170
+ };
171
+ export const formatSyncStatusResult = (result) => {
172
+ return output(formatHeadline("Sync status overview."), line("Sync directory", result.syncDirectory), line("Config file", result.configPath), line("Active machine", result.activeMachine ?? "none"), summary(`${result.recipientCount} recipients`, `${result.entryCount} entries`), ...(result.entries.length === 0
173
+ ? [line("Entries", "none")]
174
+ : result.entries.flatMap(formatTrackedEntry)), ...formatPushPlan(result.push), ...formatPullPlan(result.pull));
175
+ };
176
+ export const formatSyncDoctorResult = (result) => {
177
+ return output(formatHeadline(result.hasFailures ? "Sync doctor found issues." : "Sync doctor passed.", result.hasFailures ? "error" : result.hasWarnings ? "warn" : "success"), line("Sync directory", result.syncDirectory), line("Config file", result.configPath), formatDoctorCounts(result.checks), ...result.checks.map(formatDoctorCheck));
178
+ };
179
+ export const formatSyncMachineListResult = (result) => {
180
+ const assignmentLines = result.assignments.length === 0
181
+ ? [line("Assignments", "none")]
182
+ : result.assignments.map((a) => `${OUTPUT_INDENT}${style.bullet("-")} ${style.value(a.entryRepoPath)} ${style.detail(`[${a.machines.join(", ")}]`)}`);
183
+ const noActiveMachine = result.activeMachine === undefined;
184
+ const hasRestrictedEntries = result.assignments.length > 0;
185
+ return output(formatHeadline("Sync machines overview."), line("Sync directory", result.syncDirectory), line("Global config", result.globalConfigPath), line("Active machines", result.activeMachine ?? "none"), summary(`${result.availableMachines.length} available machines`, `${result.assignments.length} assignments`, result.globalConfigExists
186
+ ? "global config present"
187
+ : "using implicit defaults"), ...(result.availableMachines.length === 0
188
+ ? [line("Machines", "none")]
189
+ : preview("Machines", result.availableMachines, "none")), ...assignmentLines, noActiveMachine &&
190
+ hasRestrictedEntries &&
191
+ style.warn("No active machine set. Entries restricted to specific machines will not sync."));
192
+ };
193
+ export const formatSyncMachineUpdateResult = (result) => {
194
+ return output(formatHeadline(result.mode === "use"
195
+ ? "Updated active sync machine."
196
+ : "Cleared active sync machine.", "success"), line("Sync directory", result.syncDirectory), line("Global config", result.globalConfigPath), result.machine !== undefined && line("Machine", result.machine), line("Active machines", result.activeMachine ?? "none"), result.warning !== undefined && style.warn(result.warning));
197
+ };
198
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const buildDirectoryKey: (repoPath: string) => string;
2
+ export declare const isPathEqualOrNested: (path: string, rootPath: string) => boolean;
3
+ export declare const doPathsOverlap: (leftPath: string, rightPath: string) => boolean;
4
+ export declare const isExplicitLocalPath: (target: string) => boolean;
5
+ //# sourceMappingURL=path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/lib/path.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,WAEjD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,YASjE,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,UAAU,MAAM,EAAE,WAAW,MAAM,YAKjE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,YAUjD,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { isAbsolute, relative } from "node:path";
2
+ export const buildDirectoryKey = (repoPath) => {
3
+ return `${repoPath}/`;
4
+ };
5
+ export const isPathEqualOrNested = (path, rootPath) => {
6
+ const rootToPath = relative(rootPath, path);
7
+ return (rootToPath === "" ||
8
+ (!isAbsolute(rootToPath) &&
9
+ !rootToPath.startsWith("..") &&
10
+ rootToPath !== ".."));
11
+ };
12
+ export const doPathsOverlap = (leftPath, rightPath) => {
13
+ return (isPathEqualOrNested(leftPath, rightPath) ||
14
+ isPathEqualOrNested(rightPath, leftPath));
15
+ };
16
+ export const isExplicitLocalPath = (target) => {
17
+ return (target === "." ||
18
+ target === ".." ||
19
+ target === "~" ||
20
+ target.startsWith("./") ||
21
+ target.startsWith("../") ||
22
+ target.startsWith("~/") ||
23
+ isAbsolute(target));
24
+ };
25
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/lib/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE;IACpD,OAAO,GAAG,QAAQ,GAAG,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAE;IACpE,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAE5C,OAAO,CACL,UAAU,KAAK,EAAE;QACjB,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;YACtB,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;YAC5B,UAAU,KAAK,IAAI,CAAC,CACvB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,SAAiB,EAAE,EAAE;IACpE,OAAO,CACL,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC;QACxC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CACzC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAE,EAAE;IACpD,OAAO,CACL,MAAM,KAAK,GAAG;QACd,MAAM,KAAK,IAAI;QACf,MAAM,KAAK,GAAG;QACd,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;QACvB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;QACxB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;QACvB,UAAU,CAAC,MAAM,CAAC,CACnB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const ensureTrailingNewline: (value: string) => string;
2
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/lib/string.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,WAElD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const ensureTrailingNewline = (value) => {
2
+ return value.endsWith("\n") ? value : `${value}\n`;
3
+ };
4
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/lib/string.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAE,EAAE;IACrD,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC;AACrD,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { z } from "zod";
2
+ export declare const formatInputIssues: (issues: z.ZodIssue[]) => string;
3
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,eAAO,MAAM,iBAAiB,GAAI,QAAQ,CAAC,CAAC,QAAQ,EAAE,KAAG,MAQxD,CAAC"}
@@ -0,0 +1,9 @@
1
+ export const formatInputIssues = (issues) => {
2
+ return issues
3
+ .map((issue) => {
4
+ const path = issue.path.length === 0 ? "input" : issue.path.join(".");
5
+ return `- ${path}: ${issue.message}`;
6
+ })
7
+ .join("\n");
8
+ };
9
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAoB,EAAU,EAAE;IAChE,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtE,OAAO,KAAK,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;IACvC,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type SyncConfigEntryKind, type SyncMode } from "#app/config/sync.js";
2
+ import { type SyncContext } from "./runtime.js";
3
+ export type SyncAddRequest = Readonly<{
4
+ machines?: readonly string[];
5
+ mode: SyncMode;
6
+ target: string;
7
+ }>;
8
+ export type SyncAddResult = Readonly<{
9
+ alreadyTracked: boolean;
10
+ changed: boolean;
11
+ configPath: string;
12
+ kind: SyncConfigEntryKind;
13
+ localPath: string;
14
+ machines: readonly string[];
15
+ mode: SyncMode;
16
+ repoPath: string;
17
+ syncDirectory: string;
18
+ }>;
19
+ export declare const trackSyncTarget: (request: SyncAddRequest, context: SyncContext) => Promise<SyncAddResult>;
20
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/services/add.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACd,MAAM,qBAAqB,CAAC;AAc7B,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEtE,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AAqFH,eAAO,MAAM,eAAe,GAC1B,SAAS,cAAc,EACvB,SAAS,WAAW,KACnB,OAAO,CAAC,aAAa,CAuIvB,CAAC"}