@dx-pkg/mksymlink 1.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 +176 -0
- package/examples/advanced-usage.d.ts +2 -0
- package/examples/advanced-usage.d.ts.map +1 -0
- package/examples/advanced-usage.js +39 -0
- package/examples/advanced-usage.js.map +1 -0
- package/examples/basic-usage.d.ts +2 -0
- package/examples/basic-usage.d.ts.map +1 -0
- package/examples/basic-usage.js +15 -0
- package/examples/basic-usage.js.map +1 -0
- package/examples/config-usage.d.ts +3 -0
- package/examples/config-usage.d.ts.map +1 -0
- package/examples/config-usage.js +65 -0
- package/examples/config-usage.js.map +1 -0
- package/examples/cross-platform.d.ts +2 -0
- package/examples/cross-platform.d.ts.map +1 -0
- package/examples/cross-platform.js +41 -0
- package/examples/cross-platform.js.map +1 -0
- package/examples/index.d.ts +2 -0
- package/examples/index.d.ts.map +1 -0
- package/examples/index.js +7 -0
- package/examples/index.js.map +1 -0
- package/package.json +51 -0
- package/src/commands/config/config.command-factory.d.ts +5 -0
- package/src/commands/config/config.command-factory.d.ts.map +1 -0
- package/src/commands/config/config.command-factory.js +18 -0
- package/src/commands/config/config.command-factory.js.map +1 -0
- package/src/commands/config/config.command.d.ts +23 -0
- package/src/commands/config/config.command.d.ts.map +1 -0
- package/src/commands/config/config.command.js +94 -0
- package/src/commands/config/config.command.js.map +1 -0
- package/src/commands/config/config.option-validator.d.ts +9 -0
- package/src/commands/config/config.option-validator.d.ts.map +1 -0
- package/src/commands/config/config.option-validator.js +41 -0
- package/src/commands/config/config.option-validator.js.map +1 -0
- package/src/commands/config.command-factory.d.ts +5 -0
- package/src/commands/config.command-factory.d.ts.map +1 -0
- package/src/commands/config.command-factory.js +18 -0
- package/src/commands/config.command-factory.js.map +1 -0
- package/src/commands/config.command.d.ts +22 -0
- package/src/commands/config.command.d.ts.map +1 -0
- package/src/commands/config.command.js +80 -0
- package/src/commands/config.command.js.map +1 -0
- package/src/commands/config.option-validator.d.ts +9 -0
- package/src/commands/config.option-validator.d.ts.map +1 -0
- package/src/commands/config.option-validator.js +41 -0
- package/src/commands/config.option-validator.js.map +1 -0
- package/src/commands/create/mksymlink.command-factory.d.ts +5 -0
- package/src/commands/create/mksymlink.command-factory.d.ts.map +1 -0
- package/src/commands/create/mksymlink.command-factory.js +20 -0
- package/src/commands/create/mksymlink.command-factory.js.map +1 -0
- package/src/commands/create/mksymlink.command.d.ts +22 -0
- package/src/commands/create/mksymlink.command.d.ts.map +1 -0
- package/src/commands/create/mksymlink.command.js +68 -0
- package/src/commands/create/mksymlink.command.js.map +1 -0
- package/src/commands/create/mksymlink.option-validator.d.ts +9 -0
- package/src/commands/create/mksymlink.option-validator.d.ts.map +1 -0
- package/src/commands/create/mksymlink.option-validator.js +35 -0
- package/src/commands/create/mksymlink.option-validator.js.map +1 -0
- package/src/commands/index.d.ts +3 -0
- package/src/commands/index.d.ts.map +1 -0
- package/src/commands/index.js +118 -0
- package/src/commands/index.js.map +1 -0
- package/src/commands/mksymlink.command-factory.d.ts +5 -0
- package/src/commands/mksymlink.command-factory.d.ts.map +1 -0
- package/src/commands/mksymlink.command-factory.js +20 -0
- package/src/commands/mksymlink.command-factory.js.map +1 -0
- package/src/commands/mksymlink.command.d.ts +22 -0
- package/src/commands/mksymlink.command.d.ts.map +1 -0
- package/src/commands/mksymlink.command.js +68 -0
- package/src/commands/mksymlink.command.js.map +1 -0
- package/src/commands/mksymlink.option-validator.d.ts +9 -0
- package/src/commands/mksymlink.option-validator.d.ts.map +1 -0
- package/src/commands/mksymlink.option-validator.js +35 -0
- package/src/commands/mksymlink.option-validator.js.map +1 -0
- package/src/index.d.ts +12 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +28 -0
- package/src/index.js.map +1 -0
- package/src/services/config.service.d.ts +45 -0
- package/src/services/config.service.d.ts.map +1 -0
- package/src/services/config.service.js +113 -0
- package/src/services/config.service.js.map +1 -0
- package/src/services/os-detector.d.ts +11 -0
- package/src/services/os-detector.d.ts.map +1 -0
- package/src/services/os-detector.js +36 -0
- package/src/services/os-detector.js.map +1 -0
- package/src/services/platform-detector.d.ts +11 -0
- package/src/services/platform-detector.d.ts.map +1 -0
- package/src/services/platform-detector.js +36 -0
- package/src/services/platform-detector.js.map +1 -0
- package/src/services/symlink-error.d.ts +12 -0
- package/src/services/symlink-error.d.ts.map +1 -0
- package/src/services/symlink-error.js +33 -0
- package/src/services/symlink-error.js.map +1 -0
- package/src/services/symlink-manager.d.ts +13 -0
- package/src/services/symlink-manager.d.ts.map +1 -0
- package/src/services/symlink-manager.js +115 -0
- package/src/services/symlink-manager.js.map +1 -0
- package/src/services/symlink.service.d.ts +13 -0
- package/src/services/symlink.service.d.ts.map +1 -0
- package/src/services/symlink.service.js +115 -0
- package/src/services/symlink.service.js.map +1 -0
- package/src/types/index.d.ts +40 -0
- package/src/types/index.d.ts.map +1 -0
- package/src/types/index.js +3 -0
- package/src/types/index.js.map +1 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Logger } from '@dx-tools/logger';
|
|
2
|
+
import { Command, WindowsSymlinkType, SymlinkOperations } from '../types';
|
|
3
|
+
import { ConfigService } from '../services/config.service';
|
|
4
|
+
export interface MkSymlinkCommandOptions {
|
|
5
|
+
target?: string;
|
|
6
|
+
source?: string;
|
|
7
|
+
type?: WindowsSymlinkType;
|
|
8
|
+
force?: boolean;
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
export declare const SYMLINK_TYPES: readonly WindowsSymlinkType[];
|
|
12
|
+
export declare class MkSymlinkCommand implements Command<MkSymlinkCommandOptions> {
|
|
13
|
+
private readonly logger;
|
|
14
|
+
private readonly symlinkManager;
|
|
15
|
+
private readonly options;
|
|
16
|
+
private readonly configService;
|
|
17
|
+
constructor(logger: Logger, symlinkManager: SymlinkOperations, options: MkSymlinkCommandOptions, configService?: ConfigService);
|
|
18
|
+
execute(): Promise<void>;
|
|
19
|
+
private resolveOptions;
|
|
20
|
+
private generateDefaultTarget;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=mksymlink.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mksymlink.command.d.ts","sourceRoot":"","sources":["../../../../../packages/mksymlink/src/commands/mksymlink.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,WAAW,uBAAuB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,kBAAkB,EAAyC,CAAC;AAEjG,qBAAa,gBAAiB,YAAW,OAAO,CAAC,uBAAuB,CAAC;IAEjE,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAHb,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,iBAAiB,EACjC,OAAO,EAAE,uBAAuB,EAChC,aAAa,GAAE,aAAmC;IAGjE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC9B,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,qBAAqB;CAahC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MkSymlinkCommand = exports.SYMLINK_TYPES = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const config_service_1 = require("../services/config.service");
|
|
6
|
+
exports.SYMLINK_TYPES = ['file', 'dir', 'junction'];
|
|
7
|
+
class MkSymlinkCommand {
|
|
8
|
+
logger;
|
|
9
|
+
symlinkManager;
|
|
10
|
+
options;
|
|
11
|
+
configService;
|
|
12
|
+
constructor(logger, symlinkManager, options, configService = new config_service_1.ConfigService()) {
|
|
13
|
+
this.logger = logger;
|
|
14
|
+
this.symlinkManager = symlinkManager;
|
|
15
|
+
this.options = options;
|
|
16
|
+
this.configService = configService;
|
|
17
|
+
}
|
|
18
|
+
async execute() {
|
|
19
|
+
try {
|
|
20
|
+
const { source, target, type, force } = this.resolveOptions();
|
|
21
|
+
this.logger.info('Creating symlink with options:');
|
|
22
|
+
this.logger.info(` Source: ${source}`);
|
|
23
|
+
this.logger.info(` Target: ${target}`);
|
|
24
|
+
this.logger.info(` Type: ${type}`);
|
|
25
|
+
this.logger.info(` Force: ${force}`);
|
|
26
|
+
const result = await this.symlinkManager.createSymlink({
|
|
27
|
+
source,
|
|
28
|
+
target,
|
|
29
|
+
type,
|
|
30
|
+
force,
|
|
31
|
+
});
|
|
32
|
+
if (!result.success) {
|
|
33
|
+
if (result.error) {
|
|
34
|
+
throw result.error;
|
|
35
|
+
}
|
|
36
|
+
this.logger.warning(result.message || 'Symlink creation failed');
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.logger.success('Symlink created successfully!');
|
|
40
|
+
this.logger.info(` Source: ${result.source}`);
|
|
41
|
+
this.logger.info(` Target: ${result.target}`);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
this.logger.error(`Failed to create symlink: ${error instanceof Error ? error.message : String(error)}`);
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
resolveOptions() {
|
|
49
|
+
const currentDir = process.cwd();
|
|
50
|
+
const source = this.options.source || currentDir;
|
|
51
|
+
const target = this.options.target || this.generateDefaultTarget(currentDir);
|
|
52
|
+
const type = this.options.type || 'dir';
|
|
53
|
+
const force = this.options.force || false;
|
|
54
|
+
return { source, target, type, force };
|
|
55
|
+
}
|
|
56
|
+
generateDefaultTarget(currentDir) {
|
|
57
|
+
const currentBasename = (0, path_1.basename)(currentDir);
|
|
58
|
+
const parentDir = (0, path_1.dirname)(currentDir);
|
|
59
|
+
const parentBasename = (0, path_1.basename)(parentDir);
|
|
60
|
+
const symlinkName = `${parentBasename}--${currentBasename}`;
|
|
61
|
+
// Check if there's a configured default directory
|
|
62
|
+
const configuredDir = this.configService.getDefaultSymlinkDir();
|
|
63
|
+
const defaultSymlinkDir = configuredDir || currentDir;
|
|
64
|
+
return (0, path_1.resolve)(defaultSymlinkDir, symlinkName);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.MkSymlinkCommand = MkSymlinkCommand;
|
|
68
|
+
//# sourceMappingURL=mksymlink.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mksymlink.command.js","sourceRoot":"","sources":["../../../../../packages/mksymlink/src/commands/mksymlink.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CommandOptionsValidator } from '../types';
|
|
2
|
+
import { MkSymlinkCommandOptions } from './mksymlink.command';
|
|
3
|
+
export declare class MkSymlinkOptionValidator implements CommandOptionsValidator<MkSymlinkCommandOptions> {
|
|
4
|
+
validate(options: MkSymlinkCommandOptions): void;
|
|
5
|
+
private validateType;
|
|
6
|
+
private validateSource;
|
|
7
|
+
private validateForce;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=mksymlink.option-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mksymlink.option-validator.d.ts","sourceRoot":"","sources":["../../../../../packages/mksymlink/src/commands/mksymlink.option-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEnD,OAAO,EAAE,uBAAuB,EAAiB,MAAM,qBAAqB,CAAC;AAI7E,qBAAa,wBAAyB,YAAW,uBAAuB,CAAC,uBAAuB,CAAC;IAC7F,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAMhD,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,aAAa;CAQxB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MkSymlinkOptionValidator = void 0;
|
|
4
|
+
const symlink_error_1 = require("../services/symlink-error");
|
|
5
|
+
const mksymlink_command_1 = require("./mksymlink.command");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
class MkSymlinkOptionValidator {
|
|
9
|
+
validate(options) {
|
|
10
|
+
this.validateType(options.type);
|
|
11
|
+
this.validateSource(options.source);
|
|
12
|
+
this.validateForce(options.force);
|
|
13
|
+
}
|
|
14
|
+
validateType(type) {
|
|
15
|
+
if (type && !mksymlink_command_1.SYMLINK_TYPES.includes(type)) {
|
|
16
|
+
throw new symlink_error_1.SymlinkError(`Invalid symlink type: ${type}. Must be one of: ${mksymlink_command_1.SYMLINK_TYPES.join(', ')}`, 'INVALID_SYMLINK_TYPE');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
validateSource(source) {
|
|
20
|
+
if (!source) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const resolvedSource = (0, path_1.resolve)(source);
|
|
24
|
+
if (!(0, fs_1.existsSync)(resolvedSource)) {
|
|
25
|
+
throw new symlink_error_1.SymlinkError(`Source path does not exist: ${resolvedSource}`, 'SOURCE_NOT_FOUND');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
validateForce(force) {
|
|
29
|
+
if (force !== undefined && typeof force !== 'boolean') {
|
|
30
|
+
throw new symlink_error_1.SymlinkError(`Invalid force option: ${force}. Must be a boolean.`, 'INVALID_FORCE_OPTION');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.MkSymlinkOptionValidator = MkSymlinkOptionValidator;
|
|
35
|
+
//# sourceMappingURL=mksymlink.option-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mksymlink.option-validator.js","sourceRoot":"","sources":["../../../../../packages/mksymlink/src/commands/mksymlink.option-validator.ts"],"names":[],"mappings":";;;AACA,6DAAyD;AACzD,2DAA6E;AAC7E,2BAAgC;AAChC,+BAA+B;AAE/B,MAAa,wBAAwB;IACjC,QAAQ,CAAC,OAAgC;QACrC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEO,YAAY,CAAC,IAAa;QAC9B,IAAI,IAAI,IAAI,CAAC,iCAAa,CAAC,QAAQ,CAAC,IAAW,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,4BAAY,CAClB,yBAAyB,IAAI,qBAAqB,iCAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC5E,sBAAsB,CACzB,CAAC;QACN,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,MAAe;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,cAAO,EAAC,MAAM,CAAC,CAAC;QAEvC,IAAI,CAAC,IAAA,eAAU,EAAC,cAAc,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,4BAAY,CAClB,+BAA+B,cAAc,EAAE,EAC/C,kBAAkB,CACrB,CAAC;QACN,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,KAAe;QACjC,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YACpD,MAAM,IAAI,4BAAY,CAClB,yBAAyB,KAAK,sBAAsB,EACpD,sBAAsB,CACzB,CAAC;QACN,CAAC;IACL,CAAC;CACJ;AAvCD,4DAuCC"}
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './types';
|
|
2
|
+
export * from './services/platform-detector';
|
|
3
|
+
export * from './services/symlink.service';
|
|
4
|
+
export * from './services/symlink-error';
|
|
5
|
+
export * from './services/config.service';
|
|
6
|
+
export * from './commands/create/mksymlink.command';
|
|
7
|
+
export * from './commands/create/mksymlink.option-validator';
|
|
8
|
+
export * from './commands/create/mksymlink.command-factory';
|
|
9
|
+
export * from './commands/config/config.command';
|
|
10
|
+
export * from './commands/config/config.option-validator';
|
|
11
|
+
export * from './commands/config/config.command-factory';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/mksymlink/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kCAAkC,CAAC;AACjD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,0CAA0C,CAAC"}
|
package/src/index.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
__exportStar(require("./services/platform-detector"), exports);
|
|
19
|
+
__exportStar(require("./services/symlink.service"), exports);
|
|
20
|
+
__exportStar(require("./services/symlink-error"), exports);
|
|
21
|
+
__exportStar(require("./services/config.service"), exports);
|
|
22
|
+
__exportStar(require("./commands/create/mksymlink.command"), exports);
|
|
23
|
+
__exportStar(require("./commands/create/mksymlink.option-validator"), exports);
|
|
24
|
+
__exportStar(require("./commands/create/mksymlink.command-factory"), exports);
|
|
25
|
+
__exportStar(require("./commands/config/config.command"), exports);
|
|
26
|
+
__exportStar(require("./commands/config/config.option-validator"), exports);
|
|
27
|
+
__exportStar(require("./commands/config/config.command-factory"), exports);
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/mksymlink/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,+DAA6C;AAC7C,6DAA2C;AAC3C,2DAAyC;AACzC,4DAA0C;AAC1C,sEAAoD;AACpD,+EAA6D;AAC7D,8EAA4D;AAC5D,mEAAiD;AACjD,4EAA0D;AAC1D,2EAAyD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface ConfigData {
|
|
2
|
+
[key: string]: string | undefined;
|
|
3
|
+
}
|
|
4
|
+
export declare class ConfigService {
|
|
5
|
+
private readonly configPath;
|
|
6
|
+
private config;
|
|
7
|
+
constructor(configPath?: string);
|
|
8
|
+
/**
|
|
9
|
+
* Get a configuration value by key
|
|
10
|
+
*/
|
|
11
|
+
get(key: string): string | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Set a configuration value
|
|
14
|
+
*/
|
|
15
|
+
set(key: string, value: string): void;
|
|
16
|
+
/**
|
|
17
|
+
* Unset (remove) a configuration value
|
|
18
|
+
*/
|
|
19
|
+
unset(key: string): void;
|
|
20
|
+
/**
|
|
21
|
+
* List all configuration values
|
|
22
|
+
*/
|
|
23
|
+
list(): ConfigData;
|
|
24
|
+
/**
|
|
25
|
+
* Get the default symlink directory from config
|
|
26
|
+
*/
|
|
27
|
+
getDefaultSymlinkDir(): string | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Set the default symlink directory
|
|
30
|
+
*/
|
|
31
|
+
setDefaultSymlinkDir(dir: string): void;
|
|
32
|
+
/**
|
|
33
|
+
* Get configuration file information
|
|
34
|
+
*/
|
|
35
|
+
getConfigInfo(): {
|
|
36
|
+
path: string;
|
|
37
|
+
exists: boolean;
|
|
38
|
+
size?: number;
|
|
39
|
+
modified?: Date;
|
|
40
|
+
entries: number;
|
|
41
|
+
};
|
|
42
|
+
private loadConfig;
|
|
43
|
+
private saveConfig;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=config.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.service.d.ts","sourceRoot":"","sources":["../../../../../packages/mksymlink/src/services/config.service.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,MAAM,CAAkB;gBAEpB,UAAU,CAAC,EAAE,MAAM;IAM/B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIpC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrC;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKxB;;OAEG;IACH,IAAI,IAAI,UAAU;IAIlB;;OAEG;IACH,oBAAoB,IAAI,MAAM,GAAG,SAAS;IAI1C;;OAEG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvC;;OAEG;IACH,aAAa,IAAI;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACnB;IAsBD,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,UAAU;CAmBrB"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigService = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const os_1 = require("os");
|
|
7
|
+
class ConfigService {
|
|
8
|
+
configPath;
|
|
9
|
+
config = {};
|
|
10
|
+
constructor(configPath) {
|
|
11
|
+
const homeDir = (0, os_1.homedir)();
|
|
12
|
+
this.configPath = configPath || (0, path_1.resolve)(homeDir, '.mksymlinkrc');
|
|
13
|
+
this.loadConfig();
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Get a configuration value by key
|
|
17
|
+
*/
|
|
18
|
+
get(key) {
|
|
19
|
+
return this.config[key];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Set a configuration value
|
|
23
|
+
*/
|
|
24
|
+
set(key, value) {
|
|
25
|
+
this.config[key] = value;
|
|
26
|
+
this.saveConfig();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Unset (remove) a configuration value
|
|
30
|
+
*/
|
|
31
|
+
unset(key) {
|
|
32
|
+
delete this.config[key];
|
|
33
|
+
this.saveConfig();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* List all configuration values
|
|
37
|
+
*/
|
|
38
|
+
list() {
|
|
39
|
+
return { ...this.config };
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get the default symlink directory from config
|
|
43
|
+
*/
|
|
44
|
+
getDefaultSymlinkDir() {
|
|
45
|
+
return this.get('symlink.defaultDir');
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Set the default symlink directory
|
|
49
|
+
*/
|
|
50
|
+
setDefaultSymlinkDir(dir) {
|
|
51
|
+
this.set('symlink.defaultDir', dir);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get configuration file information
|
|
55
|
+
*/
|
|
56
|
+
getConfigInfo() {
|
|
57
|
+
const exists = (0, fs_1.existsSync)(this.configPath);
|
|
58
|
+
const entries = Object.keys(this.config).length;
|
|
59
|
+
if (!exists) {
|
|
60
|
+
return {
|
|
61
|
+
path: this.configPath,
|
|
62
|
+
exists: false,
|
|
63
|
+
entries,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const stats = (0, fs_1.statSync)(this.configPath);
|
|
67
|
+
return {
|
|
68
|
+
path: this.configPath,
|
|
69
|
+
exists: true,
|
|
70
|
+
size: stats.size,
|
|
71
|
+
modified: stats.mtime,
|
|
72
|
+
entries,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
loadConfig() {
|
|
76
|
+
if (!(0, fs_1.existsSync)(this.configPath)) {
|
|
77
|
+
this.config = {};
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const content = (0, fs_1.readFileSync)(this.configPath, 'utf-8');
|
|
82
|
+
const lines = content.split('\n').filter((line) => line.trim());
|
|
83
|
+
this.config = {};
|
|
84
|
+
for (const line of lines) {
|
|
85
|
+
const [key, ...valueParts] = line.split('=');
|
|
86
|
+
if (key && valueParts.length > 0) {
|
|
87
|
+
this.config[key.trim()] = valueParts.join('=').trim();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
throw new Error(`Failed to load config from ${this.configPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
saveConfig() {
|
|
96
|
+
try {
|
|
97
|
+
const configDir = (0, path_1.dirname)(this.configPath);
|
|
98
|
+
if (!(0, fs_1.existsSync)(configDir)) {
|
|
99
|
+
(0, fs_1.mkdirSync)(configDir, { recursive: true });
|
|
100
|
+
}
|
|
101
|
+
const content = Object.entries(this.config)
|
|
102
|
+
.filter(([, value]) => value !== undefined)
|
|
103
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
104
|
+
.join('\n');
|
|
105
|
+
(0, fs_1.writeFileSync)(this.configPath, content + '\n', 'utf-8');
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
throw new Error(`Failed to save config to ${this.configPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.ConfigService = ConfigService;
|
|
113
|
+
//# sourceMappingURL=config.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../../../packages/mksymlink/src/services/config.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PlatformInformation, OSPlatform } from '../types';
|
|
2
|
+
export declare class PlatformDetector implements PlatformInformation {
|
|
3
|
+
private readonly _platform;
|
|
4
|
+
constructor();
|
|
5
|
+
private normalizePlatform;
|
|
6
|
+
getPlatform(): OSPlatform;
|
|
7
|
+
isWindows(): boolean;
|
|
8
|
+
isMacOS(): boolean;
|
|
9
|
+
isLinux(): boolean;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=os-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"os-detector.d.ts","sourceRoot":"","sources":["../../../../../packages/mksymlink/src/services/os-detector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3D,qBAAa,gBAAiB,YAAW,mBAAmB;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;;IAMvC,OAAO,CAAC,iBAAiB;IAazB,WAAW,IAAI,UAAU;IAIzB,SAAS,IAAI,OAAO;IAIpB,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,OAAO;CAGrB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PlatformDetector = void 0;
|
|
4
|
+
const os_1 = require("os");
|
|
5
|
+
class PlatformDetector {
|
|
6
|
+
_platform;
|
|
7
|
+
constructor() {
|
|
8
|
+
this._platform = this.normalizePlatform((0, os_1.platform)());
|
|
9
|
+
}
|
|
10
|
+
normalizePlatform(osPlatform) {
|
|
11
|
+
switch (osPlatform) {
|
|
12
|
+
case 'darwin':
|
|
13
|
+
return 'darwin';
|
|
14
|
+
case 'win32':
|
|
15
|
+
return 'win32';
|
|
16
|
+
case 'linux':
|
|
17
|
+
return 'linux';
|
|
18
|
+
default:
|
|
19
|
+
return 'unknown';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
getPlatform() {
|
|
23
|
+
return this._platform;
|
|
24
|
+
}
|
|
25
|
+
isWindows() {
|
|
26
|
+
return this._platform === 'win32';
|
|
27
|
+
}
|
|
28
|
+
isMacOS() {
|
|
29
|
+
return this._platform === 'darwin';
|
|
30
|
+
}
|
|
31
|
+
isLinux() {
|
|
32
|
+
return this._platform === 'linux';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.PlatformDetector = PlatformDetector;
|
|
36
|
+
//# sourceMappingURL=os-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"os-detector.js","sourceRoot":"","sources":["../../../../../packages/mksymlink/src/services/os-detector.ts"],"names":[],"mappings":";;;AAAA,2BAA8B;AAG9B,MAAa,gBAAgB;IACR,SAAS,CAAa;IAEvC;QACI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAA,aAAQ,GAAE,CAAC,CAAC;IACxD,CAAC;IAEO,iBAAiB,CAAC,UAAkB;QACxC,QAAQ,UAAU,EAAE,CAAC;YACjB,KAAK,QAAQ;gBACT,OAAO,QAAQ,CAAC;YACpB,KAAK,OAAO;gBACR,OAAO,OAAO,CAAC;YACnB,KAAK,OAAO;gBACR,OAAO,OAAO,CAAC;YACnB;gBACI,OAAO,SAAS,CAAC;QACzB,CAAC;IACL,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC;IACtC,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC;IACvC,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC;IACtC,CAAC;CACJ;AAnCD,4CAmCC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PlatformInformation, OSPlatform } from '../types';
|
|
2
|
+
export declare class PlatformDetector implements PlatformInformation {
|
|
3
|
+
private readonly _platform;
|
|
4
|
+
constructor();
|
|
5
|
+
private normalizePlatform;
|
|
6
|
+
getPlatform(): OSPlatform;
|
|
7
|
+
isWindows(): boolean;
|
|
8
|
+
isMacOS(): boolean;
|
|
9
|
+
isLinux(): boolean;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=platform-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-detector.d.ts","sourceRoot":"","sources":["../../../../../packages/mksymlink/src/services/platform-detector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3D,qBAAa,gBAAiB,YAAW,mBAAmB;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;;IAMvC,OAAO,CAAC,iBAAiB;IAazB,WAAW,IAAI,UAAU;IAIzB,SAAS,IAAI,OAAO;IAIpB,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,OAAO;CAGrB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PlatformDetector = void 0;
|
|
4
|
+
const os_1 = require("os");
|
|
5
|
+
class PlatformDetector {
|
|
6
|
+
_platform;
|
|
7
|
+
constructor() {
|
|
8
|
+
this._platform = this.normalizePlatform((0, os_1.platform)());
|
|
9
|
+
}
|
|
10
|
+
normalizePlatform(osPlatform) {
|
|
11
|
+
switch (osPlatform) {
|
|
12
|
+
case 'darwin':
|
|
13
|
+
return 'darwin';
|
|
14
|
+
case 'win32':
|
|
15
|
+
return 'win32';
|
|
16
|
+
case 'linux':
|
|
17
|
+
return 'linux';
|
|
18
|
+
default:
|
|
19
|
+
return 'unknown';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
getPlatform() {
|
|
23
|
+
return this._platform;
|
|
24
|
+
}
|
|
25
|
+
isWindows() {
|
|
26
|
+
return this._platform === 'win32';
|
|
27
|
+
}
|
|
28
|
+
isMacOS() {
|
|
29
|
+
return this._platform === 'darwin';
|
|
30
|
+
}
|
|
31
|
+
isLinux() {
|
|
32
|
+
return this._platform === 'linux';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.PlatformDetector = PlatformDetector;
|
|
36
|
+
//# sourceMappingURL=platform-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-detector.js","sourceRoot":"","sources":["../../../../../packages/mksymlink/src/services/platform-detector.ts"],"names":[],"mappings":";;;AAAA,2BAA8B;AAG9B,MAAa,gBAAgB;IACR,SAAS,CAAa;IAEvC;QACI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAA,aAAQ,GAAE,CAAC,CAAC;IACxD,CAAC;IAEO,iBAAiB,CAAC,UAAkB;QACxC,QAAQ,UAAU,EAAE,CAAC;YACjB,KAAK,QAAQ;gBACT,OAAO,QAAQ,CAAC;YACpB,KAAK,OAAO;gBACR,OAAO,OAAO,CAAC;YACnB,KAAK,OAAO;gBACR,OAAO,OAAO,CAAC;YACnB;gBACI,OAAO,SAAS,CAAC;QACzB,CAAC;IACL,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC;IACtC,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC;IACvC,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC;IACtC,CAAC;CACJ;AAnCD,4CAmCC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Logger } from '@dx-tools/logger';
|
|
2
|
+
import { CommandError } from '../types';
|
|
3
|
+
export declare class SymlinkError extends Error implements CommandError {
|
|
4
|
+
code?: string;
|
|
5
|
+
constructor(message: string, code?: string);
|
|
6
|
+
}
|
|
7
|
+
export declare class SymlinkErrorHandler {
|
|
8
|
+
private readonly logger;
|
|
9
|
+
constructor(logger: Logger);
|
|
10
|
+
handle(error: unknown): never;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=symlink-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symlink-error.d.ts","sourceRoot":"","sources":["../../../../../packages/mksymlink/src/services/symlink-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,qBAAa,YAAa,SAAQ,KAAM,YAAW,YAAY;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEF,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAM7C;AAED,qBAAa,mBAAmB;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK;CAchC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SymlinkErrorHandler = exports.SymlinkError = void 0;
|
|
4
|
+
class SymlinkError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
constructor(message, code) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = 'SymlinkError';
|
|
9
|
+
this.code = code;
|
|
10
|
+
Error.captureStackTrace(this, this.constructor);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.SymlinkError = SymlinkError;
|
|
14
|
+
class SymlinkErrorHandler {
|
|
15
|
+
logger;
|
|
16
|
+
constructor(logger) {
|
|
17
|
+
this.logger = logger;
|
|
18
|
+
}
|
|
19
|
+
handle(error) {
|
|
20
|
+
if (error instanceof SymlinkError) {
|
|
21
|
+
this.logger.error(`Symlink Error [${error.code || 'UNKNOWN'}]: ${error.message}`);
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
if (error instanceof Error) {
|
|
25
|
+
this.logger.error(`Unexpected Error: ${error.message}`);
|
|
26
|
+
throw new SymlinkError(error.message, 'UNEXPECTED_ERROR');
|
|
27
|
+
}
|
|
28
|
+
this.logger.error(`Unknown Error: ${String(error)}`);
|
|
29
|
+
throw new SymlinkError(String(error), 'UNKNOWN_ERROR');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.SymlinkErrorHandler = SymlinkErrorHandler;
|
|
33
|
+
//# sourceMappingURL=symlink-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symlink-error.js","sourceRoot":"","sources":["../../../../../packages/mksymlink/src/services/symlink-error.ts"],"names":[],"mappings":";;;AAGA,MAAa,YAAa,SAAQ,KAAK;IACnC,IAAI,CAAU;IAEd,YAAY,OAAe,EAAE,IAAa;QACtC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CACJ;AATD,oCASC;AAED,MAAa,mBAAmB;IACC;IAA7B,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C,MAAM,CAAC,KAAc;QACjB,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,CAAC,IAAI,IAAI,SAAS,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAClF,MAAM,KAAK,CAAC;QAChB,CAAC;QAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrD,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,CAAC;IAC3D,CAAC;CACJ;AAjBD,kDAiBC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Logger } from '@dx-tools/logger';
|
|
2
|
+
import { SymlinkOperations, SymlinkOptions, SymlinkResult, PlatformInformation } from '../types';
|
|
3
|
+
export declare class SymlinkService implements SymlinkOperations {
|
|
4
|
+
private readonly logger;
|
|
5
|
+
private readonly osDetector;
|
|
6
|
+
constructor(logger: Logger, osDetector: PlatformInformation);
|
|
7
|
+
createSymlink(options: SymlinkOptions): Promise<SymlinkResult>;
|
|
8
|
+
private createWindowsSymlink;
|
|
9
|
+
private createUnixSymlink;
|
|
10
|
+
symlinkExists(path: string): Promise<boolean>;
|
|
11
|
+
removeSymlink(path: string): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=symlink-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symlink-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/mksymlink/src/services/symlink-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EACH,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,mBAAmB,EAEtB,MAAM,UAAU,CAAC;AAKlB,qBAAa,cAAe,YAAW,iBAAiB;IAEhD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,mBAAmB;IAG9C,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;YAgDtD,oBAAoB;YA0CpB,iBAAiB;IAYzB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS7C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAYnD"}
|