From 746705ffa5c684d2c4803ff3687ba8fb06001666 Mon Sep 17 00:00:00 2001 From: Vas Sudanagunta Date: Wed, 22 Jan 2020 17:53:59 -0500 Subject: [PATCH] Fix API for non-Typescript clients Fixes microsoft/vscode-textbuffer#2 Includes test code that demonstrates the issue. Typescript const enums are not exported in a way accessible to non-Typescript clients. This fixes the issue by simply utilizing the `preserveConstEnums` compiler option. This may have a performance impact; If that is unacceptable there are other ways to fix this issue, but the included test file is useful to keep going forward. --- src/test/javascript.api.test.js | 21 +++++++++++++++++++++ tsconfig.json | 1 + 2 files changed, 22 insertions(+) create mode 100644 src/test/javascript.api.test.js diff --git a/src/test/javascript.api.test.js b/src/test/javascript.api.test.js new file mode 100644 index 0000000..99bfec3 --- /dev/null +++ b/src/test/javascript.api.test.js @@ -0,0 +1,21 @@ +const PieceTreeTextBufferBuilder = require("../index").PieceTreeTextBufferBuilder; +const DefaultEndOfLine = require("../index").DefaultEndOfLine; + +describe('random tests', () => { + it('random insert delete', () => { + let pieceTreeTextBufferBuilder = new PieceTreeTextBufferBuilder(); + pieceTreeTextBufferBuilder.acceptChunk('abc\n'); + pieceTreeTextBufferBuilder.acceptChunk('def'); + let pieceTreeFactory = pieceTreeTextBufferBuilder.finish(true); + let pieceTree = pieceTreeFactory.create(DefaultEndOfLine.LF); + + expect(pieceTree.getLineCount()).toEqual(2); + expect(pieceTree.getLineContent(1)).toEqual('abc'); + expect(pieceTree.getLineContent(2)).toEqual('def'); + + pieceTree.insert(1, '+'); + expect(pieceTree.getLineCount()).toEqual(2); + expect(pieceTree.getLineContent(1)).toEqual('a+bc'); + expect(pieceTree.getLineContent(2)).toEqual('def'); + }); +}); diff --git a/tsconfig.json b/tsconfig.json index 348cb4f..712a5c9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,6 +5,7 @@ "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ "declaration": true, /* Generates corresponding '.d.ts' file. */ "outDir": "./lib", /* Redirect output structure to the directory. */ + "preserveConstEnums": true, "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via */ } } \ No newline at end of file