@git.zone/cli 2.13.10 → 2.13.12

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 (105) hide show
  1. package/assets/templates/{npmextra/npmextra.json → smartconfig/_smartconfig.json} +3 -0
  2. package/dist_ts/00_commitinfo_data.js +1 -1
  3. package/dist_ts/classes.gitzoneconfig.js +4 -4
  4. package/dist_ts/gitzone.cli.js +1 -15
  5. package/dist_ts/mod_commit/index.js +4 -4
  6. package/dist_ts/mod_config/classes.commitconfig.d.ts +3 -3
  7. package/dist_ts/mod_config/classes.commitconfig.js +20 -20
  8. package/dist_ts/mod_config/classes.releaseconfig.d.ts +3 -3
  9. package/dist_ts/mod_config/classes.releaseconfig.js +21 -21
  10. package/dist_ts/mod_config/index.js +12 -12
  11. package/dist_ts/mod_format/classes.baseformatter.d.ts +2 -9
  12. package/dist_ts/mod_format/classes.baseformatter.js +13 -26
  13. package/dist_ts/mod_format/classes.formatplanner.d.ts +1 -3
  14. package/dist_ts/mod_format/classes.formatplanner.js +11 -39
  15. package/dist_ts/mod_format/classes.formatstats.d.ts +0 -5
  16. package/dist_ts/mod_format/classes.formatstats.js +3 -35
  17. package/dist_ts/mod_format/formatters/cleanup.formatter.js +1 -2
  18. package/dist_ts/mod_format/formatters/copy.formatter.js +5 -8
  19. package/dist_ts/mod_format/formatters/gitignore.formatter.d.ts +5 -0
  20. package/dist_ts/mod_format/formatters/gitignore.formatter.js +23 -29
  21. package/dist_ts/mod_format/formatters/packagejson.formatter.js +5 -5
  22. package/dist_ts/mod_format/formatters/prettier.formatter.js +4 -12
  23. package/dist_ts/mod_format/formatters/{npmextra.formatter.d.ts → smartconfig.formatter.d.ts} +6 -1
  24. package/dist_ts/mod_format/formatters/smartconfig.formatter.js +180 -0
  25. package/dist_ts/mod_format/formatters/templates.formatter.d.ts +4 -0
  26. package/dist_ts/mod_format/formatters/templates.formatter.js +50 -43
  27. package/dist_ts/mod_format/formatters/tsconfig.formatter.js +6 -4
  28. package/dist_ts/mod_format/index.d.ts +0 -4
  29. package/dist_ts/mod_format/index.js +27 -78
  30. package/dist_ts/mod_format/interfaces.format.d.ts +1 -18
  31. package/dist_ts/mod_format/interfaces.format.js +16 -2
  32. package/dist_ts/mod_format/mod.plugins.d.ts +3 -7
  33. package/dist_ts/mod_format/mod.plugins.js +4 -8
  34. package/dist_ts/mod_services/classes.globalregistry.js +2 -2
  35. package/dist_ts/mod_services/classes.servicemanager.d.ts +2 -2
  36. package/dist_ts/mod_services/classes.servicemanager.js +21 -21
  37. package/dist_ts/plugins.d.ts +2 -2
  38. package/dist_ts/plugins.js +3 -3
  39. package/package.json +5 -11
  40. package/ts/00_commitinfo_data.ts +1 -1
  41. package/ts/classes.gitzoneconfig.ts +3 -3
  42. package/ts/gitzone.cli.ts +0 -17
  43. package/ts/mod_commit/index.ts +3 -3
  44. package/ts/mod_config/classes.commitconfig.ts +19 -19
  45. package/ts/mod_config/classes.releaseconfig.ts +20 -20
  46. package/ts/mod_config/index.ts +11 -11
  47. package/ts/mod_format/classes.baseformatter.ts +14 -25
  48. package/ts/mod_format/classes.formatplanner.ts +10 -39
  49. package/ts/mod_format/classes.formatstats.ts +2 -42
  50. package/ts/mod_format/formatters/cleanup.formatter.ts +0 -1
  51. package/ts/mod_format/formatters/copy.formatter.ts +4 -8
  52. package/ts/mod_format/formatters/gitignore.formatter.ts +25 -29
  53. package/ts/mod_format/formatters/packagejson.formatter.ts +4 -4
  54. package/ts/mod_format/formatters/prettier.formatter.ts +3 -13
  55. package/ts/mod_format/formatters/smartconfig.formatter.ts +213 -0
  56. package/ts/mod_format/formatters/templates.formatter.ts +55 -43
  57. package/ts/mod_format/formatters/tsconfig.formatter.ts +6 -3
  58. package/ts/mod_format/index.ts +35 -98
  59. package/ts/mod_format/interfaces.format.ts +16 -19
  60. package/ts/mod_format/mod.plugins.ts +4 -12
  61. package/ts/mod_services/classes.globalregistry.ts +2 -2
  62. package/ts/mod_services/classes.servicemanager.ts +20 -20
  63. package/ts/plugins.ts +2 -2
  64. package/dist_ts/mod_format/classes.changecache.d.ts +0 -26
  65. package/dist_ts/mod_format/classes.changecache.js +0 -181
  66. package/dist_ts/mod_format/classes.dependency-analyzer.d.ts +0 -13
  67. package/dist_ts/mod_format/classes.dependency-analyzer.js +0 -93
  68. package/dist_ts/mod_format/classes.rollbackmanager.d.ts +0 -22
  69. package/dist_ts/mod_format/classes.rollbackmanager.js +0 -259
  70. package/dist_ts/mod_format/format.cleanup.d.ts +0 -2
  71. package/dist_ts/mod_format/format.cleanup.js +0 -25
  72. package/dist_ts/mod_format/format.copy.d.ts +0 -24
  73. package/dist_ts/mod_format/format.copy.js +0 -77
  74. package/dist_ts/mod_format/format.gitignore.d.ts +0 -2
  75. package/dist_ts/mod_format/format.gitignore.js +0 -48
  76. package/dist_ts/mod_format/format.license.d.ts +0 -2
  77. package/dist_ts/mod_format/format.license.js +0 -26
  78. package/dist_ts/mod_format/format.npmextra.d.ts +0 -5
  79. package/dist_ts/mod_format/format.npmextra.js +0 -125
  80. package/dist_ts/mod_format/format.packagejson.d.ts +0 -2
  81. package/dist_ts/mod_format/format.packagejson.js +0 -145
  82. package/dist_ts/mod_format/format.prettier.d.ts +0 -2
  83. package/dist_ts/mod_format/format.prettier.js +0 -56
  84. package/dist_ts/mod_format/format.readme.d.ts +0 -1
  85. package/dist_ts/mod_format/format.readme.js +0 -29
  86. package/dist_ts/mod_format/format.templates.d.ts +0 -5
  87. package/dist_ts/mod_format/format.templates.js +0 -68
  88. package/dist_ts/mod_format/format.tsconfig.d.ts +0 -2
  89. package/dist_ts/mod_format/format.tsconfig.js +0 -28
  90. package/dist_ts/mod_format/formatters/npmextra.formatter.js +0 -142
  91. package/ts/mod_format/classes.changecache.ts +0 -235
  92. package/ts/mod_format/classes.dependency-analyzer.ts +0 -117
  93. package/ts/mod_format/classes.rollbackmanager.ts +0 -340
  94. package/ts/mod_format/format.cleanup.ts +0 -26
  95. package/ts/mod_format/format.copy.ts +0 -93
  96. package/ts/mod_format/format.gitignore.ts +0 -54
  97. package/ts/mod_format/format.license.ts +0 -32
  98. package/ts/mod_format/format.npmextra.ts +0 -151
  99. package/ts/mod_format/format.packagejson.ts +0 -196
  100. package/ts/mod_format/format.prettier.ts +0 -66
  101. package/ts/mod_format/format.readme.ts +0 -29
  102. package/ts/mod_format/format.templates.ts +0 -79
  103. package/ts/mod_format/format.tsconfig.ts +0 -31
  104. package/ts/mod_format/formatters/npmextra.formatter.ts +0 -174
  105. /package/{npmextra.json → .smartconfig.json} +0 -0
@@ -1,31 +1,15 @@
1
- export type IFormatOperation = {
2
- id: string;
3
- timestamp: number;
4
- files: Array<{
5
- path: string;
6
- originalContent: string;
7
- checksum: string;
8
- permissions: string;
9
- }>;
10
- status: 'pending' | 'in-progress' | 'completed' | 'failed' | 'rolled-back';
11
- error?: Error;
12
- };
13
-
14
1
  export type IFormatPlan = {
15
2
  summary: {
16
3
  totalFiles: number;
17
4
  filesAdded: number;
18
5
  filesModified: number;
19
6
  filesRemoved: number;
20
- estimatedTime: number;
21
7
  };
22
8
  changes: Array<{
23
9
  type: 'create' | 'modify' | 'delete';
24
10
  path: string;
25
11
  module: string;
26
12
  description: string;
27
- diff?: string;
28
- size?: number;
29
13
  }>;
30
14
  warnings: Array<{
31
15
  level: 'info' | 'warning' | 'error';
@@ -40,9 +24,6 @@ export type IPlannedChange = {
40
24
  module: string;
41
25
  description: string;
42
26
  content?: string; // New content for create/modify operations
43
- originalContent?: string; // Original content for comparison
44
- diff?: string;
45
- size?: number;
46
27
  };
47
28
 
48
29
  export interface ICheckResult {
@@ -54,3 +35,19 @@ export interface ICheckResult {
54
35
  after?: string;
55
36
  }>;
56
37
  }
38
+
39
+ export function getModuleIcon(module: string): string {
40
+ const icons: Record<string, string> = {
41
+ packagejson: '📦',
42
+ license: '📝',
43
+ tsconfig: '🔧',
44
+ cleanup: '🚮',
45
+ gitignore: '🔒',
46
+ prettier: '✨',
47
+ readme: '📖',
48
+ templates: '📄',
49
+ smartconfig: '⚙️',
50
+ copy: '📋',
51
+ };
52
+ return icons[module] || '📁';
53
+ }
@@ -1,31 +1,23 @@
1
1
  export * from '../plugins.js';
2
2
 
3
- import * as crypto from 'crypto';
4
3
  import * as path from 'path';
5
- import * as lik from '@push.rocks/lik';
6
4
  import * as smartfile from '@push.rocks/smartfile';
7
- import * as smartgulp from '@push.rocks/smartgulp';
8
5
  import * as smartinteract from '@push.rocks/smartinteract';
9
6
  import * as smartlegal from '@push.rocks/smartlegal';
10
7
  import * as smartobject from '@push.rocks/smartobject';
11
8
  import * as smartnpm from '@push.rocks/smartnpm';
12
- import * as smartstream from '@push.rocks/smartstream';
13
- import * as through2 from 'through2';
14
- import * as npmextra from '@push.rocks/smartconfig';
9
+ import * as smartconfig from '@push.rocks/smartconfig';
15
10
  import * as smartdiff from '@push.rocks/smartdiff';
11
+ import * as smartscaf from '@push.rocks/smartscaf';
16
12
 
17
13
  export {
18
- crypto,
19
14
  path,
20
- lik,
21
15
  smartfile,
22
- smartgulp,
23
16
  smartinteract,
24
17
  smartlegal,
25
18
  smartobject,
26
19
  smartnpm,
27
- smartstream,
28
- through2,
29
- npmextra,
20
+ smartconfig,
30
21
  smartdiff,
22
+ smartscaf,
31
23
  };
@@ -26,11 +26,11 @@ export interface IGlobalRegistryData {
26
26
 
27
27
  export class GlobalRegistry {
28
28
  private static instance: GlobalRegistry | null = null;
29
- private kvStore: plugins.npmextra.KeyValueStore<IGlobalRegistryData>;
29
+ private kvStore: plugins.smartconfig.KeyValueStore<IGlobalRegistryData>;
30
30
  private docker: DockerContainer;
31
31
 
32
32
  private constructor() {
33
- this.kvStore = new plugins.npmextra.KeyValueStore({
33
+ this.kvStore = new plugins.smartconfig.KeyValueStore({
34
34
  typeArg: 'userHomeDir',
35
35
  identityArg: 'gitzone-services',
36
36
  });
@@ -31,7 +31,7 @@ export class ServiceManager {
31
31
  await this.config.loadOrCreate();
32
32
  logger.log('info', `📋 Project: ${this.config.getConfig().PROJECT_NAME}`);
33
33
 
34
- // Load service selection from npmextra.json
34
+ // Load service selection from .smartconfig.json
35
35
  await this.loadServiceConfiguration();
36
36
 
37
37
  // Validate and update ports if needed
@@ -39,11 +39,11 @@ export class ServiceManager {
39
39
  }
40
40
 
41
41
  /**
42
- * Load service configuration from npmextra.json
42
+ * Load service configuration from .smartconfig.json
43
43
  */
44
44
  private async loadServiceConfiguration(): Promise<void> {
45
- const npmextraConfig = new plugins.npmextra.Smartconfig(process.cwd());
46
- const gitzoneConfig = npmextraConfig.dataFor<any>('@git.zone/cli', {});
45
+ const smartconfigInstance = new plugins.smartconfig.Smartconfig(process.cwd());
46
+ const gitzoneConfig = smartconfigInstance.dataFor<any>('@git.zone/cli', {});
47
47
 
48
48
  // Check if services array exists
49
49
  if (!gitzoneConfig.services || !Array.isArray(gitzoneConfig.services) || gitzoneConfig.services.length === 0) {
@@ -63,7 +63,7 @@ export class ServiceManager {
63
63
 
64
64
  this.enabledServices = response.value || ['mongodb', 'minio', 'elasticsearch'];
65
65
 
66
- // Save to npmextra.json
66
+ // Save to .smartconfig.json
67
67
  await this.saveServiceConfiguration(this.enabledServices);
68
68
  } else {
69
69
  this.enabledServices = gitzoneConfig.services;
@@ -72,31 +72,31 @@ export class ServiceManager {
72
72
  }
73
73
 
74
74
  /**
75
- * Save service configuration to npmextra.json
75
+ * Save service configuration to .smartconfig.json
76
76
  */
77
77
  private async saveServiceConfiguration(services: string[]): Promise<void> {
78
- const npmextraPath = plugins.path.join(process.cwd(), 'smartconfig.json');
79
- let npmextraData: any = {};
78
+ const smartconfigPath = plugins.path.join(process.cwd(), '.smartconfig.json');
79
+ let smartconfigData: any = {};
80
80
 
81
- // Read existing npmextra.json if it exists
82
- if (await plugins.smartfs.file(npmextraPath).exists()) {
83
- const content = await plugins.smartfs.file(npmextraPath).encoding('utf8').read();
84
- npmextraData = JSON.parse(content as string);
81
+ // Read existing .smartconfig.json if it exists
82
+ if (await plugins.smartfs.file(smartconfigPath).exists()) {
83
+ const content = await plugins.smartfs.file(smartconfigPath).encoding('utf8').read();
84
+ smartconfigData = JSON.parse(content as string);
85
85
  }
86
86
 
87
87
  // Update @git.zone/cli.services
88
- if (!npmextraData['@git.zone/cli']) {
89
- npmextraData['@git.zone/cli'] = {};
88
+ if (!smartconfigData['@git.zone/cli']) {
89
+ smartconfigData['@git.zone/cli'] = {};
90
90
  }
91
- npmextraData['@git.zone/cli'].services = services;
91
+ smartconfigData['@git.zone/cli'].services = services;
92
92
 
93
- // Write back to npmextra.json
93
+ // Write back to .smartconfig.json
94
94
  await plugins.smartfs
95
- .file(npmextraPath)
95
+ .file(smartconfigPath)
96
96
  .encoding('utf8')
97
- .write(JSON.stringify(npmextraData, null, 2));
97
+ .write(JSON.stringify(smartconfigData, null, 2));
98
98
 
99
- logger.log('ok', `✅ Saved service configuration to npmextra.json`);
99
+ logger.log('ok', `✅ Saved service configuration to .smartconfig.json`);
100
100
  logger.log('info', `🔧 Enabled services: ${services.join(', ')}`);
101
101
  }
102
102
 
@@ -904,7 +904,7 @@ export class ServiceManager {
904
904
 
905
905
  this.enabledServices = response.value || ['mongodb', 'minio', 'elasticsearch'];
906
906
 
907
- // Save to npmextra.json
907
+ // Save to .smartconfig.json
908
908
  await this.saveServiceConfiguration(this.enabledServices);
909
909
 
910
910
  logger.log('ok', '✅ Service configuration updated');
package/ts/plugins.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as smartlog from '@push.rocks/smartlog';
2
2
  import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local';
3
- import * as npmextra from '@push.rocks/smartconfig';
3
+ import * as smartconfig from '@push.rocks/smartconfig';
4
4
  import * as path from 'path';
5
5
  import * as projectinfo from '@push.rocks/projectinfo';
6
6
  import * as smartcli from '@push.rocks/smartcli';
@@ -20,7 +20,7 @@ export const smartfs = new SmartFs(new SmartFsProviderNode());
20
20
  export {
21
21
  smartlog,
22
22
  smartlogDestinationLocal,
23
- npmextra,
23
+ smartconfig,
24
24
  path,
25
25
  projectinfo,
26
26
  smartcli,
@@ -1,26 +0,0 @@
1
- export interface IFileCache {
2
- path: string;
3
- checksum: string;
4
- modified: number;
5
- size: number;
6
- }
7
- export interface ICacheManifest {
8
- version: string;
9
- lastFormat: number;
10
- files: IFileCache[];
11
- }
12
- export declare class ChangeCache {
13
- private cacheDir;
14
- private manifestPath;
15
- private cacheVersion;
16
- constructor();
17
- initialize(): Promise<void>;
18
- getManifest(): Promise<ICacheManifest>;
19
- saveManifest(manifest: ICacheManifest): Promise<void>;
20
- hasFileChanged(filePath: string): Promise<boolean>;
21
- updateFileCache(filePath: string): Promise<void>;
22
- getChangedFiles(filePaths: string[]): Promise<string[]>;
23
- clean(): Promise<void>;
24
- private calculateChecksum;
25
- private isValidManifest;
26
- }
@@ -1,181 +0,0 @@
1
- import * as plugins from './mod.plugins.js';
2
- import * as paths from '../paths.js';
3
- export class ChangeCache {
4
- cacheDir;
5
- manifestPath;
6
- cacheVersion = '1.0.0';
7
- constructor() {
8
- this.cacheDir = plugins.path.join(paths.cwd, '.nogit', 'gitzone-cache');
9
- this.manifestPath = plugins.path.join(this.cacheDir, 'manifest.json');
10
- }
11
- async initialize() {
12
- await plugins.smartfs.directory(this.cacheDir).recursive().create();
13
- }
14
- async getManifest() {
15
- const defaultManifest = {
16
- version: this.cacheVersion,
17
- lastFormat: 0,
18
- files: [],
19
- };
20
- const exists = await plugins.smartfs.file(this.manifestPath).exists();
21
- if (!exists) {
22
- return defaultManifest;
23
- }
24
- try {
25
- const content = (await plugins.smartfs
26
- .file(this.manifestPath)
27
- .encoding('utf8')
28
- .read());
29
- const manifest = JSON.parse(content);
30
- // Validate the manifest structure
31
- if (this.isValidManifest(manifest)) {
32
- return manifest;
33
- }
34
- else {
35
- console.warn('Invalid manifest structure, returning default manifest');
36
- return defaultManifest;
37
- }
38
- }
39
- catch (error) {
40
- console.warn(`Failed to read cache manifest: ${error.message}, returning default manifest`);
41
- // Try to delete the corrupted file
42
- try {
43
- await plugins.smartfs.file(this.manifestPath).delete();
44
- }
45
- catch (removeError) {
46
- // Ignore removal errors
47
- }
48
- return defaultManifest;
49
- }
50
- }
51
- async saveManifest(manifest) {
52
- // Validate before saving
53
- if (!this.isValidManifest(manifest)) {
54
- throw new Error('Invalid manifest structure, cannot save');
55
- }
56
- // Ensure directory exists
57
- await plugins.smartfs.directory(this.cacheDir).recursive().create();
58
- // Write directly with proper JSON stringification
59
- const jsonContent = JSON.stringify(manifest, null, 2);
60
- await plugins.smartfs
61
- .file(this.manifestPath)
62
- .encoding('utf8')
63
- .write(jsonContent);
64
- }
65
- async hasFileChanged(filePath) {
66
- const absolutePath = plugins.path.isAbsolute(filePath)
67
- ? filePath
68
- : plugins.path.join(paths.cwd, filePath);
69
- // Check if file exists
70
- const exists = await plugins.smartfs.file(absolutePath).exists();
71
- if (!exists) {
72
- return true; // File doesn't exist, so it's "changed" (will be created)
73
- }
74
- // Get current file stats
75
- const stats = await plugins.smartfs.file(absolutePath).stat();
76
- // Skip directories
77
- if (stats.isDirectory) {
78
- return false; // Directories are not processed
79
- }
80
- const content = (await plugins.smartfs
81
- .file(absolutePath)
82
- .encoding('utf8')
83
- .read());
84
- const currentChecksum = this.calculateChecksum(content);
85
- // Get cached info
86
- const manifest = await this.getManifest();
87
- const cachedFile = manifest.files.find((f) => f.path === filePath);
88
- if (!cachedFile) {
89
- return true; // Not in cache, so it's changed
90
- }
91
- // Compare checksums
92
- return (cachedFile.checksum !== currentChecksum ||
93
- cachedFile.size !== stats.size ||
94
- cachedFile.modified !== stats.mtime.getTime());
95
- }
96
- async updateFileCache(filePath) {
97
- const absolutePath = plugins.path.isAbsolute(filePath)
98
- ? filePath
99
- : plugins.path.join(paths.cwd, filePath);
100
- // Get current file stats
101
- const stats = await plugins.smartfs.file(absolutePath).stat();
102
- // Skip directories
103
- if (stats.isDirectory) {
104
- return; // Don't cache directories
105
- }
106
- const content = (await plugins.smartfs
107
- .file(absolutePath)
108
- .encoding('utf8')
109
- .read());
110
- const checksum = this.calculateChecksum(content);
111
- // Update manifest
112
- const manifest = await this.getManifest();
113
- const existingIndex = manifest.files.findIndex((f) => f.path === filePath);
114
- const cacheEntry = {
115
- path: filePath,
116
- checksum,
117
- modified: stats.mtime.getTime(),
118
- size: stats.size,
119
- };
120
- if (existingIndex !== -1) {
121
- manifest.files[existingIndex] = cacheEntry;
122
- }
123
- else {
124
- manifest.files.push(cacheEntry);
125
- }
126
- manifest.lastFormat = Date.now();
127
- await this.saveManifest(manifest);
128
- }
129
- async getChangedFiles(filePaths) {
130
- const changedFiles = [];
131
- for (const filePath of filePaths) {
132
- if (await this.hasFileChanged(filePath)) {
133
- changedFiles.push(filePath);
134
- }
135
- }
136
- return changedFiles;
137
- }
138
- async clean() {
139
- const manifest = await this.getManifest();
140
- const validFiles = [];
141
- // Remove entries for files that no longer exist
142
- for (const file of manifest.files) {
143
- const absolutePath = plugins.path.isAbsolute(file.path)
144
- ? file.path
145
- : plugins.path.join(paths.cwd, file.path);
146
- if (await plugins.smartfs.file(absolutePath).exists()) {
147
- validFiles.push(file);
148
- }
149
- }
150
- manifest.files = validFiles;
151
- await this.saveManifest(manifest);
152
- }
153
- calculateChecksum(content) {
154
- return plugins.crypto.createHash('sha256').update(content).digest('hex');
155
- }
156
- isValidManifest(manifest) {
157
- // Check if manifest has the required structure
158
- if (!manifest || typeof manifest !== 'object') {
159
- return false;
160
- }
161
- // Check required fields
162
- if (typeof manifest.version !== 'string' ||
163
- typeof manifest.lastFormat !== 'number' ||
164
- !Array.isArray(manifest.files)) {
165
- return false;
166
- }
167
- // Check each file entry
168
- for (const file of manifest.files) {
169
- if (!file ||
170
- typeof file !== 'object' ||
171
- typeof file.path !== 'string' ||
172
- typeof file.checksum !== 'string' ||
173
- typeof file.modified !== 'number' ||
174
- typeof file.size !== 'number') {
175
- return false;
176
- }
177
- }
178
- return true;
179
- }
180
- }
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jaGFuZ2VjYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL21vZF9mb3JtYXQvY2xhc3Nlcy5jaGFuZ2VjYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBZXJDLE1BQU0sT0FBTyxXQUFXO0lBQ2QsUUFBUSxDQUFTO0lBQ2pCLFlBQVksQ0FBUztJQUNyQixZQUFZLEdBQUcsT0FBTyxDQUFDO0lBRS9CO1FBQ0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdEUsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsTUFBTSxlQUFlLEdBQW1CO1lBQ3RDLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMxQixVQUFVLEVBQUUsQ0FBQztZQUNiLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU8sZUFBZSxDQUFDO1FBQ3pC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
@@ -1,13 +0,0 @@
1
- import { BaseFormatter } from './classes.baseformatter.js';
2
- export interface IModuleDependency {
3
- module: string;
4
- dependencies: Set<string>;
5
- dependents: Set<string>;
6
- }
7
- export declare class DependencyAnalyzer {
8
- private moduleDependencies;
9
- constructor();
10
- private initializeDependencies;
11
- getExecutionGroups(modules: BaseFormatter[]): BaseFormatter[][];
12
- canRunInParallel(module1: string, module2: string): boolean;
13
- }
@@ -1,93 +0,0 @@
1
- import * as plugins from './mod.plugins.js';
2
- import { BaseFormatter } from './classes.baseformatter.js';
3
- export class DependencyAnalyzer {
4
- moduleDependencies = new Map();
5
- constructor() {
6
- this.initializeDependencies();
7
- }
8
- initializeDependencies() {
9
- // Define dependencies between format modules
10
- const dependencies = {
11
- cleanup: [], // No dependencies
12
- npmextra: [], // No dependencies
13
- license: ['npmextra'], // Depends on npmextra for config
14
- packagejson: ['npmextra'], // Depends on npmextra for config
15
- templates: ['npmextra', 'packagejson'], // Depends on both
16
- gitignore: ['templates'], // Depends on templates
17
- tsconfig: ['packagejson'], // Depends on package.json
18
- prettier: [
19
- 'cleanup',
20
- 'npmextra',
21
- 'packagejson',
22
- 'templates',
23
- 'gitignore',
24
- 'tsconfig',
25
- ], // Runs after most others
26
- readme: ['npmextra', 'packagejson'], // Depends on project metadata
27
- copy: ['npmextra'], // Depends on config
28
- };
29
- // Initialize all modules
30
- for (const [module, deps] of Object.entries(dependencies)) {
31
- this.moduleDependencies.set(module, {
32
- module,
33
- dependencies: new Set(deps),
34
- dependents: new Set(),
35
- });
36
- }
37
- // Build reverse dependencies (dependents)
38
- for (const [module, deps] of Object.entries(dependencies)) {
39
- for (const dep of deps) {
40
- const depModule = this.moduleDependencies.get(dep);
41
- if (depModule) {
42
- depModule.dependents.add(module);
43
- }
44
- }
45
- }
46
- }
47
- getExecutionGroups(modules) {
48
- const modulesMap = new Map(modules.map((m) => [m.name, m]));
49
- const executed = new Set();
50
- const groups = [];
51
- while (executed.size < modules.length) {
52
- const currentGroup = [];
53
- for (const module of modules) {
54
- if (executed.has(module.name))
55
- continue;
56
- const dependency = this.moduleDependencies.get(module.name);
57
- if (!dependency) {
58
- // Unknown module, execute in isolation
59
- currentGroup.push(module);
60
- continue;
61
- }
62
- // Check if all dependencies have been executed
63
- const allDepsExecuted = Array.from(dependency.dependencies).every((dep) => executed.has(dep) || !modulesMap.has(dep));
64
- if (allDepsExecuted) {
65
- currentGroup.push(module);
66
- }
67
- }
68
- if (currentGroup.length === 0) {
69
- // Circular dependency or error - execute remaining modules
70
- for (const module of modules) {
71
- if (!executed.has(module.name)) {
72
- currentGroup.push(module);
73
- }
74
- }
75
- }
76
- currentGroup.forEach((m) => executed.add(m.name));
77
- groups.push(currentGroup);
78
- }
79
- return groups;
80
- }
81
- canRunInParallel(module1, module2) {
82
- const dep1 = this.moduleDependencies.get(module1);
83
- const dep2 = this.moduleDependencies.get(module2);
84
- if (!dep1 || !dep2)
85
- return false;
86
- // Check if module1 depends on module2 or vice versa
87
- return (!dep1.dependencies.has(module2) &&
88
- !dep2.dependencies.has(module1) &&
89
- !dep1.dependents.has(module2) &&
90
- !dep2.dependents.has(module1));
91
- }
92
- }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5kZXBlbmRlbmN5LWFuYWx5emVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvbW9kX2Zvcm1hdC9jbGFzc2VzLmRlcGVuZGVuY3ktYW5hbHl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFRM0QsTUFBTSxPQUFPLGtCQUFrQjtJQUNyQixrQkFBa0IsR0FBbUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUV2RTtRQUNFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsNkNBQTZDO1FBQzdDLE1BQU0sWUFBWSxHQUFHO1lBQ25CLE9BQU8sRUFBRSxFQUFFLEVBQUUsa0JBQWtCO1lBQy9CLFFBQVEsRUFBRSxFQUFFLEVBQUUsa0JBQWtCO1lBQ2hDLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLGlDQUFpQztZQUN4RCxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxpQ0FBaUM7WUFDNUQsU0FBUyxFQUFFLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxFQUFFLGtCQUFrQjtZQUMxRCxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSx1QkFBdUI7WUFDakQsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsMEJBQTBCO1lBQ3JELFFBQVEsRUFBRTtnQkFDUixTQUFTO2dCQUNULFVBQVU7Z0JBQ1YsYUFBYTtnQkFDYixXQUFXO2dCQUNYLFdBQVc7Z0JBQ1gsVUFBVTthQUNYLEVBQUUseUJBQXlCO1lBQzVCLE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsRUFBRSw4QkFBOEI7WUFDbkUsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsb0JBQW9CO1NBQ3pDLENBQUM7UUFFRix5QkFB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
@@ -1,22 +0,0 @@
1
- import type { IFormatOperation } from './interfaces.format.js';
2
- export declare class RollbackManager {
3
- private backupDir;
4
- private manifestPath;
5
- constructor();
6
- createOperation(): Promise<IFormatOperation>;
7
- backupFile(filepath: string, operationId: string): Promise<void>;
8
- rollback(operationId: string): Promise<void>;
9
- markComplete(operationId: string): Promise<void>;
10
- cleanOldBackups(retentionDays: number): Promise<void>;
11
- verifyBackup(operationId: string): Promise<boolean>;
12
- listBackups(): Promise<IFormatOperation[]>;
13
- private ensureBackupDir;
14
- private generateOperationId;
15
- private getBackupPath;
16
- private calculateChecksum;
17
- private getManifest;
18
- private saveManifest;
19
- private getOperation;
20
- private updateManifest;
21
- private isValidManifest;
22
- }