cdk-common 2.0.1040 → 2.0.1041
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +8 -2
- package/API.md +6 -0
- package/lib/main.js +1 -1
- package/lib/managed-policies.d.ts +2 -1
- package/lib/managed-policies.js +2 -1
- package/node_modules/@types/concat-stream/node_modules/@types/node/README.md +2 -2
- package/node_modules/@types/concat-stream/node_modules/@types/node/package.json +2 -7
- package/node_modules/@types/form-data/node_modules/@types/node/README.md +2 -2
- package/node_modules/@types/form-data/node_modules/@types/node/package.json +2 -7
- package/node_modules/call-bound/.eslintrc +13 -0
- package/node_modules/call-bound/.github/FUNDING.yml +12 -0
- package/node_modules/call-bound/.nycrc +9 -0
- package/node_modules/call-bound/CHANGELOG.md +25 -0
- package/node_modules/call-bound/LICENSE +21 -0
- package/node_modules/call-bound/README.md +53 -0
- package/node_modules/call-bound/index.d.ts +5 -0
- package/node_modules/call-bound/index.js +18 -0
- package/node_modules/call-bound/package.json +98 -0
- package/node_modules/call-bound/test/index.js +54 -0
- package/node_modules/call-bound/tsconfig.json +9 -0
- package/node_modules/es-object-atoms/.eslintrc +16 -0
- package/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
- package/node_modules/es-object-atoms/CHANGELOG.md +16 -0
- package/node_modules/es-object-atoms/LICENSE +21 -0
- package/node_modules/es-object-atoms/README.md +56 -0
- package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
- package/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
- package/node_modules/es-object-atoms/ToObject.d.ts +3 -0
- package/node_modules/es-object-atoms/ToObject.js +10 -0
- package/node_modules/es-object-atoms/index.d.ts +3 -0
- package/node_modules/es-object-atoms/index.js +4 -0
- package/node_modules/es-object-atoms/package.json +79 -0
- package/node_modules/es-object-atoms/test/index.js +28 -0
- package/node_modules/es-object-atoms/tsconfig.json +6 -0
- package/node_modules/get-intrinsic/CHANGELOG.md +9 -0
- package/node_modules/get-intrinsic/index.js +16 -3
- package/node_modules/get-intrinsic/package.json +6 -4
- package/node_modules/math-intrinsics/.eslintrc +16 -0
- package/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
- package/node_modules/math-intrinsics/CHANGELOG.md +16 -0
- package/node_modules/math-intrinsics/LICENSE +21 -0
- package/node_modules/math-intrinsics/README.md +49 -0
- package/node_modules/math-intrinsics/abs.d.ts +1 -0
- package/node_modules/math-intrinsics/abs.js +4 -0
- package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
- package/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
- package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
- package/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
- package/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
- package/node_modules/math-intrinsics/constants/maxValue.js +5 -0
- package/node_modules/math-intrinsics/floor.d.ts +1 -0
- package/node_modules/math-intrinsics/floor.js +4 -0
- package/node_modules/math-intrinsics/isFinite.d.ts +3 -0
- package/node_modules/math-intrinsics/isFinite.js +12 -0
- package/node_modules/math-intrinsics/isInteger.d.ts +3 -0
- package/node_modules/math-intrinsics/isInteger.js +16 -0
- package/node_modules/math-intrinsics/isNaN.d.ts +1 -0
- package/node_modules/math-intrinsics/isNaN.js +6 -0
- package/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
- package/node_modules/math-intrinsics/isNegativeZero.js +6 -0
- package/node_modules/math-intrinsics/max.d.ts +1 -0
- package/node_modules/math-intrinsics/max.js +4 -0
- package/node_modules/math-intrinsics/min.d.ts +1 -0
- package/node_modules/math-intrinsics/min.js +4 -0
- package/node_modules/math-intrinsics/mod.d.ts +3 -0
- package/node_modules/math-intrinsics/mod.js +9 -0
- package/node_modules/math-intrinsics/package.json +85 -0
- package/node_modules/math-intrinsics/pow.d.ts +1 -0
- package/node_modules/math-intrinsics/pow.js +4 -0
- package/node_modules/math-intrinsics/sign.d.ts +3 -0
- package/node_modules/math-intrinsics/sign.js +11 -0
- package/node_modules/math-intrinsics/test/index.js +183 -0
- package/node_modules/math-intrinsics/tsconfig.json +3 -0
- package/node_modules/side-channel/.eslintrc +1 -0
- package/node_modules/side-channel/CHANGELOG.md +15 -0
- package/node_modules/side-channel/README.md +60 -1
- package/node_modules/side-channel/index.d.ts +9 -22
- package/node_modules/side-channel/index.js +20 -106
- package/node_modules/side-channel/package.json +20 -19
- package/node_modules/side-channel/test/index.js +76 -55
- package/node_modules/side-channel/tsconfig.json +2 -43
- package/node_modules/side-channel-list/.editorconfig +9 -0
- package/node_modules/side-channel-list/.eslintrc +11 -0
- package/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel-list/.nycrc +13 -0
- package/node_modules/side-channel-list/CHANGELOG.md +15 -0
- package/node_modules/side-channel-list/LICENSE +21 -0
- package/node_modules/side-channel-list/README.md +62 -0
- package/node_modules/side-channel-list/index.d.ts +13 -0
- package/node_modules/side-channel-list/index.js +113 -0
- package/node_modules/side-channel-list/list.d.ts +14 -0
- package/node_modules/side-channel-list/package.json +77 -0
- package/node_modules/side-channel-list/test/index.js +104 -0
- package/node_modules/side-channel-list/tsconfig.json +9 -0
- package/node_modules/side-channel-map/.editorconfig +9 -0
- package/node_modules/side-channel-map/.eslintrc +11 -0
- package/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel-map/.nycrc +13 -0
- package/node_modules/side-channel-map/CHANGELOG.md +22 -0
- package/node_modules/side-channel-map/LICENSE +21 -0
- package/node_modules/side-channel-map/README.md +62 -0
- package/node_modules/side-channel-map/index.d.ts +15 -0
- package/node_modules/side-channel-map/index.js +68 -0
- package/node_modules/side-channel-map/package.json +80 -0
- package/node_modules/side-channel-map/test/index.js +114 -0
- package/node_modules/side-channel-map/tsconfig.json +9 -0
- package/node_modules/side-channel-weakmap/.editorconfig +9 -0
- package/node_modules/side-channel-weakmap/.eslintrc +12 -0
- package/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel-weakmap/.nycrc +13 -0
- package/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
- package/node_modules/side-channel-weakmap/LICENSE +21 -0
- package/node_modules/side-channel-weakmap/README.md +62 -0
- package/node_modules/side-channel-weakmap/index.d.ts +15 -0
- package/node_modules/side-channel-weakmap/index.js +84 -0
- package/node_modules/side-channel-weakmap/package.json +87 -0
- package/node_modules/side-channel-weakmap/test/index.js +114 -0
- package/node_modules/side-channel-weakmap/tsconfig.json +9 -0
- package/package.json +1 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# side-channel-weakmap <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
|
|
2
|
+
|
|
3
|
+
[![github actions][actions-image]][actions-url]
|
|
4
|
+
[![coverage][codecov-image]][codecov-url]
|
|
5
|
+
[![License][license-image]][license-url]
|
|
6
|
+
[![Downloads][downloads-image]][downloads-url]
|
|
7
|
+
|
|
8
|
+
[![npm badge][npm-badge-png]][package-url]
|
|
9
|
+
|
|
10
|
+
Store information about any JS value in a side channel. Uses WeakMap if available.
|
|
11
|
+
|
|
12
|
+
Warning: this implementation will leak memory until you `delete` the `key`.
|
|
13
|
+
Use [`side-channel`](https://npmjs.com/side-channel) for the best available strategy.
|
|
14
|
+
|
|
15
|
+
## Getting started
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
npm install --save side-channel-weakmap
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Usage/Examples
|
|
22
|
+
|
|
23
|
+
```js
|
|
24
|
+
const assert = require('assert');
|
|
25
|
+
const getSideChannelList = require('side-channel-weakmap');
|
|
26
|
+
|
|
27
|
+
const channel = getSideChannelList();
|
|
28
|
+
|
|
29
|
+
const key = {};
|
|
30
|
+
assert.equal(channel.has(key), false);
|
|
31
|
+
assert.throws(() => channel.assert(key), TypeError);
|
|
32
|
+
|
|
33
|
+
channel.set(key, 42);
|
|
34
|
+
|
|
35
|
+
channel.assert(key); // does not throw
|
|
36
|
+
assert.equal(channel.has(key), true);
|
|
37
|
+
assert.equal(channel.get(key), 42);
|
|
38
|
+
|
|
39
|
+
channel.delete(key);
|
|
40
|
+
assert.equal(channel.has(key), false);
|
|
41
|
+
assert.throws(() => channel.assert(key), TypeError);
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Tests
|
|
45
|
+
|
|
46
|
+
Clone the repo, `npm install`, and run `npm test`
|
|
47
|
+
|
|
48
|
+
[package-url]: https://npmjs.org/package/side-channel-weakmap
|
|
49
|
+
[npm-version-svg]: https://versionbadg.es/ljharb/side-channel-weakmap.svg
|
|
50
|
+
[deps-svg]: https://david-dm.org/ljharb/side-channel-weakmap.svg
|
|
51
|
+
[deps-url]: https://david-dm.org/ljharb/side-channel-weakmap
|
|
52
|
+
[dev-deps-svg]: https://david-dm.org/ljharb/side-channel-weakmap/dev-status.svg
|
|
53
|
+
[dev-deps-url]: https://david-dm.org/ljharb/side-channel-weakmap#info=devDependencies
|
|
54
|
+
[npm-badge-png]: https://nodei.co/npm/side-channel-weakmap.png?downloads=true&stars=true
|
|
55
|
+
[license-image]: https://img.shields.io/npm/l/side-channel-weakmap.svg
|
|
56
|
+
[license-url]: LICENSE
|
|
57
|
+
[downloads-image]: https://img.shields.io/npm/dm/side-channel-weakmap.svg
|
|
58
|
+
[downloads-url]: https://npm-stat.com/charts.html?package=side-channel-weakmap
|
|
59
|
+
[codecov-image]: https://codecov.io/gh/ljharb/side-channel-weakmap/branch/main/graphs/badge.svg
|
|
60
|
+
[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel-weakmap/
|
|
61
|
+
[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel-weakmap
|
|
62
|
+
[actions-url]: https://github.com/ljharb/side-channel-weakmap/actions
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
declare namespace getSideChannelWeakMap {
|
|
2
|
+
type Channel<K, V> = {
|
|
3
|
+
assert: (key: K) => void;
|
|
4
|
+
has: (key: K) => boolean;
|
|
5
|
+
get: (key: K) => V | undefined;
|
|
6
|
+
set: (key: K, value: V) => void;
|
|
7
|
+
delete: (key: K) => boolean;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
declare function getSideChannelWeakMap<K, V>(): getSideChannelWeakMap.Channel<K, V>;
|
|
12
|
+
|
|
13
|
+
declare const x: false | typeof getSideChannelWeakMap;
|
|
14
|
+
|
|
15
|
+
export = x;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var GetIntrinsic = require('get-intrinsic');
|
|
4
|
+
var callBound = require('call-bound');
|
|
5
|
+
var inspect = require('object-inspect');
|
|
6
|
+
var getSideChannelMap = require('side-channel-map');
|
|
7
|
+
|
|
8
|
+
var $TypeError = require('es-errors/type');
|
|
9
|
+
var $WeakMap = GetIntrinsic('%WeakMap%', true);
|
|
10
|
+
|
|
11
|
+
/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => V} */
|
|
12
|
+
var $weakMapGet = callBound('WeakMap.prototype.get', true);
|
|
13
|
+
/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K, value: V) => void} */
|
|
14
|
+
var $weakMapSet = callBound('WeakMap.prototype.set', true);
|
|
15
|
+
/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */
|
|
16
|
+
var $weakMapHas = callBound('WeakMap.prototype.has', true);
|
|
17
|
+
/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */
|
|
18
|
+
var $weakMapDelete = callBound('WeakMap.prototype.delete', true);
|
|
19
|
+
|
|
20
|
+
/** @type {import('.')} */
|
|
21
|
+
module.exports = $WeakMap
|
|
22
|
+
? /** @type {Exclude<import('.'), false>} */ function getSideChannelWeakMap() {
|
|
23
|
+
/** @typedef {ReturnType<typeof getSideChannelWeakMap>} Channel */
|
|
24
|
+
/** @typedef {Parameters<Channel['get']>[0]} K */
|
|
25
|
+
/** @typedef {Parameters<Channel['set']>[1]} V */
|
|
26
|
+
|
|
27
|
+
/** @type {WeakMap<K & object, V> | undefined} */ var $wm;
|
|
28
|
+
/** @type {Channel | undefined} */ var $m;
|
|
29
|
+
|
|
30
|
+
/** @type {Channel} */
|
|
31
|
+
var channel = {
|
|
32
|
+
assert: function (key) {
|
|
33
|
+
if (!channel.has(key)) {
|
|
34
|
+
throw new $TypeError('Side channel does not contain ' + inspect(key));
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
'delete': function (key) {
|
|
38
|
+
if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
|
|
39
|
+
if ($wm) {
|
|
40
|
+
return $weakMapDelete($wm, key);
|
|
41
|
+
}
|
|
42
|
+
} else if (getSideChannelMap) {
|
|
43
|
+
if ($m) {
|
|
44
|
+
return $m['delete'](key);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
},
|
|
49
|
+
get: function (key) {
|
|
50
|
+
if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
|
|
51
|
+
if ($wm) {
|
|
52
|
+
return $weakMapGet($wm, key);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return $m && $m.get(key);
|
|
56
|
+
},
|
|
57
|
+
has: function (key) {
|
|
58
|
+
if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
|
|
59
|
+
if ($wm) {
|
|
60
|
+
return $weakMapHas($wm, key);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return !!$m && $m.has(key);
|
|
64
|
+
},
|
|
65
|
+
set: function (key, value) {
|
|
66
|
+
if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
|
|
67
|
+
if (!$wm) {
|
|
68
|
+
$wm = new $WeakMap();
|
|
69
|
+
}
|
|
70
|
+
$weakMapSet($wm, key, value);
|
|
71
|
+
} else if (getSideChannelMap) {
|
|
72
|
+
if (!$m) {
|
|
73
|
+
$m = getSideChannelMap();
|
|
74
|
+
}
|
|
75
|
+
// eslint-disable-next-line no-extra-parens
|
|
76
|
+
/** @type {NonNullable<typeof $m>} */ ($m).set(key, value);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// @ts-expect-error TODO: figure out why this is erroring
|
|
82
|
+
return channel;
|
|
83
|
+
}
|
|
84
|
+
: getSideChannelMap;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "side-channel-weakmap",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "Store information about any JS value in a side channel. Uses WeakMap if available.",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": "./index.js",
|
|
8
|
+
"./package.json": "./package.json"
|
|
9
|
+
},
|
|
10
|
+
"types": "./index.d.ts",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"prepack": "npmignore --auto --commentLines=autogenerated",
|
|
13
|
+
"prepublishOnly": "safe-publish-latest",
|
|
14
|
+
"prepublish": "not-in-publish || npm run prepublishOnly",
|
|
15
|
+
"prelint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')",
|
|
16
|
+
"lint": "eslint --ext=js,mjs .",
|
|
17
|
+
"postlint": "tsc -p . && attw -P",
|
|
18
|
+
"pretest": "npm run lint",
|
|
19
|
+
"tests-only": "nyc tape 'test/**/*.js'",
|
|
20
|
+
"test": "npm run tests-only",
|
|
21
|
+
"posttest": "npx npm@'>=10.2' audit --production",
|
|
22
|
+
"version": "auto-changelog && git add CHANGELOG.md",
|
|
23
|
+
"postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
|
|
24
|
+
},
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "git+https://github.com/ljharb/side-channel-weakmap.git"
|
|
28
|
+
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"weakmap",
|
|
31
|
+
"map",
|
|
32
|
+
"side",
|
|
33
|
+
"channel",
|
|
34
|
+
"metadata"
|
|
35
|
+
],
|
|
36
|
+
"author": "Jordan Harband <ljharb@gmail.com>",
|
|
37
|
+
"funding": {
|
|
38
|
+
"url": "https://github.com/sponsors/ljharb"
|
|
39
|
+
},
|
|
40
|
+
"license": "MIT",
|
|
41
|
+
"bugs": {
|
|
42
|
+
"url": "https://github.com/ljharb/side-channel-weakmap/issues"
|
|
43
|
+
},
|
|
44
|
+
"homepage": "https://github.com/ljharb/side-channel-weakmap#readme",
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"call-bound": "^1.0.2",
|
|
47
|
+
"es-errors": "^1.3.0",
|
|
48
|
+
"get-intrinsic": "^1.2.5",
|
|
49
|
+
"object-inspect": "^1.13.3",
|
|
50
|
+
"side-channel-map": "^1.0.1"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@arethetypeswrong/cli": "^0.17.1",
|
|
54
|
+
"@ljharb/eslint-config": "^21.1.1",
|
|
55
|
+
"@ljharb/tsconfig": "^0.2.2",
|
|
56
|
+
"@types/call-bind": "^1.0.5",
|
|
57
|
+
"@types/get-intrinsic": "^1.2.3",
|
|
58
|
+
"@types/object-inspect": "^1.13.0",
|
|
59
|
+
"@types/tape": "^5.6.5",
|
|
60
|
+
"auto-changelog": "^2.5.0",
|
|
61
|
+
"eclint": "^2.8.1",
|
|
62
|
+
"encoding": "^0.1.13",
|
|
63
|
+
"eslint": "=8.8.0",
|
|
64
|
+
"in-publish": "^2.0.1",
|
|
65
|
+
"npmignore": "^0.3.1",
|
|
66
|
+
"nyc": "^10.3.2",
|
|
67
|
+
"safe-publish-latest": "^2.0.0",
|
|
68
|
+
"tape": "^5.9.0",
|
|
69
|
+
"typescript": "next"
|
|
70
|
+
},
|
|
71
|
+
"auto-changelog": {
|
|
72
|
+
"output": "CHANGELOG.md",
|
|
73
|
+
"template": "keepachangelog",
|
|
74
|
+
"unreleased": false,
|
|
75
|
+
"commitLimit": false,
|
|
76
|
+
"backfillLimit": false,
|
|
77
|
+
"hideCredit": true
|
|
78
|
+
},
|
|
79
|
+
"publishConfig": {
|
|
80
|
+
"ignore": [
|
|
81
|
+
".github/workflows"
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
"engines": {
|
|
85
|
+
"node": ">= 0.4"
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('tape');
|
|
4
|
+
|
|
5
|
+
var getSideChannelWeakMap = require('../');
|
|
6
|
+
|
|
7
|
+
test('getSideChannelMap', { skip: typeof WeakMap !== 'function' && typeof Map !== 'function' }, function (t) {
|
|
8
|
+
var getSideChannel = getSideChannelWeakMap || function () {
|
|
9
|
+
throw new EvalError('should never happen');
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
t.test('export', function (st) {
|
|
13
|
+
st.equal(typeof getSideChannel, 'function', 'is a function');
|
|
14
|
+
|
|
15
|
+
st.equal(getSideChannel.length, 0, 'takes no arguments');
|
|
16
|
+
|
|
17
|
+
var channel = getSideChannel();
|
|
18
|
+
st.ok(channel, 'is truthy');
|
|
19
|
+
st.equal(typeof channel, 'object', 'is an object');
|
|
20
|
+
st.end();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
t.test('assert', function (st) {
|
|
24
|
+
var channel = getSideChannel();
|
|
25
|
+
st['throws'](
|
|
26
|
+
function () { channel.assert({}); },
|
|
27
|
+
TypeError,
|
|
28
|
+
'nonexistent value throws'
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
var o = {};
|
|
32
|
+
channel.set(o, 'data');
|
|
33
|
+
st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops');
|
|
34
|
+
|
|
35
|
+
st.end();
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
t.test('has', function (st) {
|
|
39
|
+
var channel = getSideChannel();
|
|
40
|
+
/** @type {unknown[]} */ var o = [];
|
|
41
|
+
|
|
42
|
+
st.equal(channel.has(o), false, 'nonexistent value yields false');
|
|
43
|
+
|
|
44
|
+
channel.set(o, 'foo');
|
|
45
|
+
st.equal(channel.has(o), true, 'existent value yields true');
|
|
46
|
+
|
|
47
|
+
st.equal(channel.has('abc'), false, 'non object value non existent yields false');
|
|
48
|
+
|
|
49
|
+
channel.set('abc', 'foo');
|
|
50
|
+
st.equal(channel.has('abc'), true, 'non object value that exists yields true');
|
|
51
|
+
|
|
52
|
+
st.end();
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
t.test('get', function (st) {
|
|
56
|
+
var channel = getSideChannel();
|
|
57
|
+
var o = {};
|
|
58
|
+
st.equal(channel.get(o), undefined, 'nonexistent value yields undefined');
|
|
59
|
+
|
|
60
|
+
var data = {};
|
|
61
|
+
channel.set(o, data);
|
|
62
|
+
st.equal(channel.get(o), data, '"get" yields data set by "set"');
|
|
63
|
+
|
|
64
|
+
st.end();
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
t.test('set', function (st) {
|
|
68
|
+
var channel = getSideChannel();
|
|
69
|
+
var o = function () {};
|
|
70
|
+
st.equal(channel.get(o), undefined, 'value not set');
|
|
71
|
+
|
|
72
|
+
channel.set(o, 42);
|
|
73
|
+
st.equal(channel.get(o), 42, 'value was set');
|
|
74
|
+
|
|
75
|
+
channel.set(o, Infinity);
|
|
76
|
+
st.equal(channel.get(o), Infinity, 'value was set again');
|
|
77
|
+
|
|
78
|
+
var o2 = {};
|
|
79
|
+
channel.set(o2, 17);
|
|
80
|
+
st.equal(channel.get(o), Infinity, 'o is not modified');
|
|
81
|
+
st.equal(channel.get(o2), 17, 'o2 is set');
|
|
82
|
+
|
|
83
|
+
channel.set(o, 14);
|
|
84
|
+
st.equal(channel.get(o), 14, 'o is modified');
|
|
85
|
+
st.equal(channel.get(o2), 17, 'o2 is not modified');
|
|
86
|
+
|
|
87
|
+
st.end();
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
t.test('delete', function (st) {
|
|
91
|
+
var channel = getSideChannel();
|
|
92
|
+
var o = {};
|
|
93
|
+
st.equal(channel['delete']({}), false, 'nonexistent value yields false');
|
|
94
|
+
|
|
95
|
+
channel.set(o, 42);
|
|
96
|
+
st.equal(channel.has(o), true, 'value is set');
|
|
97
|
+
|
|
98
|
+
st.equal(channel['delete']({}), false, 'nonexistent value still yields false');
|
|
99
|
+
|
|
100
|
+
st.equal(channel['delete'](o), true, 'deleted value yields true');
|
|
101
|
+
|
|
102
|
+
st.equal(channel.has(o), false, 'value is no longer set');
|
|
103
|
+
|
|
104
|
+
st.end();
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
t.end();
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
test('getSideChannelMap, no WeakMaps and/or Maps', { skip: typeof WeakMap === 'function' || typeof Map === 'function' }, function (t) {
|
|
111
|
+
t.equal(getSideChannelWeakMap, false, 'is false');
|
|
112
|
+
|
|
113
|
+
t.end();
|
|
114
|
+
});
|