sync-worktrees 1.7.5 → 2.0.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.
- package/README.md +10 -5
- package/dist/index.js +2862 -203
- package/dist/index.js.map +7 -1
- package/package.json +19 -11
- package/dist/constants.d.ts +0 -54
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -66
- package/dist/constants.js.map +0 -1
- package/dist/errors/index.d.ts +0 -51
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js +0 -119
- package/dist/errors/index.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/services/config-loader.service.d.ts +0 -9
- package/dist/services/config-loader.service.d.ts.map +0 -1
- package/dist/services/config-loader.service.js +0 -193
- package/dist/services/config-loader.service.js.map +0 -1
- package/dist/services/git.service.d.ts +0 -49
- package/dist/services/git.service.d.ts.map +0 -1
- package/dist/services/git.service.js +0 -746
- package/dist/services/git.service.js.map +0 -1
- package/dist/services/path-resolution.service.d.ts +0 -7
- package/dist/services/path-resolution.service.d.ts.map +0 -1
- package/dist/services/path-resolution.service.js +0 -58
- package/dist/services/path-resolution.service.js.map +0 -1
- package/dist/services/worktree-metadata.service.d.ts +0 -22
- package/dist/services/worktree-metadata.service.d.ts.map +0 -1
- package/dist/services/worktree-metadata.service.js +0 -276
- package/dist/services/worktree-metadata.service.js.map +0 -1
- package/dist/services/worktree-status.service.d.ts +0 -28
- package/dist/services/worktree-status.service.d.ts.map +0 -1
- package/dist/services/worktree-status.service.js +0 -229
- package/dist/services/worktree-status.service.js.map +0 -1
- package/dist/services/worktree-sync.service.d.ts +0 -16
- package/dist/services/worktree-sync.service.d.ts.map +0 -1
- package/dist/services/worktree-sync.service.js +0 -434
- package/dist/services/worktree-sync.service.js.map +0 -1
- package/dist/types/index.d.ts +0 -32
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +0 -1
- package/dist/types/sync-metadata.d.ts +0 -16
- package/dist/types/sync-metadata.d.ts.map +0 -1
- package/dist/types/sync-metadata.js +0 -3
- package/dist/types/sync-metadata.js.map +0 -1
- package/dist/utils/cli.d.ts +0 -14
- package/dist/utils/cli.d.ts.map +0 -1
- package/dist/utils/cli.js +0 -117
- package/dist/utils/cli.js.map +0 -1
- package/dist/utils/config-generator.d.ts +0 -4
- package/dist/utils/config-generator.d.ts.map +0 -1
- package/dist/utils/config-generator.js +0 -112
- package/dist/utils/config-generator.js.map +0 -1
- package/dist/utils/date-filter.d.ts +0 -10
- package/dist/utils/date-filter.d.ts.map +0 -1
- package/dist/utils/date-filter.js +0 -47
- package/dist/utils/date-filter.js.map +0 -1
- package/dist/utils/git-url.d.ts +0 -15
- package/dist/utils/git-url.d.ts.map +0 -1
- package/dist/utils/git-url.js +0 -46
- package/dist/utils/git-url.js.map +0 -1
- package/dist/utils/interactive.d.ts +0 -3
- package/dist/utils/interactive.d.ts.map +0 -1
- package/dist/utils/interactive.js +0 -195
- package/dist/utils/interactive.js.map +0 -1
- package/dist/utils/lfs-error.d.ts +0 -23
- package/dist/utils/lfs-error.d.ts.map +0 -1
- package/dist/utils/lfs-error.js +0 -45
- package/dist/utils/lfs-error.js.map +0 -1
- package/dist/utils/retry.d.ts +0 -15
- package/dist/utils/retry.d.ts.map +0 -1
- package/dist/utils/retry.js +0 -78
- package/dist/utils/retry.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sync-worktrees",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"type": "module",
|
|
4
5
|
"description": "Automatically synchronize Git worktrees with remote branches - perfect for multi-branch development workflows",
|
|
5
6
|
"main": "dist/index.js",
|
|
6
7
|
"bin": {
|
|
@@ -35,42 +36,49 @@
|
|
|
35
36
|
"homepage": "https://github.com/yordan-kanchelov/sync-worktrees#readme",
|
|
36
37
|
"dependencies": {
|
|
37
38
|
"@inquirer/prompts": "^7.6.0",
|
|
39
|
+
"cron-parser": "^5.4.0",
|
|
40
|
+
"fast-folder-size": "^2.4.0",
|
|
41
|
+
"ink": "^6.4.0",
|
|
38
42
|
"node-cron": "^4.2.0",
|
|
43
|
+
"react": "^19.2.0",
|
|
39
44
|
"simple-git": "^3.28.0",
|
|
40
45
|
"yargs": "^18.0.0"
|
|
41
46
|
},
|
|
42
47
|
"devDependencies": {
|
|
43
48
|
"@changesets/cli": "^2.29.5",
|
|
44
49
|
"@eslint/js": "^9.30.1",
|
|
45
|
-
"@jest/globals": "^30.0.4",
|
|
46
|
-
"@types/jest": "^30.0.0",
|
|
47
50
|
"@types/node": "^24.0.10",
|
|
48
51
|
"@types/node-cron": "^3.0.11",
|
|
52
|
+
"@types/react": "^19.2.2",
|
|
49
53
|
"@types/yargs": "^17.0.33",
|
|
50
54
|
"@typescript-eslint/eslint-plugin": "^8.35.1",
|
|
51
55
|
"@typescript-eslint/parser": "^8.35.1",
|
|
56
|
+
"@vitest/coverage-v8": "^4.0.6",
|
|
57
|
+
"@vitest/ui": "^4.0.6",
|
|
58
|
+
"esbuild": "^0.25.10",
|
|
52
59
|
"eslint": "^9.30.1",
|
|
53
60
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
54
61
|
"eslint-plugin-import": "^2.32.0",
|
|
55
62
|
"eslint-plugin-prettier": "^5.5.1",
|
|
56
63
|
"globals": "^16.3.0",
|
|
57
|
-
"
|
|
64
|
+
"happy-dom": "^20.0.10",
|
|
65
|
+
"ink-testing-library": "^4.0.0",
|
|
58
66
|
"prettier": "^3.6.2",
|
|
59
|
-
"ts-jest": "^29.4.0",
|
|
60
67
|
"ts-node": "^10.9.2",
|
|
61
|
-
"typescript": "^5.8.3"
|
|
68
|
+
"typescript": "^5.8.3",
|
|
69
|
+
"vitest": "^4.0.6"
|
|
62
70
|
},
|
|
63
71
|
"scripts": {
|
|
64
|
-
"build": "
|
|
65
|
-
"dev": "ts-node src/index.ts",
|
|
72
|
+
"build": "node esbuild.config.js",
|
|
66
73
|
"start": "node dist/index.js",
|
|
67
74
|
"watch": "tsc --watch",
|
|
68
75
|
"lint": "eslint .",
|
|
69
76
|
"lint:fix": "eslint . --fix",
|
|
70
77
|
"typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.spec.json",
|
|
71
|
-
"test": "
|
|
72
|
-
"test:watch": "
|
|
73
|
-
"test:coverage": "
|
|
78
|
+
"test": "vitest run",
|
|
79
|
+
"test:watch": "vitest",
|
|
80
|
+
"test:coverage": "vitest run --coverage",
|
|
81
|
+
"test:ui": "vitest --ui",
|
|
74
82
|
"changeset": "changeset",
|
|
75
83
|
"version": "changeset version",
|
|
76
84
|
"release": "pnpm run build && changeset publish"
|
package/dist/constants.d.ts
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
export declare const GIT_CONSTANTS: {
|
|
2
|
-
readonly REMOTE_PREFIX: "origin/";
|
|
3
|
-
readonly REMOTE_NAME: "origin";
|
|
4
|
-
readonly HEAD_REF: "/HEAD";
|
|
5
|
-
readonly DEFAULT_BRANCH: "main";
|
|
6
|
-
readonly BARE_DIR_NAME: ".bare";
|
|
7
|
-
readonly DIVERGED_DIR_NAME: ".diverged";
|
|
8
|
-
readonly REFS: {
|
|
9
|
-
readonly HEADS: "refs/heads/";
|
|
10
|
-
readonly REMOTES: "refs/remotes/origin";
|
|
11
|
-
readonly REMOTES_ORIGIN: "refs/remotes/origin/*";
|
|
12
|
-
};
|
|
13
|
-
readonly FETCH_CONFIG: "+refs/heads/*:refs/remotes/origin/*";
|
|
14
|
-
};
|
|
15
|
-
export declare const GIT_OPERATIONS: {
|
|
16
|
-
readonly MERGE_HEAD: "MERGE_HEAD";
|
|
17
|
-
readonly CHERRY_PICK_HEAD: "CHERRY_PICK_HEAD";
|
|
18
|
-
readonly REVERT_HEAD: "REVERT_HEAD";
|
|
19
|
-
readonly BISECT_LOG: "BISECT_LOG";
|
|
20
|
-
readonly REBASE_MERGE: "rebase-merge";
|
|
21
|
-
readonly REBASE_APPLY: "rebase-apply";
|
|
22
|
-
};
|
|
23
|
-
export declare const DEFAULT_CONFIG: {
|
|
24
|
-
readonly CRON_SCHEDULE: "0 * * * *";
|
|
25
|
-
readonly RETRY: {
|
|
26
|
-
readonly MAX_ATTEMPTS: 3;
|
|
27
|
-
readonly MAX_LFS_RETRIES: 2;
|
|
28
|
-
readonly INITIAL_DELAY_MS: 1000;
|
|
29
|
-
readonly MAX_DELAY_MS: 30000;
|
|
30
|
-
readonly BACKOFF_MULTIPLIER: 2;
|
|
31
|
-
};
|
|
32
|
-
readonly UPDATE_EXISTING_WORKTREES: true;
|
|
33
|
-
};
|
|
34
|
-
export declare const ERROR_MESSAGES: {
|
|
35
|
-
readonly GIT_NOT_INITIALIZED: "Git service not initialized. Call initialize() first.";
|
|
36
|
-
readonly ALREADY_EXISTS: "already exists";
|
|
37
|
-
readonly ALREADY_REGISTERED: "already registered worktree";
|
|
38
|
-
readonly FAST_FORWARD_FAILED: readonly ["Not possible to fast-forward", "fatal: Not possible to fast-forward, aborting", "cannot fast-forward"];
|
|
39
|
-
readonly NO_UPSTREAM: readonly ["fatal: no upstream configured", "no upstream configured for branch", "fatal: ambiguous argument", "unknown revision or path"];
|
|
40
|
-
readonly LFS_ERROR: readonly ["smudge filter lfs failed", "git-lfs", "LFS"];
|
|
41
|
-
readonly EXDEV: "EXDEV";
|
|
42
|
-
};
|
|
43
|
-
export declare const TEST_TIMEOUT: {
|
|
44
|
-
readonly DEFAULT: 10000;
|
|
45
|
-
readonly E2E: 60000;
|
|
46
|
-
};
|
|
47
|
-
export declare const PATH_CONSTANTS: {
|
|
48
|
-
readonly GIT_DIR: ".git";
|
|
49
|
-
readonly README: "README";
|
|
50
|
-
};
|
|
51
|
-
export declare const METADATA_CONSTANTS: {
|
|
52
|
-
readonly MAX_HISTORY_ENTRIES: 10;
|
|
53
|
-
};
|
|
54
|
-
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;;;;;;;;;;;;CAahB,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;;;;CAUjB,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;;CAiBjB,CAAC;AAEX,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAEX,eAAO,MAAM,cAAc;;;CAGjB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;CAErB,CAAC"}
|
package/dist/constants.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.METADATA_CONSTANTS = exports.PATH_CONSTANTS = exports.TEST_TIMEOUT = exports.ERROR_MESSAGES = exports.DEFAULT_CONFIG = exports.GIT_OPERATIONS = exports.GIT_CONSTANTS = void 0;
|
|
4
|
-
exports.GIT_CONSTANTS = {
|
|
5
|
-
REMOTE_PREFIX: "origin/",
|
|
6
|
-
REMOTE_NAME: "origin",
|
|
7
|
-
HEAD_REF: "/HEAD",
|
|
8
|
-
DEFAULT_BRANCH: "main",
|
|
9
|
-
BARE_DIR_NAME: ".bare",
|
|
10
|
-
DIVERGED_DIR_NAME: ".diverged",
|
|
11
|
-
REFS: {
|
|
12
|
-
HEADS: "refs/heads/",
|
|
13
|
-
REMOTES: "refs/remotes/origin",
|
|
14
|
-
REMOTES_ORIGIN: "refs/remotes/origin/*",
|
|
15
|
-
},
|
|
16
|
-
FETCH_CONFIG: "+refs/heads/*:refs/remotes/origin/*",
|
|
17
|
-
};
|
|
18
|
-
exports.GIT_OPERATIONS = {
|
|
19
|
-
MERGE_HEAD: "MERGE_HEAD",
|
|
20
|
-
CHERRY_PICK_HEAD: "CHERRY_PICK_HEAD",
|
|
21
|
-
REVERT_HEAD: "REVERT_HEAD",
|
|
22
|
-
BISECT_LOG: "BISECT_LOG",
|
|
23
|
-
REBASE_MERGE: "rebase-merge",
|
|
24
|
-
REBASE_APPLY: "rebase-apply",
|
|
25
|
-
};
|
|
26
|
-
exports.DEFAULT_CONFIG = {
|
|
27
|
-
CRON_SCHEDULE: "0 * * * *",
|
|
28
|
-
RETRY: {
|
|
29
|
-
MAX_ATTEMPTS: 3,
|
|
30
|
-
MAX_LFS_RETRIES: 2,
|
|
31
|
-
INITIAL_DELAY_MS: 1000,
|
|
32
|
-
MAX_DELAY_MS: 30000,
|
|
33
|
-
BACKOFF_MULTIPLIER: 2,
|
|
34
|
-
},
|
|
35
|
-
UPDATE_EXISTING_WORKTREES: true,
|
|
36
|
-
};
|
|
37
|
-
exports.ERROR_MESSAGES = {
|
|
38
|
-
GIT_NOT_INITIALIZED: "Git service not initialized. Call initialize() first.",
|
|
39
|
-
ALREADY_EXISTS: "already exists",
|
|
40
|
-
ALREADY_REGISTERED: "already registered worktree",
|
|
41
|
-
FAST_FORWARD_FAILED: [
|
|
42
|
-
"Not possible to fast-forward",
|
|
43
|
-
"fatal: Not possible to fast-forward, aborting",
|
|
44
|
-
"cannot fast-forward",
|
|
45
|
-
],
|
|
46
|
-
NO_UPSTREAM: [
|
|
47
|
-
"fatal: no upstream configured",
|
|
48
|
-
"no upstream configured for branch",
|
|
49
|
-
"fatal: ambiguous argument",
|
|
50
|
-
"unknown revision or path",
|
|
51
|
-
],
|
|
52
|
-
LFS_ERROR: ["smudge filter lfs failed", "git-lfs", "LFS"],
|
|
53
|
-
EXDEV: "EXDEV",
|
|
54
|
-
};
|
|
55
|
-
exports.TEST_TIMEOUT = {
|
|
56
|
-
DEFAULT: 10000,
|
|
57
|
-
E2E: 60000,
|
|
58
|
-
};
|
|
59
|
-
exports.PATH_CONSTANTS = {
|
|
60
|
-
GIT_DIR: ".git",
|
|
61
|
-
README: "README",
|
|
62
|
-
};
|
|
63
|
-
exports.METADATA_CONSTANTS = {
|
|
64
|
-
MAX_HISTORY_ENTRIES: 10,
|
|
65
|
-
};
|
|
66
|
-
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG;IAC3B,aAAa,EAAE,SAAS;IACxB,WAAW,EAAE,QAAQ;IACrB,QAAQ,EAAE,OAAO;IACjB,cAAc,EAAE,MAAM;IACtB,aAAa,EAAE,OAAO;IACtB,iBAAiB,EAAE,WAAW;IAC9B,IAAI,EAAE;QACJ,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,qBAAqB;QAC9B,cAAc,EAAE,uBAAuB;KACxC;IACD,YAAY,EAAE,qCAAqC;CAC3C,CAAC;AAEE,QAAA,cAAc,GAAG;IAC5B,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;CACpB,CAAC;AAEE,QAAA,cAAc,GAAG;IAC5B,aAAa,EAAE,WAAW;IAC1B,KAAK,EAAE;QACL,YAAY,EAAE,CAAC;QACf,eAAe,EAAE,CAAC;QAClB,gBAAgB,EAAE,IAAI;QACtB,YAAY,EAAE,KAAK;QACnB,kBAAkB,EAAE,CAAC;KACtB;IACD,yBAAyB,EAAE,IAAI;CACvB,CAAC;AAEE,QAAA,cAAc,GAAG;IAC5B,mBAAmB,EAAE,uDAAuD;IAC5E,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,6BAA6B;IACjD,mBAAmB,EAAE;QACnB,8BAA8B;QAC9B,+CAA+C;QAC/C,qBAAqB;KACtB;IACD,WAAW,EAAE;QACX,+BAA+B;QAC/B,mCAAmC;QACnC,2BAA2B;QAC3B,0BAA0B;KAC3B;IACD,SAAS,EAAE,CAAC,0BAA0B,EAAE,SAAS,EAAE,KAAK,CAAC;IACzD,KAAK,EAAE,OAAO;CACN,CAAC;AAEE,QAAA,YAAY,GAAG;IAC1B,OAAO,EAAE,KAAK;IACd,GAAG,EAAE,KAAK;CACF,CAAC;AAEE,QAAA,cAAc,GAAG;IAC5B,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,QAAQ;CACR,CAAC;AAEE,QAAA,kBAAkB,GAAG;IAChC,mBAAmB,EAAE,EAAE;CACf,CAAC"}
|
package/dist/errors/index.d.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
export declare class SyncWorktreesError extends Error {
|
|
2
|
-
readonly code: string;
|
|
3
|
-
readonly cause?: Error | undefined;
|
|
4
|
-
constructor(message: string, code: string, cause?: Error | undefined);
|
|
5
|
-
}
|
|
6
|
-
export declare class GitError extends SyncWorktreesError {
|
|
7
|
-
constructor(message: string, code: string, cause?: Error);
|
|
8
|
-
}
|
|
9
|
-
export declare class GitNotInitializedError extends GitError {
|
|
10
|
-
constructor();
|
|
11
|
-
}
|
|
12
|
-
export declare class GitOperationError extends GitError {
|
|
13
|
-
constructor(operation: string, details: string, cause?: Error);
|
|
14
|
-
}
|
|
15
|
-
export declare class FastForwardError extends GitError {
|
|
16
|
-
readonly branchName: string;
|
|
17
|
-
constructor(branchName: string, cause?: Error);
|
|
18
|
-
}
|
|
19
|
-
export declare class WorktreeError extends SyncWorktreesError {
|
|
20
|
-
constructor(message: string, code: string, cause?: Error);
|
|
21
|
-
}
|
|
22
|
-
export declare class WorktreeAlreadyExistsError extends WorktreeError {
|
|
23
|
-
readonly path: string;
|
|
24
|
-
readonly branchName: string;
|
|
25
|
-
constructor(path: string, branchName: string);
|
|
26
|
-
}
|
|
27
|
-
export declare class WorktreeNotCleanError extends WorktreeError {
|
|
28
|
-
readonly path: string;
|
|
29
|
-
readonly reasons: string[];
|
|
30
|
-
constructor(path: string, reasons: string[]);
|
|
31
|
-
}
|
|
32
|
-
export declare class ConfigError extends SyncWorktreesError {
|
|
33
|
-
constructor(message: string, code: string, cause?: Error);
|
|
34
|
-
}
|
|
35
|
-
export declare class ConfigValidationError extends ConfigError {
|
|
36
|
-
readonly field: string;
|
|
37
|
-
readonly reason: string;
|
|
38
|
-
constructor(field: string, reason: string);
|
|
39
|
-
}
|
|
40
|
-
export declare class PathResolutionError extends SyncWorktreesError {
|
|
41
|
-
readonly path: string;
|
|
42
|
-
readonly reason: string;
|
|
43
|
-
constructor(path: string, reason: string);
|
|
44
|
-
}
|
|
45
|
-
export declare class LfsError extends GitError {
|
|
46
|
-
constructor(message: string, cause?: Error);
|
|
47
|
-
}
|
|
48
|
-
export declare function isLfsError(error: Error | string): boolean;
|
|
49
|
-
export declare function isFastForwardError(error: Error | string): boolean;
|
|
50
|
-
export declare function isNoUpstreamError(error: Error | string): boolean;
|
|
51
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAEA,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,IAAI,EAAE,MAAM;aACZ,KAAK,CAAC,EAAE,KAAK;gBAF7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,KAAK,YAAA;CAShC;AAED,qBAAa,QAAS,SAAQ,kBAAkB;gBAClC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAGzD;AAED,qBAAa,sBAAuB,SAAQ,QAAQ;;CAInD;AAED,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAG9D;AAED,qBAAa,gBAAiB,SAAQ,QAAQ;aAE1B,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM,EAClC,KAAK,CAAC,EAAE,KAAK;CAIhB;AAED,qBAAa,aAAc,SAAQ,kBAAkB;gBACvC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAGzD;AAED,qBAAa,0BAA2B,SAAQ,aAAa;aAEzC,IAAI,EAAE,MAAM;aACZ,UAAU,EAAE,MAAM;gBADlB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM;CAIrC;AAED,qBAAa,qBAAsB,SAAQ,aAAa;aAEpC,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,MAAM,EAAE;gBADjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EAAE;CAIpC;AAED,qBAAa,WAAY,SAAQ,kBAAkB;gBACrC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAGzD;AAED,qBAAa,qBAAsB,SAAQ,WAAW;aAElC,KAAK,EAAE,MAAM;aACb,MAAM,EAAE,MAAM;gBADd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM;CAIjC;AAED,qBAAa,mBAAoB,SAAQ,kBAAkB;aAEvC,IAAI,EAAE,MAAM;aACZ,MAAM,EAAE,MAAM;gBADd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM;CAIjC;AAED,qBAAa,QAAS,SAAQ,QAAQ;gBACxB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAG3C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAGzD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAGjE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAGhE"}
|
package/dist/errors/index.js
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LfsError = exports.PathResolutionError = exports.ConfigValidationError = exports.ConfigError = exports.WorktreeNotCleanError = exports.WorktreeAlreadyExistsError = exports.WorktreeError = exports.FastForwardError = exports.GitOperationError = exports.GitNotInitializedError = exports.GitError = exports.SyncWorktreesError = void 0;
|
|
4
|
-
exports.isLfsError = isLfsError;
|
|
5
|
-
exports.isFastForwardError = isFastForwardError;
|
|
6
|
-
exports.isNoUpstreamError = isNoUpstreamError;
|
|
7
|
-
const constants_1 = require("../constants");
|
|
8
|
-
class SyncWorktreesError extends Error {
|
|
9
|
-
code;
|
|
10
|
-
cause;
|
|
11
|
-
constructor(message, code, cause) {
|
|
12
|
-
super(message);
|
|
13
|
-
this.code = code;
|
|
14
|
-
this.cause = cause;
|
|
15
|
-
this.name = this.constructor.name;
|
|
16
|
-
Object.setPrototypeOf(this, new.target.prototype);
|
|
17
|
-
if (cause && cause.stack) {
|
|
18
|
-
this.stack = `${this.stack}\nCaused by: ${cause.stack}`;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
exports.SyncWorktreesError = SyncWorktreesError;
|
|
23
|
-
class GitError extends SyncWorktreesError {
|
|
24
|
-
constructor(message, code, cause) {
|
|
25
|
-
super(message, `GIT_${code}`, cause);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
exports.GitError = GitError;
|
|
29
|
-
class GitNotInitializedError extends GitError {
|
|
30
|
-
constructor() {
|
|
31
|
-
super(constants_1.ERROR_MESSAGES.GIT_NOT_INITIALIZED, "NOT_INITIALIZED");
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
exports.GitNotInitializedError = GitNotInitializedError;
|
|
35
|
-
class GitOperationError extends GitError {
|
|
36
|
-
constructor(operation, details, cause) {
|
|
37
|
-
super(`Git operation '${operation}' failed: ${details}`, "OPERATION_FAILED", cause);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
exports.GitOperationError = GitOperationError;
|
|
41
|
-
class FastForwardError extends GitError {
|
|
42
|
-
branchName;
|
|
43
|
-
constructor(branchName, cause) {
|
|
44
|
-
super(`Cannot fast-forward branch '${branchName}'`, "FAST_FORWARD_FAILED", cause);
|
|
45
|
-
this.branchName = branchName;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
exports.FastForwardError = FastForwardError;
|
|
49
|
-
class WorktreeError extends SyncWorktreesError {
|
|
50
|
-
constructor(message, code, cause) {
|
|
51
|
-
super(message, `WORKTREE_${code}`, cause);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
exports.WorktreeError = WorktreeError;
|
|
55
|
-
class WorktreeAlreadyExistsError extends WorktreeError {
|
|
56
|
-
path;
|
|
57
|
-
branchName;
|
|
58
|
-
constructor(path, branchName) {
|
|
59
|
-
super(`Worktree already exists at '${path}' for branch '${branchName}'`, "ALREADY_EXISTS");
|
|
60
|
-
this.path = path;
|
|
61
|
-
this.branchName = branchName;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
exports.WorktreeAlreadyExistsError = WorktreeAlreadyExistsError;
|
|
65
|
-
class WorktreeNotCleanError extends WorktreeError {
|
|
66
|
-
path;
|
|
67
|
-
reasons;
|
|
68
|
-
constructor(path, reasons) {
|
|
69
|
-
super(`Worktree at '${path}' is not clean: ${reasons.join(", ")}`, "NOT_CLEAN");
|
|
70
|
-
this.path = path;
|
|
71
|
-
this.reasons = reasons;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
exports.WorktreeNotCleanError = WorktreeNotCleanError;
|
|
75
|
-
class ConfigError extends SyncWorktreesError {
|
|
76
|
-
constructor(message, code, cause) {
|
|
77
|
-
super(message, `CONFIG_${code}`, cause);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
exports.ConfigError = ConfigError;
|
|
81
|
-
class ConfigValidationError extends ConfigError {
|
|
82
|
-
field;
|
|
83
|
-
reason;
|
|
84
|
-
constructor(field, reason) {
|
|
85
|
-
super(`Invalid configuration for '${field}': ${reason}`, "VALIDATION_FAILED");
|
|
86
|
-
this.field = field;
|
|
87
|
-
this.reason = reason;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
exports.ConfigValidationError = ConfigValidationError;
|
|
91
|
-
class PathResolutionError extends SyncWorktreesError {
|
|
92
|
-
path;
|
|
93
|
-
reason;
|
|
94
|
-
constructor(path, reason) {
|
|
95
|
-
super(`Path resolution failed for '${path}': ${reason}`, "PATH_RESOLUTION_FAILED");
|
|
96
|
-
this.path = path;
|
|
97
|
-
this.reason = reason;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
exports.PathResolutionError = PathResolutionError;
|
|
101
|
-
class LfsError extends GitError {
|
|
102
|
-
constructor(message, cause) {
|
|
103
|
-
super(`LFS operation failed: ${message}`, "LFS_ERROR", cause);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
exports.LfsError = LfsError;
|
|
107
|
-
function isLfsError(error) {
|
|
108
|
-
const message = typeof error === "string" ? error : error.message;
|
|
109
|
-
return constants_1.ERROR_MESSAGES.LFS_ERROR.some((pattern) => message.includes(pattern));
|
|
110
|
-
}
|
|
111
|
-
function isFastForwardError(error) {
|
|
112
|
-
const message = typeof error === "string" ? error : error.message;
|
|
113
|
-
return constants_1.ERROR_MESSAGES.FAST_FORWARD_FAILED.some((pattern) => message.includes(pattern));
|
|
114
|
-
}
|
|
115
|
-
function isNoUpstreamError(error) {
|
|
116
|
-
const message = typeof error === "string" ? error : error.message;
|
|
117
|
-
return constants_1.ERROR_MESSAGES.NO_UPSTREAM.some((pattern) => message.includes(pattern));
|
|
118
|
-
}
|
|
119
|
-
//# sourceMappingURL=index.js.map
|
package/dist/errors/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { Config, ConfigFile, RepositoryConfig } from "../types";
|
|
2
|
-
export declare class ConfigLoaderService {
|
|
3
|
-
loadConfigFile(configPath: string): Promise<ConfigFile>;
|
|
4
|
-
private validateConfigFile;
|
|
5
|
-
resolveRepositoryConfig(repo: RepositoryConfig, defaults?: Partial<Config>, configDir?: string, globalRetry?: Config["retry"]): RepositoryConfig;
|
|
6
|
-
private resolvePath;
|
|
7
|
-
filterRepositories(repositories: RepositoryConfig[], filter?: string): RepositoryConfig[];
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=config-loader.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.service.d.ts","sourceRoot":"","sources":["../../src/services/config-loader.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,mBAAmB;IACxB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAyB7D,OAAO,CAAC,kBAAkB;IA4G1B,uBAAuB,CACrB,IAAI,EAAE,gBAAgB,EACtB,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAC1B,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAC5B,gBAAgB;IAgCnB,OAAO,CAAC,WAAW;IAQnB,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE;CAiB1F"}
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.ConfigLoaderService = void 0;
|
|
37
|
-
const fs = __importStar(require("fs/promises"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
class ConfigLoaderService {
|
|
40
|
-
async loadConfigFile(configPath) {
|
|
41
|
-
const absolutePath = path.resolve(configPath);
|
|
42
|
-
try {
|
|
43
|
-
await fs.access(absolutePath);
|
|
44
|
-
}
|
|
45
|
-
catch {
|
|
46
|
-
throw new Error(`Config file not found: ${absolutePath}`);
|
|
47
|
-
}
|
|
48
|
-
try {
|
|
49
|
-
delete require.cache[absolutePath];
|
|
50
|
-
const configModule = require(absolutePath);
|
|
51
|
-
const config = configModule.default || configModule;
|
|
52
|
-
this.validateConfigFile(config);
|
|
53
|
-
return config;
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
if (error instanceof Error && error.message.includes("Config file not found")) {
|
|
57
|
-
throw error;
|
|
58
|
-
}
|
|
59
|
-
throw new Error(`Failed to load config file: ${error.message}`);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
validateConfigFile(config) {
|
|
63
|
-
if (!config || typeof config !== "object") {
|
|
64
|
-
throw new Error("Config file must export an object");
|
|
65
|
-
}
|
|
66
|
-
const configObj = config;
|
|
67
|
-
if (!Array.isArray(configObj.repositories)) {
|
|
68
|
-
throw new Error("Config file must have a 'repositories' array");
|
|
69
|
-
}
|
|
70
|
-
if (configObj.repositories.length === 0) {
|
|
71
|
-
throw new Error("Config file must have at least one repository");
|
|
72
|
-
}
|
|
73
|
-
const seenNames = new Set();
|
|
74
|
-
configObj.repositories.forEach((repo, index) => {
|
|
75
|
-
if (!repo || typeof repo !== "object") {
|
|
76
|
-
throw new Error(`Repository at index ${index} must be an object`);
|
|
77
|
-
}
|
|
78
|
-
const repoObj = repo;
|
|
79
|
-
if (!repoObj.name || typeof repoObj.name !== "string") {
|
|
80
|
-
throw new Error(`Repository at index ${index} must have a 'name' property`);
|
|
81
|
-
}
|
|
82
|
-
if (seenNames.has(repoObj.name)) {
|
|
83
|
-
throw new Error(`Duplicate repository name: ${repoObj.name}`);
|
|
84
|
-
}
|
|
85
|
-
seenNames.add(repoObj.name);
|
|
86
|
-
if (!repoObj.repoUrl || typeof repoObj.repoUrl !== "string") {
|
|
87
|
-
throw new Error(`Repository '${repoObj.name}' must have a 'repoUrl' property`);
|
|
88
|
-
}
|
|
89
|
-
if (!repoObj.worktreeDir || typeof repoObj.worktreeDir !== "string") {
|
|
90
|
-
throw new Error(`Repository '${repoObj.name}' must have a 'worktreeDir' property`);
|
|
91
|
-
}
|
|
92
|
-
if (repoObj.bareRepoDir !== undefined && typeof repoObj.bareRepoDir !== "string") {
|
|
93
|
-
throw new Error(`Repository '${repoObj.name}' has invalid 'bareRepoDir' property`);
|
|
94
|
-
}
|
|
95
|
-
if (repoObj.cronSchedule !== undefined && typeof repoObj.cronSchedule !== "string") {
|
|
96
|
-
throw new Error(`Repository '${repoObj.name}' has invalid 'cronSchedule' property`);
|
|
97
|
-
}
|
|
98
|
-
if (repoObj.runOnce !== undefined && typeof repoObj.runOnce !== "boolean") {
|
|
99
|
-
throw new Error(`Repository '${repoObj.name}' has invalid 'runOnce' property`);
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
if (configObj.defaults) {
|
|
103
|
-
if (typeof configObj.defaults !== "object") {
|
|
104
|
-
throw new Error("'defaults' must be an object");
|
|
105
|
-
}
|
|
106
|
-
const defaults = configObj.defaults;
|
|
107
|
-
if (defaults.cronSchedule !== undefined && typeof defaults.cronSchedule !== "string") {
|
|
108
|
-
throw new Error("Invalid 'cronSchedule' in defaults");
|
|
109
|
-
}
|
|
110
|
-
if (defaults.runOnce !== undefined && typeof defaults.runOnce !== "boolean") {
|
|
111
|
-
throw new Error("Invalid 'runOnce' in defaults");
|
|
112
|
-
}
|
|
113
|
-
if (defaults.retry !== undefined && typeof defaults.retry !== "object") {
|
|
114
|
-
throw new Error("Invalid 'retry' in defaults");
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
if (configObj.retry !== undefined) {
|
|
118
|
-
if (typeof configObj.retry !== "object") {
|
|
119
|
-
throw new Error("'retry' must be an object");
|
|
120
|
-
}
|
|
121
|
-
const retry = configObj.retry;
|
|
122
|
-
if (retry.maxAttempts !== undefined) {
|
|
123
|
-
if (retry.maxAttempts !== "unlimited" && (typeof retry.maxAttempts !== "number" || retry.maxAttempts < 1)) {
|
|
124
|
-
throw new Error("Invalid 'maxAttempts' in retry config. Must be 'unlimited' or a positive number");
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
if (retry.maxLfsRetries !== undefined) {
|
|
128
|
-
if (typeof retry.maxLfsRetries !== "number" || retry.maxLfsRetries < 0) {
|
|
129
|
-
throw new Error("Invalid 'maxLfsRetries' in retry config. Must be a non-negative number");
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
if (retry.initialDelayMs !== undefined &&
|
|
133
|
-
(typeof retry.initialDelayMs !== "number" || retry.initialDelayMs < 0)) {
|
|
134
|
-
throw new Error("Invalid 'initialDelayMs' in retry config");
|
|
135
|
-
}
|
|
136
|
-
if (retry.maxDelayMs !== undefined && (typeof retry.maxDelayMs !== "number" || retry.maxDelayMs < 0)) {
|
|
137
|
-
throw new Error("Invalid 'maxDelayMs' in retry config");
|
|
138
|
-
}
|
|
139
|
-
if (retry.backoffMultiplier !== undefined &&
|
|
140
|
-
(typeof retry.backoffMultiplier !== "number" || retry.backoffMultiplier < 1)) {
|
|
141
|
-
throw new Error("Invalid 'backoffMultiplier' in retry config");
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
resolveRepositoryConfig(repo, defaults, configDir, globalRetry) {
|
|
146
|
-
const resolved = {
|
|
147
|
-
name: repo.name,
|
|
148
|
-
repoUrl: repo.repoUrl,
|
|
149
|
-
worktreeDir: this.resolvePath(repo.worktreeDir, configDir),
|
|
150
|
-
cronSchedule: repo.cronSchedule ?? defaults?.cronSchedule ?? "0 * * * *",
|
|
151
|
-
runOnce: repo.runOnce ?? defaults?.runOnce ?? false,
|
|
152
|
-
};
|
|
153
|
-
if (repo.bareRepoDir) {
|
|
154
|
-
resolved.bareRepoDir = this.resolvePath(repo.bareRepoDir, configDir);
|
|
155
|
-
}
|
|
156
|
-
if (repo.branchMaxAge || defaults?.branchMaxAge) {
|
|
157
|
-
resolved.branchMaxAge = repo.branchMaxAge ?? defaults?.branchMaxAge;
|
|
158
|
-
}
|
|
159
|
-
if (repo.skipLfs !== undefined || defaults?.skipLfs !== undefined) {
|
|
160
|
-
resolved.skipLfs = repo.skipLfs ?? defaults?.skipLfs ?? false;
|
|
161
|
-
}
|
|
162
|
-
if (repo.retry || defaults?.retry || globalRetry) {
|
|
163
|
-
resolved.retry = { ...globalRetry, ...defaults?.retry, ...repo.retry };
|
|
164
|
-
}
|
|
165
|
-
if (repo.updateExistingWorktrees !== undefined || defaults?.updateExistingWorktrees !== undefined) {
|
|
166
|
-
resolved.updateExistingWorktrees = repo.updateExistingWorktrees ?? defaults?.updateExistingWorktrees ?? true;
|
|
167
|
-
}
|
|
168
|
-
return resolved;
|
|
169
|
-
}
|
|
170
|
-
resolvePath(inputPath, baseDir) {
|
|
171
|
-
if (path.isAbsolute(inputPath)) {
|
|
172
|
-
return inputPath;
|
|
173
|
-
}
|
|
174
|
-
return path.resolve(baseDir || process.cwd(), inputPath);
|
|
175
|
-
}
|
|
176
|
-
filterRepositories(repositories, filter) {
|
|
177
|
-
if (!filter) {
|
|
178
|
-
return repositories;
|
|
179
|
-
}
|
|
180
|
-
const patterns = filter.split(",").map((p) => p.trim());
|
|
181
|
-
return repositories.filter((repo) => {
|
|
182
|
-
return patterns.some((pattern) => {
|
|
183
|
-
if (pattern.includes("*")) {
|
|
184
|
-
const regex = new RegExp("^" + pattern.replace(/\*/g, ".*") + "$");
|
|
185
|
-
return regex.test(repo.name);
|
|
186
|
-
}
|
|
187
|
-
return repo.name === pattern;
|
|
188
|
-
});
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
exports.ConfigLoaderService = ConfigLoaderService;
|
|
193
|
-
//# sourceMappingURL=config-loader.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.service.js","sourceRoot":"","sources":["../../src/services/config-loader.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkC;AAClC,2CAA6B;AAI7B,MAAa,mBAAmB;IAC9B,KAAK,CAAC,cAAc,CAAC,UAAkB;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACnC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC;YAEpD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAEhC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC9E,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,+BAAgC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,MAAe;QACxC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,SAAS,GAAG,MAAiC,CAAC;QAEpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAa,EAAE,KAAa,EAAE,EAAE;YAC9D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,oBAAoB,CAAC,CAAC;YACpE,CAAC;YAED,MAAM,OAAO,GAAG,IAA+B,CAAC;YAEhD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,8BAA8B,CAAC,CAAC;YAC9E,CAAC;YAED,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE5B,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC5D,MAAM,IAAI,KAAK,CAAC,eAAe,OAAO,CAAC,IAAI,kCAAkC,CAAC,CAAC;YACjF,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACpE,MAAM,IAAI,KAAK,CAAC,eAAe,OAAO,CAAC,IAAI,sCAAsC,CAAC,CAAC;YACrF,CAAC;YAED,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACjF,MAAM,IAAI,KAAK,CAAC,eAAe,OAAO,CAAC,IAAI,sCAAsC,CAAC,CAAC;YACrF,CAAC;YAED,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACnF,MAAM,IAAI,KAAK,CAAC,eAAe,OAAO,CAAC,IAAI,uCAAuC,CAAC,CAAC;YACtF,CAAC;YAED,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1E,MAAM,IAAI,KAAK,CAAC,eAAe,OAAO,CAAC,IAAI,kCAAkC,CAAC,CAAC;YACjF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YAED,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAmC,CAAC;YAE/D,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,IAAI,OAAO,QAAQ,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrF,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC5E,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,KAAK,GAAG,SAAS,CAAC,KAAgC,CAAC;YAEzD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACpC,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,IAAI,CAAC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC1G,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;gBACrG,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBACtC,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;oBACvE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;gBAC5F,CAAC;YACH,CAAC;YACD,IACE,KAAK,CAAC,cAAc,KAAK,SAAS;gBAClC,CAAC,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,EACtE,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrG,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,CAAC;YACD,IACE,KAAK,CAAC,iBAAiB,KAAK,SAAS;gBACrC,CAAC,OAAO,KAAK,CAAC,iBAAiB,KAAK,QAAQ,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC,EAC5E,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAED,uBAAuB,CACrB,IAAsB,EACtB,QAA0B,EAC1B,SAAkB,EAClB,WAA6B;QAE7B,MAAM,QAAQ,GAAqB;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;YAC1D,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,QAAQ,EAAE,YAAY,IAAI,WAAW;YACxE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ,EAAE,OAAO,IAAI,KAAK;SACpD,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,IAAI,QAAQ,EAAE,YAAY,EAAE,CAAC;YAChD,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,QAAQ,EAAE,YAAY,CAAC;QACtE,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YAClE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,EAAE,OAAO,IAAI,KAAK,CAAC;QAChE,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE,KAAK,IAAI,WAAW,EAAE,CAAC;YACjD,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,WAAW,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACzE,CAAC;QAED,IAAI,IAAI,CAAC,uBAAuB,KAAK,SAAS,IAAI,QAAQ,EAAE,uBAAuB,KAAK,SAAS,EAAE,CAAC;YAClG,QAAQ,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,IAAI,QAAQ,EAAE,uBAAuB,IAAI,IAAI,CAAC;QAC/G,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,WAAW,CAAC,SAAiB,EAAE,OAAgB;QACrD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,kBAAkB,CAAC,YAAgC,EAAE,MAAe;QAClE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAExD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAClC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;oBACnE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC;gBACD,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AApMD,kDAoMC"}
|