mirror of
https://github.com/S2-/minifyfromhtml.git
synced 2025-08-03 04:10:04 +02:00
add some babel stuff
This commit is contained in:
13
node_modules/define-properties/.editorconfig
generated
vendored
Normal file
13
node_modules/define-properties/.editorconfig
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = tab;
|
||||
insert_final_newline = true;
|
||||
quote_type = auto;
|
||||
space_after_anonymous_functions = true;
|
||||
space_after_control_statements = true;
|
||||
spaces_around_operators = true;
|
||||
trim_trailing_whitespace = true;
|
||||
spaces_in_brackets = false;
|
||||
end_of_line = lf;
|
||||
|
11
node_modules/define-properties/.eslintrc
generated
vendored
Normal file
11
node_modules/define-properties/.eslintrc
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"root": true,
|
||||
|
||||
"extends": "@ljharb",
|
||||
|
||||
"rules": {
|
||||
"id-length": [2, { "min": 1, "max": 35 }],
|
||||
"max-params": [2, 4],
|
||||
"max-statements": [2, 13]
|
||||
}
|
||||
}
|
131
node_modules/define-properties/.jscs.json
generated
vendored
Normal file
131
node_modules/define-properties/.jscs.json
generated
vendored
Normal file
@@ -0,0 +1,131 @@
|
||||
{
|
||||
"es3": true,
|
||||
|
||||
"additionalRules": [],
|
||||
|
||||
"requireSemicolons": true,
|
||||
|
||||
"disallowMultipleSpaces": true,
|
||||
|
||||
"disallowIdentifierNames": [],
|
||||
|
||||
"requireCurlyBraces": ["if", "else", "for", "while", "do", "try", "catch"],
|
||||
|
||||
"requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"],
|
||||
|
||||
"disallowSpaceAfterKeywords": [],
|
||||
|
||||
"disallowSpaceBeforeComma": true,
|
||||
"disallowSpaceBeforeSemicolon": true,
|
||||
|
||||
"disallowNodeTypes": [
|
||||
"DebuggerStatement",
|
||||
"LabeledStatement",
|
||||
"SwitchCase",
|
||||
"SwitchStatement",
|
||||
"WithStatement"
|
||||
],
|
||||
|
||||
"requireObjectKeysOnNewLine": false,
|
||||
|
||||
"requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true },
|
||||
"requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
|
||||
"disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
|
||||
"requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true },
|
||||
"disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true },
|
||||
|
||||
"requireSpaceBetweenArguments": true,
|
||||
|
||||
"disallowSpacesInsideParentheses": true,
|
||||
|
||||
"disallowSpacesInsideArrayBrackets": true,
|
||||
|
||||
"disallowQuotedKeysInObjects": "allButReserved",
|
||||
|
||||
"disallowSpaceAfterObjectKeys": true,
|
||||
|
||||
"requireCommaBeforeLineBreak": true,
|
||||
|
||||
"disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
|
||||
"requireSpaceAfterPrefixUnaryOperators": [],
|
||||
|
||||
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
|
||||
"requireSpaceBeforePostfixUnaryOperators": [],
|
||||
|
||||
"disallowSpaceBeforeBinaryOperators": [],
|
||||
"requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
|
||||
|
||||
"requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
|
||||
"disallowSpaceAfterBinaryOperators": [],
|
||||
|
||||
"disallowImplicitTypeConversion": ["binary", "string"],
|
||||
|
||||
"disallowKeywords": ["with", "eval"],
|
||||
|
||||
"requireKeywordsOnNewLine": [],
|
||||
"disallowKeywordsOnNewLine": ["else"],
|
||||
|
||||
"requireLineFeedAtFileEnd": true,
|
||||
|
||||
"disallowTrailingWhitespace": true,
|
||||
|
||||
"disallowTrailingComma": true,
|
||||
|
||||
"excludeFiles": ["node_modules/**", "vendor/**"],
|
||||
|
||||
"disallowMultipleLineStrings": true,
|
||||
|
||||
"requireDotNotation": true,
|
||||
|
||||
"requireParenthesesAroundIIFE": true,
|
||||
|
||||
"validateLineBreaks": "LF",
|
||||
|
||||
"validateQuoteMarks": {
|
||||
"escape": true,
|
||||
"mark": "'"
|
||||
},
|
||||
|
||||
"disallowOperatorBeforeLineBreak": [],
|
||||
|
||||
"requireSpaceBeforeKeywords": [
|
||||
"do",
|
||||
"for",
|
||||
"if",
|
||||
"else",
|
||||
"switch",
|
||||
"case",
|
||||
"try",
|
||||
"catch",
|
||||
"finally",
|
||||
"while",
|
||||
"with",
|
||||
"return"
|
||||
],
|
||||
|
||||
"validateAlignedFunctionParameters": {
|
||||
"lineBreakAfterOpeningBraces": true,
|
||||
"lineBreakBeforeClosingBraces": true
|
||||
},
|
||||
|
||||
"requirePaddingNewLinesBeforeExport": true,
|
||||
|
||||
"validateNewlineAfterArrayElements": {
|
||||
"maximum": 3
|
||||
},
|
||||
|
||||
"requirePaddingNewLinesAfterUseStrict": true,
|
||||
|
||||
"disallowArrowFunctions": true,
|
||||
|
||||
"disallowMultiLineTernary": true,
|
||||
|
||||
"validateOrderInObjectKeys": "asc-insensitive",
|
||||
|
||||
"disallowIdenticalDestructuringNames": true,
|
||||
|
||||
"disallowNestedTernaries": { "maxLevel": 1 },
|
||||
|
||||
"requireSpaceAfterComma": true
|
||||
}
|
||||
|
2
node_modules/define-properties/.npmignore
generated
vendored
Normal file
2
node_modules/define-properties/.npmignore
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
test/*
|
||||
|
60
node_modules/define-properties/.travis.yml
generated
vendored
Normal file
60
node_modules/define-properties/.travis.yml
generated
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "4.2"
|
||||
- "4.1"
|
||||
- "4.0"
|
||||
- "iojs-v3.3"
|
||||
- "iojs-v3.2"
|
||||
- "iojs-v3.1"
|
||||
- "iojs-v3.0"
|
||||
- "iojs-v2.5"
|
||||
- "iojs-v2.4"
|
||||
- "iojs-v2.3"
|
||||
- "iojs-v2.2"
|
||||
- "iojs-v2.1"
|
||||
- "iojs-v2.0"
|
||||
- "iojs-v1.8"
|
||||
- "iojs-v1.7"
|
||||
- "iojs-v1.6"
|
||||
- "iojs-v1.5"
|
||||
- "iojs-v1.4"
|
||||
- "iojs-v1.3"
|
||||
- "iojs-v1.2"
|
||||
- "iojs-v1.1"
|
||||
- "iojs-v1.0"
|
||||
- "0.12"
|
||||
- "0.11"
|
||||
- "0.10"
|
||||
- "0.9"
|
||||
- "0.8"
|
||||
- "0.6"
|
||||
- "0.4"
|
||||
before_install:
|
||||
- '[ "${TRAVIS_NODE_VERSION}" = "0.6" ] || npm install -g npm@1.4.28 && npm install -g npm'
|
||||
sudo: false
|
||||
matrix:
|
||||
fast_finish: true
|
||||
allow_failures:
|
||||
- node_js: "4.1"
|
||||
- node_js: "4.0"
|
||||
- node_js: "iojs-v3.2"
|
||||
- node_js: "iojs-v3.1"
|
||||
- node_js: "iojs-v3.0"
|
||||
- node_js: "iojs-v2.4"
|
||||
- node_js: "iojs-v2.3"
|
||||
- node_js: "iojs-v2.2"
|
||||
- node_js: "iojs-v2.1"
|
||||
- node_js: "iojs-v2.0"
|
||||
- node_js: "iojs-v1.7"
|
||||
- node_js: "iojs-v1.6"
|
||||
- node_js: "iojs-v1.5"
|
||||
- node_js: "iojs-v1.4"
|
||||
- node_js: "iojs-v1.3"
|
||||
- node_js: "iojs-v1.2"
|
||||
- node_js: "iojs-v1.1"
|
||||
- node_js: "iojs-v1.0"
|
||||
- node_js: "0.11"
|
||||
- node_js: "0.9"
|
||||
- node_js: "0.8"
|
||||
- node_js: "0.6"
|
||||
- node_js: "0.4"
|
35
node_modules/define-properties/CHANGELOG.md
generated
vendored
Normal file
35
node_modules/define-properties/CHANGELOG.md
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
1.1.2 / 2015-10-14
|
||||
=================
|
||||
* [Docs] Switch from vb.teelaun.ch to versionbadg.es for the npm version badge SVG
|
||||
* [Deps] Update `object-keys`
|
||||
* [Dev Deps] update `jscs`, `tape`, `eslint`, `@ljharb/eslint-config`, `nsp`
|
||||
* [Tests] up to `io.js` `v3.3`, `node` `v4.2`
|
||||
|
||||
1.1.1 / 2015-07-21
|
||||
=================
|
||||
* [Deps] Update `object-keys`
|
||||
* [Dev Deps] Update `tape`, `eslint`
|
||||
* [Tests] Test on `io.js` `v2.4`
|
||||
|
||||
1.1.0 / 2015-07-01
|
||||
=================
|
||||
* [New] Add support for symbol-valued properties.
|
||||
* [Dev Deps] Update `nsp`, `eslint`
|
||||
* [Tests] Test up to `io.js` `v2.3`
|
||||
|
||||
1.0.3 / 2015-05-30
|
||||
=================
|
||||
* Using a more reliable check for supported property descriptors.
|
||||
|
||||
1.0.2 / 2015-05-23
|
||||
=================
|
||||
* Test up to `io.js` `v2.0`
|
||||
* Update `tape`, `jscs`, `nsp`, `eslint`, `object-keys`, `editorconfig-tools`, `covert`
|
||||
|
||||
1.0.1 / 2015-01-06
|
||||
=================
|
||||
* Update `object-keys` to fix ES3 support
|
||||
|
||||
1.0.0 / 2015-01-04
|
||||
=================
|
||||
* v1.0.0
|
21
node_modules/define-properties/LICENSE
generated
vendored
Normal file
21
node_modules/define-properties/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (C) 2015 Jordan Harband
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
86
node_modules/define-properties/README.md
generated
vendored
Normal file
86
node_modules/define-properties/README.md
generated
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
#define-properties <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
|
||||
|
||||
[![Build Status][travis-svg]][travis-url]
|
||||
[![dependency status][deps-svg]][deps-url]
|
||||
[![dev dependency status][dev-deps-svg]][dev-deps-url]
|
||||
[![License][license-image]][license-url]
|
||||
[![Downloads][downloads-image]][downloads-url]
|
||||
|
||||
[![npm badge][npm-badge-png]][package-url]
|
||||
|
||||
[![browser support][testling-svg]][testling-url]
|
||||
|
||||
Define multiple non-enumerable properties at once. Uses `Object.defineProperty` when available; falls back to standard assignment in older engines.
|
||||
Existing properties are not overridden. Accepts a map of property names to a predicate that, when true, force-overrides.
|
||||
|
||||
## Example
|
||||
|
||||
```js
|
||||
var define = require('define-properties');
|
||||
var assert = require('assert');
|
||||
|
||||
var obj = define({ a: 1, b: 2 }, {
|
||||
a: 10,
|
||||
b: 20,
|
||||
c: 30
|
||||
});
|
||||
assert(obj.a === 1);
|
||||
assert(obj.b === 2);
|
||||
assert(obj.c === 30);
|
||||
if (define.supportsDescriptors) {
|
||||
assert.deepEqual(Object.keys(obj), ['a', 'b']);
|
||||
assert.deepEqual(Object.getOwnPropertyDescriptor(obj, 'c'), {
|
||||
configurable: true,
|
||||
enumerable: false,
|
||||
value: 30,
|
||||
writable: false
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
Then, with predicates:
|
||||
```js
|
||||
var define = require('define-properties');
|
||||
var assert = require('assert');
|
||||
|
||||
var obj = define({ a: 1, b: 2, c: 3 }, {
|
||||
a: 10,
|
||||
b: 20,
|
||||
c: 30
|
||||
}, {
|
||||
a: function () { return false; },
|
||||
b: function () { return true; }
|
||||
});
|
||||
assert(obj.a === 1);
|
||||
assert(obj.b === 20);
|
||||
assert(obj.c === 3);
|
||||
if (define.supportsDescriptors) {
|
||||
assert.deepEqual(Object.keys(obj), ['a', 'c']);
|
||||
assert.deepEqual(Object.getOwnPropertyDescriptor(obj, 'b'), {
|
||||
configurable: true,
|
||||
enumerable: false,
|
||||
value: 20,
|
||||
writable: false
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
## Tests
|
||||
Simply clone the repo, `npm install`, and run `npm test`
|
||||
|
||||
[package-url]: https://npmjs.org/package/define-properties
|
||||
[npm-version-svg]: http://versionbadg.es/ljharb/define-properties.svg
|
||||
[travis-svg]: https://travis-ci.org/ljharb/define-properties.svg
|
||||
[travis-url]: https://travis-ci.org/ljharb/define-properties
|
||||
[deps-svg]: https://david-dm.org/ljharb/define-properties.svg
|
||||
[deps-url]: https://david-dm.org/ljharb/define-properties
|
||||
[dev-deps-svg]: https://david-dm.org/ljharb/define-properties/dev-status.svg
|
||||
[dev-deps-url]: https://david-dm.org/ljharb/define-properties#info=devDependencies
|
||||
[testling-svg]: https://ci.testling.com/ljharb/define-properties.png
|
||||
[testling-url]: https://ci.testling.com/ljharb/define-properties
|
||||
[npm-badge-png]: https://nodei.co/npm/define-properties.png?downloads=true&stars=true
|
||||
[license-image]: http://img.shields.io/npm/l/define-properties.svg
|
||||
[license-url]: LICENSE
|
||||
[downloads-image]: http://img.shields.io/npm/dm/define-properties.svg
|
||||
[downloads-url]: http://npm-stat.com/charts.html?package=define-properties
|
||||
|
56
node_modules/define-properties/index.js
generated
vendored
Normal file
56
node_modules/define-properties/index.js
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
'use strict';
|
||||
|
||||
var keys = require('object-keys');
|
||||
var foreach = require('foreach');
|
||||
var hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';
|
||||
|
||||
var toStr = Object.prototype.toString;
|
||||
|
||||
var isFunction = function (fn) {
|
||||
return typeof fn === 'function' && toStr.call(fn) === '[object Function]';
|
||||
};
|
||||
|
||||
var arePropertyDescriptorsSupported = function () {
|
||||
var obj = {};
|
||||
try {
|
||||
Object.defineProperty(obj, 'x', { enumerable: false, value: obj });
|
||||
/* eslint-disable no-unused-vars, no-restricted-syntax */
|
||||
for (var _ in obj) { return false; }
|
||||
/* eslint-enable no-unused-vars, no-restricted-syntax */
|
||||
return obj.x === obj;
|
||||
} catch (e) { /* this is IE 8. */
|
||||
return false;
|
||||
}
|
||||
};
|
||||
var supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();
|
||||
|
||||
var defineProperty = function (object, name, value, predicate) {
|
||||
if (name in object && (!isFunction(predicate) || !predicate())) {
|
||||
return;
|
||||
}
|
||||
if (supportsDescriptors) {
|
||||
Object.defineProperty(object, name, {
|
||||
configurable: true,
|
||||
enumerable: false,
|
||||
value: value,
|
||||
writable: true
|
||||
});
|
||||
} else {
|
||||
object[name] = value;
|
||||
}
|
||||
};
|
||||
|
||||
var defineProperties = function (object, map) {
|
||||
var predicates = arguments.length > 2 ? arguments[2] : {};
|
||||
var props = keys(map);
|
||||
if (hasSymbols) {
|
||||
props = props.concat(Object.getOwnPropertySymbols(map));
|
||||
}
|
||||
foreach(props, function (name) {
|
||||
defineProperty(object, name, map[name], predicates[name]);
|
||||
});
|
||||
};
|
||||
|
||||
defineProperties.supportsDescriptors = !!supportsDescriptors;
|
||||
|
||||
module.exports = defineProperties;
|
97
node_modules/define-properties/package.json
generated
vendored
Normal file
97
node_modules/define-properties/package.json
generated
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
{
|
||||
"_from": "define-properties@^1.1.2",
|
||||
"_id": "define-properties@1.1.2",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
|
||||
"_location": "/define-properties",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "define-properties@^1.1.2",
|
||||
"name": "define-properties",
|
||||
"escapedName": "define-properties",
|
||||
"rawSpec": "^1.1.2",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^1.1.2"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/object.getownpropertydescriptors",
|
||||
"/util.promisify"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
|
||||
"_shasum": "83a73f2fea569898fb737193c8f873caf6d45c94",
|
||||
"_spec": "define-properties@^1.1.2",
|
||||
"_where": "/home/s2/Documents/Code/minifyfromhtml/node_modules/util.promisify",
|
||||
"author": {
|
||||
"name": "Jordan Harband"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/ljharb/define-properties/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"dependencies": {
|
||||
"foreach": "^2.0.5",
|
||||
"object-keys": "^1.0.8"
|
||||
},
|
||||
"deprecated": false,
|
||||
"description": "Define multiple non-enumerable properties at once. Uses `Object.defineProperty` when available; falls back to standard assignment in older engines.",
|
||||
"devDependencies": {
|
||||
"@ljharb/eslint-config": "^1.3.0",
|
||||
"covert": "^1.1.0",
|
||||
"editorconfig-tools": "^0.1.1",
|
||||
"eslint": "^1.6.0",
|
||||
"jscs": "^2.3.1",
|
||||
"nsp": "^1.1.0",
|
||||
"tape": "^4.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"homepage": "https://github.com/ljharb/define-properties#readme",
|
||||
"keywords": [
|
||||
"Object.defineProperty",
|
||||
"Object.defineProperties",
|
||||
"object",
|
||||
"property descriptor",
|
||||
"descriptor",
|
||||
"define",
|
||||
"ES5"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"name": "define-properties",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/ljharb/define-properties.git"
|
||||
},
|
||||
"scripts": {
|
||||
"coverage": "covert test/*.js",
|
||||
"coverage-quiet": "covert test/*.js --quiet",
|
||||
"eccheck": "editorconfig-tools check *.js **/*.js > /dev/null",
|
||||
"eslint": "eslint test/*.js *.js",
|
||||
"jscs": "jscs test/*.js *.js",
|
||||
"lint": "npm run jscs && npm run eslint",
|
||||
"security": "nsp package",
|
||||
"test": "npm run lint && node test/index.js && npm run security"
|
||||
},
|
||||
"testling": {
|
||||
"files": "test/index.js",
|
||||
"browsers": [
|
||||
"iexplore/6.0..latest",
|
||||
"firefox/3.0..6.0",
|
||||
"firefox/15.0..latest",
|
||||
"firefox/nightly",
|
||||
"chrome/4.0..10.0",
|
||||
"chrome/20.0..latest",
|
||||
"chrome/canary",
|
||||
"opera/10.0..latest",
|
||||
"opera/next",
|
||||
"safari/4.0..latest",
|
||||
"ipad/6.0..latest",
|
||||
"iphone/6.0..latest",
|
||||
"android-browser/4.2"
|
||||
]
|
||||
},
|
||||
"version": "1.1.2"
|
||||
}
|
126
node_modules/define-properties/test/index.js
generated
vendored
Normal file
126
node_modules/define-properties/test/index.js
generated
vendored
Normal file
@@ -0,0 +1,126 @@
|
||||
'use strict';
|
||||
|
||||
var define = require('../');
|
||||
var test = require('tape');
|
||||
var keys = require('object-keys');
|
||||
|
||||
var arePropertyDescriptorsSupported = function () {
|
||||
var obj = { a: 1 };
|
||||
try {
|
||||
Object.defineProperty(obj, 'x', { value: obj });
|
||||
return obj.x === obj;
|
||||
} catch (e) { /* this is IE 8. */
|
||||
return false;
|
||||
}
|
||||
};
|
||||
var descriptorsSupported = !!Object.defineProperty && arePropertyDescriptorsSupported();
|
||||
|
||||
var hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';
|
||||
|
||||
test('defineProperties', function (dt) {
|
||||
|
||||
dt.test('with descriptor support', { skip: !descriptorsSupported }, function (t) {
|
||||
var getDescriptor = function (value) {
|
||||
return {
|
||||
configurable: true,
|
||||
enumerable: false,
|
||||
value: value,
|
||||
writable: true
|
||||
};
|
||||
};
|
||||
|
||||
var obj = {
|
||||
a: 1,
|
||||
b: 2,
|
||||
c: 3
|
||||
};
|
||||
t.deepEqual(keys(obj), ['a', 'b', 'c'], 'all literal-set keys start enumerable');
|
||||
define(obj, {
|
||||
b: 3,
|
||||
c: 4,
|
||||
d: 5
|
||||
});
|
||||
t.deepEqual(obj, {
|
||||
a: 1,
|
||||
b: 2,
|
||||
c: 3
|
||||
}, 'existing properties were not overridden');
|
||||
t.deepEqual(Object.getOwnPropertyDescriptor(obj, 'd'), getDescriptor(5), 'new property "d" was added and is not enumerable');
|
||||
t.deepEqual(['a', 'b', 'c'], keys(obj), 'new keys are not enumerable');
|
||||
|
||||
define(obj, {
|
||||
a: 2,
|
||||
b: 3,
|
||||
c: 4
|
||||
}, {
|
||||
a: function () { return true; },
|
||||
b: function () { return false; }
|
||||
});
|
||||
t.deepEqual(obj, {
|
||||
b: 2,
|
||||
c: 3
|
||||
}, 'properties only overriden when predicate exists and returns true');
|
||||
t.deepEqual(Object.getOwnPropertyDescriptor(obj, 'd'), getDescriptor(5), 'existing property "d" remained and is not enumerable');
|
||||
t.deepEqual(Object.getOwnPropertyDescriptor(obj, 'a'), getDescriptor(2), 'existing property "a" was overridden and is not enumerable');
|
||||
t.deepEqual(['b', 'c'], keys(obj), 'overridden keys are not enumerable');
|
||||
|
||||
t.end();
|
||||
});
|
||||
|
||||
dt.test('without descriptor support', { skip: descriptorsSupported }, function (t) {
|
||||
var obj = {
|
||||
a: 1,
|
||||
b: 2,
|
||||
c: 3
|
||||
};
|
||||
define(obj, {
|
||||
b: 3,
|
||||
c: 4,
|
||||
d: 5
|
||||
});
|
||||
t.deepEqual(obj, {
|
||||
a: 1,
|
||||
b: 2,
|
||||
c: 3,
|
||||
d: 5
|
||||
}, 'existing properties were not overridden, new properties were added');
|
||||
|
||||
define(obj, {
|
||||
a: 2,
|
||||
b: 3,
|
||||
c: 4
|
||||
}, {
|
||||
a: function () { return true; },
|
||||
b: function () { return false; }
|
||||
});
|
||||
t.deepEqual(obj, {
|
||||
a: 2,
|
||||
b: 2,
|
||||
c: 3,
|
||||
d: 5
|
||||
}, 'properties only overriden when predicate exists and returns true');
|
||||
|
||||
t.end();
|
||||
});
|
||||
|
||||
dt.end();
|
||||
});
|
||||
|
||||
test('symbols', { skip: !hasSymbols }, function (t) {
|
||||
var sym = Symbol('foo');
|
||||
var obj = {};
|
||||
var aValue = {};
|
||||
var bValue = {};
|
||||
var properties = { a: aValue };
|
||||
properties[sym] = bValue;
|
||||
|
||||
define(obj, properties);
|
||||
|
||||
t.deepEqual(Object.keys(obj), [], 'object has no enumerable keys');
|
||||
t.deepEqual(Object.getOwnPropertyNames(obj), ['a'], 'object has non-enumerable "a" key');
|
||||
t.deepEqual(Object.getOwnPropertySymbols(obj), [sym], 'object has non-enumerable symbol key');
|
||||
t.equal(obj.a, aValue, 'string keyed value is defined');
|
||||
t.equal(obj[sym], bValue, 'symbol keyed value is defined');
|
||||
|
||||
t.end();
|
||||
});
|
Reference in New Issue
Block a user