@git.zone/cli 2.18.1 → 2.19.1

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 (41) hide show
  1. package/.smartconfig.json +2 -1
  2. package/dist_ts/00_commitinfo_data.js +1 -1
  3. package/dist_ts/gitzone.cli.d.ts +1 -1
  4. package/dist_ts/gitzone.cli.js +100 -126
  5. package/dist_ts/helpers.climode.d.ts +2 -0
  6. package/dist_ts/helpers.climode.js +31 -2
  7. package/dist_ts/helpers.smartconfigmigrations.js +53 -4
  8. package/dist_ts/helpers.workflow.d.ts +12 -2
  9. package/dist_ts/helpers.workflow.js +9 -2
  10. package/dist_ts/mod_config/index.js +254 -29
  11. package/dist_ts/mod_format/classes.baseformatter.d.ts +3 -1
  12. package/dist_ts/mod_format/classes.baseformatter.js +7 -1
  13. package/dist_ts/mod_format/classes.formatplanner.d.ts +2 -0
  14. package/dist_ts/mod_format/classes.formatplanner.js +48 -4
  15. package/dist_ts/mod_format/formatters/license.formatter.d.ts +4 -1
  16. package/dist_ts/mod_format/formatters/license.formatter.js +32 -10
  17. package/dist_ts/mod_format/formatters/prettier.formatter.d.ts +0 -3
  18. package/dist_ts/mod_format/formatters/prettier.formatter.js +53 -62
  19. package/dist_ts/mod_format/index.d.ts +1 -1
  20. package/dist_ts/mod_format/index.js +237 -8
  21. package/dist_ts/mod_format/interfaces.format.d.ts +7 -11
  22. package/dist_ts/mod_format/interfaces.format.js +1 -1
  23. package/dist_ts/mod_release/index.js +50 -23
  24. package/dist_ts/mod_standard/index.js +2 -1
  25. package/package.json +1 -1
  26. package/readme.hints.md +10 -0
  27. package/readme.md +31 -4
  28. package/ts/00_commitinfo_data.ts +1 -1
  29. package/ts/gitzone.cli.ts +104 -144
  30. package/ts/helpers.climode.ts +36 -1
  31. package/ts/helpers.smartconfigmigrations.ts +57 -3
  32. package/ts/helpers.workflow.ts +20 -3
  33. package/ts/mod_config/index.ts +278 -29
  34. package/ts/mod_format/classes.baseformatter.ts +13 -1
  35. package/ts/mod_format/classes.formatplanner.ts +66 -4
  36. package/ts/mod_format/formatters/license.formatter.ts +43 -15
  37. package/ts/mod_format/formatters/prettier.formatter.ts +54 -66
  38. package/ts/mod_format/index.ts +289 -8
  39. package/ts/mod_format/interfaces.format.ts +8 -11
  40. package/ts/mod_release/index.ts +46 -23
  41. package/ts/mod_standard/index.ts +1 -0
@@ -77,17 +77,47 @@ const getFormatConfig = async () => {
77
77
  ...rawFormatConfig,
78
78
  };
79
79
  };
80
+ const normalizeModuleList = (value) => {
81
+ if (Array.isArray(value)) {
82
+ return value.flatMap((item) => normalizeModuleList(item));
83
+ }
84
+ if (typeof value !== "string") {
85
+ return [];
86
+ }
87
+ return value
88
+ .split(",")
89
+ .map((item) => item.trim())
90
+ .filter(Boolean);
91
+ };
92
+ const getPlanStatus = (plan) => {
93
+ const errorWarnings = plan.warnings.filter((warning) => warning.level === "error");
94
+ const hasChanges = plan.summary.totalFiles > 0;
95
+ const hasErrors = errorWarnings.length > 0;
96
+ return {
97
+ ok: !hasChanges && !hasErrors,
98
+ hasChanges,
99
+ hasErrors,
100
+ errorCount: errorWarnings.length,
101
+ };
102
+ };
80
103
  const createActiveFormatters = async (options) => {
81
104
  const project = await Project.fromCwd({ requireProjectType: false });
82
105
  const context = new FormatContext(options);
83
106
  const planner = new FormatPlanner();
84
107
  const formatConfig = await getFormatConfig();
85
108
  const formatters = Object.entries(formatterMap).map(([, FormatterClass]) => new FormatterClass(context, project));
109
+ const onlyModules = options.only?.length
110
+ ? options.only
111
+ : formatConfig.modules.only;
112
+ const skipModules = [
113
+ ...formatConfig.modules.skip,
114
+ ...(options.skip || []),
115
+ ];
86
116
  const activeFormatters = formatters.filter((formatter) => {
87
- if (formatConfig.modules.only.length > 0) {
88
- return formatConfig.modules.only.includes(formatter.name);
117
+ if (onlyModules.length > 0) {
118
+ return onlyModules.includes(formatter.name);
89
119
  }
90
- if (formatConfig.modules.skip.includes(formatter.name)) {
120
+ if (skipModules.includes(formatter.name)) {
91
121
  return false;
92
122
  }
93
123
  return true;
@@ -103,6 +133,8 @@ const buildFormatPlan = async (options) => {
103
133
  const { context, planner, formatConfig, activeFormatters } = await createActiveFormatters({
104
134
  interactive: options.interactive,
105
135
  jsonOutput: options.jsonOutput,
136
+ only: options.only,
137
+ skip: options.skip,
106
138
  });
107
139
  const plan = options.fromPlan
108
140
  ? JSON.parse((await plugins.smartfs
@@ -130,6 +162,144 @@ const serializePlan = (plan) => {
130
162
  })),
131
163
  };
132
164
  };
165
+ const buildFormatFixPrompt = (plan, extraInstructions) => {
166
+ const promptParts = [
167
+ "Other /c-* commands can be found at ~/.config/opencode/commands/*",
168
+ "# gitzone format fix",
169
+ "",
170
+ `Working directory: ${process.cwd()}`,
171
+ "",
172
+ "Repair project formatting so `gitzone format check --json` passes.",
173
+ "",
174
+ "Rules:",
175
+ "- Read `.smartconfig.json`, `package.json`, `tsconfig.json`, and the current format plan before editing.",
176
+ "- Prefer deterministic gitzone standards, bundled assets, and existing project conventions.",
177
+ "- Keep changes focused on formatting, metadata normalization, templates, and config consistency.",
178
+ "- Do not commit, release, install dependencies, or modify unrelated files.",
179
+ "- Use pnpm commands only if commands are needed.",
180
+ "- Run `gitzone format --write --yes` after changes.",
181
+ "- Run `gitzone format check --json` after changes and keep fixing until it passes.",
182
+ "- Run `git diff --check` after changes to catch whitespace problems.",
183
+ "",
184
+ "Current format plan:",
185
+ JSON.stringify(serializePlan(plan), null, 2),
186
+ ];
187
+ if (extraInstructions) {
188
+ promptParts.push("", "Additional user instructions:", extraInstructions);
189
+ }
190
+ return promptParts.join("\n");
191
+ };
192
+ const handleFormatFix = async (options, mode) => {
193
+ if (mode.json) {
194
+ printJson({
195
+ ok: false,
196
+ error: "JSON output is not supported for `gitzone format fix`. Use `gitzone format check --json` for machine-readable diagnostics.",
197
+ });
198
+ process.exitCode = 1;
199
+ return;
200
+ }
201
+ const extraInstructions = (options._?.slice(2).join(" ") || "").trim();
202
+ const force = Boolean(options.force);
203
+ const autoApprove = Boolean(options.yes || mode.yes);
204
+ const formatConfig = await getFormatConfig();
205
+ const interactive = options.interactive ?? (mode.interactive && formatConfig.interactive);
206
+ const only = normalizeModuleList(options.only);
207
+ const skip = normalizeModuleList(options.skip);
208
+ const buildCurrentPlan = async () => {
209
+ return await buildFormatPlan({
210
+ interactive,
211
+ jsonOutput: false,
212
+ only,
213
+ skip,
214
+ });
215
+ };
216
+ logger.log("info", "Analyzing project for format fixes...");
217
+ let { plan } = await buildCurrentPlan();
218
+ let status = getPlanStatus(plan);
219
+ if (status.ok && !extraInstructions && !force) {
220
+ logger.log("success", "Format check found no issues. Use `gitzone format fix --force` to run opencode anyway.");
221
+ return;
222
+ }
223
+ if (!autoApprove) {
224
+ if (!mode.interactive) {
225
+ throw new Error("Format fix requires an interactive terminal or `-y` to run non-interactively.");
226
+ }
227
+ const confirmed = await plugins.smartinteract.SmartInteract.getCliConfirmation(`Run format fixes? (${plan.summary.totalFiles} planned change(s), ${status.errorCount} error warning(s))`, true);
228
+ if (!confirmed) {
229
+ logger.log("info", "Format fix cancelled.");
230
+ return;
231
+ }
232
+ }
233
+ if (status.hasChanges) {
234
+ logger.log("info", "Applying deterministic format changes first...");
235
+ await run({
236
+ _: ["format"],
237
+ write: true,
238
+ yes: true,
239
+ interactive: false,
240
+ verbose: options.verbose,
241
+ detailed: options.detailed,
242
+ only: options.only,
243
+ skip: options.skip,
244
+ });
245
+ ({ plan } = await buildCurrentPlan());
246
+ status = getPlanStatus(plan);
247
+ if (status.ok && !extraInstructions && !force) {
248
+ logger.log("success", "Format fix completed successfully.");
249
+ return;
250
+ }
251
+ }
252
+ const opencodeArgs = [
253
+ "run",
254
+ "--title",
255
+ "gitzone format fix",
256
+ "--dir",
257
+ process.cwd(),
258
+ ];
259
+ if (autoApprove) {
260
+ opencodeArgs.push("--dangerously-skip-permissions");
261
+ }
262
+ opencodeArgs.push(buildFormatFixPrompt(plan, extraInstructions));
263
+ logger.log("info", "Starting opencode format fix...");
264
+ const smartshellInstance = new plugins.smartshell.Smartshell({
265
+ executor: "bash",
266
+ sourceFilePaths: [],
267
+ });
268
+ let result;
269
+ try {
270
+ result = await smartshellInstance.execSpawn("opencode", opencodeArgs, {
271
+ stdio: "inherit",
272
+ });
273
+ }
274
+ catch (error) {
275
+ throw new Error(`Failed to run opencode: ${error instanceof Error ? error.message : String(error)}`);
276
+ }
277
+ if (result.exitCode !== 0) {
278
+ logger.log("error", `opencode exited with code ${result.exitCode}`);
279
+ process.exitCode = result.exitCode || 1;
280
+ return;
281
+ }
282
+ logger.log("info", "Running deterministic format pass after opencode...");
283
+ await run({
284
+ _: ["format"],
285
+ write: true,
286
+ yes: true,
287
+ interactive: false,
288
+ verbose: options.verbose,
289
+ detailed: options.detailed,
290
+ only: options.only,
291
+ skip: options.skip,
292
+ });
293
+ const { planner: finalPlanner, plan: finalPlan } = await buildCurrentPlan();
294
+ await finalPlanner.displayPlan(finalPlan, options.detailed);
295
+ const finalStatus = getPlanStatus(finalPlan);
296
+ if (finalStatus.ok) {
297
+ logger.log("success", "Format fix completed successfully.");
298
+ return;
299
+ }
300
+ logger.log("error", `Format fix left ${finalPlan.summary.totalFiles} planned change(s) and ${finalStatus.errorCount} error warning(s).`);
301
+ process.exitCode = 1;
302
+ };
133
303
  export let run = async (options = {}) => {
134
304
  const mode = await getCliMode(options);
135
305
  const subcommand = options?._?.[1];
@@ -140,8 +310,24 @@ export let run = async (options = {}) => {
140
310
  if (options.verbose) {
141
311
  setVerboseMode(true);
142
312
  }
313
+ if (subcommand === "fix") {
314
+ await handleFormatFix(options, mode);
315
+ return;
316
+ }
143
317
  const shouldWrite = options.write ?? options.dryRun === false;
144
318
  const treatAsPlan = subcommand === "plan";
319
+ const treatAsCheck = subcommand === "check" || Boolean(options.check);
320
+ if (treatAsCheck && shouldWrite) {
321
+ const error = "`gitzone format check` is read-only and cannot be combined with --write.";
322
+ if (mode.json) {
323
+ printJson({ ok: false, error });
324
+ }
325
+ else {
326
+ logger.log("error", error);
327
+ }
328
+ process.exitCode = 1;
329
+ return;
330
+ }
145
331
  if (mode.json && shouldWrite) {
146
332
  printJson({
147
333
  ok: false,
@@ -153,13 +339,17 @@ export let run = async (options = {}) => {
153
339
  await migrateConfigFile(shouldWrite);
154
340
  const formatConfig = await getFormatConfig();
155
341
  const interactive = options.interactive ?? (mode.interactive && formatConfig.interactive);
156
- const autoApprove = options.yes ?? formatConfig.autoApprove;
342
+ const autoApprove = options.yes ?? (mode.yes || formatConfig.autoApprove);
343
+ const only = normalizeModuleList(options.only);
344
+ const skip = normalizeModuleList(options.skip);
157
345
  try {
158
346
  const planBuilder = async () => {
159
347
  return await buildFormatPlan({
160
348
  fromPlan: options.fromPlan,
161
349
  interactive,
162
350
  jsonOutput: mode.json,
351
+ only,
352
+ skip,
163
353
  });
164
354
  };
165
355
  if (!mode.json) {
@@ -169,7 +359,16 @@ export let run = async (options = {}) => {
169
359
  ? await runWithSuppressedOutput(planBuilder)
170
360
  : await planBuilder();
171
361
  if (mode.json) {
172
- printJson(serializePlan(plan));
362
+ const serializedPlan = serializePlan(plan);
363
+ if (treatAsCheck) {
364
+ const status = getPlanStatus(plan);
365
+ printJson({ ok: status.ok, ...serializedPlan });
366
+ if (!status.ok) {
367
+ process.exitCode = 1;
368
+ }
369
+ return;
370
+ }
371
+ printJson(serializedPlan);
173
372
  return;
174
373
  }
175
374
  // Display plan
@@ -185,6 +384,17 @@ export let run = async (options = {}) => {
185
384
  if (options.planOnly || treatAsPlan) {
186
385
  return;
187
386
  }
387
+ if (treatAsCheck) {
388
+ const status = getPlanStatus(plan);
389
+ if (status.ok) {
390
+ logger.log("success", "Format check passed");
391
+ }
392
+ else {
393
+ logger.log("error", `Format check failed: ${plan.summary.totalFiles} planned change(s), ${status.errorCount} error warning(s)`);
394
+ process.exitCode = 1;
395
+ }
396
+ return;
397
+ }
188
398
  // Show diffs if explicitly requested or before interactive write confirmation
189
399
  const showDiffs = options.diff || (shouldWrite && interactive && !autoApprove);
190
400
  if (showDiffs) {
@@ -269,7 +479,7 @@ export function showHelp(mode) {
269
479
  if (mode?.json) {
270
480
  printJson({
271
481
  command: "format",
272
- usage: "gitzone format [plan] [options]",
482
+ usage: "gitzone format [plan|check|fix] [options]",
273
483
  description: "Plans formatting changes by default and applies them only with --write.",
274
484
  flags: [
275
485
  { flag: "--write, -w", description: "Apply planned changes" },
@@ -298,18 +508,32 @@ export function showHelp(mode) {
298
508
  flag: "--diff",
299
509
  description: "Show per-file diffs before applying changes",
300
510
  },
511
+ {
512
+ flag: "--only <modules>",
513
+ description: "Run only the comma-separated formatter modules",
514
+ },
515
+ {
516
+ flag: "--skip <modules>",
517
+ description: "Skip the comma-separated formatter modules",
518
+ },
519
+ {
520
+ flag: "--force",
521
+ description: "Run `format fix` even when the deterministic plan is clean",
522
+ },
301
523
  { flag: "--json", description: "Emit a read-only format plan as JSON" },
302
524
  ],
303
525
  examples: [
304
526
  "gitzone format",
305
527
  "gitzone format plan --json",
528
+ "gitzone format check",
306
529
  "gitzone format --write --yes",
530
+ "gitzone format fix",
307
531
  ],
308
532
  });
309
533
  return;
310
534
  }
311
535
  console.log("");
312
- console.log("Usage: gitzone format [plan] [options]");
536
+ console.log("Usage: gitzone format [plan|check|fix] [options]");
313
537
  console.log("");
314
538
  console.log("Plans formatting changes by default and applies them only with --write.");
315
539
  console.log("");
@@ -322,12 +546,17 @@ export function showHelp(mode) {
322
546
  console.log(" --detailed Show detailed diffs and save stats");
323
547
  console.log(" --verbose Enable verbose logging");
324
548
  console.log(" --diff Show per-file diffs before applying changes");
549
+ console.log(" --only <modules> Run only comma-separated formatter modules");
550
+ console.log(" --skip <modules> Skip comma-separated formatter modules");
551
+ console.log(" --force Run format fix even when the plan is clean");
325
552
  console.log(" --json Emit a read-only format plan as JSON");
326
553
  console.log("");
327
554
  console.log("Examples:");
328
555
  console.log(" gitzone format");
329
556
  console.log(" gitzone format plan --json");
557
+ console.log(" gitzone format check");
330
558
  console.log(" gitzone format --write --yes");
559
+ console.log(" gitzone format fix");
331
560
  console.log("");
332
561
  }
333
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfZm9ybWF0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFL0QsT0FBTyxFQUNMLFVBQVUsRUFDVixTQUFTLEVBQ1QsdUJBQXVCLEdBQ3hCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8s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
562
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfZm9ybWF0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFL0QsT0FBTyxFQUNMLFVBQVUsRUFDVixTQUFTLEVBQ1QsdUJBQXVCLEdBQ3hCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8s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
@@ -1,3 +1,8 @@
1
+ export type IFormatWarning = {
2
+ level: 'info' | 'warning' | 'error';
3
+ message: string;
4
+ module: string;
5
+ };
1
6
  export type IFormatPlan = {
2
7
  summary: {
3
8
  totalFiles: number;
@@ -5,17 +10,8 @@ export type IFormatPlan = {
5
10
  filesModified: number;
6
11
  filesRemoved: number;
7
12
  };
8
- changes: Array<{
9
- type: 'create' | 'modify' | 'delete';
10
- path: string;
11
- module: string;
12
- description: string;
13
- }>;
14
- warnings: Array<{
15
- level: 'info' | 'warning' | 'error';
16
- message: string;
17
- module: string;
18
- }>;
13
+ changes: IPlannedChange[];
14
+ warnings: IFormatWarning[];
19
15
  };
20
16
  export type IPlannedChange = {
21
17
  type: 'create' | 'modify' | 'delete';
@@ -13,4 +13,4 @@ export function getModuleIcon(module) {
13
13
  };
14
14
  return icons[module] || '📁';
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5mb3JtYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfZm9ybWF0L2ludGVyZmFjZXMuZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNDQSxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQWM7SUFDMUMsTUFBTSxLQUFLLEdBQTJCO1FBQ3BDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsUUFBUSxFQUFFLElBQUk7UUFDZCxPQUFPLEVBQUUsSUFBSTtRQUNiLFNBQVMsRUFBRSxJQUFJO1FBQ2YsUUFBUSxFQUFFLEdBQUc7UUFDYixNQUFNLEVBQUUsSUFBSTtRQUNaLFNBQVMsRUFBRSxJQUFJO1FBQ2YsV0FBVyxFQUFFLElBQUk7UUFDakIsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDO0lBQ0YsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDO0FBQy9CLENBQUMifQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5mb3JtYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfZm9ybWF0L2ludGVyZmFjZXMuZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1DQSxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQWM7SUFDMUMsTUFBTSxLQUFLLEdBQTJCO1FBQ3BDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsUUFBUSxFQUFFLElBQUk7UUFDZCxPQUFPLEVBQUUsSUFBSTtRQUNiLFNBQVMsRUFBRSxJQUFJO1FBQ2YsUUFBUSxFQUFFLEdBQUc7UUFDYixNQUFNLEVBQUUsSUFBSTtRQUNaLFNBQVMsRUFBRSxJQUFJO1FBQ2YsV0FBVyxFQUFFLElBQUk7UUFDakIsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDO0lBQ0YsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDO0FBQy9CLENBQUMifQ==