@@ -31,12 +31,14 @@ function showInvisibles(str) {
3131 return ret ;
3232}
3333
34+ /** @typedef {({operation: 'insert'; insertText: string; offset: number;} | {operation: 'delete'; deleteText: string; offset: number;} | {operation: 'replace'; insertText: string; deleteText: string; offset: number;}) } Difference */
35+
3436/**
3537 * Generate results for differences between source code and formatted version.
3638 *
3739 * @param {string } source - The original source.
3840 * @param {string } prettierSource - The Prettier formatted source.
39- * @returns {Array } - An array containing { operation, offset, insertText, deleteText }
41+ * @returns {Difference[] } - An array containing { operation, offset, insertText, deleteText }
4042 */
4143function generateDifferences ( source , prettierSource ) {
4244 // fast-diff returns the differences between two texts as a series of
@@ -54,12 +56,15 @@ function generateDifferences(source, prettierSource) {
5456 // on contiguous lines).
5557
5658 const results = diff ( source , prettierSource ) ;
59+
60+ /** @type {Difference[] } */
5761 const differences = [ ] ;
5862
63+ /** @type {typeof results } */
5964 const batch = [ ] ;
6065 let offset = 0 ; // NOTE: INSERT never advances the offset.
6166 while ( results . length ) {
62- const result = results . shift ( ) ;
67+ const result = /** @type { typeof results[number] } */ ( results . shift ( ) ) ;
6368 const op = result [ 0 ] ;
6469 const text = result [ 1 ] ;
6570 switch ( op ) {
@@ -95,7 +100,7 @@ function generateDifferences(source, prettierSource) {
95100 let aheadDeleteText = '' ;
96101 let aheadInsertText = '' ;
97102 while ( batch . length ) {
98- const next = batch . shift ( ) ;
103+ const next = /** @type { typeof batch[number] } */ ( batch . shift ( ) ) ;
99104 const op = next [ 0 ] ;
100105 const text = next [ 1 ] ;
101106 switch ( op ) {
@@ -135,9 +140,9 @@ function generateDifferences(source, prettierSource) {
135140 }
136141}
137142
138- generateDifferences . INSERT = 'insert' ;
139- generateDifferences . DELETE = 'delete' ;
140- generateDifferences . REPLACE = 'replace' ;
143+ generateDifferences . INSERT = /** @type { const } */ ( 'insert' ) ;
144+ generateDifferences . DELETE = /** @type { const } */ ( 'delete' ) ;
145+ generateDifferences . REPLACE = /** @type { const } */ ( 'replace' ) ;
141146
142147module . exports = {
143148 showInvisibles,
0 commit comments