mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-14 17:22:20 -05:00
* Merge from vscode 504f934659740e9d41501cad9f162b54d7745ad9 * delete unused folders * distro * Bump build node version * update chokidar * FIx hygiene errors * distro * Fix extension lint issues * Remove strict-vscode * Add copyright header exemptions * Bump vscode-extension-telemetry to fix webpacking issue with zone.js * distro * Fix failing tests (revert marked.js back to current one until we decide to update) * Skip searchmodel test * Fix mac build * temp debug script loading * Try disabling coverage * log error too * Revert "log error too" This reverts commit af0183e5d4ab458fdf44b88fbfab9908d090526f. * Revert "temp debug script loading" This reverts commit 3d687d541c76db2c5b55626c78ae448d3c25089c. * Add comments explaining coverage disabling * Fix ansi_up loading issue * Merge latest from ads * Use newer option * Fix compile * add debug logging warn * Always log stack * log more * undo debug * Update to use correct base path (+cleanup) * distro * fix compile errors * Remove strict-vscode * Fix sql editors not showing * Show db dropdown input & fix styling * Fix more info in gallery * Fix gallery asset requests * Delete unused workflow * Fix tapable resolutions for smoke test compile error * Fix smoke compile * Disable crash reporting * Disable interactive Co-authored-by: ADS Merger <karlb@microsoft.com>
46 lines
1.5 KiB
TypeScript
46 lines
1.5 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
// copied from vscode-azurefunctions extension
|
|
|
|
import * as jsonc from 'jsonc-parser';
|
|
import * as constants from './constants';
|
|
|
|
/**
|
|
* Parses and returns JSON
|
|
* Has extra logic to remove a BOM character if it exists and handle comments
|
|
*/
|
|
export function parseJson<T extends object>(data: string): T {
|
|
if (data.charCodeAt(0) === 0xFEFF) {
|
|
data = data.slice(1);
|
|
}
|
|
|
|
const errors: jsonc.ParseError[] = [];
|
|
const result: T = <T>jsonc.parse(data, errors, { allowTrailingComma: true });
|
|
if (errors.length > 0) {
|
|
const [line, column]: [number, number] = getLineAndColumnFromOffset(data, errors[0].offset);
|
|
throw new Error(constants.jsonParseError(jsonc.printParseErrorCode(errors[0].error), line, column));
|
|
} else {
|
|
return result;
|
|
}
|
|
}
|
|
|
|
export function getLineAndColumnFromOffset(data: string, offset: number): [number, number] {
|
|
const lines: string[] = data.split('\n');
|
|
let charCount: number = 0;
|
|
let lineCount: number = 0;
|
|
let column: number = 0;
|
|
for (const line of lines) {
|
|
lineCount += 1;
|
|
const lineLength: number = line.length + 1;
|
|
charCount += lineLength;
|
|
if (charCount >= offset) {
|
|
column = offset - (charCount - lineLength);
|
|
break;
|
|
}
|
|
}
|
|
return [lineCount, column];
|
|
}
|