diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-06-28 12:38:34 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-28 12:38:34 -0400 |
commit | cdf191336aa616a206b977ba3beeb1233cf41c32 (patch) | |
tree | 07df9e5eec80dd4379c7ed97854a2bd9ef5149eb /ext/bg | |
parent | 5bf805755a33f6f10fd9621f8a2bff7ba1cb7440 (diff) |
Clone function (#624)
* Add clone function
* Replace utilIsolate with clone
* Replace JsonSchema.isolate with clone function
* Include core.js for tests which use json-schema.js
* Update visisted set
Diffstat (limited to 'ext/bg')
-rw-r--r-- | ext/bg/js/backend.js | 5 | ||||
-rw-r--r-- | ext/bg/js/json-schema.js | 20 | ||||
-rw-r--r-- | ext/bg/js/util.js | 20 |
3 files changed, 8 insertions, 37 deletions
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js index 344706d1..59a3de45 100644 --- a/ext/bg/js/backend.js +++ b/ext/bg/js/backend.js @@ -38,7 +38,6 @@ * profileConditionsDescriptorPromise * requestJson * requestText - * utilIsolate */ class Backend { @@ -875,7 +874,7 @@ class Backend { for (const target of targets) { try { const result = this._modifySetting(target); - results.push({result: utilIsolate(result)}); + results.push({result: clone(result)}); } catch (e) { results.push({error: errorToJson(e)}); } @@ -889,7 +888,7 @@ class Backend { for (const target of targets) { try { const result = this._getSetting(target); - results.push({result: utilIsolate(result)}); + results.push({result: clone(result)}); } catch (e) { results.push({error: errorToJson(e)}); } diff --git a/ext/bg/js/json-schema.js b/ext/bg/js/json-schema.js index f62402f9..2e009a7a 100644 --- a/ext/bg/js/json-schema.js +++ b/ext/bg/js/json-schema.js @@ -90,7 +90,7 @@ class JsonSchemaProxyHandler { throw new Error(`Property ${property} not supported`); } - value = JsonSchema.isolate(value); + value = JsonSchema.clone(value); JsonSchemaProxyHandler.validate(value, propertySchema, new JsonSchemaTraversalInfo(value, propertySchema)); @@ -515,7 +515,7 @@ class JsonSchemaProxyHandler { const schemaDefault = schema.default; if (typeof schemaDefault !== 'undefined') { - value = JsonSchema.isolate(schemaDefault); + value = JsonSchema.clone(schemaDefault); type = JsonSchemaProxyHandler.getValueType(value); assignDefault = !JsonSchemaProxyHandler.isValueTypeAny(value, type, schemaType); } @@ -628,19 +628,7 @@ class JsonSchema { return JsonSchemaProxyHandler.getValidValueOrDefault(schema, value); } - static isolate(value) { - if (value === null) { return null; } - - switch (typeof value) { - case 'boolean': - case 'number': - case 'string': - case 'bigint': - case 'symbol': - return value; - } - - const stringValue = JSON.stringify(value); - return typeof stringValue === 'string' ? JSON.parse(stringValue) : null; + static clone(value) { + return clone(value); } } diff --git a/ext/bg/js/util.js b/ext/bg/js/util.js index edc19c6e..fa31b0d8 100644 --- a/ext/bg/js/util.js +++ b/ext/bg/js/util.js @@ -15,26 +15,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -function utilIsolate(value) { - if (value === null) { return null; } - - switch (typeof value) { - case 'boolean': - case 'number': - case 'string': - case 'bigint': - case 'symbol': - return value; - } - - const stringValue = JSON.stringify(value); - return typeof stringValue === 'string' ? JSON.parse(stringValue) : null; -} - function utilFunctionIsolate(func) { return function isolatedFunction(...args) { try { - args = args.map((v) => utilIsolate(v)); + args = args.map((v) => clone(v)); return func.call(this, ...args); } catch (e) { try { @@ -50,7 +34,7 @@ function utilFunctionIsolate(func) { function utilBackgroundIsolate(data) { const backgroundPage = chrome.extension.getBackgroundPage(); - return backgroundPage.utilIsolate(data); + return backgroundPage.clone(data); } function utilBackgroundFunctionIsolate(func) { |