@git.zone/cli 2.9.2 → 2.10.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 (32) hide show
  1. package/dist_ts/00_commitinfo_data.js +2 -2
  2. package/dist_ts/mod_format/formatters/copy.formatter.d.ts +6 -3
  3. package/dist_ts/mod_format/formatters/copy.formatter.js +90 -6
  4. package/dist_ts/mod_format/formatters/gitignore.formatter.d.ts +6 -3
  5. package/dist_ts/mod_format/formatters/gitignore.formatter.js +101 -6
  6. package/dist_ts/mod_format/formatters/license.formatter.d.ts +7 -3
  7. package/dist_ts/mod_format/formatters/license.formatter.js +48 -6
  8. package/dist_ts/mod_format/formatters/npmextra.formatter.d.ts +6 -3
  9. package/dist_ts/mod_format/formatters/npmextra.formatter.js +130 -6
  10. package/dist_ts/mod_format/formatters/packagejson.formatter.d.ts +6 -3
  11. package/dist_ts/mod_format/formatters/packagejson.formatter.js +162 -6
  12. package/dist_ts/mod_format/formatters/prettier.formatter.d.ts +5 -1
  13. package/dist_ts/mod_format/formatters/prettier.formatter.js +46 -1
  14. package/dist_ts/mod_format/formatters/readme.formatter.js +35 -9
  15. package/dist_ts/mod_format/formatters/templates.formatter.d.ts +7 -3
  16. package/dist_ts/mod_format/formatters/templates.formatter.js +135 -6
  17. package/dist_ts/mod_format/formatters/tsconfig.formatter.d.ts +6 -3
  18. package/dist_ts/mod_format/formatters/tsconfig.formatter.js +61 -6
  19. package/package.json +30 -20
  20. package/ts/00_commitinfo_data.ts +1 -1
  21. package/ts/mod_format/formatters/copy.formatter.ts +114 -5
  22. package/ts/mod_format/formatters/gitignore.formatter.ts +108 -5
  23. package/ts/mod_format/formatters/license.formatter.ts +59 -5
  24. package/ts/mod_format/formatters/npmextra.formatter.ts +162 -5
  25. package/ts/mod_format/formatters/packagejson.formatter.ts +201 -5
  26. package/ts/mod_format/formatters/prettier.formatter.ts +50 -1
  27. package/ts/mod_format/formatters/readme.formatter.ts +39 -8
  28. package/ts/mod_format/formatters/templates.formatter.ts +152 -5
  29. package/ts/mod_format/formatters/tsconfig.formatter.ts +70 -5
  30. package/dist_ts/mod_format/formatters/legacy.formatter.d.ts +0 -11
  31. package/dist_ts/mod_format/formatters/legacy.formatter.js +0 -31
  32. package/ts/mod_format/formatters/legacy.formatter.ts +0 -43
@@ -1,8 +1,164 @@
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);
1
+ import { BaseFormatter } from '../classes.baseformatter.js';
2
+ import * as plugins from '../mod.plugins.js';
3
+ import * as paths from '../../paths.js';
4
+ import { logger, logVerbose } from '../../gitzone.logging.js';
5
+ /**
6
+ * Ensures a certain dependency exists or is excluded
7
+ */
8
+ const ensureDependency = async (packageJsonObject, position, constraint, dependencyArg) => {
9
+ const [packageName, version] = dependencyArg.includes('@')
10
+ ? dependencyArg.split('@').filter(Boolean)
11
+ : [dependencyArg, 'latest'];
12
+ const targetSections = [];
13
+ switch (position) {
14
+ case 'dep':
15
+ targetSections.push('dependencies');
16
+ break;
17
+ case 'devDep':
18
+ targetSections.push('devDependencies');
19
+ break;
20
+ case 'everywhere':
21
+ targetSections.push('dependencies', 'devDependencies');
22
+ break;
23
+ }
24
+ for (const section of targetSections) {
25
+ if (!packageJsonObject[section]) {
26
+ packageJsonObject[section] = {};
27
+ }
28
+ switch (constraint) {
29
+ case 'exclude':
30
+ delete packageJsonObject[section][packageName];
31
+ break;
32
+ case 'include':
33
+ if (!packageJsonObject[section][packageName]) {
34
+ packageJsonObject[section][packageName] =
35
+ version === 'latest' ? '^1.0.0' : version;
36
+ }
37
+ break;
38
+ case 'latest':
39
+ try {
40
+ const registry = new plugins.smartnpm.NpmRegistry();
41
+ const packageInfo = await registry.getPackageInfo(packageName);
42
+ const latestVersion = packageInfo['dist-tags'].latest;
43
+ packageJsonObject[section][packageName] = `^${latestVersion}`;
44
+ }
45
+ catch (error) {
46
+ logVerbose(`Could not fetch latest version for ${packageName}, using existing or default`);
47
+ if (!packageJsonObject[section][packageName]) {
48
+ packageJsonObject[section][packageName] =
49
+ version === 'latest' ? '^1.0.0' : version;
50
+ }
51
+ }
52
+ break;
53
+ }
54
+ }
55
+ };
56
+ export class PackageJsonFormatter extends BaseFormatter {
57
+ get name() {
58
+ return 'packagejson';
59
+ }
60
+ async analyze() {
61
+ const changes = [];
62
+ const packageJsonPath = 'package.json';
63
+ // Check if file exists
64
+ const exists = await plugins.smartfs.file(packageJsonPath).exists();
65
+ if (!exists) {
66
+ logVerbose('package.json does not exist, skipping');
67
+ return changes;
68
+ }
69
+ // Read current content
70
+ const currentContent = (await plugins.smartfs
71
+ .file(packageJsonPath)
72
+ .encoding('utf8')
73
+ .read());
74
+ // Parse and compute new content
75
+ const packageJson = JSON.parse(currentContent);
76
+ // Get gitzone config from npmextra
77
+ const npmextraConfig = new plugins.npmextra.Npmextra(paths.cwd);
78
+ const gitzoneData = npmextraConfig.dataFor('@git.zone/cli', {});
79
+ // Set metadata from gitzone config
80
+ if (gitzoneData.module) {
81
+ packageJson.repository = {
82
+ type: 'git',
83
+ url: `https://${gitzoneData.module.githost}/${gitzoneData.module.gitscope}/${gitzoneData.module.gitrepo}.git`,
84
+ };
85
+ packageJson.bugs = {
86
+ url: `https://${gitzoneData.module.githost}/${gitzoneData.module.gitscope}/${gitzoneData.module.gitrepo}/issues`,
87
+ };
88
+ packageJson.homepage = `https://${gitzoneData.module.githost}/${gitzoneData.module.gitscope}/${gitzoneData.module.gitrepo}#readme`;
89
+ }
90
+ // Ensure module type
91
+ if (!packageJson.type) {
92
+ packageJson.type = 'module';
93
+ }
94
+ // Ensure private field exists
95
+ if (packageJson.private === undefined) {
96
+ packageJson.private = true;
97
+ }
98
+ // Ensure license field exists
99
+ if (!packageJson.license) {
100
+ packageJson.license = 'UNLICENSED';
101
+ }
102
+ // Ensure scripts object exists
103
+ if (!packageJson.scripts) {
104
+ packageJson.scripts = {};
105
+ }
106
+ // Ensure build script exists
107
+ if (!packageJson.scripts.build) {
108
+ packageJson.scripts.build = `echo "Not needed for now"`;
109
+ }
110
+ // Ensure buildDocs script exists
111
+ if (!packageJson.scripts.buildDocs) {
112
+ packageJson.scripts.buildDocs = `tsdoc`;
113
+ }
114
+ // Set files array
115
+ packageJson.files = [
116
+ 'ts/**/*',
117
+ 'ts_web/**/*',
118
+ 'dist/**/*',
119
+ 'dist_*/**/*',
120
+ 'dist_ts/**/*',
121
+ 'dist_ts_web/**/*',
122
+ 'assets/**/*',
123
+ 'cli.js',
124
+ 'npmextra.json',
125
+ 'readme.md',
126
+ ];
127
+ // Handle dependencies
128
+ await ensureDependency(packageJson, 'devDep', 'exclude', '@push.rocks/tapbundle');
129
+ await ensureDependency(packageJson, 'devDep', 'latest', '@git.zone/tstest');
130
+ await ensureDependency(packageJson, 'devDep', 'latest', '@git.zone/tsbuild');
131
+ // Set pnpm overrides from assets
132
+ try {
133
+ const overridesContent = (await plugins.smartfs
134
+ .file(plugins.path.join(paths.assetsDir, 'overrides.json'))
135
+ .encoding('utf8')
136
+ .read());
137
+ const overrides = JSON.parse(overridesContent);
138
+ packageJson.pnpm = packageJson.pnpm || {};
139
+ packageJson.pnpm.overrides = overrides;
140
+ }
141
+ catch (error) {
142
+ logVerbose(`Could not read overrides.json: ${error.message}`);
143
+ }
144
+ const newContent = JSON.stringify(packageJson, null, 2);
145
+ // Only add change if content differs
146
+ if (newContent !== currentContent) {
147
+ changes.push({
148
+ type: 'modify',
149
+ path: packageJsonPath,
150
+ module: this.name,
151
+ description: 'Format package.json',
152
+ content: newContent,
153
+ });
154
+ }
155
+ return changes;
156
+ }
157
+ async applyChange(change) {
158
+ if (change.type !== 'modify' || !change.content)
159
+ return;
160
+ await this.modifyFile(change.path, change.content);
161
+ logger.log('info', 'Updated package.json');
6
162
  }
7
163
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZWpzb24uZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXR0ZXJzL3BhY2thZ2Vqc29uLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxLQUFLLGlCQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBRTlELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxlQUFlO0lBQ3ZELFlBQVksT0FBWSxFQUFFLE9BQVk7UUFDcEMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNGIn0=
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZWpzb24uZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXR0ZXJzL3BhY2thZ2Vqc29uLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxLQUFLLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUQ7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFDNUIsaUJBQXNCLEVBQ3RCLFFBQXlDLEVBQ3pDLFVBQTRDLEVBQzVDLGFBQXFCLEVBQ04sRUFBRTtJQUNqQixNQUFNLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRTlCLE1BQU0sY0FBYyxHQUFhLEVBQUUsQ0FBQztJQUVwQyxRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssS0FBSztZQUNSLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDcEMsTUFBTTtRQUNSLEtBQUssUUFBUTtZQUNYLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN2QyxNQUFNO1FBQ1IsS0FBSyxZQUFZO1lBQ2YsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUN2RCxNQUFNO0lBQ1YsQ0FBQztJQUVE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
@@ -1,9 +1,13 @@
1
1
  import { BaseFormatter } from '../classes.baseformatter.js';
2
- import type { IPlannedChange } from '../interfaces.format.js';
2
+ import type { IPlannedChange, ICheckResult } from '../interfaces.format.js';
3
3
  export declare class PrettierFormatter extends BaseFormatter {
4
4
  get name(): string;
5
5
  analyze(): Promise<IPlannedChange[]>;
6
6
  execute(changes: IPlannedChange[]): Promise<void>;
7
7
  applyChange(change: IPlannedChange): Promise<void>;
8
8
  private getPrettierConfig;
9
+ /**
10
+ * Override check() to compute diffs on-the-fly by running prettier
11
+ */
12
+ check(): Promise<ICheckResult>;
9
13
  }
@@ -205,5 +205,50 @@ export class PrettierFormatter extends BaseFormatter {
205
205
  arrowParens: 'always',
206
206
  });
207
207
  }
208
+ /**
209
+ * Override check() to compute diffs on-the-fly by running prettier
210
+ */
211
+ async check() {
212
+ const changes = await this.analyze();
213
+ const diffs = [];
214
+ for (const change of changes) {
215
+ if (change.type !== 'modify')
216
+ continue;
217
+ try {
218
+ // Read current content
219
+ const currentContent = (await plugins.smartfs
220
+ .file(change.path)
221
+ .encoding('utf8')
222
+ .read());
223
+ // Skip files without extension (prettier can't infer parser)
224
+ const fileExt = plugins.path.extname(change.path).toLowerCase();
225
+ if (!fileExt)
226
+ continue;
227
+ // Format with prettier to get what it would produce
228
+ const prettier = await import('prettier');
229
+ const formatted = await prettier.format(currentContent, {
230
+ filepath: change.path,
231
+ ...(await this.getPrettierConfig()),
232
+ });
233
+ // Only add to diffs if content differs
234
+ if (formatted !== currentContent) {
235
+ diffs.push({
236
+ path: change.path,
237
+ type: 'modify',
238
+ before: currentContent,
239
+ after: formatted,
240
+ });
241
+ }
242
+ }
243
+ catch (error) {
244
+ // Skip files that can't be processed
245
+ logVerbose(`Skipping diff for ${change.path}: ${error.message}`);
246
+ }
247
+ }
248
+ return {
249
+ hasDiff: diffs.length > 0,
250
+ diffs,
251
+ };
252
+ }
208
253
  }
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldHRpZXIuZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXR0ZXJzL3ByZXR0aWVyLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxLQUFLLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhO0lBQ2xELElBQUksSUFBSTtRQUNOLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sT0FBTyxHQUFxQixFQUFFLENBQUM7UUFFckMsbUVBQW1FO1FBQ25FLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFcEQsNEJBQTRCO1FBQzVCLE1BQU0sVUFBVSxHQUFHLG9EQUFvRCxDQUFDO1FBRXhFLHNDQUFzQztRQUN0QyxNQUFNLGVBQWUsR0FBRztZQUN0QixjQUFjO1lBQ2QsZUFBZTtZQUNmLGVBQWU7WUFDZixhQUFhO1lBQ2Isa0JBQWtCO1lBQ2xCLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsV0FBVztZQUNYLGNBQWM7WUFDZCxjQUFjO1lBQ2QsK0RBQStEO1lBQy9ELGFBQWE7WUFDYixhQUFhO1lBQ2IsTUFBTTtTQUNQLENBQUM7UUFFRiw4QkFBOEI7UUFDOUIsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO1FBRTlCLHdDQUF3QztRQUN4QyxLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQztnQkFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLEdBQUcsU0FBUyxVQUFVLEVBQUUs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
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldHRpZXIuZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXR0ZXJzL3ByZXR0aWVyLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxLQUFLLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhO0lBQ2xELElBQUksSUFBSTtRQUNOLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sT0FBTyxHQUFxQixFQUFFLENBQUM7UUFFckMsbUVBQW1FO1FBQ25FLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFcEQsNEJBQTRCO1FBQzVCLE1BQU0sVUFBVSxHQUFHLG9EQUFvRCxDQUFDO1FBRXhFLHNDQUFzQztRQUN0QyxNQUFNLGVBQWUsR0FBRztZQUN0QixjQUFjO1lBQ2QsZUFBZTtZQUNmLGVBQWU7WUFDZixhQUFhO1lBQ2Isa0JBQWtCO1lBQ2xCLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsV0FBVztZQUNYLGNBQWM7WUFDZCxjQUFjO1lBQ2QsK0RBQStEO1lBQy9ELGFBQWE7WUFDYixhQUFhO1lBQ2IsTUFBTTtTQUNQLENBQUM7UUFFRiw4QkFBOEI7UUFDOUIsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO1FBRTlCLHdDQUF3QztRQUN4QyxLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQztnQkFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLEdBQUcsU0FBUyxVQUFVLEVBQUUs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
@@ -1,21 +1,47 @@
1
1
  import { BaseFormatter } from '../classes.baseformatter.js';
2
- import * as formatReadme from '../format.readme.js';
2
+ import * as plugins from '../mod.plugins.js';
3
+ import { logger } from '../../gitzone.logging.js';
4
+ const DEFAULT_README_CONTENT = `# Project Readme
5
+
6
+ This is the initial readme file.`;
7
+ const DEFAULT_README_HINTS_CONTENT = `# Project Readme Hints
8
+
9
+ This is the initial readme hints file.`;
3
10
  export class ReadmeFormatter extends BaseFormatter {
4
11
  get name() {
5
12
  return 'readme';
6
13
  }
7
14
  async analyze() {
8
- return [
9
- {
10
- type: 'modify',
15
+ const changes = [];
16
+ // Check readme.md
17
+ const readmeExists = await plugins.smartfs.file('readme.md').exists();
18
+ if (!readmeExists) {
19
+ changes.push({
20
+ type: 'create',
11
21
  path: 'readme.md',
12
22
  module: this.name,
13
- description: 'Ensure readme files exist',
14
- },
15
- ];
23
+ description: 'Create readme.md',
24
+ content: DEFAULT_README_CONTENT,
25
+ });
26
+ }
27
+ // Check readme.hints.md
28
+ const hintsExists = await plugins.smartfs.file('readme.hints.md').exists();
29
+ if (!hintsExists) {
30
+ changes.push({
31
+ type: 'create',
32
+ path: 'readme.hints.md',
33
+ module: this.name,
34
+ description: 'Create readme.hints.md',
35
+ content: DEFAULT_README_HINTS_CONTENT,
36
+ });
37
+ }
38
+ return changes;
16
39
  }
17
40
  async applyChange(change) {
18
- await formatReadme.run();
41
+ if (change.type !== 'create' || !change.content)
42
+ return;
43
+ await this.createFile(change.path, change.content);
44
+ logger.log('info', `Created ${change.path}`);
19
45
  }
20
46
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG1lLmZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL21vZF9mb3JtYXQvZm9ybWF0dGVycy9yZWFkbWUuZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU1RCxPQUFPLEtBQUssWUFBWSxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQWE7SUFDaEQsSUFBSSxJQUFJO1FBQ04sT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsT0FBTztZQUNMO2dCQUNFLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxXQUFXO2dCQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2pCLFdBQVcsRUFBRSwyQkFBMkI7YUFDekM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBc0I7UUFDdEMsTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNGIn0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG1lLmZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL21vZF9mb3JtYXQvZm9ybWF0dGVycy9yZWFkbWUuZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU1RCxPQUFPLEtBQUssT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVsRCxNQUFNLHNCQUFzQixHQUFHOztpQ0FFRSxDQUFDO0FBRWxDLE1BQU0sNEJBQTRCLEdBQUc7O3VDQUVFLENBQUM7QUFFeEMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsYUFBYTtJQUNoRCxJQUFJLElBQUk7UUFDTixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLE9BQU8sR0FBcUIsRUFBRSxDQUFDO1FBRXJDLGtCQUFrQjtRQUNsQixNQUFNLFlBQVksR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxXQUFXO2dCQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2pCLFdBQVcsRUFBRSxrQkFBa0I7Z0JBQy9CLE9BQU8sRUFBRSxzQkFBc0I7YUFDaEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELHdCQUF3QjtRQUN4QixNQUFNLFdBQVcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0UsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ1gsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNqQixXQUFXLEVBQUUsd0JBQXdCO2dCQUNyQyxPQUFPLEVBQUUsNEJBQTRCO2FBQ3RDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFzQjtRQUN0QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRXhELE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRiJ9
@@ -1,4 +1,8 @@
1
- import { LegacyFormatter } from './legacy.formatter.js';
2
- export declare class TemplatesFormatter extends LegacyFormatter {
3
- constructor(context: any, project: any);
1
+ import { BaseFormatter } from '../classes.baseformatter.js';
2
+ import type { IPlannedChange } from '../interfaces.format.js';
3
+ export declare class TemplatesFormatter extends BaseFormatter {
4
+ get name(): string;
5
+ analyze(): Promise<IPlannedChange[]>;
6
+ private analyzeTemplate;
7
+ applyChange(change: IPlannedChange): Promise<void>;
4
8
  }
@@ -1,8 +1,137 @@
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);
1
+ import { BaseFormatter } from '../classes.baseformatter.js';
2
+ import * as plugins from '../mod.plugins.js';
3
+ import * as paths from '../../paths.js';
4
+ import { logger, logVerbose } from '../../gitzone.logging.js';
5
+ export class TemplatesFormatter extends BaseFormatter {
6
+ get name() {
7
+ return 'templates';
8
+ }
9
+ async analyze() {
10
+ const changes = [];
11
+ const project = this.project;
12
+ const projectType = project.gitzoneConfig?.data?.projectType;
13
+ // VSCode template - for all projects
14
+ const vscodeChanges = await this.analyzeTemplate('vscode', [
15
+ { templatePath: '.vscode/settings.json', destPath: '.vscode/settings.json' },
16
+ { templatePath: '.vscode/launch.json', destPath: '.vscode/launch.json' },
17
+ ]);
18
+ changes.push(...vscodeChanges);
19
+ // CI and other templates based on projectType
20
+ switch (projectType) {
21
+ case 'npm':
22
+ case 'wcc':
23
+ const accessLevel = project.gitzoneConfig?.data?.npmciOptions?.npmAccessLevel;
24
+ const ciTemplate = accessLevel === 'public' ? 'ci_default' : 'ci_default_private';
25
+ const ciChanges = await this.analyzeTemplate(ciTemplate, [
26
+ { templatePath: '.gitea/workflows/default_nottags.yaml', destPath: '.gitea/workflows/default_nottags.yaml' },
27
+ { templatePath: '.gitea/workflows/default_tags.yaml', destPath: '.gitea/workflows/default_tags.yaml' },
28
+ ]);
29
+ changes.push(...ciChanges);
30
+ break;
31
+ case 'service':
32
+ case 'website':
33
+ const dockerCiChanges = await this.analyzeTemplate('ci_docker', [
34
+ { templatePath: '.gitea/workflows/docker_nottags.yaml', destPath: '.gitea/workflows/docker_nottags.yaml' },
35
+ { templatePath: '.gitea/workflows/docker_tags.yaml', destPath: '.gitea/workflows/docker_tags.yaml' },
36
+ ]);
37
+ changes.push(...dockerCiChanges);
38
+ const dockerfileChanges = await this.analyzeTemplate('dockerfile_service', [
39
+ { templatePath: 'Dockerfile', destPath: 'Dockerfile' },
40
+ { templatePath: 'dockerignore', destPath: '.dockerignore' },
41
+ ]);
42
+ changes.push(...dockerfileChanges);
43
+ const cliChanges = await this.analyzeTemplate('cli', [
44
+ { templatePath: 'cli.js', destPath: 'cli.js' },
45
+ { templatePath: 'cli.ts.js', destPath: 'cli.ts.js' },
46
+ ]);
47
+ changes.push(...cliChanges);
48
+ break;
49
+ }
50
+ // Update templates based on projectType
51
+ if (projectType === 'website') {
52
+ const websiteChanges = await this.analyzeTemplate('website_update', [
53
+ { templatePath: 'html/index.html', destPath: 'html/index.html' },
54
+ ]);
55
+ changes.push(...websiteChanges);
56
+ }
57
+ else if (projectType === 'service') {
58
+ const serviceChanges = await this.analyzeTemplate('service_update', []);
59
+ changes.push(...serviceChanges);
60
+ }
61
+ else if (projectType === 'wcc') {
62
+ const wccChanges = await this.analyzeTemplate('wcc_update', [
63
+ { templatePath: 'html/index.html', destPath: 'html/index.html' },
64
+ { templatePath: 'html/index.ts', destPath: 'html/index.ts' },
65
+ ]);
66
+ changes.push(...wccChanges);
67
+ }
68
+ return changes;
69
+ }
70
+ async analyzeTemplate(templateName, files) {
71
+ const changes = [];
72
+ const templateDir = plugins.path.join(paths.templatesDir, templateName);
73
+ // Check if template exists
74
+ const templateExists = await plugins.smartfs.directory(templateDir).exists();
75
+ if (!templateExists) {
76
+ logVerbose(`Template ${templateName} not found`);
77
+ return changes;
78
+ }
79
+ for (const file of files) {
80
+ const templateFilePath = plugins.path.join(templateDir, file.templatePath);
81
+ const destFilePath = file.destPath;
82
+ // Check if template file exists
83
+ const fileExists = await plugins.smartfs.file(templateFilePath).exists();
84
+ if (!fileExists) {
85
+ logVerbose(`Template file ${templateFilePath} not found`);
86
+ continue;
87
+ }
88
+ try {
89
+ // Read template content
90
+ const templateContent = (await plugins.smartfs
91
+ .file(templateFilePath)
92
+ .encoding('utf8')
93
+ .read());
94
+ // Check if destination file exists
95
+ const destExists = await plugins.smartfs.file(destFilePath).exists();
96
+ let currentContent = '';
97
+ if (destExists) {
98
+ currentContent = (await plugins.smartfs
99
+ .file(destFilePath)
100
+ .encoding('utf8')
101
+ .read());
102
+ }
103
+ // Only add change if content differs
104
+ if (templateContent !== currentContent) {
105
+ changes.push({
106
+ type: destExists ? 'modify' : 'create',
107
+ path: destFilePath,
108
+ module: this.name,
109
+ description: `Apply template ${templateName}/${file.templatePath}`,
110
+ content: templateContent,
111
+ });
112
+ }
113
+ }
114
+ catch (error) {
115
+ logVerbose(`Failed to read template ${templateFilePath}: ${error.message}`);
116
+ }
117
+ }
118
+ return changes;
119
+ }
120
+ async applyChange(change) {
121
+ if (!change.content)
122
+ return;
123
+ // Ensure destination directory exists
124
+ const destDir = plugins.path.dirname(change.path);
125
+ if (destDir && destDir !== '.') {
126
+ await plugins.smartfs.directory(destDir).recursive().create();
127
+ }
128
+ if (change.type === 'create') {
129
+ await this.createFile(change.path, change.content);
130
+ }
131
+ else {
132
+ await this.modifyFile(change.path, change.content);
133
+ }
134
+ logger.log('info', `Applied template to ${change.path}`);
6
135
  }
7
136
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL21vZF9mb3JtYXQvZm9ybWF0dGVycy90ZW1wbGF0ZXMuZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEtBQUssZUFBZSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxlQUFlO0lBQ3JELFlBQVksT0FBWSxFQUFFLE9BQVk7UUFDcEMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7Q0FDRiJ9
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL21vZF9mb3JtYXQvZm9ybWF0dGVycy90ZW1wbGF0ZXMuZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU1RCxPQUFPLEtBQUssT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5RCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsYUFBYTtJQUNuRCxJQUFJLElBQUk7UUFDTixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLE9BQU8sR0FBcUIsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDO1FBRTdELHFDQUFxQztRQUNyQyxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFO1lBQ3pELEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRTtZQUM1RSxFQUFFLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUU7U0FDekUsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDO1FBRS9CLDhDQUE4QztRQUM5QyxRQUFRLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxLQUFLO2dCQUNSLE1BQU0sV0FBVyxHQUFHLE9BQU8s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LENBQUMsQ0FBQztRQUNsRCxJQUFJLE9BQU8sSUFBSSxPQUFPLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDL0IsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoRSxDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsdUJBQXVCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRiJ9
@@ -1,4 +1,7 @@
1
- import { LegacyFormatter } from './legacy.formatter.js';
2
- export declare class TsconfigFormatter extends LegacyFormatter {
3
- constructor(context: any, project: any);
1
+ import { BaseFormatter } from '../classes.baseformatter.js';
2
+ import type { IPlannedChange } from '../interfaces.format.js';
3
+ export declare class TsconfigFormatter extends BaseFormatter {
4
+ get name(): string;
5
+ analyze(): Promise<IPlannedChange[]>;
6
+ applyChange(change: IPlannedChange): Promise<void>;
4
7
  }
@@ -1,8 +1,63 @@
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);
1
+ import { BaseFormatter } from '../classes.baseformatter.js';
2
+ import * as plugins from '../mod.plugins.js';
3
+ import * as paths from '../../paths.js';
4
+ import { logger, logVerbose } from '../../gitzone.logging.js';
5
+ export class TsconfigFormatter extends BaseFormatter {
6
+ get name() {
7
+ return 'tsconfig';
8
+ }
9
+ async analyze() {
10
+ const changes = [];
11
+ const tsconfigPath = 'tsconfig.json';
12
+ // Check if file exists
13
+ const exists = await plugins.smartfs.file(tsconfigPath).exists();
14
+ if (!exists) {
15
+ logVerbose('tsconfig.json does not exist, skipping');
16
+ return changes;
17
+ }
18
+ // Read current content
19
+ const currentContent = (await plugins.smartfs
20
+ .file(tsconfigPath)
21
+ .encoding('utf8')
22
+ .read());
23
+ // Parse and compute new content
24
+ const tsconfigObject = JSON.parse(currentContent);
25
+ tsconfigObject.compilerOptions = tsconfigObject.compilerOptions || {};
26
+ tsconfigObject.compilerOptions.baseUrl = '.';
27
+ tsconfigObject.compilerOptions.paths = {};
28
+ // Get module paths from tspublish
29
+ try {
30
+ const tsPublishMod = await import('@git.zone/tspublish');
31
+ const tsPublishInstance = new tsPublishMod.TsPublish();
32
+ const publishModules = await tsPublishInstance.getModuleSubDirs(paths.cwd);
33
+ for (const publishModule of Object.keys(publishModules)) {
34
+ const publishConfig = publishModules[publishModule];
35
+ tsconfigObject.compilerOptions.paths[`${publishConfig.name}`] = [
36
+ `./${publishModule}/index.js`,
37
+ ];
38
+ }
39
+ }
40
+ catch (error) {
41
+ logVerbose(`Could not get tspublish modules: ${error.message}`);
42
+ }
43
+ const newContent = JSON.stringify(tsconfigObject, null, 2);
44
+ // Only add change if content differs
45
+ if (newContent !== currentContent) {
46
+ changes.push({
47
+ type: 'modify',
48
+ path: tsconfigPath,
49
+ module: this.name,
50
+ description: 'Format tsconfig.json with path mappings',
51
+ content: newContent,
52
+ });
53
+ }
54
+ return changes;
55
+ }
56
+ async applyChange(change) {
57
+ if (change.type !== 'modify' || !change.content)
58
+ return;
59
+ await this.modifyFile(change.path, change.content);
60
+ logger.log('info', 'Updated tsconfig.json');
6
61
  }
7
62
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNjb25maWcuZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXR0ZXJzL3RzY29uZmlnLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxLQUFLLGNBQWMsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQUNwRCxZQUFZLE9BQVksRUFBRSxPQUFZO1FBQ3BDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0YifQ==
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNjb25maWcuZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXR0ZXJzL3RzY29uZmlnLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxLQUFLLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGFBQWE7SUFDbEQsSUFBSSxJQUFJO1FBQ04sT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxPQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUM7UUFFckMsdUJBQXVCO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osVUFBVSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFDckQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQU0sT0FBTyxDQUFDLE9BQU87YUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQzthQUNsQixRQUFRLENBQUMsTUFBTSxDQUFDO2FBQ2hCLElBQUksRUFBRSxDQUFXLENBQUM7UUFFckIsZ0NBQWdDO1FBQ2hDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEQsY0FBYyxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztRQUN0RSxjQUFjLENBQUMsZUFBZSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDN0MsY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRTFDLGtDQUFrQztRQUNsQyxJQUFJLENBQUM7WUFDSCxNQUFNLFlBQVksR0FBRyxNQUFNLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdkQsTUFBTSxjQUFjLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFM0UsS0FBSyxNQUFNLGFBQWEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDcEQsY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRztvQkFDOUQsS0FBSyxhQUFhLFdBQVc7aUJBQzlCLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixVQUFVLENBQUMsb0NBQW9DLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFM0QscUNBQXFDO1FBQ3JDLElBQUksVUFBVSxLQUFLLGNBQWMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ1gsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDakIsV0FBVyxFQUFFLHlDQUF5QztnQkFDdEQsT0FBTyxFQUFFLFVBQVU7YUFDcEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQXNCO1FBQ3RDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUFFLE9BQU87UUFFeEQsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGIn0=