@anvil-works/anvil-cli 0.5.13 → 0.5.14
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/CLILogger.d.ts +54 -0
- package/dist/CLILogger.d.ts.map +1 -0
- package/dist/EditorYaml.d.ts +57 -0
- package/dist/EditorYaml.d.ts.map +1 -0
- package/dist/Emitter.d.ts +32 -0
- package/dist/Emitter.d.ts.map +1 -0
- package/dist/SavePathRouter.d.ts +56 -0
- package/dist/SavePathRouter.d.ts.map +1 -0
- package/dist/WatchSession.d.ts +112 -0
- package/dist/WatchSession.d.ts.map +1 -0
- package/dist/api.d.ts +35 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +2092 -2092
- package/dist/commands/checkout-picker.d.ts +25 -0
- package/dist/commands/checkout-picker.d.ts.map +1 -0
- package/dist/commands/checkout.d.ts +85 -0
- package/dist/commands/checkout.d.ts.map +1 -0
- package/dist/commands/config.d.ts +30 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/configure.d.ts +13 -0
- package/dist/commands/configure.d.ts.map +1 -0
- package/dist/commands/gitCredential.d.ts +21 -0
- package/dist/commands/gitCredential.d.ts.map +1 -0
- package/dist/commands/index.d.ts +13 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/login.d.ts +3 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/logout.d.ts +5 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/version.d.ts +10 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/watch.d.ts +99 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/config.d.ts +56 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/errors.d.ts +151 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/globalConfig.d.ts +23 -0
- package/dist/globalConfig.d.ts.map +1 -0
- package/dist/index.js +41657 -17604
- package/dist/logger.d.ts +67 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/oauthHtml.d.ts +3 -0
- package/dist/oauthHtml.d.ts.map +1 -0
- package/dist/program.d.ts +5 -0
- package/dist/program.d.ts.map +1 -0
- package/dist/services/anvil-api.d.ts +124 -0
- package/dist/services/anvil-api.d.ts.map +1 -0
- package/dist/services/auth.d.ts +69 -0
- package/dist/services/auth.d.ts.map +1 -0
- package/dist/services/git-auth.d.ts +19 -0
- package/dist/services/git-auth.d.ts.map +1 -0
- package/dist/services/git.d.ts +174 -0
- package/dist/services/git.d.ts.map +1 -0
- package/dist/services/index.d.ts +9 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/keychain.d.ts +9 -0
- package/dist/services/keychain.d.ts.map +1 -0
- package/dist/services/oauth-login.d.ts +46 -0
- package/dist/services/oauth-login.d.ts.map +1 -0
- package/dist/services/path-open.d.ts +8 -0
- package/dist/services/path-open.d.ts.map +1 -0
- package/dist/services/token-store.d.ts +37 -0
- package/dist/services/token-store.d.ts.map +1 -0
- package/dist/services/validation.d.ts +23 -0
- package/dist/services/validation.d.ts.map +1 -0
- package/dist/utils.d.ts +34 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/validators.d.ts +9 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/watch/ConflictResolver.d.ts +54 -0
- package/dist/watch/ConflictResolver.d.ts.map +1 -0
- package/dist/watch/FileWatcher.d.ts +68 -0
- package/dist/watch/FileWatcher.d.ts.map +1 -0
- package/dist/watch/SaveProcessor.d.ts +97 -0
- package/dist/watch/SaveProcessor.d.ts.map +1 -0
- package/dist/watch/SyncManager.d.ts +49 -0
- package/dist/watch/SyncManager.d.ts.map +1 -0
- package/dist/watch/WebSocketClient.d.ts +98 -0
- package/dist/watch/WebSocketClient.d.ts.map +1 -0
- package/dist/watch/index.d.ts +33 -0
- package/dist/watch/index.d.ts.map +1 -0
- package/package.json +15 -2
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Logger } from "./logger";
|
|
2
|
+
export interface CLILoggerOptions {
|
|
3
|
+
verbose?: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* CLI-specific logger implementation with ora spinners and pause/resume.
|
|
7
|
+
* Formats output with chalk colors and symbols.
|
|
8
|
+
* Supports JSON output mode for LLM/scripting consumption.
|
|
9
|
+
*/
|
|
10
|
+
export declare class CLILogger implements Logger {
|
|
11
|
+
private paused;
|
|
12
|
+
private spinners;
|
|
13
|
+
private activeProgressKeys;
|
|
14
|
+
private sessionVerbose;
|
|
15
|
+
constructor(options?: CLILoggerOptions);
|
|
16
|
+
private get jsonMode();
|
|
17
|
+
private isVerbose;
|
|
18
|
+
private logJson;
|
|
19
|
+
/**
|
|
20
|
+
* Central logging method that respects pause state and handles active spinners
|
|
21
|
+
*/
|
|
22
|
+
private log;
|
|
23
|
+
debug(...args: any[]): void;
|
|
24
|
+
verbose(...args: any[]): void;
|
|
25
|
+
info(...args: any[]): void;
|
|
26
|
+
warn(...args: any[]): void;
|
|
27
|
+
error(...args: any[]): void;
|
|
28
|
+
success(message: string): void;
|
|
29
|
+
progress(key: string, message: string): void;
|
|
30
|
+
progressUpdate(key: string, message: string): void;
|
|
31
|
+
progressEnd(key: string, message?: string): void;
|
|
32
|
+
pause(): void;
|
|
33
|
+
resume(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Set verbose mode for this session (used by --verbose flag)
|
|
36
|
+
*/
|
|
37
|
+
setVerbose(value: boolean): void;
|
|
38
|
+
/**
|
|
39
|
+
* Prompt the user with inquirer questions, auto-pausing/resuming output
|
|
40
|
+
*/
|
|
41
|
+
prompt<T extends Record<string, any>>(questions: any): Promise<T>;
|
|
42
|
+
/**
|
|
43
|
+
* Convenience method for yes/no confirmation prompts
|
|
44
|
+
*/
|
|
45
|
+
confirm(message: string, defaultValue?: boolean): Promise<boolean>;
|
|
46
|
+
/**
|
|
47
|
+
* Convenience method for list selection prompts
|
|
48
|
+
*/
|
|
49
|
+
select<T>(message: string, choices: Array<{
|
|
50
|
+
name: string;
|
|
51
|
+
value: T;
|
|
52
|
+
}>, defaultValue?: T): Promise<T>;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=CLILogger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CLILogger.d.ts","sourceRoot":"","sources":["../src/CLILogger.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAA8B,MAAM,UAAU,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAUD;;;;GAIG;AACH,qBAAa,SAAU,YAAW,MAAM;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAA6C;IAC7D,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,cAAc,CAAU;gBAEpB,OAAO,GAAE,gBAAqB;IAI1C,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,OAAO;IAUf;;OAEG;IACH,OAAO,CAAC,GAAG;IAoBX,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAU3B,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAU7B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAQ1B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAQ1B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAQ3B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQ9B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IA2B5C,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAsBlD,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IA8BhD,KAAK,IAAI,IAAI;IAWb,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIhC;;OAEG;IACG,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IASvE;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAYrE;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAa7G"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entity types that can be stored in .anvil_editor.yaml
|
|
3
|
+
*/
|
|
4
|
+
export type EntityType = "assets" | "forms" | "modules" | "scripts" | "server_modules";
|
|
5
|
+
/**
|
|
6
|
+
* Structure of .anvil_editor.yaml file
|
|
7
|
+
*/
|
|
8
|
+
export interface EditorYaml {
|
|
9
|
+
unique_ids: {
|
|
10
|
+
assets?: Record<string, string>;
|
|
11
|
+
forms?: Record<string, string>;
|
|
12
|
+
modules?: Record<string, string>;
|
|
13
|
+
scripts?: Record<string, string>;
|
|
14
|
+
server_modules?: Record<string, string>;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* READ-ONLY manager for .anvil_editor.yaml file which stores
|
|
19
|
+
* unique IDs for forms, modules, assets, etc.
|
|
20
|
+
*
|
|
21
|
+
* This file is managed by Anvil and updated via git fetch.
|
|
22
|
+
* We only read from it, never write to it.
|
|
23
|
+
*/
|
|
24
|
+
export declare class EditorYamlManager {
|
|
25
|
+
private yamlPath;
|
|
26
|
+
private data;
|
|
27
|
+
constructor(repoPath: string);
|
|
28
|
+
/**
|
|
29
|
+
* Load the .anvil_editor.yaml file (read-only)
|
|
30
|
+
*/
|
|
31
|
+
load(): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Reload the .anvil_editor.yaml file from disk
|
|
34
|
+
* (called after git fetch operations)
|
|
35
|
+
*/
|
|
36
|
+
reload(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Generate a temporary ID for new items
|
|
39
|
+
* (Anvil will provide the real ID via git)
|
|
40
|
+
*/
|
|
41
|
+
generateTempId(): string;
|
|
42
|
+
/**
|
|
43
|
+
* Generate an ID for a new entity (always generates a temp ID)
|
|
44
|
+
* Use this for "add" operations
|
|
45
|
+
*/
|
|
46
|
+
generateId(entityType: EntityType, name: string): string;
|
|
47
|
+
/**
|
|
48
|
+
* Get ID for an entity (returns existing ID or null if not found)
|
|
49
|
+
* Use this for "change" operations - returns null when no ID exists
|
|
50
|
+
*/
|
|
51
|
+
getId(entityType: EntityType, name: string): string | null;
|
|
52
|
+
/**
|
|
53
|
+
* Check if an entity has an ID in the YAML
|
|
54
|
+
*/
|
|
55
|
+
hasId(entityType: EntityType, name: string): boolean;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=EditorYaml.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditorYaml.d.ts","sourceRoot":"","sources":["../src/EditorYaml.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC3C,CAAC;CACL;AAED;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,IAAI,CAAa;gBAEb,QAAQ,EAAE,MAAM;IAK5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B3B;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;;OAGG;IACH,cAAc,IAAI,MAAM;IAMxB;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAIxD;;;OAGG;IACH,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK1D;;OAEG;IACH,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;CAGvD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Error handler type for Emitter */
|
|
2
|
+
export type EmitterErrorHandler = (event: string, error: unknown) => void;
|
|
3
|
+
/**
|
|
4
|
+
* Simple event emitter for type-safe event handling
|
|
5
|
+
*/
|
|
6
|
+
export declare class Emitter<EventMap extends Record<string, any>> {
|
|
7
|
+
private listeners;
|
|
8
|
+
private onError;
|
|
9
|
+
constructor(onError?: EmitterErrorHandler);
|
|
10
|
+
/**
|
|
11
|
+
* Subscribe to an event
|
|
12
|
+
*/
|
|
13
|
+
on<K extends keyof EventMap>(event: K, handler: (data: EventMap[K]) => void): void;
|
|
14
|
+
/**
|
|
15
|
+
* Subscribe to an event once (auto-unsubscribes after first call)
|
|
16
|
+
*/
|
|
17
|
+
once<K extends keyof EventMap>(event: K, handler: (data: EventMap[K]) => void): void;
|
|
18
|
+
/**
|
|
19
|
+
* Unsubscribe from an event
|
|
20
|
+
*/
|
|
21
|
+
off<K extends keyof EventMap>(event: K, handler: (data: EventMap[K]) => void): void;
|
|
22
|
+
/**
|
|
23
|
+
* Emit an event to all subscribers
|
|
24
|
+
* Handlers are called in a try-catch to prevent one failing handler from affecting others
|
|
25
|
+
*/
|
|
26
|
+
protected emit<K extends keyof EventMap>(event: K, data: EventMap[K]): void;
|
|
27
|
+
/**
|
|
28
|
+
* Remove all listeners for a specific event or all events
|
|
29
|
+
*/
|
|
30
|
+
removeAllListeners(event?: keyof EventMap): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=Emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Emitter.d.ts","sourceRoot":"","sources":["../src/Emitter.ts"],"names":[],"mappings":"AAEA,qCAAqC;AACrC,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAO1E;;GAEG;AACH,qBAAa,OAAO,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACrD,OAAO,CAAC,SAAS,CAA4D;IAC7E,OAAO,CAAC,OAAO,CAAsB;gBAEzB,OAAO,GAAE,mBAAyC;IAI9D;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAOlF;;OAEG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAQpF;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAOnF;;;OAGG;IACH,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAoB3E;;OAEG;IACH,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,QAAQ,GAAG,IAAI;CAOnD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { EditorYamlManager } from "./EditorYaml";
|
|
2
|
+
type SavePath = Array<any>;
|
|
3
|
+
export interface ModuleData {
|
|
4
|
+
name: string;
|
|
5
|
+
code: string;
|
|
6
|
+
is_package: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface ScriptData {
|
|
9
|
+
name: string;
|
|
10
|
+
code: string;
|
|
11
|
+
}
|
|
12
|
+
export interface FormData {
|
|
13
|
+
class_name: string;
|
|
14
|
+
code: string;
|
|
15
|
+
is_package: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface AssetData {
|
|
18
|
+
name: string;
|
|
19
|
+
content: string;
|
|
20
|
+
}
|
|
21
|
+
export type ChangeType = "change" | "add" | "unlink" | "rename";
|
|
22
|
+
export type SaveResult = {
|
|
23
|
+
type: "save";
|
|
24
|
+
savePath: SavePath;
|
|
25
|
+
content: any;
|
|
26
|
+
} | {
|
|
27
|
+
type: "ignore";
|
|
28
|
+
reason: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Deduplicate form template changes when corresponding code file is also changed
|
|
32
|
+
* Removes form template renames/adds when the corresponding .py file is also being renamed/added
|
|
33
|
+
*/
|
|
34
|
+
export declare function deduplicateFormChanges(changes: Array<{
|
|
35
|
+
path: string;
|
|
36
|
+
type: "change" | "add" | "unlink" | "rename";
|
|
37
|
+
from?: string;
|
|
38
|
+
}>): Array<{
|
|
39
|
+
path: string;
|
|
40
|
+
type: "change" | "add" | "unlink" | "rename";
|
|
41
|
+
from?: string;
|
|
42
|
+
}>;
|
|
43
|
+
export declare function routeFileChange(repoPath: string, relativePath: string, changeType: ChangeType, editorYaml: EditorYamlManager, stagedOnly?: boolean, fromPath?: string): Promise<SaveResult | SaveResult[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Handle anvil.yaml changes
|
|
46
|
+
* Returns an array of changed keys to be processed separately
|
|
47
|
+
* @param repoPath - Path to the repository
|
|
48
|
+
* @param previousYaml - Previous state of anvil.yaml for diffing (optional)
|
|
49
|
+
* @returns Array of {key, value} pairs for changed keys
|
|
50
|
+
*/
|
|
51
|
+
export declare function getAnvilYamlChanges(repoPath: string, previousYaml?: Record<string, any> | null): Promise<Array<{
|
|
52
|
+
key: string;
|
|
53
|
+
value: any;
|
|
54
|
+
}>>;
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=SavePathRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SavePathRouter.d.ts","sourceRoot":"","sources":["../src/SavePathRouter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAMlE,KAAK,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAG3B,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,QAAQ;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AASD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhE,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAgVjH;;;GAGG;AACH,wBAAgB,sBAAsB,CAClC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9F,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgEtF;AAED,wBAAsB,eAAe,CACjC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,iBAAiB,EAC7B,UAAU,GAAE,OAAe,EAC3B,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAoBpC;AAu2BD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACrC,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAC1C,OAAO,CAAC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,CAAC,CAAC,CAgE7C"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Emitter } from "./Emitter";
|
|
2
|
+
import { type FileChange } from "./watch";
|
|
3
|
+
export interface WatchSessionEvents {
|
|
4
|
+
"branch-changed": {
|
|
5
|
+
oldBranch: string;
|
|
6
|
+
newBranch: string;
|
|
7
|
+
};
|
|
8
|
+
"sync-conflict": {
|
|
9
|
+
retryAttempt: number;
|
|
10
|
+
maxRetries: number;
|
|
11
|
+
reason: string;
|
|
12
|
+
};
|
|
13
|
+
"remote-update": {
|
|
14
|
+
branch: string;
|
|
15
|
+
commitHash: string;
|
|
16
|
+
};
|
|
17
|
+
"validation-failed": {
|
|
18
|
+
reason: string;
|
|
19
|
+
currentBranch: string;
|
|
20
|
+
};
|
|
21
|
+
"save-complete": {
|
|
22
|
+
newCommitId: string;
|
|
23
|
+
fileCount: number;
|
|
24
|
+
};
|
|
25
|
+
"save-started": {
|
|
26
|
+
fileCount: number;
|
|
27
|
+
};
|
|
28
|
+
"save-succeeded": {
|
|
29
|
+
newCommitId: string;
|
|
30
|
+
fileCount: number;
|
|
31
|
+
};
|
|
32
|
+
"save-failed": {
|
|
33
|
+
error: string;
|
|
34
|
+
fileCount: number;
|
|
35
|
+
};
|
|
36
|
+
"max-retries-exceeded": {
|
|
37
|
+
retries: number;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export declare class WatchSession extends Emitter<WatchSessionEvents> {
|
|
41
|
+
private sessionId;
|
|
42
|
+
private repoPath;
|
|
43
|
+
private appId;
|
|
44
|
+
private anvilUrl;
|
|
45
|
+
private authToken;
|
|
46
|
+
private username?;
|
|
47
|
+
private editSession;
|
|
48
|
+
private isPausedForUserInput;
|
|
49
|
+
private isCleanedUp;
|
|
50
|
+
private gitService;
|
|
51
|
+
private currentBranch;
|
|
52
|
+
private commitId;
|
|
53
|
+
private editorYaml;
|
|
54
|
+
private lastBranchChangeTime;
|
|
55
|
+
syncStatus?: {
|
|
56
|
+
behind?: number;
|
|
57
|
+
ahead?: number;
|
|
58
|
+
upstreamRef?: string;
|
|
59
|
+
diverged?: boolean;
|
|
60
|
+
branchMissing?: boolean;
|
|
61
|
+
};
|
|
62
|
+
hasUncommittedChanges?: boolean;
|
|
63
|
+
private fileWatcher;
|
|
64
|
+
private wsClient;
|
|
65
|
+
private saveProcessor;
|
|
66
|
+
private syncManager;
|
|
67
|
+
private localChangePollTimer;
|
|
68
|
+
private isPollingLocalChanges;
|
|
69
|
+
private lastLocalStatusFingerprint;
|
|
70
|
+
private readonly BRANCH_CHANGE_SETTLE_MS;
|
|
71
|
+
private readonly LOCAL_CHANGE_POLL_MS;
|
|
72
|
+
private stagedOnly;
|
|
73
|
+
constructor(repoPath: string, appId: string, options: {
|
|
74
|
+
anvilUrl: string;
|
|
75
|
+
authToken: string;
|
|
76
|
+
currentBranch: string;
|
|
77
|
+
commitId: string;
|
|
78
|
+
stagedOnly?: boolean;
|
|
79
|
+
username?: string;
|
|
80
|
+
});
|
|
81
|
+
getBranchName(): string;
|
|
82
|
+
pauseForUserInput(): void;
|
|
83
|
+
resumeAfterUserInput(): void;
|
|
84
|
+
initialize(): Promise<void>;
|
|
85
|
+
private initializeProcessors;
|
|
86
|
+
private connectWebSocket;
|
|
87
|
+
/**
|
|
88
|
+
* Sync remote changes from Anvil.
|
|
89
|
+
* @throws {AuthError | GitError} on failure
|
|
90
|
+
*/
|
|
91
|
+
syncRemoteChanges(knownLocalChanges?: Set<string>): Promise<{
|
|
92
|
+
localOnlyChanges: FileChange[];
|
|
93
|
+
conflicts: FileChange[];
|
|
94
|
+
}>;
|
|
95
|
+
cleanup(): void;
|
|
96
|
+
startWatching(): Promise<void>;
|
|
97
|
+
private initializeLocalChangeFingerprint;
|
|
98
|
+
private startLocalChangeFallbackPolling;
|
|
99
|
+
private pollForMissedLocalChanges;
|
|
100
|
+
private getLocalStatusFingerprint;
|
|
101
|
+
private handleFileChange;
|
|
102
|
+
private isSettlePeriodOver;
|
|
103
|
+
private getRemainingSettleTime;
|
|
104
|
+
/**
|
|
105
|
+
* Force save all pending changes.
|
|
106
|
+
* @throws {SaveError | AuthError | GitError | NetworkError} on failure
|
|
107
|
+
*/
|
|
108
|
+
forceSave(): Promise<void>;
|
|
109
|
+
private getSuccessMessage;
|
|
110
|
+
private handlePythonification;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=WatchSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WatchSession.d.ts","sourceRoot":"","sources":["../src/WatchSession.ts"],"names":[],"mappings":"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"}
|
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { WatchSession } from "./WatchSession";
|
|
2
|
+
import { AuthError, GitError } from "./errors";
|
|
3
|
+
import { ValidationServiceError } from "./services/validation";
|
|
4
|
+
export { AppIdCandidate, AppIdWithContext, CheckoutAppListItem, detectAppIdsByCommitLookup, detectAppIdsFromAllRemotes, filterCandidates, formatCandidateLabel, getGitFetchUrl, getGitPushUrl, getLatestVersion, getWebSocketUrl, listAppsForCheckout, lookupRemoteInfoForAppId, lookupByCommit, saveUpdates, ValidateAppIdResponse, validateAppId, } from "./services/anvil-api";
|
|
5
|
+
export { getAccountsForUrl, getAvailableAnvilUrls, getTokensForUrl, getValidAuthToken, hasTokensForUrl, login, LoginResult, LogoutResult, logout, StoredTokens, TokenData, verifyAuth, } from "./services/auth";
|
|
6
|
+
export { DeviceAuthorizationResponse, OAuthTokenResponse, pollDeviceAuthorization, requestDeviceAuthorization, runInteractiveLoginFlow, } from "./services/oauth-login";
|
|
7
|
+
export { CheckoutCloneOptions, CheckoutExecutionDeps, CheckoutOptions, ensureCheckoutAuthToken, executeCheckout, getDefaultDestinationDirectory, isDirectoryNonEmpty, isPathInsideGitRepo, openPathInEditorOrDefault, parseCheckoutInput, ParsedCheckoutInput, resolveCheckoutUrl, resolveCheckoutUsername, sanitizeDirectoryName, validateCheckoutDestination, } from "./commands/checkout";
|
|
8
|
+
export { deleteConfig, getAllConfig, getConfig, getInstalledPreferredEditors, getPreferredEditorCommand, getSettableConfigKeys, isCommandAvailable, normalizeAnvilUrl, parseConfigSetValue, preferredEditors, PreferredEditor, resetConfig, resolveAnvilUrl, setConfig, SettableConfigKey, } from "./config";
|
|
9
|
+
export { BranchSyncStatus, validateAnvilApp, validateBranchSyncStatus } from "./services/validation";
|
|
10
|
+
export interface UncommittedChanges {
|
|
11
|
+
hasChanges: boolean;
|
|
12
|
+
modified: string[];
|
|
13
|
+
notAdded: string[];
|
|
14
|
+
created: string[];
|
|
15
|
+
deleted: string[];
|
|
16
|
+
staged: string[];
|
|
17
|
+
}
|
|
18
|
+
export type WatchError = AuthError | GitError | ValidationServiceError;
|
|
19
|
+
/**
|
|
20
|
+
* Check for uncommitted changes in a repository.
|
|
21
|
+
* @throws {GitError} if git command fails
|
|
22
|
+
*/
|
|
23
|
+
export declare function checkUncommittedChanges(repoPath: string): Promise<UncommittedChanges>;
|
|
24
|
+
/**
|
|
25
|
+
* Sync to the latest version from Anvil.
|
|
26
|
+
* Creates a temporary WatchSession to perform the sync.
|
|
27
|
+
* @throws {AnvilError} on failure
|
|
28
|
+
*/
|
|
29
|
+
export declare function syncToLatest(repoPath: string, appId: string, anvilUrl: string, authToken: string, currentBranch: string, username?: string): Promise<string>;
|
|
30
|
+
/**
|
|
31
|
+
* Create and initialize a watch session for syncing with Anvil.
|
|
32
|
+
* @throws {WatchError} on failure
|
|
33
|
+
*/
|
|
34
|
+
export declare function watch(repoPath: string, appId: string, anvilUrl?: string, stagedOnly?: boolean, username?: string): Promise<WatchSession>;
|
|
35
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAkB,QAAQ,EAAgB,MAAM,UAAU,CAAC;AAG7E,OAAO,EAA4B,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAGzF,OAAO,EACH,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC1B,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,WAAW,EACX,qBAAqB,EACrB,aAAa,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACH,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,KAAK,EACL,WAAW,EACX,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,SAAS,EACT,UAAU,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,2BAA2B,EAC3B,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACH,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,8BAA8B,EAC9B,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,4BAA4B,EAC5B,yBAAyB,EACzB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,eAAe,EACf,SAAS,EACT,iBAAiB,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAQrG,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,sBAAsB,CAAC;AAMvE;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsB3F;AAMD;;;;GAIG;AACH,wBAAsB,YAAY,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAMD;;;GAGG;AACH,wBAAsB,KAAK,CACvB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,SAAoB,EAC5B,UAAU,UAAQ,EAClB,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAmGvB"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
|