gitgrip 0.2.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 (132) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +211 -0
  3. package/actions/cross-repo-sync/action.yml +55 -0
  4. package/assets/banner.svg +73 -0
  5. package/assets/icon.svg +30 -0
  6. package/assets/logo-dark.svg +36 -0
  7. package/assets/logo.svg +36 -0
  8. package/dist/commands/add.d.ts +9 -0
  9. package/dist/commands/add.d.ts.map +1 -0
  10. package/dist/commands/add.js +80 -0
  11. package/dist/commands/add.js.map +1 -0
  12. package/dist/commands/bench.d.ts +12 -0
  13. package/dist/commands/bench.d.ts.map +1 -0
  14. package/dist/commands/bench.js +136 -0
  15. package/dist/commands/bench.js.map +1 -0
  16. package/dist/commands/branch.d.ts +15 -0
  17. package/dist/commands/branch.d.ts.map +1 -0
  18. package/dist/commands/branch.js +159 -0
  19. package/dist/commands/branch.js.map +1 -0
  20. package/dist/commands/checkout.d.ts +10 -0
  21. package/dist/commands/checkout.d.ts.map +1 -0
  22. package/dist/commands/checkout.js +85 -0
  23. package/dist/commands/checkout.js.map +1 -0
  24. package/dist/commands/commit.d.ts +10 -0
  25. package/dist/commands/commit.d.ts.map +1 -0
  26. package/dist/commands/commit.js +94 -0
  27. package/dist/commands/commit.js.map +1 -0
  28. package/dist/commands/diff.d.ts +11 -0
  29. package/dist/commands/diff.d.ts.map +1 -0
  30. package/dist/commands/diff.js +105 -0
  31. package/dist/commands/diff.js.map +1 -0
  32. package/dist/commands/env.d.ts +8 -0
  33. package/dist/commands/env.d.ts.map +1 -0
  34. package/dist/commands/env.js +35 -0
  35. package/dist/commands/env.js.map +1 -0
  36. package/dist/commands/forall.d.ts +13 -0
  37. package/dist/commands/forall.d.ts.map +1 -0
  38. package/dist/commands/forall.js +116 -0
  39. package/dist/commands/forall.js.map +1 -0
  40. package/dist/commands/init.d.ts +15 -0
  41. package/dist/commands/init.d.ts.map +1 -0
  42. package/dist/commands/init.js +106 -0
  43. package/dist/commands/init.js.map +1 -0
  44. package/dist/commands/link.d.ts +11 -0
  45. package/dist/commands/link.d.ts.map +1 -0
  46. package/dist/commands/link.js +205 -0
  47. package/dist/commands/link.js.map +1 -0
  48. package/dist/commands/migrate.d.ts +17 -0
  49. package/dist/commands/migrate.d.ts.map +1 -0
  50. package/dist/commands/migrate.js +180 -0
  51. package/dist/commands/migrate.js.map +1 -0
  52. package/dist/commands/pr/create.d.ts +13 -0
  53. package/dist/commands/pr/create.d.ts.map +1 -0
  54. package/dist/commands/pr/create.js +202 -0
  55. package/dist/commands/pr/create.js.map +1 -0
  56. package/dist/commands/pr/index.d.ts +4 -0
  57. package/dist/commands/pr/index.d.ts.map +1 -0
  58. package/dist/commands/pr/index.js +4 -0
  59. package/dist/commands/pr/index.js.map +1 -0
  60. package/dist/commands/pr/merge.d.ts +11 -0
  61. package/dist/commands/pr/merge.d.ts.map +1 -0
  62. package/dist/commands/pr/merge.js +168 -0
  63. package/dist/commands/pr/merge.js.map +1 -0
  64. package/dist/commands/pr/status.d.ts +9 -0
  65. package/dist/commands/pr/status.d.ts.map +1 -0
  66. package/dist/commands/pr/status.js +139 -0
  67. package/dist/commands/pr/status.js.map +1 -0
  68. package/dist/commands/push.d.ts +10 -0
  69. package/dist/commands/push.d.ts.map +1 -0
  70. package/dist/commands/push.js +101 -0
  71. package/dist/commands/push.js.map +1 -0
  72. package/dist/commands/run.d.ts +8 -0
  73. package/dist/commands/run.d.ts.map +1 -0
  74. package/dist/commands/run.js +75 -0
  75. package/dist/commands/run.js.map +1 -0
  76. package/dist/commands/status.d.ts +9 -0
  77. package/dist/commands/status.d.ts.map +1 -0
  78. package/dist/commands/status.js +201 -0
  79. package/dist/commands/status.js.map +1 -0
  80. package/dist/commands/sync.d.ts +13 -0
  81. package/dist/commands/sync.d.ts.map +1 -0
  82. package/dist/commands/sync.js +183 -0
  83. package/dist/commands/sync.js.map +1 -0
  84. package/dist/index.d.ts +3 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.js +352 -0
  87. package/dist/index.js.map +1 -0
  88. package/dist/lib/__bench__/files.bench.d.ts +2 -0
  89. package/dist/lib/__bench__/files.bench.d.ts.map +1 -0
  90. package/dist/lib/__bench__/files.bench.js +52 -0
  91. package/dist/lib/__bench__/files.bench.js.map +1 -0
  92. package/dist/lib/__bench__/manifest.bench.d.ts +2 -0
  93. package/dist/lib/__bench__/manifest.bench.d.ts.map +1 -0
  94. package/dist/lib/__bench__/manifest.bench.js +74 -0
  95. package/dist/lib/__bench__/manifest.bench.js.map +1 -0
  96. package/dist/lib/files.d.ts +84 -0
  97. package/dist/lib/files.d.ts.map +1 -0
  98. package/dist/lib/files.js +492 -0
  99. package/dist/lib/files.js.map +1 -0
  100. package/dist/lib/git.d.ts +125 -0
  101. package/dist/lib/git.d.ts.map +1 -0
  102. package/dist/lib/git.js +370 -0
  103. package/dist/lib/git.js.map +1 -0
  104. package/dist/lib/github.d.ts +92 -0
  105. package/dist/lib/github.d.ts.map +1 -0
  106. package/dist/lib/github.js +284 -0
  107. package/dist/lib/github.js.map +1 -0
  108. package/dist/lib/hooks.d.ts +19 -0
  109. package/dist/lib/hooks.d.ts.map +1 -0
  110. package/dist/lib/hooks.js +63 -0
  111. package/dist/lib/hooks.js.map +1 -0
  112. package/dist/lib/linker.d.ts +56 -0
  113. package/dist/lib/linker.d.ts.map +1 -0
  114. package/dist/lib/linker.js +185 -0
  115. package/dist/lib/linker.js.map +1 -0
  116. package/dist/lib/manifest.d.ts +73 -0
  117. package/dist/lib/manifest.d.ts.map +1 -0
  118. package/dist/lib/manifest.js +400 -0
  119. package/dist/lib/manifest.js.map +1 -0
  120. package/dist/lib/scripts.d.ts +26 -0
  121. package/dist/lib/scripts.d.ts.map +1 -0
  122. package/dist/lib/scripts.js +123 -0
  123. package/dist/lib/scripts.js.map +1 -0
  124. package/dist/lib/timing.d.ts +100 -0
  125. package/dist/lib/timing.d.ts.map +1 -0
  126. package/dist/lib/timing.js +293 -0
  127. package/dist/lib/timing.js.map +1 -0
  128. package/dist/types.d.ts +312 -0
  129. package/dist/types.d.ts.map +1 -0
  130. package/dist/types.js +2 -0
  131. package/dist/types.js.map +1 -0
  132. package/package.json +60 -0
@@ -0,0 +1,100 @@
1
+ import type { TimingReport, BenchmarkResult } from '../types.js';
2
+ /**
3
+ * High-resolution timer using process.hrtime.bigint()
4
+ */
5
+ export declare class Timer {
6
+ private startTime;
7
+ private endTime;
8
+ /**
9
+ * Start the timer
10
+ */
11
+ start(): this;
12
+ /**
13
+ * Stop the timer
14
+ */
15
+ stop(): this;
16
+ /**
17
+ * Get elapsed time in milliseconds
18
+ */
19
+ elapsed(): number;
20
+ /**
21
+ * Check if the timer is running
22
+ */
23
+ isRunning(): boolean;
24
+ }
25
+ /**
26
+ * Hierarchical timing context for tracking nested operations
27
+ */
28
+ export declare class TimingContext {
29
+ private enabled;
30
+ private rootPhases;
31
+ private currentPhase;
32
+ private overallTimer;
33
+ constructor(enabled?: boolean);
34
+ /**
35
+ * Time an async operation
36
+ */
37
+ time<T>(label: string, fn: () => Promise<T>): Promise<T>;
38
+ /**
39
+ * Time a sync operation
40
+ */
41
+ timeSync<T>(label: string, fn: () => T): T;
42
+ /**
43
+ * Start a new timing phase
44
+ */
45
+ startPhase(label: string): void;
46
+ /**
47
+ * End a timing phase
48
+ */
49
+ endPhase(label: string): void;
50
+ /**
51
+ * Check if timing is enabled
52
+ */
53
+ isEnabled(): boolean;
54
+ /**
55
+ * Convert phase tracker to timing entry
56
+ */
57
+ private phaseToEntry;
58
+ /**
59
+ * Get the timing report
60
+ */
61
+ getReport(): TimingReport;
62
+ }
63
+ /**
64
+ * Format a duration in milliseconds to a human-readable string
65
+ */
66
+ export declare function formatDuration(ms: number): string;
67
+ /**
68
+ * Format a complete timing report
69
+ */
70
+ export declare function formatTimingReport(report: TimingReport): string;
71
+ /**
72
+ * Calculate statistics for a set of durations
73
+ */
74
+ export declare function calculateStats(durations: number[]): Omit<BenchmarkResult, 'name' | 'iterations'>;
75
+ /**
76
+ * Run a benchmark function multiple times and collect results
77
+ */
78
+ export declare function runBenchmark(name: string, fn: () => Promise<void>, options?: {
79
+ iterations?: number;
80
+ warmup?: number;
81
+ }): Promise<BenchmarkResult>;
82
+ /**
83
+ * Format benchmark results as a table
84
+ */
85
+ export declare function formatBenchmarkResults(results: BenchmarkResult[]): string;
86
+ /**
87
+ * Global timing context (set when --timing flag is used)
88
+ */
89
+ declare global {
90
+ var __codiTimingContext: TimingContext | undefined;
91
+ }
92
+ /**
93
+ * Get the global timing context if enabled
94
+ */
95
+ export declare function getTimingContext(): TimingContext | undefined;
96
+ /**
97
+ * Set the global timing context
98
+ */
99
+ export declare function setTimingContext(ctx: TimingContext | undefined): void;
100
+ //# sourceMappingURL=timing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../../src/lib/timing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9E;;GAEG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAAuB;IAEtC;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,OAAO,IAAI,MAAM;IAQjB;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB;AAYD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,YAAY,CAAQ;gBAEhB,OAAO,UAAO;IAQ1B;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAa9D;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAa1C;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAmB/B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAe7B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,SAAS,IAAI,YAAY;CAU1B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAajD;AA4BD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAa/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,YAAY,CAAC,CAyBhG;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACvB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACrD,OAAO,CAAC,eAAe,CAAC,CAuB1B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,CAyBzE;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,mBAAmB,EAAE,aAAa,GAAG,SAAS,CAAC;CACpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,SAAS,CAE5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAErE"}
@@ -0,0 +1,293 @@
1
+ /**
2
+ * High-resolution timer using process.hrtime.bigint()
3
+ */
4
+ export class Timer {
5
+ startTime = null;
6
+ endTime = null;
7
+ /**
8
+ * Start the timer
9
+ */
10
+ start() {
11
+ this.startTime = process.hrtime.bigint();
12
+ this.endTime = null;
13
+ return this;
14
+ }
15
+ /**
16
+ * Stop the timer
17
+ */
18
+ stop() {
19
+ if (this.startTime === null) {
20
+ throw new Error('Timer was not started');
21
+ }
22
+ this.endTime = process.hrtime.bigint();
23
+ return this;
24
+ }
25
+ /**
26
+ * Get elapsed time in milliseconds
27
+ */
28
+ elapsed() {
29
+ if (this.startTime === null) {
30
+ return 0;
31
+ }
32
+ const end = this.endTime ?? process.hrtime.bigint();
33
+ return Number(end - this.startTime) / 1_000_000;
34
+ }
35
+ /**
36
+ * Check if the timer is running
37
+ */
38
+ isRunning() {
39
+ return this.startTime !== null && this.endTime === null;
40
+ }
41
+ }
42
+ /**
43
+ * Hierarchical timing context for tracking nested operations
44
+ */
45
+ export class TimingContext {
46
+ enabled;
47
+ rootPhases = [];
48
+ currentPhase = null;
49
+ overallTimer;
50
+ constructor(enabled = true) {
51
+ this.enabled = enabled;
52
+ this.overallTimer = new Timer();
53
+ if (enabled) {
54
+ this.overallTimer.start();
55
+ }
56
+ }
57
+ /**
58
+ * Time an async operation
59
+ */
60
+ async time(label, fn) {
61
+ if (!this.enabled) {
62
+ return fn();
63
+ }
64
+ this.startPhase(label);
65
+ try {
66
+ return await fn();
67
+ }
68
+ finally {
69
+ this.endPhase(label);
70
+ }
71
+ }
72
+ /**
73
+ * Time a sync operation
74
+ */
75
+ timeSync(label, fn) {
76
+ if (!this.enabled) {
77
+ return fn();
78
+ }
79
+ this.startPhase(label);
80
+ try {
81
+ return fn();
82
+ }
83
+ finally {
84
+ this.endPhase(label);
85
+ }
86
+ }
87
+ /**
88
+ * Start a new timing phase
89
+ */
90
+ startPhase(label) {
91
+ if (!this.enabled)
92
+ return;
93
+ const phase = {
94
+ label,
95
+ timer: new Timer().start(),
96
+ children: [],
97
+ parent: this.currentPhase,
98
+ };
99
+ if (this.currentPhase) {
100
+ this.currentPhase.children.push(phase);
101
+ }
102
+ else {
103
+ this.rootPhases.push(phase);
104
+ }
105
+ this.currentPhase = phase;
106
+ }
107
+ /**
108
+ * End a timing phase
109
+ */
110
+ endPhase(label) {
111
+ if (!this.enabled)
112
+ return;
113
+ if (!this.currentPhase) {
114
+ throw new Error(`No active phase to end (expected: ${label})`);
115
+ }
116
+ if (this.currentPhase.label !== label) {
117
+ throw new Error(`Phase mismatch: expected "${this.currentPhase.label}", got "${label}"`);
118
+ }
119
+ this.currentPhase.timer.stop();
120
+ this.currentPhase = this.currentPhase.parent;
121
+ }
122
+ /**
123
+ * Check if timing is enabled
124
+ */
125
+ isEnabled() {
126
+ return this.enabled;
127
+ }
128
+ /**
129
+ * Convert phase tracker to timing entry
130
+ */
131
+ phaseToEntry(phase) {
132
+ const entry = {
133
+ label: phase.label,
134
+ duration: phase.timer.elapsed(),
135
+ };
136
+ if (phase.children.length > 0) {
137
+ entry.children = phase.children.map((child) => this.phaseToEntry(child));
138
+ }
139
+ return entry;
140
+ }
141
+ /**
142
+ * Get the timing report
143
+ */
144
+ getReport() {
145
+ if (!this.enabled) {
146
+ return { total: 0, entries: [] };
147
+ }
148
+ return {
149
+ total: this.overallTimer.elapsed(),
150
+ entries: this.rootPhases.map((phase) => this.phaseToEntry(phase)),
151
+ };
152
+ }
153
+ }
154
+ /**
155
+ * Format a duration in milliseconds to a human-readable string
156
+ */
157
+ export function formatDuration(ms) {
158
+ if (ms < 1) {
159
+ return `${(ms * 1000).toFixed(0)}µs`;
160
+ }
161
+ if (ms < 1000) {
162
+ return `${ms.toFixed(0)}ms`;
163
+ }
164
+ if (ms < 60000) {
165
+ return `${(ms / 1000).toFixed(2)}s`;
166
+ }
167
+ const minutes = Math.floor(ms / 60000);
168
+ const seconds = (ms % 60000) / 1000;
169
+ return `${minutes}m ${seconds.toFixed(1)}s`;
170
+ }
171
+ /**
172
+ * Format a timing entry with tree structure
173
+ */
174
+ function formatEntry(entry, indent = 0, isLast = true, prefix = '') {
175
+ const lines = [];
176
+ const duration = formatDuration(entry.duration).padStart(8);
177
+ if (indent === 0) {
178
+ lines.push(` ${entry.label.padEnd(24)} ${duration}`);
179
+ }
180
+ else {
181
+ const connector = isLast ? '└─' : '├─';
182
+ const labelPad = Math.max(0, 22 - prefix.length);
183
+ lines.push(` ${prefix}${connector} ${entry.label.padEnd(labelPad)} ${duration}`);
184
+ }
185
+ if (entry.children && entry.children.length > 0) {
186
+ const childPrefix = indent === 0 ? ' ' : prefix + (isLast ? ' ' : '│ ');
187
+ entry.children.forEach((child, i) => {
188
+ const isChildLast = i === entry.children.length - 1;
189
+ lines.push(...formatEntry(child, indent + 1, isChildLast, childPrefix));
190
+ });
191
+ }
192
+ return lines;
193
+ }
194
+ /**
195
+ * Format a complete timing report
196
+ */
197
+ export function formatTimingReport(report) {
198
+ const lines = [];
199
+ lines.push('Timing Report');
200
+ lines.push('─────────────');
201
+ lines.push(`Total: ${formatDuration(report.total)}`);
202
+ lines.push('');
203
+ for (const entry of report.entries) {
204
+ lines.push(...formatEntry(entry));
205
+ }
206
+ return lines.join('\n');
207
+ }
208
+ /**
209
+ * Calculate statistics for a set of durations
210
+ */
211
+ export function calculateStats(durations) {
212
+ const sorted = [...durations].sort((a, b) => a - b);
213
+ const n = sorted.length;
214
+ if (n === 0) {
215
+ return { min: 0, max: 0, avg: 0, p50: 0, p95: 0, stdDev: 0 };
216
+ }
217
+ const min = sorted[0];
218
+ const max = sorted[n - 1];
219
+ const sum = sorted.reduce((a, b) => a + b, 0);
220
+ const avg = sum / n;
221
+ // Percentiles
222
+ const p50Index = Math.floor(n * 0.5);
223
+ const p95Index = Math.floor(n * 0.95);
224
+ const p50 = sorted[Math.min(p50Index, n - 1)];
225
+ const p95 = sorted[Math.min(p95Index, n - 1)];
226
+ // Standard deviation
227
+ const squaredDiffs = sorted.map((x) => Math.pow(x - avg, 2));
228
+ const variance = squaredDiffs.reduce((a, b) => a + b, 0) / n;
229
+ const stdDev = Math.sqrt(variance);
230
+ return { min, max, avg, p50, p95, stdDev };
231
+ }
232
+ /**
233
+ * Run a benchmark function multiple times and collect results
234
+ */
235
+ export async function runBenchmark(name, fn, options = {}) {
236
+ const { iterations = 5, warmup = 1 } = options;
237
+ const durations = [];
238
+ // Warmup runs (not counted)
239
+ for (let i = 0; i < warmup; i++) {
240
+ await fn();
241
+ }
242
+ // Actual benchmark runs
243
+ for (let i = 0; i < iterations; i++) {
244
+ const timer = new Timer().start();
245
+ await fn();
246
+ timer.stop();
247
+ durations.push(timer.elapsed());
248
+ }
249
+ const stats = calculateStats(durations);
250
+ return {
251
+ name,
252
+ iterations,
253
+ ...stats,
254
+ };
255
+ }
256
+ /**
257
+ * Format benchmark results as a table
258
+ */
259
+ export function formatBenchmarkResults(results) {
260
+ const lines = [];
261
+ lines.push('Workspace Benchmark Results');
262
+ lines.push('═══════════════════════════');
263
+ lines.push('');
264
+ // Header
265
+ const header = 'Operation │ Iter │ Min │ Max │ Avg │ P95';
266
+ const separator = '─────────────────┼──────┼────────┼────────┼────────┼────────';
267
+ lines.push(header);
268
+ lines.push(separator);
269
+ // Rows
270
+ for (const result of results) {
271
+ const name = result.name.padEnd(16);
272
+ const iter = result.iterations.toString().padStart(4);
273
+ const min = formatDuration(result.min).padStart(6);
274
+ const max = formatDuration(result.max).padStart(6);
275
+ const avg = formatDuration(result.avg).padStart(6);
276
+ const p95 = formatDuration(result.p95).padStart(6);
277
+ lines.push(`${name} │ ${iter} │ ${min} │ ${max} │ ${avg} │ ${p95}`);
278
+ }
279
+ return lines.join('\n');
280
+ }
281
+ /**
282
+ * Get the global timing context if enabled
283
+ */
284
+ export function getTimingContext() {
285
+ return globalThis.__codiTimingContext;
286
+ }
287
+ /**
288
+ * Set the global timing context
289
+ */
290
+ export function setTimingContext(ctx) {
291
+ globalThis.__codiTimingContext = ctx;
292
+ }
293
+ //# sourceMappingURL=timing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timing.js","sourceRoot":"","sources":["../../src/lib/timing.ts"],"names":[],"mappings":"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"}