@git.zone/cli 1.15.4 → 1.16.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 (81) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts/gitzone.cli.js +26 -2
  3. package/dist_ts/gitzone.logging.d.ts +3 -0
  4. package/dist_ts/gitzone.logging.js +20 -2
  5. package/dist_ts/mod_format/classes.baseformatter.d.ts +21 -0
  6. package/dist_ts/mod_format/classes.baseformatter.js +73 -0
  7. package/dist_ts/mod_format/classes.changecache.d.ts +25 -0
  8. package/dist_ts/mod_format/classes.changecache.js +105 -0
  9. package/dist_ts/mod_format/classes.dependency-analyzer.d.ts +13 -0
  10. package/dist_ts/mod_format/classes.dependency-analyzer.js +87 -0
  11. package/dist_ts/mod_format/classes.diffreporter.d.ts +13 -0
  12. package/dist_ts/mod_format/classes.diffreporter.js +94 -0
  13. package/dist_ts/mod_format/classes.formatcontext.d.ts +19 -0
  14. package/dist_ts/mod_format/classes.formatcontext.js +51 -0
  15. package/dist_ts/mod_format/classes.formatplanner.d.ts +13 -0
  16. package/dist_ts/mod_format/classes.formatplanner.js +164 -0
  17. package/dist_ts/mod_format/classes.formatstats.d.ts +40 -0
  18. package/dist_ts/mod_format/classes.formatstats.js +161 -0
  19. package/dist_ts/mod_format/classes.rollbackmanager.d.ts +21 -0
  20. package/dist_ts/mod_format/classes.rollbackmanager.js +170 -0
  21. package/dist_ts/mod_format/format.copy.d.ts +22 -0
  22. package/dist_ts/mod_format/format.copy.js +66 -2
  23. package/dist_ts/mod_format/format.packagejson.js +48 -2
  24. package/dist_ts/mod_format/formatters/cleanup.formatter.d.ts +7 -0
  25. package/dist_ts/mod_format/formatters/cleanup.formatter.js +33 -0
  26. package/dist_ts/mod_format/formatters/copy.formatter.d.ts +4 -0
  27. package/dist_ts/mod_format/formatters/copy.formatter.js +8 -0
  28. package/dist_ts/mod_format/formatters/gitignore.formatter.d.ts +4 -0
  29. package/dist_ts/mod_format/formatters/gitignore.formatter.js +8 -0
  30. package/dist_ts/mod_format/formatters/legacy.formatter.d.ts +11 -0
  31. package/dist_ts/mod_format/formatters/legacy.formatter.js +29 -0
  32. package/dist_ts/mod_format/formatters/license.formatter.d.ts +4 -0
  33. package/dist_ts/mod_format/formatters/license.formatter.js +8 -0
  34. package/dist_ts/mod_format/formatters/npmextra.formatter.d.ts +4 -0
  35. package/dist_ts/mod_format/formatters/npmextra.formatter.js +8 -0
  36. package/dist_ts/mod_format/formatters/packagejson.formatter.d.ts +4 -0
  37. package/dist_ts/mod_format/formatters/packagejson.formatter.js +8 -0
  38. package/dist_ts/mod_format/formatters/prettier.formatter.d.ts +9 -0
  39. package/dist_ts/mod_format/formatters/prettier.formatter.js +111 -0
  40. package/dist_ts/mod_format/formatters/readme.formatter.d.ts +7 -0
  41. package/dist_ts/mod_format/formatters/readme.formatter.js +19 -0
  42. package/dist_ts/mod_format/formatters/templates.formatter.d.ts +4 -0
  43. package/dist_ts/mod_format/formatters/templates.formatter.js +8 -0
  44. package/dist_ts/mod_format/formatters/tsconfig.formatter.d.ts +4 -0
  45. package/dist_ts/mod_format/formatters/tsconfig.formatter.js +8 -0
  46. package/dist_ts/mod_format/index.d.ts +14 -1
  47. package/dist_ts/mod_format/index.js +202 -28
  48. package/dist_ts/mod_format/interfaces.format.d.ts +43 -0
  49. package/dist_ts/mod_format/interfaces.format.js +2 -0
  50. package/dist_ts/mod_format/mod.plugins.d.ts +5 -1
  51. package/dist_ts/mod_format/mod.plugins.js +6 -2
  52. package/package.json +4 -3
  53. package/readme.hints.md +187 -0
  54. package/readme.plan.md +170 -0
  55. package/ts/00_commitinfo_data.ts +1 -1
  56. package/ts/gitzone.cli.ts +29 -1
  57. package/ts/gitzone.logging.ts +23 -1
  58. package/ts/mod_format/classes.baseformatter.ts +93 -0
  59. package/ts/mod_format/classes.changecache.ts +144 -0
  60. package/ts/mod_format/classes.dependency-analyzer.ts +107 -0
  61. package/ts/mod_format/classes.diffreporter.ts +108 -0
  62. package/ts/mod_format/classes.formatcontext.ts +65 -0
  63. package/ts/mod_format/classes.formatplanner.ts +184 -0
  64. package/ts/mod_format/classes.formatstats.ts +209 -0
  65. package/ts/mod_format/classes.rollbackmanager.ts +218 -0
  66. package/ts/mod_format/format.copy.ts +77 -1
  67. package/ts/mod_format/format.packagejson.ts +50 -1
  68. package/ts/mod_format/formatters/cleanup.formatter.ts +39 -0
  69. package/ts/mod_format/formatters/copy.formatter.ts +8 -0
  70. package/ts/mod_format/formatters/gitignore.formatter.ts +8 -0
  71. package/ts/mod_format/formatters/legacy.formatter.ts +36 -0
  72. package/ts/mod_format/formatters/license.formatter.ts +8 -0
  73. package/ts/mod_format/formatters/npmextra.formatter.ts +8 -0
  74. package/ts/mod_format/formatters/packagejson.formatter.ts +8 -0
  75. package/ts/mod_format/formatters/prettier.formatter.ts +125 -0
  76. package/ts/mod_format/formatters/readme.formatter.ts +22 -0
  77. package/ts/mod_format/formatters/templates.formatter.ts +8 -0
  78. package/ts/mod_format/formatters/tsconfig.formatter.ts +8 -0
  79. package/ts/mod_format/index.ts +241 -33
  80. package/ts/mod_format/interfaces.format.ts +45 -0
  81. package/ts/mod_format/mod.plugins.ts +8 -0
@@ -1,5 +1,69 @@
1
- import * as plugins from '../plugins.js';
1
+ import * as plugins from './mod.plugins.js';
2
+ import { logger } from '../gitzone.logging.js';
2
3
  export const run = async (projectArg) => {
3
4
  const gitzoneConfig = await projectArg.gitzoneConfig;
5
+ // Get copy configuration from npmextra.json
6
+ const npmextraConfig = new plugins.npmextra.Npmextra();
7
+ const copyConfig = npmextraConfig.dataFor('gitzone.format.copy', {
8
+ patterns: []
9
+ });
10
+ if (!copyConfig.patterns || copyConfig.patterns.length === 0) {
11
+ logger.log('info', 'No copy patterns configured in npmextra.json');
12
+ return;
13
+ }
14
+ for (const pattern of copyConfig.patterns) {
15
+ if (!pattern.from || !pattern.to) {
16
+ logger.log('warn', 'Invalid copy pattern - missing "from" or "to" field');
17
+ continue;
18
+ }
19
+ try {
20
+ // Handle glob patterns
21
+ const files = await plugins.smartfile.fs.listFileTree('.', pattern.from);
22
+ for (const file of files) {
23
+ const sourcePath = file;
24
+ let destPath = pattern.to;
25
+ // If destination is a directory, preserve filename
26
+ if (pattern.to.endsWith('/')) {
27
+ const filename = plugins.path.basename(file);
28
+ destPath = plugins.path.join(pattern.to, filename);
29
+ }
30
+ // Handle template variables in destination path
31
+ if (pattern.preservePath) {
32
+ const relativePath = plugins.path.relative(plugins.path.dirname(pattern.from.replace(/\*/g, '')), file);
33
+ destPath = plugins.path.join(pattern.to, relativePath);
34
+ }
35
+ // Ensure destination directory exists
36
+ await plugins.smartfile.fs.ensureDir(plugins.path.dirname(destPath));
37
+ // Copy file
38
+ await plugins.smartfile.fs.copy(sourcePath, destPath);
39
+ logger.log('info', `Copied ${sourcePath} to ${destPath}`);
40
+ }
41
+ }
42
+ catch (error) {
43
+ logger.log('error', `Failed to copy pattern ${pattern.from}: ${error.message}`);
44
+ }
45
+ }
4
46
  };
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfZm9ybWF0L2Zvcm1hdC5jb3B5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsVUFBbUIsRUFBRSxFQUFFO0lBQy9DLE1BQU0sYUFBYSxHQUFHLE1BQU0sVUFBVSxDQUFDLGFBQWEsQ0FBQztBQUN2RCxDQUFDLENBQUMifQ==
47
+ /**
48
+ * Example npmextra.json configuration:
49
+ * {
50
+ * "gitzone": {
51
+ * "format": {
52
+ * "copy": {
53
+ * "patterns": [
54
+ * {
55
+ * "from": "src/assets/*",
56
+ * "to": "dist/assets/",
57
+ * "preservePath": true
58
+ * },
59
+ * {
60
+ * "from": "config/*.json",
61
+ * "to": "dist/"
62
+ * }
63
+ * ]
64
+ * }
65
+ * }
66
+ * }
67
+ * }
68
+ */
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfZm9ybWF0L2Zvcm1hdC5jb3B5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsVUFBbUIsRUFBRSxFQUFFO0lBQy9DLE1BQU0sYUFBYSxHQUFHLE1BQU0sVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUVyRCw0Q0FBNEM7SUFDNUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZELE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQU0scUJBQXFCLEVBQUU7UUFDcEUsUUFBUSxFQUFFLEVBQUU7S0FDYixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM3RCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDO1FBQ25FLE9BQU87SUFDVCxDQUFDO0lBRUQsS0FBSyxNQUFNLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUscURBQXFELENBQUMsQ0FBQztZQUMxRSxTQUFTO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILHVCQUF1QjtZQUN2QixNQUFNLEtBQUssR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpFLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDeEIsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFFMUIsbURBQW1EO2dCQUNuRCxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzdCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM3QyxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDckQsQ0FBQztnQkFFRCxnREFBZ0Q7Z0JBQ2hELElBQUksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUN6QixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FDeEMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQ3JELElBQUksQ0FDTCxDQUFDO29CQUNGLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUN6RCxDQUFDO2dCQUVELHNDQUFzQztnQkFDdEMsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFFckUsWUFBWTtnQkFDWixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3RELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFVBQVUsVUFBVSxPQUFPLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDNUQsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsMEJBQTBCLE9BQU8sQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbEYsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHIn0=
@@ -6,7 +6,53 @@ import { logger } from '../gitzone.logging.js';
6
6
  /**
7
7
  * ensures a certain dependency
8
8
  */
9
- const ensureDependency = async (packageJsonObjectArg, position, constraint, dependencyArg) => { };
9
+ const ensureDependency = async (packageJsonObjectArg, position, constraint, dependencyArg) => {
10
+ const [packageName, version] = dependencyArg.includes('@')
11
+ ? dependencyArg.split('@').filter(Boolean)
12
+ : [dependencyArg, 'latest'];
13
+ const targetSections = [];
14
+ switch (position) {
15
+ case 'dep':
16
+ targetSections.push('dependencies');
17
+ break;
18
+ case 'devDep':
19
+ targetSections.push('devDependencies');
20
+ break;
21
+ case 'everywhere':
22
+ targetSections.push('dependencies', 'devDependencies');
23
+ break;
24
+ }
25
+ for (const section of targetSections) {
26
+ if (!packageJsonObjectArg[section]) {
27
+ packageJsonObjectArg[section] = {};
28
+ }
29
+ switch (constraint) {
30
+ case 'exclude':
31
+ delete packageJsonObjectArg[section][packageName];
32
+ break;
33
+ case 'include':
34
+ if (!packageJsonObjectArg[section][packageName]) {
35
+ packageJsonObjectArg[section][packageName] = version === 'latest' ? '^1.0.0' : version;
36
+ }
37
+ break;
38
+ case 'latest':
39
+ // Fetch latest version from npm
40
+ try {
41
+ const registry = new plugins.smartnpm.NpmRegistry();
42
+ const packageInfo = await registry.getPackageInfo(packageName);
43
+ const latestVersion = packageInfo['dist-tags'].latest;
44
+ packageJsonObjectArg[section][packageName] = `^${latestVersion}`;
45
+ }
46
+ catch (error) {
47
+ logger.log('warn', `Could not fetch latest version for ${packageName}, using existing or default`);
48
+ if (!packageJsonObjectArg[section][packageName]) {
49
+ packageJsonObjectArg[section][packageName] = version === 'latest' ? '^1.0.0' : version;
50
+ }
51
+ }
52
+ break;
53
+ }
54
+ }
55
+ };
10
56
  export const run = async (projectArg) => {
11
57
  const formatStreamWrapper = new plugins.smartstream.StreamWrapper([
12
58
  plugins.smartgulp.src([`package.json`]),
@@ -89,4 +135,4 @@ export const run = async (projectArg) => {
89
135
  console.log(error);
90
136
  });
91
137
  };
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LnBhY2thZ2Vqc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXQucGFja2FnZWpzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssS0FBSyxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEtBQUssWUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFDNUIsb0JBQXlCLEVBQ3pCLFFBQXlDLEVBQ3pDLFVBQTRDLEVBQzVDLGFBQXFCLEVBQ3JCLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFFUixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLFVBQW1CLEVBQUUsRUFBRTtJQUMvQyxNQUFNLG1CQUFtQixHQUFHLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDaEUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2QyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFvQyxFQUFFLEVBQUU7WUFDbEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEUsTUFBTSxXQUFXLEdBQVEsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0QsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFdBQVcsR0FBRyxJQUFJ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
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LnBhY2thZ2Vqc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXQucGFja2FnZWpzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssS0FBSyxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEtBQUssWUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFDNUIsb0JBQXlCLEVBQ3pCLFFBQXlDLEVBQ3pDLFVBQTRDLEVBQzVDLGFBQXFCLEVBQ3JCLEVBQUU7SUFDRixNQUFNLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRTlCLE1BQU0sY0FBYyxHQUFhLEVBQUUsQ0FBQztJQUVwQyxRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssS0FBSztZQUNSLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDcEMsTUFBTTtRQUNSLEtBQUssUUFBUTtZQUNYLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN2QyxNQUFNO1FBQ1IsS0FBSyxZQUFZO1lBQ2YsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUN2RCxNQUFNO0lBQ1YsQ0FB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
@@ -0,0 +1,7 @@
1
+ import { BaseFormatter } from '../classes.baseformatter.js';
2
+ import type { IPlannedChange } from '../interfaces.format.js';
3
+ export declare class CleanupFormatter extends BaseFormatter {
4
+ get name(): string;
5
+ analyze(): Promise<IPlannedChange[]>;
6
+ applyChange(change: IPlannedChange): Promise<void>;
7
+ }
@@ -0,0 +1,33 @@
1
+ import { BaseFormatter } from '../classes.baseformatter.js';
2
+ import * as plugins from '../mod.plugins.js';
3
+ import * as cleanupFormatter from '../format.cleanup.js';
4
+ export class CleanupFormatter extends BaseFormatter {
5
+ get name() {
6
+ return 'cleanup';
7
+ }
8
+ async analyze() {
9
+ const changes = [];
10
+ // List of files to remove
11
+ const filesToRemove = ['yarn.lock', 'package-lock.json', 'tslint.json', 'defaults.yml'];
12
+ for (const file of filesToRemove) {
13
+ const exists = await plugins.smartfile.fs.fileExists(file);
14
+ if (exists) {
15
+ changes.push({
16
+ type: 'delete',
17
+ path: file,
18
+ module: this.name,
19
+ description: `Remove obsolete file`
20
+ });
21
+ }
22
+ }
23
+ return changes;
24
+ }
25
+ async applyChange(change) {
26
+ switch (change.type) {
27
+ case 'delete':
28
+ await this.deleteFile(change.path);
29
+ break;
30
+ }
31
+ }
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW51cC5mb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9tb2RfZm9ybWF0L2Zvcm1hdHRlcnMvY2xlYW51cC5mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVELE9BQU8sS0FBSyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxLQUFLLGdCQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBRXpELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxhQUFhO0lBQ2pELElBQUksSUFBSTtRQUNOLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sT0FBTyxHQUFxQixFQUFFLENBQUM7UUFFckMsMEJBQTBCO1FBQzFCLE1BQU0sYUFBYSxHQUFHLENBQUMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUV4RixLQUFLLE1BQU0sSUFBSSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNELElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxJQUFJLEVBQUUsSUFBSTtvQkFDVixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ2pCLFdBQVcsRUFBRSxzQkFBc0I7aUJBQ3BDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBc0I7UUFDdEMsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEIsS0FBSyxRQUFRO2dCQUNYLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25DLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
@@ -0,0 +1,4 @@
1
+ import { LegacyFormatter } from './legacy.formatter.js';
2
+ export declare class CopyFormatter extends LegacyFormatter {
3
+ constructor(context: any, project: any);
4
+ }
@@ -0,0 +1,8 @@
1
+ import { LegacyFormatter } from './legacy.formatter.js';
2
+ import * as formatCopy from '../format.copy.js';
3
+ export class CopyFormatter extends LegacyFormatter {
4
+ constructor(context, project) {
5
+ super(context, project, 'copy', formatCopy);
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS5mb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9tb2RfZm9ybWF0L2Zvcm1hdHRlcnMvY29weS5mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sS0FBSyxVQUFVLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsTUFBTSxPQUFPLGFBQWMsU0FBUSxlQUFlO0lBQ2hELFlBQVksT0FBWSxFQUFFLE9BQVk7UUFDcEMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRiJ9
@@ -0,0 +1,4 @@
1
+ import { LegacyFormatter } from './legacy.formatter.js';
2
+ export declare class GitignoreFormatter extends LegacyFormatter {
3
+ constructor(context: any, project: any);
4
+ }
@@ -0,0 +1,8 @@
1
+ import { LegacyFormatter } from './legacy.formatter.js';
2
+ import * as formatGitignore from '../format.gitignore.js';
3
+ export class GitignoreFormatter extends LegacyFormatter {
4
+ constructor(context, project) {
5
+ super(context, project, 'gitignore', formatGitignore);
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aWdub3JlLmZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL21vZF9mb3JtYXQvZm9ybWF0dGVycy9naXRpZ25vcmUuZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEtBQUssZUFBZSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxlQUFlO0lBQ3JELFlBQVksT0FBWSxFQUFFLE9BQVk7UUFDcEMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7Q0FDRiJ9
@@ -0,0 +1,11 @@
1
+ import { BaseFormatter } from '../classes.baseformatter.js';
2
+ import type { IPlannedChange } from '../interfaces.format.js';
3
+ import { Project } from '../../classes.project.js';
4
+ export declare class LegacyFormatter extends BaseFormatter {
5
+ private moduleName;
6
+ private formatModule;
7
+ constructor(context: any, project: Project, moduleName: string, formatModule: any);
8
+ get name(): string;
9
+ analyze(): Promise<IPlannedChange[]>;
10
+ applyChange(change: IPlannedChange): Promise<void>;
11
+ }
@@ -0,0 +1,29 @@
1
+ import { BaseFormatter } from '../classes.baseformatter.js';
2
+ import { Project } from '../../classes.project.js';
3
+ import * as plugins from '../mod.plugins.js';
4
+ // This is a wrapper for existing format modules
5
+ export class LegacyFormatter extends BaseFormatter {
6
+ constructor(context, project, moduleName, formatModule) {
7
+ super(context, project);
8
+ this.moduleName = moduleName;
9
+ this.formatModule = formatModule;
10
+ }
11
+ get name() {
12
+ return this.moduleName;
13
+ }
14
+ async analyze() {
15
+ // For legacy modules, we can't easily predict changes
16
+ // So we'll return a generic change that indicates the module will run
17
+ return [{
18
+ type: 'modify',
19
+ path: '<various files>',
20
+ module: this.name,
21
+ description: `Run ${this.name} formatter`
22
+ }];
23
+ }
24
+ async applyChange(change) {
25
+ // Run the legacy format module
26
+ await this.formatModule.run(this.project);
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LmZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL21vZF9mb3JtYXQvZm9ybWF0dGVycy9sZWdhY3kuZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxLQUFLLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUU3QyxnREFBZ0Q7QUFDaEQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsYUFBYTtJQUloRCxZQUFZLE9BQVksRUFBRSxPQUFnQixFQUFFLFVBQWtCLEVBQUUsWUFBaUI7UUFDL0UsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLHNEQUFzRDtRQUN0RCxzRUFBc0U7UUFDdEUsT0FBTyxDQUFDO2dCQUNOLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDakIsV0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksWUFBWTthQUMxQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFzQjtRQUN0QywrQkFBK0I7UUFDL0IsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGIn0=
@@ -0,0 +1,4 @@
1
+ import { LegacyFormatter } from './legacy.formatter.js';
2
+ export declare class LicenseFormatter extends LegacyFormatter {
3
+ constructor(context: any, project: any);
4
+ }
@@ -0,0 +1,8 @@
1
+ import { LegacyFormatter } from './legacy.formatter.js';
2
+ import * as formatLicense from '../format.license.js';
3
+ export class LicenseFormatter extends LegacyFormatter {
4
+ constructor(context, project) {
5
+ super(context, project, 'license', formatLicense);
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGljZW5zZS5mb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9tb2RfZm9ybWF0L2Zvcm1hdHRlcnMvbGljZW5zZS5mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sS0FBSyxhQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGVBQWU7SUFDbkQsWUFBWSxPQUFZLEVBQUUsT0FBWTtRQUNwQyxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQUNGIn0=
@@ -0,0 +1,4 @@
1
+ import { LegacyFormatter } from './legacy.formatter.js';
2
+ export declare class NpmextraFormatter extends LegacyFormatter {
3
+ constructor(context: any, project: any);
4
+ }
@@ -0,0 +1,8 @@
1
+ import { LegacyFormatter } from './legacy.formatter.js';
2
+ import * as formatNpmextra from '../format.npmextra.js';
3
+ export class NpmextraFormatter extends LegacyFormatter {
4
+ constructor(context, project) {
5
+ super(context, project, 'npmextra', formatNpmextra);
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZXh0cmEuZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXR0ZXJzL25wbWV4dHJhLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxLQUFLLGNBQWMsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQUNwRCxZQUFZLE9BQVksRUFBRSxPQUFZO1FBQ3BDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,4 @@
1
+ import { LegacyFormatter } from './legacy.formatter.js';
2
+ export declare class PackageJsonFormatter extends LegacyFormatter {
3
+ constructor(context: any, project: any);
4
+ }
@@ -0,0 +1,8 @@
1
+ import { LegacyFormatter } from './legacy.formatter.js';
2
+ import * as formatPackageJson from '../format.packagejson.js';
3
+ export class PackageJsonFormatter extends LegacyFormatter {
4
+ constructor(context, project) {
5
+ super(context, project, 'packagejson', formatPackageJson);
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZWpzb24uZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXR0ZXJzL3BhY2thZ2Vqc29uLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxLQUFLLGlCQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBRTlELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxlQUFlO0lBQ3ZELFlBQVksT0FBWSxFQUFFLE9BQVk7UUFDcEMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNGIn0=
@@ -0,0 +1,9 @@
1
+ import { BaseFormatter } from '../classes.baseformatter.js';
2
+ import type { IPlannedChange } from '../interfaces.format.js';
3
+ export declare class PrettierFormatter extends BaseFormatter {
4
+ get name(): string;
5
+ analyze(): Promise<IPlannedChange[]>;
6
+ execute(changes: IPlannedChange[]): Promise<void>;
7
+ applyChange(change: IPlannedChange): Promise<void>;
8
+ private getPrettierConfig;
9
+ }
@@ -0,0 +1,111 @@
1
+ import { BaseFormatter } from '../classes.baseformatter.js';
2
+ import * as plugins from '../mod.plugins.js';
3
+ import { logger, logVerbose } from '../../gitzone.logging.js';
4
+ export class PrettierFormatter extends BaseFormatter {
5
+ get name() {
6
+ return 'prettier';
7
+ }
8
+ async analyze() {
9
+ const changes = [];
10
+ const globPattern = '**/*.{ts,tsx,js,jsx,json,md,css,scss,html,xml,yaml,yml}';
11
+ // Get all files that match the pattern
12
+ const files = await plugins.smartfile.fs.listFileTree('.', globPattern);
13
+ // Check which files need formatting
14
+ for (const file of files) {
15
+ // Skip files that haven't changed
16
+ if (!await this.shouldProcessFile(file)) {
17
+ logVerbose(`Skipping ${file} - no changes detected`);
18
+ continue;
19
+ }
20
+ changes.push({
21
+ type: 'modify',
22
+ path: file,
23
+ module: this.name,
24
+ description: 'Format with Prettier'
25
+ });
26
+ }
27
+ logger.log('info', `Found ${changes.length} files to format with Prettier`);
28
+ return changes;
29
+ }
30
+ async execute(changes) {
31
+ const startTime = this.stats.moduleStartTime(this.name);
32
+ this.stats.startModule(this.name);
33
+ try {
34
+ await this.preExecute();
35
+ // Batch process files
36
+ const batchSize = 10; // Process 10 files at a time
37
+ const batches = [];
38
+ for (let i = 0; i < changes.length; i += batchSize) {
39
+ batches.push(changes.slice(i, i + batchSize));
40
+ }
41
+ logVerbose(`Processing ${changes.length} files in ${batches.length} batches`);
42
+ for (let i = 0; i < batches.length; i++) {
43
+ const batch = batches[i];
44
+ logVerbose(`Processing batch ${i + 1}/${batches.length} (${batch.length} files)`);
45
+ // Process batch in parallel
46
+ const promises = batch.map(async (change) => {
47
+ try {
48
+ await this.applyChange(change);
49
+ this.stats.recordFileOperation(this.name, change.type, true);
50
+ }
51
+ catch (error) {
52
+ this.stats.recordFileOperation(this.name, change.type, false);
53
+ logger.log('error', `Failed to format ${change.path}: ${error.message}`);
54
+ // Don't throw - continue with other files
55
+ }
56
+ });
57
+ await Promise.all(promises);
58
+ }
59
+ await this.postExecute();
60
+ }
61
+ catch (error) {
62
+ await this.context.rollbackOperation();
63
+ throw error;
64
+ }
65
+ finally {
66
+ this.stats.endModule(this.name, startTime);
67
+ }
68
+ }
69
+ async applyChange(change) {
70
+ if (change.type !== 'modify')
71
+ return;
72
+ try {
73
+ // Read current content
74
+ const content = await plugins.smartfile.fs.toStringSync(change.path);
75
+ // Format with prettier
76
+ const prettier = await import('prettier');
77
+ const formatted = await prettier.format(content, {
78
+ filepath: change.path,
79
+ ...(await this.getPrettierConfig())
80
+ });
81
+ // Only write if content actually changed
82
+ if (formatted !== content) {
83
+ await this.modifyFile(change.path, formatted);
84
+ logVerbose(`Formatted ${change.path}`);
85
+ }
86
+ else {
87
+ // Still update cache even if content didn't change
88
+ await this.cache.updateFileCache(change.path);
89
+ logVerbose(`No formatting changes for ${change.path}`);
90
+ }
91
+ }
92
+ catch (error) {
93
+ logger.log('error', `Failed to format ${change.path}: ${error.message}`);
94
+ throw error;
95
+ }
96
+ }
97
+ async getPrettierConfig() {
98
+ // Try to load prettier config from the project
99
+ const prettierConfig = new plugins.npmextra.Npmextra();
100
+ return prettierConfig.dataFor('prettier', {
101
+ // Default prettier config
102
+ singleQuote: true,
103
+ trailingComma: 'all',
104
+ printWidth: 80,
105
+ tabWidth: 2,
106
+ semi: true,
107
+ arrowParens: 'always'
108
+ });
109
+ }
110
+ }
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldHRpZXIuZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXR0ZXJzL3ByZXR0aWVyLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxLQUFLLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhO0lBQ2xELElBQUksSUFBSTtRQUNOLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sT0FBTyxHQUFxQixFQUFFLENBQUM7UUFDckMsTUFBTSxXQUFXLEdBQUcseURBQXlELENBQUM7UUFFOUUsdUNBQXVDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUV4RSxvQ0FBb0M7UUFDcEMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixrQ0FBa0M7WUFDbEMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLFVBQVUsQ0FBQyxZQUFZLElBQUksd0JBQXdCLENBQUMsQ0FBQztnQkFDckQsU0FBUztZQUNYLENBQUM7WUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxJQUFJO2dCQUNWLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDakIsV0FBVyxFQUFFLHNCQUFzQjthQUNwQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FB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
@@ -0,0 +1,7 @@
1
+ import { BaseFormatter } from '../classes.baseformatter.js';
2
+ import type { IPlannedChange } from '../interfaces.format.js';
3
+ export declare class ReadmeFormatter extends BaseFormatter {
4
+ get name(): string;
5
+ analyze(): Promise<IPlannedChange[]>;
6
+ applyChange(change: IPlannedChange): Promise<void>;
7
+ }
@@ -0,0 +1,19 @@
1
+ import { BaseFormatter } from '../classes.baseformatter.js';
2
+ import * as formatReadme from '../format.readme.js';
3
+ export class ReadmeFormatter extends BaseFormatter {
4
+ get name() {
5
+ return 'readme';
6
+ }
7
+ async analyze() {
8
+ return [{
9
+ type: 'modify',
10
+ path: 'readme.md',
11
+ module: this.name,
12
+ description: 'Ensure readme files exist'
13
+ }];
14
+ }
15
+ async applyChange(change) {
16
+ await formatReadme.run();
17
+ }
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG1lLmZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL21vZF9mb3JtYXQvZm9ybWF0dGVycy9yZWFkbWUuZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU1RCxPQUFPLEtBQUssWUFBWSxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQWE7SUFDaEQsSUFBSSxJQUFJO1FBQ04sT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsT0FBTyxDQUFDO2dCQUNOLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxXQUFXO2dCQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2pCLFdBQVcsRUFBRSwyQkFBMkI7YUFDekMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBc0I7UUFDdEMsTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNGIn0=
@@ -0,0 +1,4 @@
1
+ import { LegacyFormatter } from './legacy.formatter.js';
2
+ export declare class TemplatesFormatter extends LegacyFormatter {
3
+ constructor(context: any, project: any);
4
+ }
@@ -0,0 +1,8 @@
1
+ import { LegacyFormatter } from './legacy.formatter.js';
2
+ import * as formatTemplates from '../format.templates.js';
3
+ export class TemplatesFormatter extends LegacyFormatter {
4
+ constructor(context, project) {
5
+ super(context, project, 'templates', formatTemplates);
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL21vZF9mb3JtYXQvZm9ybWF0dGVycy90ZW1wbGF0ZXMuZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEtBQUssZUFBZSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxlQUFlO0lBQ3JELFlBQVksT0FBWSxFQUFFLE9BQVk7UUFDcEMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7Q0FDRiJ9
@@ -0,0 +1,4 @@
1
+ import { LegacyFormatter } from './legacy.formatter.js';
2
+ export declare class TsconfigFormatter extends LegacyFormatter {
3
+ constructor(context: any, project: any);
4
+ }
@@ -0,0 +1,8 @@
1
+ import { LegacyFormatter } from './legacy.formatter.js';
2
+ import * as formatTsconfig from '../format.tsconfig.js';
3
+ export class TsconfigFormatter extends LegacyFormatter {
4
+ constructor(context, project) {
5
+ super(context, project, 'tsconfig', formatTsconfig);
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNjb25maWcuZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXR0ZXJzL3RzY29uZmlnLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxLQUFLLGNBQWMsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQUNwRCxZQUFZLE9BQVksRUFBRSxPQUFZO1FBQ3BDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0YifQ==
@@ -1 +1,14 @@
1
- export declare let run: (writeArg?: boolean) => Promise<any>;
1
+ export declare let run: (options?: {
2
+ dryRun?: boolean;
3
+ yes?: boolean;
4
+ planOnly?: boolean;
5
+ savePlan?: string;
6
+ fromPlan?: string;
7
+ detailed?: boolean;
8
+ interactive?: boolean;
9
+ parallel?: boolean;
10
+ verbose?: boolean;
11
+ }) => Promise<any>;
12
+ export declare const handleRollback: (operationId?: string) => Promise<void>;
13
+ export declare const handleListBackups: () => Promise<void>;
14
+ export declare const handleCleanBackups: () => Promise<void>;