node-red-contrib-web-worldmap 2.29.0 → 2.30.2
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/.github/FUNDING.yml +13 -0
- package/CHANGELOG.md +6 -2
- package/README.md +4 -10
- package/node_modules/array-flatten/package.json +6 -9
- package/node_modules/body-parser/HISTORY.md +18 -0
- package/node_modules/body-parser/README.md +9 -1
- package/node_modules/body-parser/SECURITY.md +25 -0
- package/node_modules/body-parser/lib/read.js +26 -2
- package/node_modules/body-parser/lib/types/json.js +10 -4
- package/node_modules/body-parser/package.json +24 -20
- package/node_modules/call-bind/.eslintignore +1 -0
- package/node_modules/call-bind/.eslintrc +17 -0
- package/node_modules/call-bind/.github/FUNDING.yml +12 -0
- package/node_modules/call-bind/.nycrc +13 -0
- package/node_modules/call-bind/CHANGELOG.md +42 -0
- package/node_modules/call-bind/LICENSE +21 -0
- package/node_modules/call-bind/README.md +2 -0
- package/node_modules/call-bind/callBound.js +15 -0
- package/node_modules/call-bind/index.js +47 -0
- package/node_modules/call-bind/package.json +108 -0
- package/node_modules/call-bind/test/callBound.js +55 -0
- package/node_modules/call-bind/test/index.js +66 -0
- package/node_modules/cookie/HISTORY.md +8 -0
- package/node_modules/cookie/README.md +50 -34
- package/node_modules/cookie/SECURITY.md +25 -0
- package/node_modules/cookie/index.js +83 -15
- package/node_modules/cookie/package.json +17 -15
- package/node_modules/cookie-signature/package.json +6 -9
- package/node_modules/depd/History.md +7 -0
- package/node_modules/depd/LICENSE +1 -1
- package/node_modules/depd/Readme.md +8 -8
- package/node_modules/depd/index.js +29 -13
- package/node_modules/depd/package.json +25 -24
- package/node_modules/destroy/LICENSE +1 -0
- package/node_modules/destroy/README.md +15 -12
- package/node_modules/destroy/index.js +147 -13
- package/node_modules/destroy/package.json +29 -20
- package/node_modules/ee-first/package.json +6 -9
- package/node_modules/encodeurl/package.json +11 -14
- package/node_modules/escape-html/package.json +11 -14
- package/node_modules/etag/package.json +11 -14
- package/node_modules/express/History.md +54 -0
- package/node_modules/express/Readme.md +39 -31
- package/node_modules/express/lib/application.js +18 -1
- package/node_modules/express/lib/response.js +40 -18
- package/node_modules/express/lib/router/index.js +20 -15
- package/node_modules/express/lib/router/route.js +9 -0
- package/node_modules/express/lib/utils.js +1 -0
- package/node_modules/express/lib/view.js +1 -1
- package/node_modules/express/package.json +25 -26
- package/node_modules/finalhandler/HISTORY.md +8 -0
- package/node_modules/finalhandler/LICENSE +1 -1
- package/node_modules/finalhandler/README.md +5 -6
- package/node_modules/finalhandler/SECURITY.md +25 -0
- package/node_modules/finalhandler/index.js +8 -3
- package/node_modules/finalhandler/package.json +30 -32
- package/node_modules/fresh/package.json +6 -9
- package/node_modules/function-bind/.editorconfig +20 -0
- package/node_modules/function-bind/.eslintrc +15 -0
- package/node_modules/function-bind/.jscs.json +176 -0
- package/node_modules/function-bind/.npmignore +22 -0
- package/node_modules/function-bind/.travis.yml +168 -0
- package/node_modules/function-bind/LICENSE +20 -0
- package/node_modules/function-bind/README.md +48 -0
- package/node_modules/function-bind/implementation.js +52 -0
- package/node_modules/function-bind/index.js +5 -0
- package/node_modules/function-bind/package.json +96 -0
- package/node_modules/function-bind/test/.eslintrc +9 -0
- package/node_modules/function-bind/test/index.js +252 -0
- package/node_modules/get-intrinsic/.eslintrc +37 -0
- package/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
- package/node_modules/get-intrinsic/.nycrc +9 -0
- package/node_modules/get-intrinsic/CHANGELOG.md +98 -0
- package/node_modules/get-intrinsic/LICENSE +21 -0
- package/node_modules/get-intrinsic/README.md +71 -0
- package/node_modules/get-intrinsic/index.js +334 -0
- package/node_modules/get-intrinsic/package.json +120 -0
- package/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
- package/node_modules/has/LICENSE-MIT +22 -0
- package/node_modules/has/README.md +18 -0
- package/node_modules/has/package.json +73 -0
- package/node_modules/has/src/index.js +5 -0
- package/node_modules/has/test/index.js +10 -0
- package/node_modules/has-symbols/.eslintrc +11 -0
- package/node_modules/has-symbols/.github/FUNDING.yml +12 -0
- package/node_modules/has-symbols/.nycrc +9 -0
- package/node_modules/has-symbols/CHANGELOG.md +75 -0
- package/node_modules/has-symbols/LICENSE +21 -0
- package/node_modules/has-symbols/README.md +46 -0
- package/node_modules/has-symbols/index.js +13 -0
- package/node_modules/has-symbols/package.json +126 -0
- package/node_modules/has-symbols/shams.js +42 -0
- package/node_modules/has-symbols/test/index.js +22 -0
- package/node_modules/has-symbols/test/shams/core-js.js +28 -0
- package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +28 -0
- package/node_modules/has-symbols/test/tests.js +56 -0
- package/node_modules/http-errors/HISTORY.md +15 -0
- package/node_modules/http-errors/README.md +2 -2
- package/node_modules/http-errors/index.js +15 -25
- package/node_modules/http-errors/package.json +22 -20
- package/node_modules/media-typer/package.json +6 -9
- package/node_modules/merge-descriptors/package.json +6 -9
- package/node_modules/methods/package.json +11 -14
- package/node_modules/object-inspect/.eslintrc +53 -0
- package/node_modules/object-inspect/.github/FUNDING.yml +12 -0
- package/node_modules/object-inspect/.nycrc +13 -0
- package/node_modules/object-inspect/CHANGELOG.md +360 -0
- package/node_modules/object-inspect/LICENSE +21 -0
- package/node_modules/object-inspect/example/all.js +23 -0
- package/node_modules/object-inspect/example/circular.js +6 -0
- package/node_modules/object-inspect/example/fn.js +5 -0
- package/node_modules/object-inspect/example/inspect.js +10 -0
- package/node_modules/object-inspect/index.js +512 -0
- package/node_modules/object-inspect/package-support.json +20 -0
- package/node_modules/object-inspect/package.json +122 -0
- package/node_modules/object-inspect/readme.markdown +86 -0
- package/node_modules/object-inspect/test/bigint.js +58 -0
- package/node_modules/object-inspect/test/browser/dom.js +15 -0
- package/node_modules/object-inspect/test/circular.js +16 -0
- package/node_modules/object-inspect/test/deep.js +12 -0
- package/node_modules/object-inspect/test/element.js +53 -0
- package/node_modules/object-inspect/test/err.js +48 -0
- package/node_modules/object-inspect/test/fakes.js +29 -0
- package/node_modules/object-inspect/test/fn.js +76 -0
- package/node_modules/object-inspect/test/has.js +15 -0
- package/node_modules/object-inspect/test/holes.js +15 -0
- package/node_modules/object-inspect/test/indent-option.js +271 -0
- package/node_modules/object-inspect/test/inspect.js +139 -0
- package/node_modules/object-inspect/test/lowbyte.js +12 -0
- package/node_modules/object-inspect/test/number.js +58 -0
- package/node_modules/object-inspect/test/quoteStyle.js +17 -0
- package/node_modules/object-inspect/test/toStringTag.js +40 -0
- package/node_modules/object-inspect/test/undef.js +12 -0
- package/node_modules/object-inspect/test/values.js +211 -0
- package/node_modules/object-inspect/test-core-js.js +26 -0
- package/node_modules/object-inspect/util.inspect.js +1 -0
- package/node_modules/on-finished/HISTORY.md +10 -0
- package/node_modules/on-finished/README.md +28 -20
- package/node_modules/on-finished/index.js +51 -13
- package/node_modules/on-finished/package.json +25 -20
- package/node_modules/path-to-regexp/package.json +6 -9
- package/node_modules/qs/CHANGELOG.md +22 -5
- package/node_modules/qs/README.md +7 -0
- package/node_modules/qs/dist/qs.js +1207 -5
- package/node_modules/qs/lib/parse.js +6 -0
- package/node_modules/qs/lib/stringify.js +33 -3
- package/node_modules/qs/package.json +16 -13
- package/node_modules/qs/test/parse.js +9 -0
- package/node_modules/qs/test/stringify.js +62 -1
- package/node_modules/raw-body/HISTORY.md +14 -0
- package/node_modules/raw-body/LICENSE +1 -1
- package/node_modules/raw-body/README.md +4 -0
- package/node_modules/raw-body/SECURITY.md +24 -0
- package/node_modules/raw-body/index.js +45 -2
- package/node_modules/raw-body/package.json +16 -15
- package/node_modules/send/HISTORY.md +15 -0
- package/node_modules/send/LICENSE +1 -1
- package/node_modules/send/README.md +2 -2
- package/node_modules/send/SECURITY.md +24 -0
- package/node_modules/send/index.js +37 -27
- package/node_modules/send/package.json +22 -21
- package/node_modules/serve-static/HISTORY.md +12 -0
- package/node_modules/serve-static/README.md +1 -1
- package/node_modules/serve-static/package.json +16 -16
- package/node_modules/side-channel/.eslintignore +1 -0
- package/node_modules/side-channel/.eslintrc +11 -0
- package/node_modules/side-channel/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel/.nycrc +13 -0
- package/node_modules/side-channel/CHANGELOG.md +65 -0
- package/node_modules/side-channel/LICENSE +21 -0
- package/node_modules/side-channel/README.md +2 -0
- package/node_modules/side-channel/index.js +124 -0
- package/node_modules/side-channel/package.json +95 -0
- package/node_modules/side-channel/test/index.js +78 -0
- package/node_modules/statuses/HISTORY.md +17 -0
- package/node_modules/statuses/README.md +51 -42
- package/node_modules/statuses/codes.json +2 -3
- package/node_modules/statuses/index.js +52 -19
- package/node_modules/statuses/package.json +29 -31
- package/node_modules/unpipe/package.json +7 -9
- package/node_modules/utils-merge/package.json +6 -9
- package/package.json +2 -2
- package/worldmap/worldmap.js +22 -7
- package/worldmap.html +17 -1
- package/worldmap.js +553 -551
- package/node_modules/depd/lib/compat/callsite-tostring.js +0 -103
- package/node_modules/depd/lib/compat/event-listener-count.js +0 -22
- package/node_modules/depd/lib/compat/index.js +0 -79
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# These are supported funding model platforms
|
|
2
|
+
|
|
3
|
+
github: [ljharb]
|
|
4
|
+
patreon: # Replace with a single Patreon username
|
|
5
|
+
open_collective: # Replace with a single Open Collective username
|
|
6
|
+
ko_fi: # Replace with a single Ko-fi username
|
|
7
|
+
tidelift: npm/get-intrinsic
|
|
8
|
+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
|
9
|
+
liberapay: # Replace with a single Liberapay username
|
|
10
|
+
issuehunt: # Replace with a single IssueHunt username
|
|
11
|
+
otechie: # Replace with a single Otechie username
|
|
12
|
+
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [v1.1.3](https://github.com/ljharb/get-intrinsic/compare/v1.1.2...v1.1.3) - 2022-09-12
|
|
9
|
+
|
|
10
|
+
### Commits
|
|
11
|
+
|
|
12
|
+
- [Dev Deps] update `es-abstract`, `es-value-fixtures`, `tape` [`07ff291`](https://github.com/ljharb/get-intrinsic/commit/07ff291816406ebe5a12d7f16965bde0942dd688)
|
|
13
|
+
- [Fix] properly check for % signs [`50ac176`](https://github.com/ljharb/get-intrinsic/commit/50ac1760fe99c227e64eabde76e9c0e44cd881b5)
|
|
14
|
+
|
|
15
|
+
## [v1.1.2](https://github.com/ljharb/get-intrinsic/compare/v1.1.1...v1.1.2) - 2022-06-08
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- [Fix] properly validate against extra % signs [`#16`](https://github.com/ljharb/get-intrinsic/issues/16)
|
|
20
|
+
|
|
21
|
+
### Commits
|
|
22
|
+
|
|
23
|
+
- [actions] reuse common workflows [`0972547`](https://github.com/ljharb/get-intrinsic/commit/0972547efd0abc863fe4c445a6ca7eb4f8c6901d)
|
|
24
|
+
- [meta] use `npmignore` to autogenerate an npmignore file [`5ba0b51`](https://github.com/ljharb/get-intrinsic/commit/5ba0b51d8d8d4f1c31d426d74abc0770fd106bad)
|
|
25
|
+
- [actions] use `node/install` instead of `node/run`; use `codecov` action [`c364492`](https://github.com/ljharb/get-intrinsic/commit/c364492af4af51333e6f81c0bf21fd3d602c3661)
|
|
26
|
+
- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `es-abstract`, `object-inspect`, `tape` [`dc04dad`](https://github.com/ljharb/get-intrinsic/commit/dc04dad86f6e5608775a2640cb0db5927ae29ed9)
|
|
27
|
+
- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `es-abstract`, `object-inspect`, `safe-publish-latest`, `tape` [`1c14059`](https://github.com/ljharb/get-intrinsic/commit/1c1405984e86dd2dc9366c15d8a0294a96a146a5)
|
|
28
|
+
- [Tests] use `mock-property` [`b396ef0`](https://github.com/ljharb/get-intrinsic/commit/b396ef05bb73b1d699811abd64b0d9b97997fdda)
|
|
29
|
+
- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `object-inspect`, `tape` [`c2c758d`](https://github.com/ljharb/get-intrinsic/commit/c2c758d3b90af4fef0a76910d8d3c292ec8d1d3e)
|
|
30
|
+
- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `es-abstract`, `es-value-fixtures`, `object-inspect`, `tape` [`29e3c09`](https://github.com/ljharb/get-intrinsic/commit/29e3c091c2bf3e17099969847e8729d0e46896de)
|
|
31
|
+
- [actions] update codecov uploader [`8cbc141`](https://github.com/ljharb/get-intrinsic/commit/8cbc1418940d7a8941f3a7985cbc4ac095c5e13d)
|
|
32
|
+
- [Dev Deps] update `@ljharb/eslint-config`, `es-abstract`, `es-value-fixtures`, `object-inspect`, `tape` [`10b6f5c`](https://github.com/ljharb/get-intrinsic/commit/10b6f5c02593fb3680c581d696ac124e30652932)
|
|
33
|
+
- [readme] add github actions/codecov badges [`4e25400`](https://github.com/ljharb/get-intrinsic/commit/4e25400d9f51ae9eb059cbe22d9144e70ea214e8)
|
|
34
|
+
- [Tests] use `for-each` instead of `foreach` [`c05b957`](https://github.com/ljharb/get-intrinsic/commit/c05b957ad9a7bc7721af7cc9e9be1edbfe057496)
|
|
35
|
+
- [Dev Deps] update `es-abstract` [`29b05ae`](https://github.com/ljharb/get-intrinsic/commit/29b05aec3e7330e9ad0b8e0f685a9112c20cdd97)
|
|
36
|
+
- [meta] use `prepublishOnly` script for npm 7+ [`95c285d`](https://github.com/ljharb/get-intrinsic/commit/95c285da810516057d3bbfa871176031af38f05d)
|
|
37
|
+
- [Deps] update `has-symbols` [`593cb4f`](https://github.com/ljharb/get-intrinsic/commit/593cb4fb38e7922e40e42c183f45274b636424cd)
|
|
38
|
+
- [readme] fix repo URLs [`1c8305b`](https://github.com/ljharb/get-intrinsic/commit/1c8305b5365827c9b6fc785434aac0e1328ff2f5)
|
|
39
|
+
- [Deps] update `has-symbols` [`c7138b6`](https://github.com/ljharb/get-intrinsic/commit/c7138b6c6d73132d859471fb8c13304e1e7c8b20)
|
|
40
|
+
- [Dev Deps] remove unused `has-bigints` [`bd63aff`](https://github.com/ljharb/get-intrinsic/commit/bd63aff6ad8f3a986c557fcda2914187bdaab359)
|
|
41
|
+
|
|
42
|
+
## [v1.1.1](https://github.com/ljharb/get-intrinsic/compare/v1.1.0...v1.1.1) - 2021-02-03
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
|
|
46
|
+
- [meta] export `./package.json` [`#9`](https://github.com/ljharb/get-intrinsic/issues/9)
|
|
47
|
+
|
|
48
|
+
### Commits
|
|
49
|
+
|
|
50
|
+
- [readme] flesh out the readme; use `evalmd` [`d12f12c`](https://github.com/ljharb/get-intrinsic/commit/d12f12c15345a0a0772cc65a7c64369529abd614)
|
|
51
|
+
- [eslint] set up proper globals config [`5a8c098`](https://github.com/ljharb/get-intrinsic/commit/5a8c0984e3319d1ac0e64b102f8ec18b64e79f36)
|
|
52
|
+
- [Dev Deps] update `eslint` [`7b9a5c0`](https://github.com/ljharb/get-intrinsic/commit/7b9a5c0d31a90ca1a1234181c74988fb046701cd)
|
|
53
|
+
|
|
54
|
+
## [v1.1.0](https://github.com/ljharb/get-intrinsic/compare/v1.0.2...v1.1.0) - 2021-01-25
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- [Refactor] delay `Function` eval until syntax-derived values are requested [`#3`](https://github.com/ljharb/get-intrinsic/issues/3)
|
|
59
|
+
|
|
60
|
+
### Commits
|
|
61
|
+
|
|
62
|
+
- [Tests] migrate tests to Github Actions [`2ab762b`](https://github.com/ljharb/get-intrinsic/commit/2ab762b48164aea8af37a40ba105bbc8246ab8c4)
|
|
63
|
+
- [meta] do not publish github action workflow files [`5e7108e`](https://github.com/ljharb/get-intrinsic/commit/5e7108e4768b244d48d9567ba4f8a6cab9c65b8e)
|
|
64
|
+
- [Tests] add some coverage [`01ac7a8`](https://github.com/ljharb/get-intrinsic/commit/01ac7a87ac29738567e8524cd8c9e026b1fa8cb3)
|
|
65
|
+
- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `call-bind`, `es-abstract`, `tape`; add `call-bind` [`911b672`](https://github.com/ljharb/get-intrinsic/commit/911b672fbffae433a96924c6ce013585e425f4b7)
|
|
66
|
+
- [Refactor] rearrange evalled constructors a bit [`7e7e4bf`](https://github.com/ljharb/get-intrinsic/commit/7e7e4bf583f3799c8ac1c6c5e10d2cb553957347)
|
|
67
|
+
- [meta] add Automatic Rebase and Require Allow Edits workflows [`0199968`](https://github.com/ljharb/get-intrinsic/commit/01999687a263ffce0a3cb011dfbcb761754aedbc)
|
|
68
|
+
|
|
69
|
+
## [v1.0.2](https://github.com/ljharb/get-intrinsic/compare/v1.0.1...v1.0.2) - 2020-12-17
|
|
70
|
+
|
|
71
|
+
### Commits
|
|
72
|
+
|
|
73
|
+
- [Fix] Throw for non‑existent intrinsics [`68f873b`](https://github.com/ljharb/get-intrinsic/commit/68f873b013c732a05ad6f5fc54f697e55515461b)
|
|
74
|
+
- [Fix] Throw for non‑existent segments in the intrinsic path [`8325dee`](https://github.com/ljharb/get-intrinsic/commit/8325deee43128f3654d3399aa9591741ebe17b21)
|
|
75
|
+
- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-bigints`, `object-inspect` [`0c227a7`](https://github.com/ljharb/get-intrinsic/commit/0c227a7d8b629166f25715fd242553892e458525)
|
|
76
|
+
- [meta] do not lint coverage output [`70d2419`](https://github.com/ljharb/get-intrinsic/commit/70d24199b620043cd9110fc5f426d214ebe21dc9)
|
|
77
|
+
|
|
78
|
+
## [v1.0.1](https://github.com/ljharb/get-intrinsic/compare/v1.0.0...v1.0.1) - 2020-10-30
|
|
79
|
+
|
|
80
|
+
### Commits
|
|
81
|
+
|
|
82
|
+
- [Tests] gather coverage data on every job [`d1d280d`](https://github.com/ljharb/get-intrinsic/commit/d1d280dec714e3f0519cc877dbcb193057d9cac6)
|
|
83
|
+
- [Fix] add missing dependencies [`5031771`](https://github.com/ljharb/get-intrinsic/commit/5031771bb1095b38be88ce7c41d5de88718e432e)
|
|
84
|
+
- [Tests] use `es-value-fixtures` [`af48765`](https://github.com/ljharb/get-intrinsic/commit/af48765a23c5323fb0b6b38dbf00eb5099c7bebc)
|
|
85
|
+
|
|
86
|
+
## v1.0.0 - 2020-10-29
|
|
87
|
+
|
|
88
|
+
### Commits
|
|
89
|
+
|
|
90
|
+
- Implementation [`bbce57c`](https://github.com/ljharb/get-intrinsic/commit/bbce57c6f33d05b2d8d3efa273ceeb3ee01127bb)
|
|
91
|
+
- Tests [`17b4f0d`](https://github.com/ljharb/get-intrinsic/commit/17b4f0d56dea6b4059b56fc30ef3ee4d9500ebc2)
|
|
92
|
+
- Initial commit [`3153294`](https://github.com/ljharb/get-intrinsic/commit/31532948de363b0a27dd9fd4649e7b7028ec4b44)
|
|
93
|
+
- npm init [`fb326c4`](https://github.com/ljharb/get-intrinsic/commit/fb326c4d2817c8419ec31de1295f06bb268a7902)
|
|
94
|
+
- [meta] add Automatic Rebase and Require Allow Edits workflows [`48862fb`](https://github.com/ljharb/get-intrinsic/commit/48862fb2508c8f6a57968e6d08b7c883afc9d550)
|
|
95
|
+
- [meta] add `auto-changelog` [`5f28ad0`](https://github.com/ljharb/get-intrinsic/commit/5f28ad019e060a353d8028f9f2591a9cc93074a1)
|
|
96
|
+
- [meta] add "funding"; create `FUNDING.yml` [`c2bbdde`](https://github.com/ljharb/get-intrinsic/commit/c2bbddeba73a875be61484ee4680b129a6d4e0a1)
|
|
97
|
+
- [Tests] add `npm run lint` [`0a84b98`](https://github.com/ljharb/get-intrinsic/commit/0a84b98b22b7cf7a748666f705b0003a493c35fd)
|
|
98
|
+
- Only apps should have lockfiles [`9586c75`](https://github.com/ljharb/get-intrinsic/commit/9586c75866c1ee678e4d5d4dbbdef6997e511b05)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2020 Jordan Harband
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# get-intrinsic <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
|
|
2
|
+
|
|
3
|
+
[![github actions][actions-image]][actions-url]
|
|
4
|
+
[![coverage][codecov-image]][codecov-url]
|
|
5
|
+
[![dependency status][deps-svg]][deps-url]
|
|
6
|
+
[![dev dependency status][dev-deps-svg]][dev-deps-url]
|
|
7
|
+
[![License][license-image]][license-url]
|
|
8
|
+
[![Downloads][downloads-image]][downloads-url]
|
|
9
|
+
|
|
10
|
+
[![npm badge][npm-badge-png]][package-url]
|
|
11
|
+
|
|
12
|
+
Get and robustly cache all JS language-level intrinsics at first require time.
|
|
13
|
+
|
|
14
|
+
See the syntax described [in the JS spec](https://tc39.es/ecma262/#sec-well-known-intrinsic-objects) for reference.
|
|
15
|
+
|
|
16
|
+
## Example
|
|
17
|
+
|
|
18
|
+
```js
|
|
19
|
+
var GetIntrinsic = require('get-intrinsic');
|
|
20
|
+
var assert = require('assert');
|
|
21
|
+
|
|
22
|
+
// static methods
|
|
23
|
+
assert.equal(GetIntrinsic('%Math.pow%'), Math.pow);
|
|
24
|
+
assert.equal(Math.pow(2, 3), 8);
|
|
25
|
+
assert.equal(GetIntrinsic('%Math.pow%')(2, 3), 8);
|
|
26
|
+
delete Math.pow;
|
|
27
|
+
assert.equal(GetIntrinsic('%Math.pow%')(2, 3), 8);
|
|
28
|
+
|
|
29
|
+
// instance methods
|
|
30
|
+
var arr = [1];
|
|
31
|
+
assert.equal(GetIntrinsic('%Array.prototype.push%'), Array.prototype.push);
|
|
32
|
+
assert.deepEqual(arr, [1]);
|
|
33
|
+
|
|
34
|
+
arr.push(2);
|
|
35
|
+
assert.deepEqual(arr, [1, 2]);
|
|
36
|
+
|
|
37
|
+
GetIntrinsic('%Array.prototype.push%').call(arr, 3);
|
|
38
|
+
assert.deepEqual(arr, [1, 2, 3]);
|
|
39
|
+
|
|
40
|
+
delete Array.prototype.push;
|
|
41
|
+
GetIntrinsic('%Array.prototype.push%').call(arr, 4);
|
|
42
|
+
assert.deepEqual(arr, [1, 2, 3, 4]);
|
|
43
|
+
|
|
44
|
+
// missing features
|
|
45
|
+
delete JSON.parse; // to simulate a real intrinsic that is missing in the environment
|
|
46
|
+
assert.throws(() => GetIntrinsic('%JSON.parse%'));
|
|
47
|
+
assert.equal(undefined, GetIntrinsic('%JSON.parse%', true));
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Tests
|
|
51
|
+
Simply clone the repo, `npm install`, and run `npm test`
|
|
52
|
+
|
|
53
|
+
## Security
|
|
54
|
+
|
|
55
|
+
Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report.
|
|
56
|
+
|
|
57
|
+
[package-url]: https://npmjs.org/package/get-intrinsic
|
|
58
|
+
[npm-version-svg]: https://versionbadg.es/ljharb/get-intrinsic.svg
|
|
59
|
+
[deps-svg]: https://david-dm.org/ljharb/get-intrinsic.svg
|
|
60
|
+
[deps-url]: https://david-dm.org/ljharb/get-intrinsic
|
|
61
|
+
[dev-deps-svg]: https://david-dm.org/ljharb/get-intrinsic/dev-status.svg
|
|
62
|
+
[dev-deps-url]: https://david-dm.org/ljharb/get-intrinsic#info=devDependencies
|
|
63
|
+
[npm-badge-png]: https://nodei.co/npm/get-intrinsic.png?downloads=true&stars=true
|
|
64
|
+
[license-image]: https://img.shields.io/npm/l/get-intrinsic.svg
|
|
65
|
+
[license-url]: LICENSE
|
|
66
|
+
[downloads-image]: https://img.shields.io/npm/dm/get-intrinsic.svg
|
|
67
|
+
[downloads-url]: https://npm-stat.com/charts.html?package=get-intrinsic
|
|
68
|
+
[codecov-image]: https://codecov.io/gh/ljharb/get-intrinsic/branch/main/graphs/badge.svg
|
|
69
|
+
[codecov-url]: https://app.codecov.io/gh/ljharb/get-intrinsic/
|
|
70
|
+
[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/get-intrinsic
|
|
71
|
+
[actions-url]: https://github.com/ljharb/get-intrinsic/actions
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var undefined;
|
|
4
|
+
|
|
5
|
+
var $SyntaxError = SyntaxError;
|
|
6
|
+
var $Function = Function;
|
|
7
|
+
var $TypeError = TypeError;
|
|
8
|
+
|
|
9
|
+
// eslint-disable-next-line consistent-return
|
|
10
|
+
var getEvalledConstructor = function (expressionSyntax) {
|
|
11
|
+
try {
|
|
12
|
+
return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')();
|
|
13
|
+
} catch (e) {}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
var $gOPD = Object.getOwnPropertyDescriptor;
|
|
17
|
+
if ($gOPD) {
|
|
18
|
+
try {
|
|
19
|
+
$gOPD({}, '');
|
|
20
|
+
} catch (e) {
|
|
21
|
+
$gOPD = null; // this is IE 8, which has a broken gOPD
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
var throwTypeError = function () {
|
|
26
|
+
throw new $TypeError();
|
|
27
|
+
};
|
|
28
|
+
var ThrowTypeError = $gOPD
|
|
29
|
+
? (function () {
|
|
30
|
+
try {
|
|
31
|
+
// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties
|
|
32
|
+
arguments.callee; // IE 8 does not throw here
|
|
33
|
+
return throwTypeError;
|
|
34
|
+
} catch (calleeThrows) {
|
|
35
|
+
try {
|
|
36
|
+
// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')
|
|
37
|
+
return $gOPD(arguments, 'callee').get;
|
|
38
|
+
} catch (gOPDthrows) {
|
|
39
|
+
return throwTypeError;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}())
|
|
43
|
+
: throwTypeError;
|
|
44
|
+
|
|
45
|
+
var hasSymbols = require('has-symbols')();
|
|
46
|
+
|
|
47
|
+
var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto
|
|
48
|
+
|
|
49
|
+
var needsEval = {};
|
|
50
|
+
|
|
51
|
+
var TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);
|
|
52
|
+
|
|
53
|
+
var INTRINSICS = {
|
|
54
|
+
'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,
|
|
55
|
+
'%Array%': Array,
|
|
56
|
+
'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,
|
|
57
|
+
'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,
|
|
58
|
+
'%AsyncFromSyncIteratorPrototype%': undefined,
|
|
59
|
+
'%AsyncFunction%': needsEval,
|
|
60
|
+
'%AsyncGenerator%': needsEval,
|
|
61
|
+
'%AsyncGeneratorFunction%': needsEval,
|
|
62
|
+
'%AsyncIteratorPrototype%': needsEval,
|
|
63
|
+
'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,
|
|
64
|
+
'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,
|
|
65
|
+
'%Boolean%': Boolean,
|
|
66
|
+
'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,
|
|
67
|
+
'%Date%': Date,
|
|
68
|
+
'%decodeURI%': decodeURI,
|
|
69
|
+
'%decodeURIComponent%': decodeURIComponent,
|
|
70
|
+
'%encodeURI%': encodeURI,
|
|
71
|
+
'%encodeURIComponent%': encodeURIComponent,
|
|
72
|
+
'%Error%': Error,
|
|
73
|
+
'%eval%': eval, // eslint-disable-line no-eval
|
|
74
|
+
'%EvalError%': EvalError,
|
|
75
|
+
'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,
|
|
76
|
+
'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,
|
|
77
|
+
'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,
|
|
78
|
+
'%Function%': $Function,
|
|
79
|
+
'%GeneratorFunction%': needsEval,
|
|
80
|
+
'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,
|
|
81
|
+
'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,
|
|
82
|
+
'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,
|
|
83
|
+
'%isFinite%': isFinite,
|
|
84
|
+
'%isNaN%': isNaN,
|
|
85
|
+
'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,
|
|
86
|
+
'%JSON%': typeof JSON === 'object' ? JSON : undefined,
|
|
87
|
+
'%Map%': typeof Map === 'undefined' ? undefined : Map,
|
|
88
|
+
'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),
|
|
89
|
+
'%Math%': Math,
|
|
90
|
+
'%Number%': Number,
|
|
91
|
+
'%Object%': Object,
|
|
92
|
+
'%parseFloat%': parseFloat,
|
|
93
|
+
'%parseInt%': parseInt,
|
|
94
|
+
'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,
|
|
95
|
+
'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,
|
|
96
|
+
'%RangeError%': RangeError,
|
|
97
|
+
'%ReferenceError%': ReferenceError,
|
|
98
|
+
'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,
|
|
99
|
+
'%RegExp%': RegExp,
|
|
100
|
+
'%Set%': typeof Set === 'undefined' ? undefined : Set,
|
|
101
|
+
'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),
|
|
102
|
+
'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,
|
|
103
|
+
'%String%': String,
|
|
104
|
+
'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,
|
|
105
|
+
'%Symbol%': hasSymbols ? Symbol : undefined,
|
|
106
|
+
'%SyntaxError%': $SyntaxError,
|
|
107
|
+
'%ThrowTypeError%': ThrowTypeError,
|
|
108
|
+
'%TypedArray%': TypedArray,
|
|
109
|
+
'%TypeError%': $TypeError,
|
|
110
|
+
'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,
|
|
111
|
+
'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,
|
|
112
|
+
'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,
|
|
113
|
+
'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,
|
|
114
|
+
'%URIError%': URIError,
|
|
115
|
+
'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,
|
|
116
|
+
'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,
|
|
117
|
+
'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
var doEval = function doEval(name) {
|
|
121
|
+
var value;
|
|
122
|
+
if (name === '%AsyncFunction%') {
|
|
123
|
+
value = getEvalledConstructor('async function () {}');
|
|
124
|
+
} else if (name === '%GeneratorFunction%') {
|
|
125
|
+
value = getEvalledConstructor('function* () {}');
|
|
126
|
+
} else if (name === '%AsyncGeneratorFunction%') {
|
|
127
|
+
value = getEvalledConstructor('async function* () {}');
|
|
128
|
+
} else if (name === '%AsyncGenerator%') {
|
|
129
|
+
var fn = doEval('%AsyncGeneratorFunction%');
|
|
130
|
+
if (fn) {
|
|
131
|
+
value = fn.prototype;
|
|
132
|
+
}
|
|
133
|
+
} else if (name === '%AsyncIteratorPrototype%') {
|
|
134
|
+
var gen = doEval('%AsyncGenerator%');
|
|
135
|
+
if (gen) {
|
|
136
|
+
value = getProto(gen.prototype);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
INTRINSICS[name] = value;
|
|
141
|
+
|
|
142
|
+
return value;
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
var LEGACY_ALIASES = {
|
|
146
|
+
'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],
|
|
147
|
+
'%ArrayPrototype%': ['Array', 'prototype'],
|
|
148
|
+
'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],
|
|
149
|
+
'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],
|
|
150
|
+
'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],
|
|
151
|
+
'%ArrayProto_values%': ['Array', 'prototype', 'values'],
|
|
152
|
+
'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],
|
|
153
|
+
'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],
|
|
154
|
+
'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],
|
|
155
|
+
'%BooleanPrototype%': ['Boolean', 'prototype'],
|
|
156
|
+
'%DataViewPrototype%': ['DataView', 'prototype'],
|
|
157
|
+
'%DatePrototype%': ['Date', 'prototype'],
|
|
158
|
+
'%ErrorPrototype%': ['Error', 'prototype'],
|
|
159
|
+
'%EvalErrorPrototype%': ['EvalError', 'prototype'],
|
|
160
|
+
'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],
|
|
161
|
+
'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],
|
|
162
|
+
'%FunctionPrototype%': ['Function', 'prototype'],
|
|
163
|
+
'%Generator%': ['GeneratorFunction', 'prototype'],
|
|
164
|
+
'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],
|
|
165
|
+
'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],
|
|
166
|
+
'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],
|
|
167
|
+
'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],
|
|
168
|
+
'%JSONParse%': ['JSON', 'parse'],
|
|
169
|
+
'%JSONStringify%': ['JSON', 'stringify'],
|
|
170
|
+
'%MapPrototype%': ['Map', 'prototype'],
|
|
171
|
+
'%NumberPrototype%': ['Number', 'prototype'],
|
|
172
|
+
'%ObjectPrototype%': ['Object', 'prototype'],
|
|
173
|
+
'%ObjProto_toString%': ['Object', 'prototype', 'toString'],
|
|
174
|
+
'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],
|
|
175
|
+
'%PromisePrototype%': ['Promise', 'prototype'],
|
|
176
|
+
'%PromiseProto_then%': ['Promise', 'prototype', 'then'],
|
|
177
|
+
'%Promise_all%': ['Promise', 'all'],
|
|
178
|
+
'%Promise_reject%': ['Promise', 'reject'],
|
|
179
|
+
'%Promise_resolve%': ['Promise', 'resolve'],
|
|
180
|
+
'%RangeErrorPrototype%': ['RangeError', 'prototype'],
|
|
181
|
+
'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],
|
|
182
|
+
'%RegExpPrototype%': ['RegExp', 'prototype'],
|
|
183
|
+
'%SetPrototype%': ['Set', 'prototype'],
|
|
184
|
+
'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],
|
|
185
|
+
'%StringPrototype%': ['String', 'prototype'],
|
|
186
|
+
'%SymbolPrototype%': ['Symbol', 'prototype'],
|
|
187
|
+
'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],
|
|
188
|
+
'%TypedArrayPrototype%': ['TypedArray', 'prototype'],
|
|
189
|
+
'%TypeErrorPrototype%': ['TypeError', 'prototype'],
|
|
190
|
+
'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],
|
|
191
|
+
'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],
|
|
192
|
+
'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],
|
|
193
|
+
'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],
|
|
194
|
+
'%URIErrorPrototype%': ['URIError', 'prototype'],
|
|
195
|
+
'%WeakMapPrototype%': ['WeakMap', 'prototype'],
|
|
196
|
+
'%WeakSetPrototype%': ['WeakSet', 'prototype']
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
var bind = require('function-bind');
|
|
200
|
+
var hasOwn = require('has');
|
|
201
|
+
var $concat = bind.call(Function.call, Array.prototype.concat);
|
|
202
|
+
var $spliceApply = bind.call(Function.apply, Array.prototype.splice);
|
|
203
|
+
var $replace = bind.call(Function.call, String.prototype.replace);
|
|
204
|
+
var $strSlice = bind.call(Function.call, String.prototype.slice);
|
|
205
|
+
var $exec = bind.call(Function.call, RegExp.prototype.exec);
|
|
206
|
+
|
|
207
|
+
/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */
|
|
208
|
+
var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
|
|
209
|
+
var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */
|
|
210
|
+
var stringToPath = function stringToPath(string) {
|
|
211
|
+
var first = $strSlice(string, 0, 1);
|
|
212
|
+
var last = $strSlice(string, -1);
|
|
213
|
+
if (first === '%' && last !== '%') {
|
|
214
|
+
throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`');
|
|
215
|
+
} else if (last === '%' && first !== '%') {
|
|
216
|
+
throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`');
|
|
217
|
+
}
|
|
218
|
+
var result = [];
|
|
219
|
+
$replace(string, rePropName, function (match, number, quote, subString) {
|
|
220
|
+
result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;
|
|
221
|
+
});
|
|
222
|
+
return result;
|
|
223
|
+
};
|
|
224
|
+
/* end adaptation */
|
|
225
|
+
|
|
226
|
+
var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {
|
|
227
|
+
var intrinsicName = name;
|
|
228
|
+
var alias;
|
|
229
|
+
if (hasOwn(LEGACY_ALIASES, intrinsicName)) {
|
|
230
|
+
alias = LEGACY_ALIASES[intrinsicName];
|
|
231
|
+
intrinsicName = '%' + alias[0] + '%';
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
if (hasOwn(INTRINSICS, intrinsicName)) {
|
|
235
|
+
var value = INTRINSICS[intrinsicName];
|
|
236
|
+
if (value === needsEval) {
|
|
237
|
+
value = doEval(intrinsicName);
|
|
238
|
+
}
|
|
239
|
+
if (typeof value === 'undefined' && !allowMissing) {
|
|
240
|
+
throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
return {
|
|
244
|
+
alias: alias,
|
|
245
|
+
name: intrinsicName,
|
|
246
|
+
value: value
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
throw new $SyntaxError('intrinsic ' + name + ' does not exist!');
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
module.exports = function GetIntrinsic(name, allowMissing) {
|
|
254
|
+
if (typeof name !== 'string' || name.length === 0) {
|
|
255
|
+
throw new $TypeError('intrinsic name must be a non-empty string');
|
|
256
|
+
}
|
|
257
|
+
if (arguments.length > 1 && typeof allowMissing !== 'boolean') {
|
|
258
|
+
throw new $TypeError('"allowMissing" argument must be a boolean');
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
if ($exec(/^%?[^%]*%?$/, name) === null) {
|
|
262
|
+
throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');
|
|
263
|
+
}
|
|
264
|
+
var parts = stringToPath(name);
|
|
265
|
+
var intrinsicBaseName = parts.length > 0 ? parts[0] : '';
|
|
266
|
+
|
|
267
|
+
var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);
|
|
268
|
+
var intrinsicRealName = intrinsic.name;
|
|
269
|
+
var value = intrinsic.value;
|
|
270
|
+
var skipFurtherCaching = false;
|
|
271
|
+
|
|
272
|
+
var alias = intrinsic.alias;
|
|
273
|
+
if (alias) {
|
|
274
|
+
intrinsicBaseName = alias[0];
|
|
275
|
+
$spliceApply(parts, $concat([0, 1], alias));
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
for (var i = 1, isOwn = true; i < parts.length; i += 1) {
|
|
279
|
+
var part = parts[i];
|
|
280
|
+
var first = $strSlice(part, 0, 1);
|
|
281
|
+
var last = $strSlice(part, -1);
|
|
282
|
+
if (
|
|
283
|
+
(
|
|
284
|
+
(first === '"' || first === "'" || first === '`')
|
|
285
|
+
|| (last === '"' || last === "'" || last === '`')
|
|
286
|
+
)
|
|
287
|
+
&& first !== last
|
|
288
|
+
) {
|
|
289
|
+
throw new $SyntaxError('property names with quotes must have matching quotes');
|
|
290
|
+
}
|
|
291
|
+
if (part === 'constructor' || !isOwn) {
|
|
292
|
+
skipFurtherCaching = true;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
intrinsicBaseName += '.' + part;
|
|
296
|
+
intrinsicRealName = '%' + intrinsicBaseName + '%';
|
|
297
|
+
|
|
298
|
+
if (hasOwn(INTRINSICS, intrinsicRealName)) {
|
|
299
|
+
value = INTRINSICS[intrinsicRealName];
|
|
300
|
+
} else if (value != null) {
|
|
301
|
+
if (!(part in value)) {
|
|
302
|
+
if (!allowMissing) {
|
|
303
|
+
throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');
|
|
304
|
+
}
|
|
305
|
+
return void undefined;
|
|
306
|
+
}
|
|
307
|
+
if ($gOPD && (i + 1) >= parts.length) {
|
|
308
|
+
var desc = $gOPD(value, part);
|
|
309
|
+
isOwn = !!desc;
|
|
310
|
+
|
|
311
|
+
// By convention, when a data property is converted to an accessor
|
|
312
|
+
// property to emulate a data property that does not suffer from
|
|
313
|
+
// the override mistake, that accessor's getter is marked with
|
|
314
|
+
// an `originalValue` property. Here, when we detect this, we
|
|
315
|
+
// uphold the illusion by pretending to see that original data
|
|
316
|
+
// property, i.e., returning the value rather than the getter
|
|
317
|
+
// itself.
|
|
318
|
+
if (isOwn && 'get' in desc && !('originalValue' in desc.get)) {
|
|
319
|
+
value = desc.get;
|
|
320
|
+
} else {
|
|
321
|
+
value = value[part];
|
|
322
|
+
}
|
|
323
|
+
} else {
|
|
324
|
+
isOwn = hasOwn(value, part);
|
|
325
|
+
value = value[part];
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
if (isOwn && !skipFurtherCaching) {
|
|
329
|
+
INTRINSICS[intrinsicRealName] = value;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return value;
|
|
334
|
+
};
|