diff options
author | Joel Kronqvist <work.joelkronqvist@pm.me> | 2022-03-11 20:46:06 +0200 |
---|---|---|
committer | Joel Kronqvist <work.joelkronqvist@pm.me> | 2022-03-11 20:46:06 +0200 |
commit | 080c5819d87b933816d724a83f3bf4f1686770a7 (patch) | |
tree | 4a2ccc68b27edf7d4cbc586c932cc7542b655e19 /node_modules/jest-matcher-utils/build/Replaceable.js | |
parent | 5ac7049a9d30733165cc212dee308163c2a14644 (diff) | |
parent | d003b82235a9329f912522a2f70aa950dfce4998 (diff) | |
download | LYLLRuoka-080c5819d87b933816d724a83f3bf4f1686770a7.tar.gz LYLLRuoka-080c5819d87b933816d724a83f3bf4f1686770a7.zip |
Merge branch 'master' of https://github.com/JoelHMikael/FoodJS
Updating remote changes
Diffstat (limited to 'node_modules/jest-matcher-utils/build/Replaceable.js')
-rw-r--r-- | node_modules/jest-matcher-utils/build/Replaceable.js | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/node_modules/jest-matcher-utils/build/Replaceable.js b/node_modules/jest-matcher-utils/build/Replaceable.js new file mode 100644 index 0000000..4eeb4d4 --- /dev/null +++ b/node_modules/jest-matcher-utils/build/Replaceable.js @@ -0,0 +1,82 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +exports.default = void 0; + +var _jestGetType = require('jest-get-type'); + +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; +} + +const supportTypes = ['map', 'array', 'object']; + +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ +class Replaceable { + constructor(object) { + _defineProperty(this, 'object', void 0); + + _defineProperty(this, 'type', void 0); + + this.object = object; + this.type = (0, _jestGetType.getType)(object); + + if (!supportTypes.includes(this.type)) { + throw new Error(`Type ${this.type} is not support in Replaceable!`); + } + } + + static isReplaceable(obj1, obj2) { + const obj1Type = (0, _jestGetType.getType)(obj1); + const obj2Type = (0, _jestGetType.getType)(obj2); + return obj1Type === obj2Type && supportTypes.includes(obj1Type); + } + + forEach(cb) { + if (this.type === 'object') { + const descriptors = Object.getOwnPropertyDescriptors(this.object); + [ + ...Object.keys(descriptors), + ...Object.getOwnPropertySymbols(descriptors) + ] //@ts-expect-error because typescript do not support symbol key in object + //https://github.com/microsoft/TypeScript/issues/1863 + .filter(key => descriptors[key].enumerable) + .forEach(key => { + cb(this.object[key], key, this.object); + }); + } else { + this.object.forEach(cb); + } + } + + get(key) { + if (this.type === 'map') { + return this.object.get(key); + } + + return this.object[key]; + } + + set(key, value) { + if (this.type === 'map') { + this.object.set(key, value); + } else { + this.object[key] = value; + } + } +} +/* eslint-enable */ + +exports.default = Replaceable; |