@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.
Files changed (106) hide show
  1. package/README.md +176 -0
  2. package/examples/advanced-usage.d.ts +2 -0
  3. package/examples/advanced-usage.d.ts.map +1 -0
  4. package/examples/advanced-usage.js +39 -0
  5. package/examples/advanced-usage.js.map +1 -0
  6. package/examples/basic-usage.d.ts +2 -0
  7. package/examples/basic-usage.d.ts.map +1 -0
  8. package/examples/basic-usage.js +15 -0
  9. package/examples/basic-usage.js.map +1 -0
  10. package/examples/config-usage.d.ts +3 -0
  11. package/examples/config-usage.d.ts.map +1 -0
  12. package/examples/config-usage.js +65 -0
  13. package/examples/config-usage.js.map +1 -0
  14. package/examples/cross-platform.d.ts +2 -0
  15. package/examples/cross-platform.d.ts.map +1 -0
  16. package/examples/cross-platform.js +41 -0
  17. package/examples/cross-platform.js.map +1 -0
  18. package/examples/index.d.ts +2 -0
  19. package/examples/index.d.ts.map +1 -0
  20. package/examples/index.js +7 -0
  21. package/examples/index.js.map +1 -0
  22. package/package.json +51 -0
  23. package/src/commands/config/config.command-factory.d.ts +5 -0
  24. package/src/commands/config/config.command-factory.d.ts.map +1 -0
  25. package/src/commands/config/config.command-factory.js +18 -0
  26. package/src/commands/config/config.command-factory.js.map +1 -0
  27. package/src/commands/config/config.command.d.ts +23 -0
  28. package/src/commands/config/config.command.d.ts.map +1 -0
  29. package/src/commands/config/config.command.js +94 -0
  30. package/src/commands/config/config.command.js.map +1 -0
  31. package/src/commands/config/config.option-validator.d.ts +9 -0
  32. package/src/commands/config/config.option-validator.d.ts.map +1 -0
  33. package/src/commands/config/config.option-validator.js +41 -0
  34. package/src/commands/config/config.option-validator.js.map +1 -0
  35. package/src/commands/config.command-factory.d.ts +5 -0
  36. package/src/commands/config.command-factory.d.ts.map +1 -0
  37. package/src/commands/config.command-factory.js +18 -0
  38. package/src/commands/config.command-factory.js.map +1 -0
  39. package/src/commands/config.command.d.ts +22 -0
  40. package/src/commands/config.command.d.ts.map +1 -0
  41. package/src/commands/config.command.js +80 -0
  42. package/src/commands/config.command.js.map +1 -0
  43. package/src/commands/config.option-validator.d.ts +9 -0
  44. package/src/commands/config.option-validator.d.ts.map +1 -0
  45. package/src/commands/config.option-validator.js +41 -0
  46. package/src/commands/config.option-validator.js.map +1 -0
  47. package/src/commands/create/mksymlink.command-factory.d.ts +5 -0
  48. package/src/commands/create/mksymlink.command-factory.d.ts.map +1 -0
  49. package/src/commands/create/mksymlink.command-factory.js +20 -0
  50. package/src/commands/create/mksymlink.command-factory.js.map +1 -0
  51. package/src/commands/create/mksymlink.command.d.ts +22 -0
  52. package/src/commands/create/mksymlink.command.d.ts.map +1 -0
  53. package/src/commands/create/mksymlink.command.js +68 -0
  54. package/src/commands/create/mksymlink.command.js.map +1 -0
  55. package/src/commands/create/mksymlink.option-validator.d.ts +9 -0
  56. package/src/commands/create/mksymlink.option-validator.d.ts.map +1 -0
  57. package/src/commands/create/mksymlink.option-validator.js +35 -0
  58. package/src/commands/create/mksymlink.option-validator.js.map +1 -0
  59. package/src/commands/index.d.ts +3 -0
  60. package/src/commands/index.d.ts.map +1 -0
  61. package/src/commands/index.js +118 -0
  62. package/src/commands/index.js.map +1 -0
  63. package/src/commands/mksymlink.command-factory.d.ts +5 -0
  64. package/src/commands/mksymlink.command-factory.d.ts.map +1 -0
  65. package/src/commands/mksymlink.command-factory.js +20 -0
  66. package/src/commands/mksymlink.command-factory.js.map +1 -0
  67. package/src/commands/mksymlink.command.d.ts +22 -0
  68. package/src/commands/mksymlink.command.d.ts.map +1 -0
  69. package/src/commands/mksymlink.command.js +68 -0
  70. package/src/commands/mksymlink.command.js.map +1 -0
  71. package/src/commands/mksymlink.option-validator.d.ts +9 -0
  72. package/src/commands/mksymlink.option-validator.d.ts.map +1 -0
  73. package/src/commands/mksymlink.option-validator.js +35 -0
  74. package/src/commands/mksymlink.option-validator.js.map +1 -0
  75. package/src/index.d.ts +12 -0
  76. package/src/index.d.ts.map +1 -0
  77. package/src/index.js +28 -0
  78. package/src/index.js.map +1 -0
  79. package/src/services/config.service.d.ts +45 -0
  80. package/src/services/config.service.d.ts.map +1 -0
  81. package/src/services/config.service.js +113 -0
  82. package/src/services/config.service.js.map +1 -0
  83. package/src/services/os-detector.d.ts +11 -0
  84. package/src/services/os-detector.d.ts.map +1 -0
  85. package/src/services/os-detector.js +36 -0
  86. package/src/services/os-detector.js.map +1 -0
  87. package/src/services/platform-detector.d.ts +11 -0
  88. package/src/services/platform-detector.d.ts.map +1 -0
  89. package/src/services/platform-detector.js +36 -0
  90. package/src/services/platform-detector.js.map +1 -0
  91. package/src/services/symlink-error.d.ts +12 -0
  92. package/src/services/symlink-error.d.ts.map +1 -0
  93. package/src/services/symlink-error.js +33 -0
  94. package/src/services/symlink-error.js.map +1 -0
  95. package/src/services/symlink-manager.d.ts +13 -0
  96. package/src/services/symlink-manager.d.ts.map +1 -0
  97. package/src/services/symlink-manager.js +115 -0
  98. package/src/services/symlink-manager.js.map +1 -0
  99. package/src/services/symlink.service.d.ts +13 -0
  100. package/src/services/symlink.service.d.ts.map +1 -0
  101. package/src/services/symlink.service.js +115 -0
  102. package/src/services/symlink.service.js.map +1 -0
  103. package/src/types/index.d.ts +40 -0
  104. package/src/types/index.d.ts.map +1 -0
  105. package/src/types/index.js +3 -0
  106. 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
@@ -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"}