Skip to content

Commit

Permalink
fix: upgrade to jsonrepair@2.2.1, which has some nice improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
josdejong committed Jun 9, 2021
1 parent 813a9ca commit a34a558
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 29 deletions.
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"diff-sequences": "^27.0.1",
"immutable-json-patch": "^1.1.1",
"json-source-map": "^0.6.1",
"jsonrepair": "^2.2.0",
"jsonrepair": "^2.2.1",
"lodash-es": "^4.17.21",
"natural-compare-lite": "^1.4.0",
"svelte-awesome": "^2.3.1",
Expand Down
12 changes: 8 additions & 4 deletions src/logic/operations.js
Original file line number Diff line number Diff line change
Expand Up @@ -491,14 +491,18 @@ function moveDown (parentPath, key) {
* @returns {Array.<{key: string, value: *}>}
*/
export function clipboardToValues (clipboardText) {
// clipboardOriginal must not fix partial JSON, we need clipboardOriginal
// mostly to determine whether the original JSON was an object/array or not
const textIsObject = /^\s*{/.test(clipboardText)
const textIsArray = /^\s*\[/.test(clipboardText)

const clipboardOriginal = parseAndRepairOrUndefined(clipboardText)
const clipboardRepaired = clipboardOriginal !== undefined
? clipboardOriginal // just performance optimization
? clipboardOriginal
: parsePartialJson(clipboardText, parseAndRepair)

if (isObjectOrArray(clipboardOriginal)) {
if (
(textIsObject && isObject(clipboardRepaired)) ||
(textIsArray && Array.isArray(clipboardRepaired))
) {
return [{ key: 'New item', value: clipboardRepaired }]
}

Expand Down
21 changes: 0 additions & 21 deletions src/utils/jsonUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,32 +58,11 @@ export function parsePartialJson (partialJson, parse = JSON.parse) {
throw new Error('Failed to parse partial JSON')
}

/**
* @param {string} partialJson
* @returns {JSON}
*/
export function parseAndRepairPartialJson (partialJson) {
return parsePartialJson(partialJson, parseAndRepair)
}

/**
* @param {string} partialJson
* @returns {JSON}
*/
export function parseAndRepairPartialJsonOrUndefined (partialJson) {
try {
return parseAndRepairPartialJson(partialJson)
} catch (err) {
return undefined
}
}

/**
* Repair partial JSON
* @param {string} partialJson
* @returns {string}
*/
// TODO: deduplicate the logic in repairPartialJson and parseAndRepairPartialJson ?
export function repairPartialJson (partialJson) {
// for now: dumb brute force approach: simply try out a few things...

Expand Down

0 comments on commit a34a558

Please sign in to comment.