├── .gitignore
├── .vscode
├── settings.json
└── tasks.json
├── LICENSE
├── README.md
├── dist
└── clickout-event.js
├── gulpfile.js
├── package.json
├── pnpm-lock.yaml
├── src
├── functions.ts
├── index.ts
├── shorthands.ts
└── types.ts
├── test
├── clickout-event.js
├── html.htm
├── javascript.htm
├── jquery.htm
├── nested.htm
└── vue.htm
└── tsconfig.json
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "cSpell.words": [
3 | "clickout"
4 | ],
5 | "typescript.tsdk": "node_modules\\typescript\\lib"
6 | }
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "tasks": [
4 | {
5 | "type": "gulp",
6 | "task": "build",
7 | "group": {
8 | "kind": "build",
9 | "isDefault": true
10 | },
11 | "problemMatcher": [],
12 | "label": "gulp: build"
13 | }
14 | ]
15 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2020 MuTsunTsai
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
13 | all 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
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Clickout-Event
2 |
3 | > Provides universal support for `clickout` and other similar events to any front-end frameworks.
4 |
5 | [](https://www.npmjs.com/package/clickout-event)
6 | 
7 | [](https://github.com/MuTsunTsai/clickout-event)
8 | 
9 |
10 |
11 | There are many packages that are designed to capture and handle the
12 | "click outside" event of an element. Some of them target vanilla JavaScript,
13 | while some others target specific front-end framework, possibly specific version.
14 | Front-end designers in the past had to look for the right package that works
15 | for their particular scenario.
16 |
17 | Look no further! Introducing Clickout-Event,
18 | a package that provides universal support for `clickout` and other similar events.
19 | It works in all scenarios: plain HTML `onclickout` attributes,
20 | `.addEventListener('clickout')` of vanilla JavaScript,
21 | `.on('clickout')` of jQuery, `v-on:clickout` directives of Vue.js, you name it.
22 | As long as a front-end framework internally uses `addEventListener` to handle events,
23 | Clickout-Event works for it.
24 |
25 | ## License
26 |
27 | MIT License
28 |
29 | ## Requirement
30 |
31 | In order to fully implement all native event behaviors,
32 | Clickout-Event uses the [mutation observer API](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver),
33 | so it will not work directly for legacy browsers.
34 | You may try using polyfills to make it work,
35 | but I haven't tested those yet.
36 |
37 | ## Install (with module)
38 |
39 | You can get Clickout-Event as an NPM package by running:
40 | ```bash
41 | npm install clickout-event --save
42 | ```
43 | Then add one of the following lines to your entry script:
44 |
45 | ```js
46 | require('clickout-event');
47 | // or
48 | import 'clickout-event';
49 | ```
50 |
51 | And watch the magic happen.
52 |
53 | ## Install (without module)
54 |
55 | Simply download [`clickout-event.js`](https://github.com/MuTsunTsai/clickout-event/raw/master/dist/clickout-event.js).
56 | Then all you need to do is add the script tag anywhere (as long as it is before any calling of the `addEventListener` method, such as the beginning of the `
` section) in your HTML file:
57 |
58 | ```html
59 |
60 | ```
61 |
62 | ## API
63 |
64 | Clickout-Event provides the corresponding "out-events" for the following events: `click`, `dblclick`, `mousedown`, `mouseup`, `touchstart`, `touchend`, `pointerdown` and `pointerup`. The corresponding events are then called `clickout`, `dblclickout` etc. You can then use them the same way you use any other events; see examples below.
65 |
66 | Note that pointer events is not supported in Safari.
67 |
68 | With each out-event, you can use `event.relatedTarget` to find out exactly which element fires the original event (that is, the element being clicked etc.).
69 |
70 | ## Usage
71 |
72 | ### HTML inline attribute
73 |
74 | ```html
75 | ...
76 | ```
77 |
78 | ### Vanilla JavaScript
79 |
80 | ```js
81 | document.getElementById('myId').addEventListener('clickout', myListener);
82 | ```
83 |
84 | ### [jQuery](https://jquery.com/)
85 |
86 | ```js
87 | $('#myId').on('clickout', myListener);
88 | ```
89 |
90 | ### [Vue.js](https://vuejs.org/)
91 |
92 | ```html
93 | ...
94 | ```
95 |
96 | ### [Angular](https://angular.io/)
97 |
98 | ```html
99 | ...
100 | ```
101 |
102 | ### Other frameworks
103 |
104 | Some frameworks (such as [React](https://reactjs.org/) and [Blazor](https://blazor.net/))
105 | have a fixed list of events that are supported by their event attribute syntax,
106 | so you cannot directly use their event attributes with out-events
107 | (or with any custom events for that matter) in their templates.
108 | Still, you can create custom components in these frameworks and use the vanilla
109 | `addEventListener()` method to register event listener.
110 |
111 | ## Details
112 |
113 | ### Event propagation
114 |
115 | You can have nested elements using the out-events. In that case,
116 | unlike regular events, out-events fire in the top-down ordering;
117 | that is, the parent element will fire the event first,
118 | and then will the child elements.
119 | Similarly, when calling `event.stopPropagation()`
120 | (or, for example, using `v-on:clickout.stop` in Vue.js) on the out-events,
121 | it will be the parent element stopping the child element from firing the event.
122 |
123 | By design, even if the propagation of the original event is stopped,
124 | the corresponding out-event will still fire regardlessly.
125 |
126 | ### Dynamic elements
127 |
128 | Feel free to add or remove elements dynamically!
129 | Clickout-Event monitors changes to the document,
130 | and will ensure the out-events work no matter which dynamic
131 | front-end framework you're using.
132 |
133 | ### Content Security Policy (CSP)
134 |
135 | When using inline event attributes,
136 | Clickout-Event is subject to the same CSP restriction as any other events;
137 | that is, `'unsafe-inline'` must be allowed. Now Clickout-Event uses
138 | native mechanisms instead of eval-like methods to parse the attribute,
139 | so you don't need to allow `'unsafe-eval'`.
140 |
141 | ### Caveat
142 |
143 | Since out-events are synthetic events,
144 | they are untrusted (that is, `event.isTrusted == false`) by nature,
145 | and your event listener is not supposed to reject the event because of this.
--------------------------------------------------------------------------------
/dist/clickout-event.js:
--------------------------------------------------------------------------------
1 | /**
2 | * clickout-event v1.1.3
3 | * (c) 2020-2025 Mu-Tsun Tsai
4 | * Released under the MIT License.
5 | */
6 | !function(){"use strict";const t="on",e="out",n="body",o="stop",s="click",i="apply",r="target",u="prototype",c="Propagation",d="setAttribute",a="relatedTarget",h="addEventListener",p=Symbol(e),l=Object,f=document,m="undefined"!=typeof TouchEvent?TouchEvent:void 0,v=HTMLElement,y=v[u],b=Event[u],E=[s,"dbl"+s,"mousedown","mouseup","touchstart","touchend","pointerdown","pointerup"],w=new Set(E),g=new Set(E.map((n=>t+n+e))),T=(t,e)=>!!e&&t instanceof e,L=(t,e)=>t.contains(e),N=(t,e)=>{for(let n of t)e(n)},S=n=>{T(n,v)&&(n[p]?A(n):N(w,(o=>{let s=t+o+e,i=n.getAttribute(s);i&&!j(n)[s]&&n[d](s,i)})),N(n.childNodes,S))},j=t=>t[p]=t[p]||{},A=t=>{j(t),I.includes(t)||(I.push(t),q=!0)},M=(t,e)=>L(e,t)?1:L(t,e)?-1:0,O=t=>{q&&(I.sort(M),q=!1);let n=t[r];T(t,m)?(t=new m(t.type+e,t))[a]=n:t=new t.constructor(t.type+e,l.assign({},t,{[a]:n})),t[o]=[],N(I,(e=>{L(e,n)||t[o].some((t=>L(t,e)))||e.dispatchEvent(t)}))},P=e=>function(){let n=this,s=n.type;e[i](n),g.has(t+s)&&n[o].push(n[r])},k=(t,e,n)=>t[e]=n(t[e]);function H(e){let n=this[p][t+e.type];n&&n[i](this,[e])}let I=[],q=!1,x=f.createElement(n);N(w,(n=>{f[h](n,O,{passive:!0,capture:!0});let o=t+n+e;l.defineProperty(y,o,{get(){return this[p][o]},set(t){this[h](n+e,H),this[p][o]="object"==typeof t?t.handleEvent:t}})})),k(y,h,(e=>function(...n){g.has(t+n[0])&&A(this),e[i](this,n)})),k(y,d,(e=>function(n,o){g.has(n)?(e[i](x,[t+s,o]),this[n]=x[t+s]):e[i](this,[n,o])})),k(b,o+c,P),k(b,o+"Immediate"+c,P),new MutationObserver((t=>{N(t,(t=>{N(t.addedNodes,S),N(t.removedNodes,(t=>{T(t,v)&&(I=I.filter((e=>!L(t,e))))}))}))})).observe(f.documentElement,{childList:!0,subtree:!0}),S(f[n])}();
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | const gulp = require('gulp');
2 | const ts = require('gulp-typescript');
3 | const through2 = require("gulp-through2");
4 | const terser = require('gulp-terser');
5 |
6 | const pkg = require('./package.json');
7 | const header = `/**
8 | * ${pkg.name} v${pkg.version}
9 | * (c) 2020-${new Date().getFullYear()} Mu-Tsun Tsai
10 | * Released under the MIT License.
11 | */`;
12 |
13 | const terserOption = {
14 | "compress": {
15 | "evaluate": false,
16 | "properties": false,
17 | "unsafe_arrows": true
18 | },
19 | "output": {
20 | "comments": true
21 | }
22 | };
23 |
24 | const project = ts.createProject("tsconfig.json");
25 | gulp.task('default', () =>
26 | project.src()
27 | .pipe(project())
28 | .pipe(gulp.dest("test"))
29 | .pipe(through2(body => `${header};(function(){ ${body} })()`))
30 | .pipe(terser(terserOption))
31 | .pipe(gulp.dest("dist"))
32 | );
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "clickout-event",
3 | "version": "1.1.3",
4 | "description": "Provides universal support for `clickout` and other similar events to webpages.",
5 | "main": "dist/clickout-event.js",
6 | "scripts": {
7 | "version": "gulp default && git add -A",
8 | "test": "echo \"Error: no test specified\""
9 | },
10 | "keywords": [
11 | "clickout",
12 | "click",
13 | "outside",
14 | "event"
15 | ],
16 | "repository": {
17 | "type": "git",
18 | "url": "git+https://github.com/MuTsunTsai/clickout-event.git"
19 | },
20 | "author": "Mu-Tsun Tsai",
21 | "license": "MIT",
22 | "devDependencies": {
23 | "gulp": "^5.0.0",
24 | "gulp-terser": "^2.1.0",
25 | "gulp-through2": "^1.1.0",
26 | "gulp-typescript": "6.0.0-alpha.1",
27 | "typescript": "^5.7.3"
28 | },
29 | "files": [
30 | "dist"
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | devDependencies:
11 | gulp:
12 | specifier: ^5.0.0
13 | version: 5.0.0
14 | gulp-terser:
15 | specifier: ^2.1.0
16 | version: 2.1.0
17 | gulp-through2:
18 | specifier: ^1.1.0
19 | version: 1.1.0
20 | gulp-typescript:
21 | specifier: 6.0.0-alpha.1
22 | version: 6.0.0-alpha.1(typescript@5.7.3)
23 | typescript:
24 | specifier: ^5.7.3
25 | version: 5.7.3
26 |
27 | packages:
28 |
29 | '@gulpjs/messages@1.1.0':
30 | resolution: {integrity: sha512-Ys9sazDatyTgZVb4xPlDufLweJ/Os2uHWOv+Caxvy2O85JcnT4M3vc73bi8pdLWlv3fdWQz3pdI9tVwo8rQQSg==}
31 | engines: {node: '>=10.13.0'}
32 |
33 | '@gulpjs/to-absolute-glob@4.0.0':
34 | resolution: {integrity: sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==}
35 | engines: {node: '>=10.13.0'}
36 |
37 | '@jridgewell/gen-mapping@0.3.8':
38 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
39 | engines: {node: '>=6.0.0'}
40 |
41 | '@jridgewell/resolve-uri@3.1.2':
42 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
43 | engines: {node: '>=6.0.0'}
44 |
45 | '@jridgewell/set-array@1.2.1':
46 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
47 | engines: {node: '>=6.0.0'}
48 |
49 | '@jridgewell/source-map@0.3.6':
50 | resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
51 |
52 | '@jridgewell/sourcemap-codec@1.5.0':
53 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
54 |
55 | '@jridgewell/trace-mapping@0.3.25':
56 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
57 |
58 | '@types/expect@1.20.4':
59 | resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==}
60 |
61 | '@types/node@22.13.4':
62 | resolution: {integrity: sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==}
63 |
64 | '@types/vinyl@2.0.12':
65 | resolution: {integrity: sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==}
66 |
67 | acorn@8.14.0:
68 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
69 | engines: {node: '>=0.4.0'}
70 | hasBin: true
71 |
72 | ansi-colors@1.1.0:
73 | resolution: {integrity: sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==}
74 | engines: {node: '>=0.10.0'}
75 |
76 | ansi-colors@4.1.3:
77 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
78 | engines: {node: '>=6'}
79 |
80 | ansi-regex@5.0.1:
81 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
82 | engines: {node: '>=8'}
83 |
84 | ansi-styles@4.3.0:
85 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
86 | engines: {node: '>=8'}
87 |
88 | ansi-wrap@0.1.0:
89 | resolution: {integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==}
90 | engines: {node: '>=0.10.0'}
91 |
92 | anymatch@3.1.3:
93 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
94 | engines: {node: '>= 8'}
95 |
96 | append-buffer@1.0.2:
97 | resolution: {integrity: sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==}
98 | engines: {node: '>=0.10.0'}
99 |
100 | arr-diff@4.0.0:
101 | resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==}
102 | engines: {node: '>=0.10.0'}
103 |
104 | arr-union@3.1.0:
105 | resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
106 | engines: {node: '>=0.10.0'}
107 |
108 | array-each@1.0.1:
109 | resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==}
110 | engines: {node: '>=0.10.0'}
111 |
112 | array-slice@1.1.0:
113 | resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==}
114 | engines: {node: '>=0.10.0'}
115 |
116 | assign-symbols@1.0.0:
117 | resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
118 | engines: {node: '>=0.10.0'}
119 |
120 | async-done@2.0.0:
121 | resolution: {integrity: sha512-j0s3bzYq9yKIVLKGE/tWlCpa3PfFLcrDZLTSVdnnCTGagXuXBJO4SsY9Xdk/fQBirCkH4evW5xOeJXqlAQFdsw==}
122 | engines: {node: '>= 10.13.0'}
123 |
124 | async-settle@2.0.0:
125 | resolution: {integrity: sha512-Obu/KE8FurfQRN6ODdHN9LuXqwC+JFIM9NRyZqJJ4ZfLJmIYN9Rg0/kb+wF70VV5+fJusTMQlJ1t5rF7J/ETdg==}
126 | engines: {node: '>= 10.13.0'}
127 |
128 | b4a@1.6.7:
129 | resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==}
130 |
131 | bach@2.0.1:
132 | resolution: {integrity: sha512-A7bvGMGiTOxGMpNupYl9HQTf0FFDNF4VCmks4PJpFyN1AX2pdKuxuwdvUz2Hu388wcgp+OvGFNsumBfFNkR7eg==}
133 | engines: {node: '>=10.13.0'}
134 |
135 | balanced-match@1.0.2:
136 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
137 |
138 | bare-events@2.5.4:
139 | resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==}
140 |
141 | base64-js@1.5.1:
142 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
143 |
144 | binary-extensions@2.3.0:
145 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
146 | engines: {node: '>=8'}
147 |
148 | bl@5.1.0:
149 | resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==}
150 |
151 | brace-expansion@1.1.11:
152 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
153 |
154 | braces@3.0.3:
155 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
156 | engines: {node: '>=8'}
157 |
158 | buffer-equal@1.0.1:
159 | resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==}
160 | engines: {node: '>=0.4'}
161 |
162 | buffer-from@1.1.2:
163 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
164 |
165 | buffer@6.0.3:
166 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
167 |
168 | call-bind-apply-helpers@1.0.2:
169 | resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
170 | engines: {node: '>= 0.4'}
171 |
172 | call-bind@1.0.8:
173 | resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
174 | engines: {node: '>= 0.4'}
175 |
176 | call-bound@1.0.3:
177 | resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==}
178 | engines: {node: '>= 0.4'}
179 |
180 | chalk@4.1.2:
181 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
182 | engines: {node: '>=10'}
183 |
184 | chokidar@3.6.0:
185 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
186 | engines: {node: '>= 8.10.0'}
187 |
188 | cliui@7.0.4:
189 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
190 |
191 | clone-buffer@1.0.0:
192 | resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==}
193 | engines: {node: '>= 0.10'}
194 |
195 | clone-stats@1.0.0:
196 | resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==}
197 |
198 | clone@2.1.2:
199 | resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
200 | engines: {node: '>=0.8'}
201 |
202 | cloneable-readable@1.1.3:
203 | resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==}
204 |
205 | color-convert@2.0.1:
206 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
207 | engines: {node: '>=7.0.0'}
208 |
209 | color-name@1.1.4:
210 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
211 |
212 | commander@2.20.3:
213 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
214 |
215 | concat-map@0.0.1:
216 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
217 |
218 | convert-source-map@1.9.0:
219 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
220 |
221 | convert-source-map@2.0.0:
222 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
223 |
224 | copy-props@4.0.0:
225 | resolution: {integrity: sha512-bVWtw1wQLzzKiYROtvNlbJgxgBYt2bMJpkCbKmXM3xyijvcjjWXEk5nyrrT3bgJ7ODb19ZohE2T0Y3FgNPyoTw==}
226 | engines: {node: '>= 10.13.0'}
227 |
228 | core-util-is@1.0.3:
229 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
230 |
231 | define-data-property@1.1.4:
232 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
233 | engines: {node: '>= 0.4'}
234 |
235 | define-properties@1.2.1:
236 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
237 | engines: {node: '>= 0.4'}
238 |
239 | detect-file@1.0.0:
240 | resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==}
241 | engines: {node: '>=0.10.0'}
242 |
243 | dunder-proto@1.0.1:
244 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
245 | engines: {node: '>= 0.4'}
246 |
247 | duplexify@3.7.1:
248 | resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==}
249 |
250 | each-props@3.0.0:
251 | resolution: {integrity: sha512-IYf1hpuWrdzse/s/YJOrFmU15lyhSzxelNVAHTEG3DtP4QsLTWZUzcUL3HMXmKQxXpa4EIrBPpwRgj0aehdvAw==}
252 | engines: {node: '>= 10.13.0'}
253 |
254 | emoji-regex@8.0.0:
255 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
256 |
257 | end-of-stream@1.4.4:
258 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
259 |
260 | es-define-property@1.0.1:
261 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
262 | engines: {node: '>= 0.4'}
263 |
264 | es-errors@1.3.0:
265 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
266 | engines: {node: '>= 0.4'}
267 |
268 | es-object-atoms@1.1.1:
269 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
270 | engines: {node: '>= 0.4'}
271 |
272 | escalade@3.2.0:
273 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
274 | engines: {node: '>=6'}
275 |
276 | expand-tilde@2.0.2:
277 | resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==}
278 | engines: {node: '>=0.10.0'}
279 |
280 | extend-shallow@3.0.2:
281 | resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==}
282 | engines: {node: '>=0.10.0'}
283 |
284 | extend@3.0.2:
285 | resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
286 |
287 | fast-fifo@1.3.2:
288 | resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
289 |
290 | fast-levenshtein@3.0.0:
291 | resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==}
292 |
293 | fastest-levenshtein@1.0.16:
294 | resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
295 | engines: {node: '>= 4.9.1'}
296 |
297 | fastq@1.19.0:
298 | resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==}
299 |
300 | fill-range@7.1.1:
301 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
302 | engines: {node: '>=8'}
303 |
304 | findup-sync@5.0.0:
305 | resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==}
306 | engines: {node: '>= 10.13.0'}
307 |
308 | fined@2.0.0:
309 | resolution: {integrity: sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==}
310 | engines: {node: '>= 10.13.0'}
311 |
312 | flagged-respawn@2.0.0:
313 | resolution: {integrity: sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==}
314 | engines: {node: '>= 10.13.0'}
315 |
316 | flush-write-stream@1.1.1:
317 | resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==}
318 |
319 | for-in@1.0.2:
320 | resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
321 | engines: {node: '>=0.10.0'}
322 |
323 | for-own@1.0.0:
324 | resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==}
325 | engines: {node: '>=0.10.0'}
326 |
327 | fs-mkdirp-stream@1.0.0:
328 | resolution: {integrity: sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==}
329 | engines: {node: '>= 0.10'}
330 |
331 | fs-mkdirp-stream@2.0.1:
332 | resolution: {integrity: sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==}
333 | engines: {node: '>=10.13.0'}
334 |
335 | fs.realpath@1.0.0:
336 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
337 |
338 | fsevents@2.3.3:
339 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
340 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
341 | os: [darwin]
342 |
343 | function-bind@1.1.2:
344 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
345 |
346 | get-caller-file@2.0.5:
347 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
348 | engines: {node: 6.* || 8.* || >= 10.*}
349 |
350 | get-intrinsic@1.2.7:
351 | resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==}
352 | engines: {node: '>= 0.4'}
353 |
354 | get-proto@1.0.1:
355 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
356 | engines: {node: '>= 0.4'}
357 |
358 | glob-parent@3.1.0:
359 | resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==}
360 |
361 | glob-parent@5.1.2:
362 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
363 | engines: {node: '>= 6'}
364 |
365 | glob-parent@6.0.2:
366 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
367 | engines: {node: '>=10.13.0'}
368 |
369 | glob-stream@6.1.0:
370 | resolution: {integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==}
371 | engines: {node: '>= 0.10'}
372 |
373 | glob-stream@8.0.2:
374 | resolution: {integrity: sha512-R8z6eTB55t3QeZMmU1C+Gv+t5UnNRkA55c5yo67fAVfxODxieTwsjNG7utxS/73NdP1NbDgCrhVEg2h00y4fFw==}
375 | engines: {node: '>=10.13.0'}
376 |
377 | glob-watcher@6.0.0:
378 | resolution: {integrity: sha512-wGM28Ehmcnk2NqRORXFOTOR064L4imSw3EeOqU5bIwUf62eXGwg89WivH6VMahL8zlQHeodzvHpXplrqzrz3Nw==}
379 | engines: {node: '>= 10.13.0'}
380 |
381 | glob@7.2.3:
382 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
383 | deprecated: Glob versions prior to v9 are no longer supported
384 |
385 | global-modules@1.0.0:
386 | resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==}
387 | engines: {node: '>=0.10.0'}
388 |
389 | global-prefix@1.0.2:
390 | resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==}
391 | engines: {node: '>=0.10.0'}
392 |
393 | glogg@2.2.0:
394 | resolution: {integrity: sha512-eWv1ds/zAlz+M1ioHsyKJomfY7jbDDPpwSkv14KQj89bycx1nvK5/2Cj/T9g7kzJcX5Bc7Yv22FjfBZS/jl94A==}
395 | engines: {node: '>= 10.13.0'}
396 |
397 | gopd@1.2.0:
398 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
399 | engines: {node: '>= 0.4'}
400 |
401 | graceful-fs@4.2.11:
402 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
403 |
404 | gulp-cli@3.0.0:
405 | resolution: {integrity: sha512-RtMIitkT8DEMZZygHK2vEuLPqLPAFB4sntSxg4NoDta7ciwGZ18l7JuhCTiS5deOJi2IoK0btE+hs6R4sfj7AA==}
406 | engines: {node: '>=10.13.0'}
407 | hasBin: true
408 |
409 | gulp-terser@2.1.0:
410 | resolution: {integrity: sha512-lQ3+JUdHDVISAlUIUSZ/G9Dz/rBQHxOiYDQ70IVWFQeh4b33TC1MCIU+K18w07PS3rq/CVc34aQO4SUbdaNMPQ==}
411 | engines: {node: '>=10'}
412 |
413 | gulp-through2@1.1.0:
414 | resolution: {integrity: sha512-c7ENVnqYvnlGnGfPCwoN0dXbwqJ/fP0YVpK5/htK5GmDyhm6rzE/sE+x441jydr1e1XoIpbm5/M3Qoku0huafw==}
415 | engines: {node: '>=16.0.0'}
416 |
417 | gulp-typescript@6.0.0-alpha.1:
418 | resolution: {integrity: sha512-KoT0TTfjfT7w3JItHkgFH1T/zK4oXWC+a8xxKfniRfVcA0Fa1bKrIhztYelYmb+95RB80OLMBreknYkdwzdi2Q==}
419 | engines: {node: '>= 8'}
420 | peerDependencies:
421 | typescript: '~2.7.1 || >=2.8.0-dev || >=2.9.0-dev || ~3.0.0 || >=3.0.0-dev || >=3.1.0-dev || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.7.0-dev '
422 |
423 | gulp@5.0.0:
424 | resolution: {integrity: sha512-S8Z8066SSileaYw1S2N1I64IUc/myI2bqe2ihOBzO6+nKpvNSg7ZcWJt/AwF8LC/NVN+/QZ560Cb/5OPsyhkhg==}
425 | engines: {node: '>=10.13.0'}
426 | hasBin: true
427 |
428 | gulplog@2.2.0:
429 | resolution: {integrity: sha512-V2FaKiOhpR3DRXZuYdRLn/qiY0yI5XmqbTKrYbdemJ+xOh2d2MOweI/XFgMzd/9+1twdvMwllnZbWZNJ+BOm4A==}
430 | engines: {node: '>= 10.13.0'}
431 |
432 | has-flag@4.0.0:
433 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
434 | engines: {node: '>=8'}
435 |
436 | has-property-descriptors@1.0.2:
437 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
438 |
439 | has-symbols@1.1.0:
440 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
441 | engines: {node: '>= 0.4'}
442 |
443 | hasown@2.0.2:
444 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
445 | engines: {node: '>= 0.4'}
446 |
447 | homedir-polyfill@1.0.3:
448 | resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==}
449 | engines: {node: '>=0.10.0'}
450 |
451 | iconv-lite@0.6.3:
452 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
453 | engines: {node: '>=0.10.0'}
454 |
455 | ieee754@1.2.1:
456 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
457 |
458 | inflight@1.0.6:
459 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
460 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
461 |
462 | inherits@2.0.4:
463 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
464 |
465 | ini@1.3.8:
466 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
467 |
468 | interpret@3.1.1:
469 | resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==}
470 | engines: {node: '>=10.13.0'}
471 |
472 | is-absolute@1.0.0:
473 | resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==}
474 | engines: {node: '>=0.10.0'}
475 |
476 | is-binary-path@2.1.0:
477 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
478 | engines: {node: '>=8'}
479 |
480 | is-buffer@1.1.6:
481 | resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
482 |
483 | is-core-module@2.16.1:
484 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
485 | engines: {node: '>= 0.4'}
486 |
487 | is-extendable@1.0.1:
488 | resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==}
489 | engines: {node: '>=0.10.0'}
490 |
491 | is-extglob@2.1.1:
492 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
493 | engines: {node: '>=0.10.0'}
494 |
495 | is-fullwidth-code-point@3.0.0:
496 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
497 | engines: {node: '>=8'}
498 |
499 | is-glob@3.1.0:
500 | resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==}
501 | engines: {node: '>=0.10.0'}
502 |
503 | is-glob@4.0.3:
504 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
505 | engines: {node: '>=0.10.0'}
506 |
507 | is-negated-glob@1.0.0:
508 | resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==}
509 | engines: {node: '>=0.10.0'}
510 |
511 | is-number@7.0.0:
512 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
513 | engines: {node: '>=0.12.0'}
514 |
515 | is-plain-object@2.0.4:
516 | resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
517 | engines: {node: '>=0.10.0'}
518 |
519 | is-plain-object@5.0.0:
520 | resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
521 | engines: {node: '>=0.10.0'}
522 |
523 | is-relative@1.0.0:
524 | resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==}
525 | engines: {node: '>=0.10.0'}
526 |
527 | is-unc-path@1.0.0:
528 | resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==}
529 | engines: {node: '>=0.10.0'}
530 |
531 | is-utf8@0.2.1:
532 | resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==}
533 |
534 | is-valid-glob@1.0.0:
535 | resolution: {integrity: sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==}
536 | engines: {node: '>=0.10.0'}
537 |
538 | is-windows@1.0.2:
539 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
540 | engines: {node: '>=0.10.0'}
541 |
542 | isarray@1.0.0:
543 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
544 |
545 | isexe@2.0.0:
546 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
547 |
548 | isobject@3.0.1:
549 | resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
550 | engines: {node: '>=0.10.0'}
551 |
552 | json-stable-stringify-without-jsonify@1.0.1:
553 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
554 |
555 | last-run@2.0.0:
556 | resolution: {integrity: sha512-j+y6WhTLN4Itnf9j5ZQos1BGPCS8DAwmgMroR3OzfxAsBxam0hMw7J8M3KqZl0pLQJ1jNnwIexg5DYpC/ctwEQ==}
557 | engines: {node: '>= 10.13.0'}
558 |
559 | lazystream@1.0.1:
560 | resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==}
561 | engines: {node: '>= 0.6.3'}
562 |
563 | lead@1.0.0:
564 | resolution: {integrity: sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==}
565 | engines: {node: '>= 0.10'}
566 |
567 | lead@4.0.0:
568 | resolution: {integrity: sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==}
569 | engines: {node: '>=10.13.0'}
570 |
571 | liftoff@5.0.0:
572 | resolution: {integrity: sha512-a5BQjbCHnB+cy+gsro8lXJ4kZluzOijzJ1UVVfyJYZC+IP2pLv1h4+aysQeKuTmyO8NAqfyQAk4HWaP/HjcKTg==}
573 | engines: {node: '>=10.13.0'}
574 |
575 | map-cache@0.2.2:
576 | resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==}
577 | engines: {node: '>=0.10.0'}
578 |
579 | math-intrinsics@1.1.0:
580 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
581 | engines: {node: '>= 0.4'}
582 |
583 | micromatch@4.0.8:
584 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
585 | engines: {node: '>=8.6'}
586 |
587 | minimatch@3.1.2:
588 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
589 |
590 | mute-stdout@2.0.0:
591 | resolution: {integrity: sha512-32GSKM3Wyc8dg/p39lWPKYu8zci9mJFzV1Np9Of0ZEpe6Fhssn/FbI7ywAMd40uX+p3ZKh3T5EeCFv81qS3HmQ==}
592 | engines: {node: '>= 10.13.0'}
593 |
594 | normalize-path@2.1.1:
595 | resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==}
596 | engines: {node: '>=0.10.0'}
597 |
598 | normalize-path@3.0.0:
599 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
600 | engines: {node: '>=0.10.0'}
601 |
602 | now-and-later@2.0.1:
603 | resolution: {integrity: sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==}
604 | engines: {node: '>= 0.10'}
605 |
606 | now-and-later@3.0.0:
607 | resolution: {integrity: sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==}
608 | engines: {node: '>= 10.13.0'}
609 |
610 | object-keys@1.1.1:
611 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
612 | engines: {node: '>= 0.4'}
613 |
614 | object.assign@4.1.7:
615 | resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
616 | engines: {node: '>= 0.4'}
617 |
618 | object.defaults@1.1.0:
619 | resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==}
620 | engines: {node: '>=0.10.0'}
621 |
622 | object.pick@1.3.0:
623 | resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
624 | engines: {node: '>=0.10.0'}
625 |
626 | once@1.4.0:
627 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
628 |
629 | ordered-read-streams@1.0.1:
630 | resolution: {integrity: sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==}
631 |
632 | parse-filepath@1.0.2:
633 | resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==}
634 | engines: {node: '>=0.8'}
635 |
636 | parse-passwd@1.0.0:
637 | resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==}
638 | engines: {node: '>=0.10.0'}
639 |
640 | path-dirname@1.0.2:
641 | resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==}
642 |
643 | path-is-absolute@1.0.1:
644 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
645 | engines: {node: '>=0.10.0'}
646 |
647 | path-parse@1.0.7:
648 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
649 |
650 | path-root-regex@0.1.2:
651 | resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==}
652 | engines: {node: '>=0.10.0'}
653 |
654 | path-root@0.1.1:
655 | resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==}
656 | engines: {node: '>=0.10.0'}
657 |
658 | picomatch@2.3.1:
659 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
660 | engines: {node: '>=8.6'}
661 |
662 | plugin-error@1.0.1:
663 | resolution: {integrity: sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==}
664 | engines: {node: '>= 0.10'}
665 |
666 | plugin-error@2.0.1:
667 | resolution: {integrity: sha512-zMakqvIDyY40xHOvzXka0kUvf40nYIuwRE8dWhti2WtjQZ31xAgBZBhxsK7vK3QbRXS1Xms/LO7B5cuAsfB2Gg==}
668 | engines: {node: '>=10.13.0'}
669 |
670 | process-nextick-args@2.0.1:
671 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
672 |
673 | pump@2.0.1:
674 | resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==}
675 |
676 | pumpify@1.5.1:
677 | resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==}
678 |
679 | readable-stream@2.3.8:
680 | resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
681 |
682 | readable-stream@3.6.2:
683 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
684 | engines: {node: '>= 6'}
685 |
686 | readdirp@3.6.0:
687 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
688 | engines: {node: '>=8.10.0'}
689 |
690 | rechoir@0.8.0:
691 | resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==}
692 | engines: {node: '>= 10.13.0'}
693 |
694 | remove-bom-buffer@3.0.0:
695 | resolution: {integrity: sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==}
696 | engines: {node: '>=0.10.0'}
697 |
698 | remove-bom-stream@1.2.0:
699 | resolution: {integrity: sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==}
700 | engines: {node: '>= 0.10'}
701 |
702 | remove-trailing-separator@1.1.0:
703 | resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==}
704 |
705 | replace-ext@1.0.1:
706 | resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==}
707 | engines: {node: '>= 0.10'}
708 |
709 | replace-ext@2.0.0:
710 | resolution: {integrity: sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==}
711 | engines: {node: '>= 10'}
712 |
713 | replace-homedir@2.0.0:
714 | resolution: {integrity: sha512-bgEuQQ/BHW0XkkJtawzrfzHFSN70f/3cNOiHa2QsYxqrjaC30X1k74FJ6xswVBP0sr0SpGIdVFuPwfrYziVeyw==}
715 | engines: {node: '>= 10.13.0'}
716 |
717 | require-directory@2.1.1:
718 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
719 | engines: {node: '>=0.10.0'}
720 |
721 | resolve-dir@1.0.1:
722 | resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==}
723 | engines: {node: '>=0.10.0'}
724 |
725 | resolve-options@1.1.0:
726 | resolution: {integrity: sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==}
727 | engines: {node: '>= 0.10'}
728 |
729 | resolve-options@2.0.0:
730 | resolution: {integrity: sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==}
731 | engines: {node: '>= 10.13.0'}
732 |
733 | resolve@1.22.10:
734 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
735 | engines: {node: '>= 0.4'}
736 | hasBin: true
737 |
738 | reusify@1.0.4:
739 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
740 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
741 |
742 | safe-buffer@5.1.2:
743 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
744 |
745 | safe-buffer@5.2.1:
746 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
747 |
748 | safer-buffer@2.1.2:
749 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
750 |
751 | semver-greatest-satisfied-range@2.0.0:
752 | resolution: {integrity: sha512-lH3f6kMbwyANB7HuOWRMlLCa2itaCrZJ+SAqqkSZrZKO/cAsk2EOyaKHUtNkVLFyFW9pct22SFesFp3Z7zpA0g==}
753 | engines: {node: '>= 10.13.0'}
754 |
755 | semver@6.3.1:
756 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
757 | hasBin: true
758 |
759 | set-function-length@1.2.2:
760 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
761 | engines: {node: '>= 0.4'}
762 |
763 | source-map-support@0.5.21:
764 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
765 |
766 | source-map@0.5.7:
767 | resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
768 | engines: {node: '>=0.10.0'}
769 |
770 | source-map@0.6.1:
771 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
772 | engines: {node: '>=0.10.0'}
773 |
774 | source-map@0.7.4:
775 | resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
776 | engines: {node: '>= 8'}
777 |
778 | sparkles@2.1.0:
779 | resolution: {integrity: sha512-r7iW1bDw8R/cFifrD3JnQJX0K1jqT0kprL48BiBpLZLJPmAm34zsVBsK5lc7HirZYZqMW65dOXZgbAGt/I6frg==}
780 | engines: {node: '>= 10.13.0'}
781 |
782 | stream-composer@1.0.2:
783 | resolution: {integrity: sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==}
784 |
785 | stream-exhaust@1.0.2:
786 | resolution: {integrity: sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==}
787 |
788 | stream-shift@1.0.3:
789 | resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==}
790 |
791 | streamx@2.22.0:
792 | resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==}
793 |
794 | string-width@4.2.3:
795 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
796 | engines: {node: '>=8'}
797 |
798 | string_decoder@1.1.1:
799 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
800 |
801 | string_decoder@1.3.0:
802 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
803 |
804 | strip-ansi@6.0.1:
805 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
806 | engines: {node: '>=8'}
807 |
808 | supports-color@7.2.0:
809 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
810 | engines: {node: '>=8'}
811 |
812 | supports-preserve-symlinks-flag@1.0.0:
813 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
814 | engines: {node: '>= 0.4'}
815 |
816 | sver@1.8.4:
817 | resolution: {integrity: sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA==}
818 |
819 | teex@1.0.1:
820 | resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==}
821 |
822 | terser@5.39.0:
823 | resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==}
824 | engines: {node: '>=10'}
825 | hasBin: true
826 |
827 | text-decoder@1.2.3:
828 | resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==}
829 |
830 | through2-filter@3.0.0:
831 | resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==}
832 |
833 | through2@2.0.5:
834 | resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
835 |
836 | through2@3.0.2:
837 | resolution: {integrity: sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==}
838 |
839 | through2@4.0.2:
840 | resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==}
841 |
842 | to-absolute-glob@2.0.2:
843 | resolution: {integrity: sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==}
844 | engines: {node: '>=0.10.0'}
845 |
846 | to-regex-range@5.0.1:
847 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
848 | engines: {node: '>=8.0'}
849 |
850 | to-through@2.0.0:
851 | resolution: {integrity: sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==}
852 | engines: {node: '>= 0.10'}
853 |
854 | to-through@3.0.0:
855 | resolution: {integrity: sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==}
856 | engines: {node: '>=10.13.0'}
857 |
858 | typescript@5.7.3:
859 | resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
860 | engines: {node: '>=14.17'}
861 | hasBin: true
862 |
863 | unc-path-regex@0.1.2:
864 | resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==}
865 | engines: {node: '>=0.10.0'}
866 |
867 | undertaker-registry@2.0.0:
868 | resolution: {integrity: sha512-+hhVICbnp+rlzZMgxXenpvTxpuvA67Bfgtt+O9WOE5jo7w/dyiF1VmoZVIHvP2EkUjsyKyTwYKlLhA+j47m1Ew==}
869 | engines: {node: '>= 10.13.0'}
870 |
871 | undertaker@2.0.0:
872 | resolution: {integrity: sha512-tO/bf30wBbTsJ7go80j0RzA2rcwX6o7XPBpeFcb+jzoeb4pfMM2zUeSDIkY1AWqeZabWxaQZ/h8N9t35QKDLPQ==}
873 | engines: {node: '>=10.13.0'}
874 |
875 | undici-types@6.20.0:
876 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
877 |
878 | unique-stream@2.3.1:
879 | resolution: {integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==}
880 |
881 | util-deprecate@1.0.2:
882 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
883 |
884 | v8flags@4.0.1:
885 | resolution: {integrity: sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==}
886 | engines: {node: '>= 10.13.0'}
887 |
888 | value-or-function@3.0.0:
889 | resolution: {integrity: sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==}
890 | engines: {node: '>= 0.10'}
891 |
892 | value-or-function@4.0.0:
893 | resolution: {integrity: sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==}
894 | engines: {node: '>= 10.13.0'}
895 |
896 | vinyl-contents@2.0.0:
897 | resolution: {integrity: sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==}
898 | engines: {node: '>=10.13.0'}
899 |
900 | vinyl-fs@3.0.3:
901 | resolution: {integrity: sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==}
902 | engines: {node: '>= 0.10'}
903 |
904 | vinyl-fs@4.0.0:
905 | resolution: {integrity: sha512-7GbgBnYfaquMk3Qu9g22x000vbYkOex32930rBnc3qByw6HfMEAoELjCjoJv4HuEQxHAurT+nvMHm6MnJllFLw==}
906 | engines: {node: '>=10.13.0'}
907 |
908 | vinyl-sourcemap@1.1.0:
909 | resolution: {integrity: sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==}
910 | engines: {node: '>= 0.10'}
911 |
912 | vinyl-sourcemap@2.0.0:
913 | resolution: {integrity: sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==}
914 | engines: {node: '>=10.13.0'}
915 |
916 | vinyl-sourcemaps-apply@0.2.1:
917 | resolution: {integrity: sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==}
918 |
919 | vinyl@2.2.1:
920 | resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==}
921 | engines: {node: '>= 0.10'}
922 |
923 | vinyl@3.0.0:
924 | resolution: {integrity: sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==}
925 | engines: {node: '>=10.13.0'}
926 |
927 | which@1.3.1:
928 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
929 | hasBin: true
930 |
931 | wrap-ansi@7.0.0:
932 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
933 | engines: {node: '>=10'}
934 |
935 | wrappy@1.0.2:
936 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
937 |
938 | xtend@4.0.2:
939 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
940 | engines: {node: '>=0.4'}
941 |
942 | y18n@5.0.8:
943 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
944 | engines: {node: '>=10'}
945 |
946 | yargs-parser@20.2.9:
947 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
948 | engines: {node: '>=10'}
949 |
950 | yargs@16.2.0:
951 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
952 | engines: {node: '>=10'}
953 |
954 | snapshots:
955 |
956 | '@gulpjs/messages@1.1.0': {}
957 |
958 | '@gulpjs/to-absolute-glob@4.0.0':
959 | dependencies:
960 | is-negated-glob: 1.0.0
961 |
962 | '@jridgewell/gen-mapping@0.3.8':
963 | dependencies:
964 | '@jridgewell/set-array': 1.2.1
965 | '@jridgewell/sourcemap-codec': 1.5.0
966 | '@jridgewell/trace-mapping': 0.3.25
967 |
968 | '@jridgewell/resolve-uri@3.1.2': {}
969 |
970 | '@jridgewell/set-array@1.2.1': {}
971 |
972 | '@jridgewell/source-map@0.3.6':
973 | dependencies:
974 | '@jridgewell/gen-mapping': 0.3.8
975 | '@jridgewell/trace-mapping': 0.3.25
976 |
977 | '@jridgewell/sourcemap-codec@1.5.0': {}
978 |
979 | '@jridgewell/trace-mapping@0.3.25':
980 | dependencies:
981 | '@jridgewell/resolve-uri': 3.1.2
982 | '@jridgewell/sourcemap-codec': 1.5.0
983 |
984 | '@types/expect@1.20.4': {}
985 |
986 | '@types/node@22.13.4':
987 | dependencies:
988 | undici-types: 6.20.0
989 |
990 | '@types/vinyl@2.0.12':
991 | dependencies:
992 | '@types/expect': 1.20.4
993 | '@types/node': 22.13.4
994 |
995 | acorn@8.14.0: {}
996 |
997 | ansi-colors@1.1.0:
998 | dependencies:
999 | ansi-wrap: 0.1.0
1000 |
1001 | ansi-colors@4.1.3: {}
1002 |
1003 | ansi-regex@5.0.1: {}
1004 |
1005 | ansi-styles@4.3.0:
1006 | dependencies:
1007 | color-convert: 2.0.1
1008 |
1009 | ansi-wrap@0.1.0: {}
1010 |
1011 | anymatch@3.1.3:
1012 | dependencies:
1013 | normalize-path: 3.0.0
1014 | picomatch: 2.3.1
1015 |
1016 | append-buffer@1.0.2:
1017 | dependencies:
1018 | buffer-equal: 1.0.1
1019 |
1020 | arr-diff@4.0.0: {}
1021 |
1022 | arr-union@3.1.0: {}
1023 |
1024 | array-each@1.0.1: {}
1025 |
1026 | array-slice@1.1.0: {}
1027 |
1028 | assign-symbols@1.0.0: {}
1029 |
1030 | async-done@2.0.0:
1031 | dependencies:
1032 | end-of-stream: 1.4.4
1033 | once: 1.4.0
1034 | stream-exhaust: 1.0.2
1035 |
1036 | async-settle@2.0.0:
1037 | dependencies:
1038 | async-done: 2.0.0
1039 |
1040 | b4a@1.6.7: {}
1041 |
1042 | bach@2.0.1:
1043 | dependencies:
1044 | async-done: 2.0.0
1045 | async-settle: 2.0.0
1046 | now-and-later: 3.0.0
1047 |
1048 | balanced-match@1.0.2: {}
1049 |
1050 | bare-events@2.5.4:
1051 | optional: true
1052 |
1053 | base64-js@1.5.1: {}
1054 |
1055 | binary-extensions@2.3.0: {}
1056 |
1057 | bl@5.1.0:
1058 | dependencies:
1059 | buffer: 6.0.3
1060 | inherits: 2.0.4
1061 | readable-stream: 3.6.2
1062 |
1063 | brace-expansion@1.1.11:
1064 | dependencies:
1065 | balanced-match: 1.0.2
1066 | concat-map: 0.0.1
1067 |
1068 | braces@3.0.3:
1069 | dependencies:
1070 | fill-range: 7.1.1
1071 |
1072 | buffer-equal@1.0.1: {}
1073 |
1074 | buffer-from@1.1.2: {}
1075 |
1076 | buffer@6.0.3:
1077 | dependencies:
1078 | base64-js: 1.5.1
1079 | ieee754: 1.2.1
1080 |
1081 | call-bind-apply-helpers@1.0.2:
1082 | dependencies:
1083 | es-errors: 1.3.0
1084 | function-bind: 1.1.2
1085 |
1086 | call-bind@1.0.8:
1087 | dependencies:
1088 | call-bind-apply-helpers: 1.0.2
1089 | es-define-property: 1.0.1
1090 | get-intrinsic: 1.2.7
1091 | set-function-length: 1.2.2
1092 |
1093 | call-bound@1.0.3:
1094 | dependencies:
1095 | call-bind-apply-helpers: 1.0.2
1096 | get-intrinsic: 1.2.7
1097 |
1098 | chalk@4.1.2:
1099 | dependencies:
1100 | ansi-styles: 4.3.0
1101 | supports-color: 7.2.0
1102 |
1103 | chokidar@3.6.0:
1104 | dependencies:
1105 | anymatch: 3.1.3
1106 | braces: 3.0.3
1107 | glob-parent: 5.1.2
1108 | is-binary-path: 2.1.0
1109 | is-glob: 4.0.3
1110 | normalize-path: 3.0.0
1111 | readdirp: 3.6.0
1112 | optionalDependencies:
1113 | fsevents: 2.3.3
1114 |
1115 | cliui@7.0.4:
1116 | dependencies:
1117 | string-width: 4.2.3
1118 | strip-ansi: 6.0.1
1119 | wrap-ansi: 7.0.0
1120 |
1121 | clone-buffer@1.0.0: {}
1122 |
1123 | clone-stats@1.0.0: {}
1124 |
1125 | clone@2.1.2: {}
1126 |
1127 | cloneable-readable@1.1.3:
1128 | dependencies:
1129 | inherits: 2.0.4
1130 | process-nextick-args: 2.0.1
1131 | readable-stream: 2.3.8
1132 |
1133 | color-convert@2.0.1:
1134 | dependencies:
1135 | color-name: 1.1.4
1136 |
1137 | color-name@1.1.4: {}
1138 |
1139 | commander@2.20.3: {}
1140 |
1141 | concat-map@0.0.1: {}
1142 |
1143 | convert-source-map@1.9.0: {}
1144 |
1145 | convert-source-map@2.0.0: {}
1146 |
1147 | copy-props@4.0.0:
1148 | dependencies:
1149 | each-props: 3.0.0
1150 | is-plain-object: 5.0.0
1151 |
1152 | core-util-is@1.0.3: {}
1153 |
1154 | define-data-property@1.1.4:
1155 | dependencies:
1156 | es-define-property: 1.0.1
1157 | es-errors: 1.3.0
1158 | gopd: 1.2.0
1159 |
1160 | define-properties@1.2.1:
1161 | dependencies:
1162 | define-data-property: 1.1.4
1163 | has-property-descriptors: 1.0.2
1164 | object-keys: 1.1.1
1165 |
1166 | detect-file@1.0.0: {}
1167 |
1168 | dunder-proto@1.0.1:
1169 | dependencies:
1170 | call-bind-apply-helpers: 1.0.2
1171 | es-errors: 1.3.0
1172 | gopd: 1.2.0
1173 |
1174 | duplexify@3.7.1:
1175 | dependencies:
1176 | end-of-stream: 1.4.4
1177 | inherits: 2.0.4
1178 | readable-stream: 2.3.8
1179 | stream-shift: 1.0.3
1180 |
1181 | each-props@3.0.0:
1182 | dependencies:
1183 | is-plain-object: 5.0.0
1184 | object.defaults: 1.1.0
1185 |
1186 | emoji-regex@8.0.0: {}
1187 |
1188 | end-of-stream@1.4.4:
1189 | dependencies:
1190 | once: 1.4.0
1191 |
1192 | es-define-property@1.0.1: {}
1193 |
1194 | es-errors@1.3.0: {}
1195 |
1196 | es-object-atoms@1.1.1:
1197 | dependencies:
1198 | es-errors: 1.3.0
1199 |
1200 | escalade@3.2.0: {}
1201 |
1202 | expand-tilde@2.0.2:
1203 | dependencies:
1204 | homedir-polyfill: 1.0.3
1205 |
1206 | extend-shallow@3.0.2:
1207 | dependencies:
1208 | assign-symbols: 1.0.0
1209 | is-extendable: 1.0.1
1210 |
1211 | extend@3.0.2: {}
1212 |
1213 | fast-fifo@1.3.2: {}
1214 |
1215 | fast-levenshtein@3.0.0:
1216 | dependencies:
1217 | fastest-levenshtein: 1.0.16
1218 |
1219 | fastest-levenshtein@1.0.16: {}
1220 |
1221 | fastq@1.19.0:
1222 | dependencies:
1223 | reusify: 1.0.4
1224 |
1225 | fill-range@7.1.1:
1226 | dependencies:
1227 | to-regex-range: 5.0.1
1228 |
1229 | findup-sync@5.0.0:
1230 | dependencies:
1231 | detect-file: 1.0.0
1232 | is-glob: 4.0.3
1233 | micromatch: 4.0.8
1234 | resolve-dir: 1.0.1
1235 |
1236 | fined@2.0.0:
1237 | dependencies:
1238 | expand-tilde: 2.0.2
1239 | is-plain-object: 5.0.0
1240 | object.defaults: 1.1.0
1241 | object.pick: 1.3.0
1242 | parse-filepath: 1.0.2
1243 |
1244 | flagged-respawn@2.0.0: {}
1245 |
1246 | flush-write-stream@1.1.1:
1247 | dependencies:
1248 | inherits: 2.0.4
1249 | readable-stream: 2.3.8
1250 |
1251 | for-in@1.0.2: {}
1252 |
1253 | for-own@1.0.0:
1254 | dependencies:
1255 | for-in: 1.0.2
1256 |
1257 | fs-mkdirp-stream@1.0.0:
1258 | dependencies:
1259 | graceful-fs: 4.2.11
1260 | through2: 2.0.5
1261 |
1262 | fs-mkdirp-stream@2.0.1:
1263 | dependencies:
1264 | graceful-fs: 4.2.11
1265 | streamx: 2.22.0
1266 |
1267 | fs.realpath@1.0.0: {}
1268 |
1269 | fsevents@2.3.3:
1270 | optional: true
1271 |
1272 | function-bind@1.1.2: {}
1273 |
1274 | get-caller-file@2.0.5: {}
1275 |
1276 | get-intrinsic@1.2.7:
1277 | dependencies:
1278 | call-bind-apply-helpers: 1.0.2
1279 | es-define-property: 1.0.1
1280 | es-errors: 1.3.0
1281 | es-object-atoms: 1.1.1
1282 | function-bind: 1.1.2
1283 | get-proto: 1.0.1
1284 | gopd: 1.2.0
1285 | has-symbols: 1.1.0
1286 | hasown: 2.0.2
1287 | math-intrinsics: 1.1.0
1288 |
1289 | get-proto@1.0.1:
1290 | dependencies:
1291 | dunder-proto: 1.0.1
1292 | es-object-atoms: 1.1.1
1293 |
1294 | glob-parent@3.1.0:
1295 | dependencies:
1296 | is-glob: 3.1.0
1297 | path-dirname: 1.0.2
1298 |
1299 | glob-parent@5.1.2:
1300 | dependencies:
1301 | is-glob: 4.0.3
1302 |
1303 | glob-parent@6.0.2:
1304 | dependencies:
1305 | is-glob: 4.0.3
1306 |
1307 | glob-stream@6.1.0:
1308 | dependencies:
1309 | extend: 3.0.2
1310 | glob: 7.2.3
1311 | glob-parent: 3.1.0
1312 | is-negated-glob: 1.0.0
1313 | ordered-read-streams: 1.0.1
1314 | pumpify: 1.5.1
1315 | readable-stream: 2.3.8
1316 | remove-trailing-separator: 1.1.0
1317 | to-absolute-glob: 2.0.2
1318 | unique-stream: 2.3.1
1319 |
1320 | glob-stream@8.0.2:
1321 | dependencies:
1322 | '@gulpjs/to-absolute-glob': 4.0.0
1323 | anymatch: 3.1.3
1324 | fastq: 1.19.0
1325 | glob-parent: 6.0.2
1326 | is-glob: 4.0.3
1327 | is-negated-glob: 1.0.0
1328 | normalize-path: 3.0.0
1329 | streamx: 2.22.0
1330 |
1331 | glob-watcher@6.0.0:
1332 | dependencies:
1333 | async-done: 2.0.0
1334 | chokidar: 3.6.0
1335 |
1336 | glob@7.2.3:
1337 | dependencies:
1338 | fs.realpath: 1.0.0
1339 | inflight: 1.0.6
1340 | inherits: 2.0.4
1341 | minimatch: 3.1.2
1342 | once: 1.4.0
1343 | path-is-absolute: 1.0.1
1344 |
1345 | global-modules@1.0.0:
1346 | dependencies:
1347 | global-prefix: 1.0.2
1348 | is-windows: 1.0.2
1349 | resolve-dir: 1.0.1
1350 |
1351 | global-prefix@1.0.2:
1352 | dependencies:
1353 | expand-tilde: 2.0.2
1354 | homedir-polyfill: 1.0.3
1355 | ini: 1.3.8
1356 | is-windows: 1.0.2
1357 | which: 1.3.1
1358 |
1359 | glogg@2.2.0:
1360 | dependencies:
1361 | sparkles: 2.1.0
1362 |
1363 | gopd@1.2.0: {}
1364 |
1365 | graceful-fs@4.2.11: {}
1366 |
1367 | gulp-cli@3.0.0:
1368 | dependencies:
1369 | '@gulpjs/messages': 1.1.0
1370 | chalk: 4.1.2
1371 | copy-props: 4.0.0
1372 | gulplog: 2.2.0
1373 | interpret: 3.1.1
1374 | liftoff: 5.0.0
1375 | mute-stdout: 2.0.0
1376 | replace-homedir: 2.0.0
1377 | semver-greatest-satisfied-range: 2.0.0
1378 | string-width: 4.2.3
1379 | v8flags: 4.0.1
1380 | yargs: 16.2.0
1381 |
1382 | gulp-terser@2.1.0:
1383 | dependencies:
1384 | plugin-error: 1.0.1
1385 | terser: 5.39.0
1386 | through2: 4.0.2
1387 | vinyl-sourcemaps-apply: 0.2.1
1388 |
1389 | gulp-through2@1.1.0:
1390 | dependencies:
1391 | '@types/vinyl': 2.0.12
1392 | plugin-error: 2.0.1
1393 | vinyl: 3.0.0
1394 |
1395 | gulp-typescript@6.0.0-alpha.1(typescript@5.7.3):
1396 | dependencies:
1397 | ansi-colors: 4.1.3
1398 | plugin-error: 1.0.1
1399 | source-map: 0.7.4
1400 | through2: 3.0.2
1401 | typescript: 5.7.3
1402 | vinyl: 2.2.1
1403 | vinyl-fs: 3.0.3
1404 |
1405 | gulp@5.0.0:
1406 | dependencies:
1407 | glob-watcher: 6.0.0
1408 | gulp-cli: 3.0.0
1409 | undertaker: 2.0.0
1410 | vinyl-fs: 4.0.0
1411 |
1412 | gulplog@2.2.0:
1413 | dependencies:
1414 | glogg: 2.2.0
1415 |
1416 | has-flag@4.0.0: {}
1417 |
1418 | has-property-descriptors@1.0.2:
1419 | dependencies:
1420 | es-define-property: 1.0.1
1421 |
1422 | has-symbols@1.1.0: {}
1423 |
1424 | hasown@2.0.2:
1425 | dependencies:
1426 | function-bind: 1.1.2
1427 |
1428 | homedir-polyfill@1.0.3:
1429 | dependencies:
1430 | parse-passwd: 1.0.0
1431 |
1432 | iconv-lite@0.6.3:
1433 | dependencies:
1434 | safer-buffer: 2.1.2
1435 |
1436 | ieee754@1.2.1: {}
1437 |
1438 | inflight@1.0.6:
1439 | dependencies:
1440 | once: 1.4.0
1441 | wrappy: 1.0.2
1442 |
1443 | inherits@2.0.4: {}
1444 |
1445 | ini@1.3.8: {}
1446 |
1447 | interpret@3.1.1: {}
1448 |
1449 | is-absolute@1.0.0:
1450 | dependencies:
1451 | is-relative: 1.0.0
1452 | is-windows: 1.0.2
1453 |
1454 | is-binary-path@2.1.0:
1455 | dependencies:
1456 | binary-extensions: 2.3.0
1457 |
1458 | is-buffer@1.1.6: {}
1459 |
1460 | is-core-module@2.16.1:
1461 | dependencies:
1462 | hasown: 2.0.2
1463 |
1464 | is-extendable@1.0.1:
1465 | dependencies:
1466 | is-plain-object: 2.0.4
1467 |
1468 | is-extglob@2.1.1: {}
1469 |
1470 | is-fullwidth-code-point@3.0.0: {}
1471 |
1472 | is-glob@3.1.0:
1473 | dependencies:
1474 | is-extglob: 2.1.1
1475 |
1476 | is-glob@4.0.3:
1477 | dependencies:
1478 | is-extglob: 2.1.1
1479 |
1480 | is-negated-glob@1.0.0: {}
1481 |
1482 | is-number@7.0.0: {}
1483 |
1484 | is-plain-object@2.0.4:
1485 | dependencies:
1486 | isobject: 3.0.1
1487 |
1488 | is-plain-object@5.0.0: {}
1489 |
1490 | is-relative@1.0.0:
1491 | dependencies:
1492 | is-unc-path: 1.0.0
1493 |
1494 | is-unc-path@1.0.0:
1495 | dependencies:
1496 | unc-path-regex: 0.1.2
1497 |
1498 | is-utf8@0.2.1: {}
1499 |
1500 | is-valid-glob@1.0.0: {}
1501 |
1502 | is-windows@1.0.2: {}
1503 |
1504 | isarray@1.0.0: {}
1505 |
1506 | isexe@2.0.0: {}
1507 |
1508 | isobject@3.0.1: {}
1509 |
1510 | json-stable-stringify-without-jsonify@1.0.1: {}
1511 |
1512 | last-run@2.0.0: {}
1513 |
1514 | lazystream@1.0.1:
1515 | dependencies:
1516 | readable-stream: 2.3.8
1517 |
1518 | lead@1.0.0:
1519 | dependencies:
1520 | flush-write-stream: 1.1.1
1521 |
1522 | lead@4.0.0: {}
1523 |
1524 | liftoff@5.0.0:
1525 | dependencies:
1526 | extend: 3.0.2
1527 | findup-sync: 5.0.0
1528 | fined: 2.0.0
1529 | flagged-respawn: 2.0.0
1530 | is-plain-object: 5.0.0
1531 | rechoir: 0.8.0
1532 | resolve: 1.22.10
1533 |
1534 | map-cache@0.2.2: {}
1535 |
1536 | math-intrinsics@1.1.0: {}
1537 |
1538 | micromatch@4.0.8:
1539 | dependencies:
1540 | braces: 3.0.3
1541 | picomatch: 2.3.1
1542 |
1543 | minimatch@3.1.2:
1544 | dependencies:
1545 | brace-expansion: 1.1.11
1546 |
1547 | mute-stdout@2.0.0: {}
1548 |
1549 | normalize-path@2.1.1:
1550 | dependencies:
1551 | remove-trailing-separator: 1.1.0
1552 |
1553 | normalize-path@3.0.0: {}
1554 |
1555 | now-and-later@2.0.1:
1556 | dependencies:
1557 | once: 1.4.0
1558 |
1559 | now-and-later@3.0.0:
1560 | dependencies:
1561 | once: 1.4.0
1562 |
1563 | object-keys@1.1.1: {}
1564 |
1565 | object.assign@4.1.7:
1566 | dependencies:
1567 | call-bind: 1.0.8
1568 | call-bound: 1.0.3
1569 | define-properties: 1.2.1
1570 | es-object-atoms: 1.1.1
1571 | has-symbols: 1.1.0
1572 | object-keys: 1.1.1
1573 |
1574 | object.defaults@1.1.0:
1575 | dependencies:
1576 | array-each: 1.0.1
1577 | array-slice: 1.1.0
1578 | for-own: 1.0.0
1579 | isobject: 3.0.1
1580 |
1581 | object.pick@1.3.0:
1582 | dependencies:
1583 | isobject: 3.0.1
1584 |
1585 | once@1.4.0:
1586 | dependencies:
1587 | wrappy: 1.0.2
1588 |
1589 | ordered-read-streams@1.0.1:
1590 | dependencies:
1591 | readable-stream: 2.3.8
1592 |
1593 | parse-filepath@1.0.2:
1594 | dependencies:
1595 | is-absolute: 1.0.0
1596 | map-cache: 0.2.2
1597 | path-root: 0.1.1
1598 |
1599 | parse-passwd@1.0.0: {}
1600 |
1601 | path-dirname@1.0.2: {}
1602 |
1603 | path-is-absolute@1.0.1: {}
1604 |
1605 | path-parse@1.0.7: {}
1606 |
1607 | path-root-regex@0.1.2: {}
1608 |
1609 | path-root@0.1.1:
1610 | dependencies:
1611 | path-root-regex: 0.1.2
1612 |
1613 | picomatch@2.3.1: {}
1614 |
1615 | plugin-error@1.0.1:
1616 | dependencies:
1617 | ansi-colors: 1.1.0
1618 | arr-diff: 4.0.0
1619 | arr-union: 3.1.0
1620 | extend-shallow: 3.0.2
1621 |
1622 | plugin-error@2.0.1:
1623 | dependencies:
1624 | ansi-colors: 1.1.0
1625 |
1626 | process-nextick-args@2.0.1: {}
1627 |
1628 | pump@2.0.1:
1629 | dependencies:
1630 | end-of-stream: 1.4.4
1631 | once: 1.4.0
1632 |
1633 | pumpify@1.5.1:
1634 | dependencies:
1635 | duplexify: 3.7.1
1636 | inherits: 2.0.4
1637 | pump: 2.0.1
1638 |
1639 | readable-stream@2.3.8:
1640 | dependencies:
1641 | core-util-is: 1.0.3
1642 | inherits: 2.0.4
1643 | isarray: 1.0.0
1644 | process-nextick-args: 2.0.1
1645 | safe-buffer: 5.1.2
1646 | string_decoder: 1.1.1
1647 | util-deprecate: 1.0.2
1648 |
1649 | readable-stream@3.6.2:
1650 | dependencies:
1651 | inherits: 2.0.4
1652 | string_decoder: 1.3.0
1653 | util-deprecate: 1.0.2
1654 |
1655 | readdirp@3.6.0:
1656 | dependencies:
1657 | picomatch: 2.3.1
1658 |
1659 | rechoir@0.8.0:
1660 | dependencies:
1661 | resolve: 1.22.10
1662 |
1663 | remove-bom-buffer@3.0.0:
1664 | dependencies:
1665 | is-buffer: 1.1.6
1666 | is-utf8: 0.2.1
1667 |
1668 | remove-bom-stream@1.2.0:
1669 | dependencies:
1670 | remove-bom-buffer: 3.0.0
1671 | safe-buffer: 5.2.1
1672 | through2: 2.0.5
1673 |
1674 | remove-trailing-separator@1.1.0: {}
1675 |
1676 | replace-ext@1.0.1: {}
1677 |
1678 | replace-ext@2.0.0: {}
1679 |
1680 | replace-homedir@2.0.0: {}
1681 |
1682 | require-directory@2.1.1: {}
1683 |
1684 | resolve-dir@1.0.1:
1685 | dependencies:
1686 | expand-tilde: 2.0.2
1687 | global-modules: 1.0.0
1688 |
1689 | resolve-options@1.1.0:
1690 | dependencies:
1691 | value-or-function: 3.0.0
1692 |
1693 | resolve-options@2.0.0:
1694 | dependencies:
1695 | value-or-function: 4.0.0
1696 |
1697 | resolve@1.22.10:
1698 | dependencies:
1699 | is-core-module: 2.16.1
1700 | path-parse: 1.0.7
1701 | supports-preserve-symlinks-flag: 1.0.0
1702 |
1703 | reusify@1.0.4: {}
1704 |
1705 | safe-buffer@5.1.2: {}
1706 |
1707 | safe-buffer@5.2.1: {}
1708 |
1709 | safer-buffer@2.1.2: {}
1710 |
1711 | semver-greatest-satisfied-range@2.0.0:
1712 | dependencies:
1713 | sver: 1.8.4
1714 |
1715 | semver@6.3.1:
1716 | optional: true
1717 |
1718 | set-function-length@1.2.2:
1719 | dependencies:
1720 | define-data-property: 1.1.4
1721 | es-errors: 1.3.0
1722 | function-bind: 1.1.2
1723 | get-intrinsic: 1.2.7
1724 | gopd: 1.2.0
1725 | has-property-descriptors: 1.0.2
1726 |
1727 | source-map-support@0.5.21:
1728 | dependencies:
1729 | buffer-from: 1.1.2
1730 | source-map: 0.6.1
1731 |
1732 | source-map@0.5.7: {}
1733 |
1734 | source-map@0.6.1: {}
1735 |
1736 | source-map@0.7.4: {}
1737 |
1738 | sparkles@2.1.0: {}
1739 |
1740 | stream-composer@1.0.2:
1741 | dependencies:
1742 | streamx: 2.22.0
1743 |
1744 | stream-exhaust@1.0.2: {}
1745 |
1746 | stream-shift@1.0.3: {}
1747 |
1748 | streamx@2.22.0:
1749 | dependencies:
1750 | fast-fifo: 1.3.2
1751 | text-decoder: 1.2.3
1752 | optionalDependencies:
1753 | bare-events: 2.5.4
1754 |
1755 | string-width@4.2.3:
1756 | dependencies:
1757 | emoji-regex: 8.0.0
1758 | is-fullwidth-code-point: 3.0.0
1759 | strip-ansi: 6.0.1
1760 |
1761 | string_decoder@1.1.1:
1762 | dependencies:
1763 | safe-buffer: 5.1.2
1764 |
1765 | string_decoder@1.3.0:
1766 | dependencies:
1767 | safe-buffer: 5.2.1
1768 |
1769 | strip-ansi@6.0.1:
1770 | dependencies:
1771 | ansi-regex: 5.0.1
1772 |
1773 | supports-color@7.2.0:
1774 | dependencies:
1775 | has-flag: 4.0.0
1776 |
1777 | supports-preserve-symlinks-flag@1.0.0: {}
1778 |
1779 | sver@1.8.4:
1780 | optionalDependencies:
1781 | semver: 6.3.1
1782 |
1783 | teex@1.0.1:
1784 | dependencies:
1785 | streamx: 2.22.0
1786 |
1787 | terser@5.39.0:
1788 | dependencies:
1789 | '@jridgewell/source-map': 0.3.6
1790 | acorn: 8.14.0
1791 | commander: 2.20.3
1792 | source-map-support: 0.5.21
1793 |
1794 | text-decoder@1.2.3:
1795 | dependencies:
1796 | b4a: 1.6.7
1797 |
1798 | through2-filter@3.0.0:
1799 | dependencies:
1800 | through2: 2.0.5
1801 | xtend: 4.0.2
1802 |
1803 | through2@2.0.5:
1804 | dependencies:
1805 | readable-stream: 2.3.8
1806 | xtend: 4.0.2
1807 |
1808 | through2@3.0.2:
1809 | dependencies:
1810 | inherits: 2.0.4
1811 | readable-stream: 3.6.2
1812 |
1813 | through2@4.0.2:
1814 | dependencies:
1815 | readable-stream: 3.6.2
1816 |
1817 | to-absolute-glob@2.0.2:
1818 | dependencies:
1819 | is-absolute: 1.0.0
1820 | is-negated-glob: 1.0.0
1821 |
1822 | to-regex-range@5.0.1:
1823 | dependencies:
1824 | is-number: 7.0.0
1825 |
1826 | to-through@2.0.0:
1827 | dependencies:
1828 | through2: 2.0.5
1829 |
1830 | to-through@3.0.0:
1831 | dependencies:
1832 | streamx: 2.22.0
1833 |
1834 | typescript@5.7.3: {}
1835 |
1836 | unc-path-regex@0.1.2: {}
1837 |
1838 | undertaker-registry@2.0.0: {}
1839 |
1840 | undertaker@2.0.0:
1841 | dependencies:
1842 | bach: 2.0.1
1843 | fast-levenshtein: 3.0.0
1844 | last-run: 2.0.0
1845 | undertaker-registry: 2.0.0
1846 |
1847 | undici-types@6.20.0: {}
1848 |
1849 | unique-stream@2.3.1:
1850 | dependencies:
1851 | json-stable-stringify-without-jsonify: 1.0.1
1852 | through2-filter: 3.0.0
1853 |
1854 | util-deprecate@1.0.2: {}
1855 |
1856 | v8flags@4.0.1: {}
1857 |
1858 | value-or-function@3.0.0: {}
1859 |
1860 | value-or-function@4.0.0: {}
1861 |
1862 | vinyl-contents@2.0.0:
1863 | dependencies:
1864 | bl: 5.1.0
1865 | vinyl: 3.0.0
1866 |
1867 | vinyl-fs@3.0.3:
1868 | dependencies:
1869 | fs-mkdirp-stream: 1.0.0
1870 | glob-stream: 6.1.0
1871 | graceful-fs: 4.2.11
1872 | is-valid-glob: 1.0.0
1873 | lazystream: 1.0.1
1874 | lead: 1.0.0
1875 | object.assign: 4.1.7
1876 | pumpify: 1.5.1
1877 | readable-stream: 2.3.8
1878 | remove-bom-buffer: 3.0.0
1879 | remove-bom-stream: 1.2.0
1880 | resolve-options: 1.1.0
1881 | through2: 2.0.5
1882 | to-through: 2.0.0
1883 | value-or-function: 3.0.0
1884 | vinyl: 2.2.1
1885 | vinyl-sourcemap: 1.1.0
1886 |
1887 | vinyl-fs@4.0.0:
1888 | dependencies:
1889 | fs-mkdirp-stream: 2.0.1
1890 | glob-stream: 8.0.2
1891 | graceful-fs: 4.2.11
1892 | iconv-lite: 0.6.3
1893 | is-valid-glob: 1.0.0
1894 | lead: 4.0.0
1895 | normalize-path: 3.0.0
1896 | resolve-options: 2.0.0
1897 | stream-composer: 1.0.2
1898 | streamx: 2.22.0
1899 | to-through: 3.0.0
1900 | value-or-function: 4.0.0
1901 | vinyl: 3.0.0
1902 | vinyl-sourcemap: 2.0.0
1903 |
1904 | vinyl-sourcemap@1.1.0:
1905 | dependencies:
1906 | append-buffer: 1.0.2
1907 | convert-source-map: 1.9.0
1908 | graceful-fs: 4.2.11
1909 | normalize-path: 2.1.1
1910 | now-and-later: 2.0.1
1911 | remove-bom-buffer: 3.0.0
1912 | vinyl: 2.2.1
1913 |
1914 | vinyl-sourcemap@2.0.0:
1915 | dependencies:
1916 | convert-source-map: 2.0.0
1917 | graceful-fs: 4.2.11
1918 | now-and-later: 3.0.0
1919 | streamx: 2.22.0
1920 | vinyl: 3.0.0
1921 | vinyl-contents: 2.0.0
1922 |
1923 | vinyl-sourcemaps-apply@0.2.1:
1924 | dependencies:
1925 | source-map: 0.5.7
1926 |
1927 | vinyl@2.2.1:
1928 | dependencies:
1929 | clone: 2.1.2
1930 | clone-buffer: 1.0.0
1931 | clone-stats: 1.0.0
1932 | cloneable-readable: 1.1.3
1933 | remove-trailing-separator: 1.1.0
1934 | replace-ext: 1.0.1
1935 |
1936 | vinyl@3.0.0:
1937 | dependencies:
1938 | clone: 2.1.2
1939 | clone-stats: 1.0.0
1940 | remove-trailing-separator: 1.1.0
1941 | replace-ext: 2.0.0
1942 | teex: 1.0.1
1943 |
1944 | which@1.3.1:
1945 | dependencies:
1946 | isexe: 2.0.0
1947 |
1948 | wrap-ansi@7.0.0:
1949 | dependencies:
1950 | ansi-styles: 4.3.0
1951 | string-width: 4.2.3
1952 | strip-ansi: 6.0.1
1953 |
1954 | wrappy@1.0.2: {}
1955 |
1956 | xtend@4.0.2: {}
1957 |
1958 | y18n@5.0.8: {}
1959 |
1960 | yargs-parser@20.2.9: {}
1961 |
1962 | yargs@16.2.0:
1963 | dependencies:
1964 | cliui: 7.0.4
1965 | escalade: 3.2.0
1966 | get-caller-file: 2.0.5
1967 | require-directory: 2.1.1
1968 | string-width: 4.2.3
1969 | y18n: 5.0.8
1970 | yargs-parser: 20.2.9
1971 |
--------------------------------------------------------------------------------
/src/functions.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | const checkRecursive = (el: Node) => {
4 | if(is(el, HTMLElement_)) {
5 | if(el[outSymbol]) {
6 | // Reattachment of an OutElement.
7 | addElement(el);
8 | } else {
9 | // Check if there is any inline attributes.
10 | each(targetEvents, e => {
11 | let onEventOut = on_ + e + out_ as TargetOnOutEvents;
12 | let attr = el.getAttribute(onEventOut);
13 |
14 | // Inline attribute translates to onEventOut handlers only if the latter is not set,
15 | // according to the native browser behaviors.
16 | if(attr && !manager(el)[onEventOut]) el[setAttribute_](onEventOut, attr);
17 | });
18 | }
19 | each(el.childNodes, checkRecursive);
20 | }
21 | };
22 |
23 | const manager = (el: HTMLElement) => el[outSymbol] = el[outSymbol] || {};
24 |
25 | const addElement = (el: HTMLElement) => {
26 | manager(el);
27 | if(outList.includes(el)) return;
28 | outList.push(el);
29 | sortNeeded = true;
30 | };
31 |
32 | const elementSort = (e1: Node, e2: Node) => {
33 | if(contains(e2, e1)) return 1;
34 | if(contains(e1, e2)) return -1;
35 | return 0;
36 | };
37 |
38 | const processOut = (event: TouchEvent | PointerEvent) => {
39 | if(sortNeeded) {
40 | outList.sort(elementSort);
41 | sortNeeded = false;
42 | }
43 | let target = event[target_] as Node;
44 |
45 | // TouchEvent does not have 'relatedTarget' property and have to be handled separately.
46 | if(is(event, TouchEvent_)) {
47 | event = new TouchEvent_(event.type + out_, event as any);
48 | event[relatedTarget_] = target;
49 | } else {
50 | event = new (event.constructor as new (...args: any) => PointerEvent)(event.type + out_,
51 | Object_.assign({}, event, { [relatedTarget_]: target })
52 | );
53 | }
54 | event[stop_] = [];
55 |
56 | // Loops from top-down
57 | each(outList, el => {
58 | if(!contains(el, target) && !event[stop_].some(c => contains(c, el))) {
59 | el.dispatchEvent(event);
60 | }
61 | });
62 | };
63 |
64 | const eventPatchFactory = (func: Function) => function(this: TouchEvent | PointerEvent) {
65 | let ev = this, type = ev.type as TargetEvents;
66 | func[apply_](ev);
67 | if(targetOnOutEvents.has(on_ + type as any)) ev[stop_].push(ev[target_] as HTMLElement);
68 | };
69 |
70 | const patch = (proto: T, method: K, factory: (org: T[K]) => T[K]) =>
71 | proto[method] = factory(proto[method]);
72 |
73 | function attributeListener(this: HTMLElement, event: Event) {
74 | let listener = this[outSymbol][on_ + event.type as TargetOnOutEvents];
75 | if(listener) listener[apply_](this, [event]);
76 | };
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | /**
4 | * Keeps a list of all OutElements that are currently in the DOM,
5 | * ordered from top level element to deeper level elements.
6 | */
7 | let outList: HTMLElement[] = [];
8 |
9 | let sortNeeded = false;
10 |
11 | /**
12 | * Create a virtual element for parsing inline event attribute.
13 | * It really doesn't matter what type of element we use here;
14 | * we use body just for reusing keyword.
15 | */
16 | let virtual = document_.createElement(body_);
17 |
18 | each(targetEvents, event => {
19 | // Add top-level event listener.
20 | document_[addEventListener_](event, processOut as EventListener, {
21 | passive: true,
22 | /**
23 | * Use capture here, so that this listener runs before almost every other event listeners,
24 | * in order to prevent it from being blocked by event.stopPropagation().
25 | * In the very unlikely event of the user define another capturing handler before this particular one,
26 | * and at the same time stops propagation,
27 | * I'm sure the user knows what is intended and therefore will not attempt to override the intention.
28 | */
29 | capture: true
30 | });
31 |
32 | // Create out-event attributes.
33 | let onEventOut = on_ + event + out_ as TargetOnOutEvents;
34 | Object_.defineProperty(HTMLElementPrototype, onEventOut, {
35 | get(this: HTMLElement) { return this[outSymbol][onEventOut]; },
36 | set(this: HTMLElement, value: EventListenerOrEventListenerObject) {
37 | // Registering duplicate listener has no effect.
38 | this[addEventListener_](event + out_, attributeListener);
39 | this[outSymbol][onEventOut] = typeof value == "object" ? value.handleEvent : value;
40 | }
41 | });
42 | });
43 |
44 | // Patch prototypes.
45 | patch(HTMLElementPrototype, addEventListener_,
46 | // function keyword must be used here since we need the 'this' keyword.
47 | ael => function(this: HTMLElement, ...args: any) {
48 | if(targetOnOutEvents.has(on_ + args[0] as any)) addElement(this);
49 | ael[apply_](this, args);
50 | }
51 | );
52 | patch(HTMLElementPrototype, setAttribute_,
53 | sa => function(this: HTMLElement, qualifiedName: string, value: string) {
54 | if(targetOnOutEvents.has(qualifiedName as any)) {
55 | // Parse the attribute using native mechanism,
56 | // in order to achieve consistent behavior regarding content-security-policy.
57 | // It doesn't really matter which event we use here;
58 | // we use onclick just for reusing keyword.
59 | sa[apply_](virtual, [on_ + click_, value]);
60 | this[qualifiedName as TargetOnOutEvents] = virtual[on_ + click_ as "onclick"] as EventListener;
61 | } else {
62 | sa[apply_](this, [qualifiedName, value]);
63 | }
64 | }
65 | );
66 | patch(EventPrototype, stop_ + Propagation_ as any, eventPatchFactory);
67 | patch(EventPrototype, stop_ + "Immediate" + Propagation_ as any, eventPatchFactory);
68 |
69 | // Observe mutation of the entire document.
70 | new MutationObserver((list: MutationRecord[]) => {
71 | each(list, record => {
72 | each(record.addedNodes, checkRecursive);
73 | each(record.removedNodes, n => {
74 | if(is(n, HTMLElement_)) {
75 | outList = outList.filter(c => !contains(n, c));
76 | }
77 | });
78 | });
79 | }).observe(document_.documentElement, {
80 | childList: true,
81 | subtree: true
82 | });
83 |
84 | // Process contents before the current script tag, if any.
85 | checkRecursive(document_[body_]);
--------------------------------------------------------------------------------
/src/shorthands.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | // These constants are defined mainly for shortening the transpiled result.
4 |
5 | const on_ = 'on';
6 | const out_ = 'out';
7 | const body_ = 'body';
8 | const stop_ = 'stop';
9 | const click_ = 'click';
10 | const apply_ = 'apply';
11 | const target_ = 'target';
12 | const dataset_ = 'dataset';
13 | const prototype_ = "prototype";
14 | const Propagation_ = 'Propagation';
15 | const setAttribute_ = "setAttribute";
16 | const relatedTarget_ = 'relatedTarget';
17 | const addEventListener_ = "addEventListener";
18 |
19 | const outSymbol = Symbol(out_);
20 |
21 | const Object_ = Object;
22 | const document_ = document;
23 | const TouchEvent_: typeof TouchEvent = (typeof (TouchEvent) != "undefined" ? TouchEvent : undefined) as any;
24 | const HTMLElement_ = HTMLElement;
25 | const HTMLElementPrototype = HTMLElement_[prototype_];
26 | const EventPrototype = Event[prototype_];
27 |
28 | interface HTMLElement extends GlobalOutEventHandlers {
29 | /** An object containing the actual inline event listeners. */
30 | [outSymbol]: GlobalOutEventHandlers;
31 | }
32 |
33 | const events: ReadonlyArray = [
34 | click_, 'dbl' + click_ as 'dblclick',
35 | 'mousedown', 'mouseup',
36 | 'touchstart', 'touchend',
37 | 'pointerdown', 'pointerup'
38 | ];
39 | const targetEvents: ReadonlySet = new Set(events);
40 | const targetOnOutEvents: ReadonlySet = new Set(events.map(e => on_ + e + out_ as TargetOnOutEvents));
41 |
42 | const is = (a: any, b: new (...args: any) => T): a is T => !!b && (a instanceof b);
43 | const contains = (a: Node, b: Node) => a.contains(b);
44 | const each = (list: Iterable, action: (item: T) => void) => {
45 | for(let item of list) action(item);
46 | };
47 |
--------------------------------------------------------------------------------
/src/types.ts:
--------------------------------------------------------------------------------
1 |
2 | type TargetMouseEvents = 'click' | 'dblclick' | 'mousedown' | 'mouseup';
3 | type TargetTouchEvents = 'touchstart' | 'touchend';
4 | type TargetPointerEvents = 'pointerdown' | 'pointerup';
5 | type TargetEvents = TargetMouseEvents | TargetTouchEvents | TargetPointerEvents;
6 |
7 | type TargetOnOutEvents = `on${TargetEvents}out`;
8 |
9 | type GlobalOutEventHandlers = { [e in TargetOnOutEvents]: EventListener };
10 |
11 | interface OutEvent {
12 | stop: HTMLElement[];
13 | }
14 |
15 | interface MouseEvent extends OutEvent { }
16 | interface TouchEvent extends OutEvent {
17 | relatedTarget: EventTarget;
18 | }
19 |
--------------------------------------------------------------------------------
/test/clickout-event.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | const on_ = 'on';
3 | const out_ = 'out';
4 | const body_ = 'body';
5 | const stop_ = 'stop';
6 | const click_ = 'click';
7 | const apply_ = 'apply';
8 | const target_ = 'target';
9 | const dataset_ = 'dataset';
10 | const prototype_ = "prototype";
11 | const Propagation_ = 'Propagation';
12 | const setAttribute_ = "setAttribute";
13 | const relatedTarget_ = 'relatedTarget';
14 | const addEventListener_ = "addEventListener";
15 | const outSymbol = Symbol(out_);
16 | const Object_ = Object;
17 | const document_ = document;
18 | const TouchEvent_ = (typeof (TouchEvent) != "undefined" ? TouchEvent : undefined);
19 | const HTMLElement_ = HTMLElement;
20 | const HTMLElementPrototype = HTMLElement_[prototype_];
21 | const EventPrototype = Event[prototype_];
22 | const events = [
23 | click_, 'dbl' + click_,
24 | 'mousedown', 'mouseup',
25 | 'touchstart', 'touchend',
26 | 'pointerdown', 'pointerup'
27 | ];
28 | const targetEvents = new Set(events);
29 | const targetOnOutEvents = new Set(events.map(e => on_ + e + out_));
30 | const is = (a, b) => !!b && (a instanceof b);
31 | const contains = (a, b) => a.contains(b);
32 | const each = (list, action) => {
33 | for (let item of list)
34 | action(item);
35 | };
36 | const checkRecursive = (el) => {
37 | if (is(el, HTMLElement_)) {
38 | if (el[outSymbol]) {
39 | addElement(el);
40 | }
41 | else {
42 | each(targetEvents, e => {
43 | let onEventOut = on_ + e + out_;
44 | let attr = el.getAttribute(onEventOut);
45 | if (attr && !manager(el)[onEventOut])
46 | el[setAttribute_](onEventOut, attr);
47 | });
48 | }
49 | each(el.childNodes, checkRecursive);
50 | }
51 | };
52 | const manager = (el) => el[outSymbol] = el[outSymbol] || {};
53 | const addElement = (el) => {
54 | manager(el);
55 | if (outList.includes(el))
56 | return;
57 | outList.push(el);
58 | sortNeeded = true;
59 | };
60 | const elementSort = (e1, e2) => {
61 | if (contains(e2, e1))
62 | return 1;
63 | if (contains(e1, e2))
64 | return -1;
65 | return 0;
66 | };
67 | const processOut = (event) => {
68 | if (sortNeeded) {
69 | outList.sort(elementSort);
70 | sortNeeded = false;
71 | }
72 | let target = event[target_];
73 | if (is(event, TouchEvent_)) {
74 | event = new TouchEvent_(event.type + out_, event);
75 | event[relatedTarget_] = target;
76 | }
77 | else {
78 | event = new event.constructor(event.type + out_, Object_.assign({}, event, { [relatedTarget_]: target }));
79 | }
80 | event[stop_] = [];
81 | each(outList, el => {
82 | if (!contains(el, target) && !event[stop_].some(c => contains(c, el))) {
83 | el.dispatchEvent(event);
84 | }
85 | });
86 | };
87 | const eventPatchFactory = (func) => function () {
88 | let ev = this, type = ev.type;
89 | func[apply_](ev);
90 | if (targetOnOutEvents.has(on_ + type))
91 | ev[stop_].push(ev[target_]);
92 | };
93 | const patch = (proto, method, factory) => proto[method] = factory(proto[method]);
94 | function attributeListener(event) {
95 | let listener = this[outSymbol][on_ + event.type];
96 | if (listener)
97 | listener[apply_](this, [event]);
98 | }
99 | ;
100 | let outList = [];
101 | let sortNeeded = false;
102 | let virtual = document_.createElement(body_);
103 | each(targetEvents, event => {
104 | document_[addEventListener_](event, processOut, {
105 | passive: true,
106 | capture: true
107 | });
108 | let onEventOut = on_ + event + out_;
109 | Object_.defineProperty(HTMLElementPrototype, onEventOut, {
110 | get() { return this[outSymbol][onEventOut]; },
111 | set(value) {
112 | this[addEventListener_](event + out_, attributeListener);
113 | this[outSymbol][onEventOut] = typeof value == "object" ? value.handleEvent : value;
114 | }
115 | });
116 | });
117 | patch(HTMLElementPrototype, addEventListener_, ael => function (...args) {
118 | if (targetOnOutEvents.has(on_ + args[0]))
119 | addElement(this);
120 | ael[apply_](this, args);
121 | });
122 | patch(HTMLElementPrototype, setAttribute_, sa => function (qualifiedName, value) {
123 | if (targetOnOutEvents.has(qualifiedName)) {
124 | sa[apply_](virtual, [on_ + click_, value]);
125 | this[qualifiedName] = virtual[on_ + click_];
126 | }
127 | else {
128 | sa[apply_](this, [qualifiedName, value]);
129 | }
130 | });
131 | patch(EventPrototype, stop_ + Propagation_, eventPatchFactory);
132 | patch(EventPrototype, stop_ + "Immediate" + Propagation_, eventPatchFactory);
133 | new MutationObserver((list) => {
134 | each(list, record => {
135 | each(record.addedNodes, checkRecursive);
136 | each(record.removedNodes, n => {
137 | if (is(n, HTMLElement_)) {
138 | outList = outList.filter(c => !contains(n, c));
139 | }
140 | });
141 | });
142 | }).observe(document_.documentElement, {
143 | childList: true,
144 | subtree: true
145 | });
146 | checkRecursive(document_[body_]);
147 |
--------------------------------------------------------------------------------
/test/html.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vanilla HTML Test
6 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/test/javascript.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vanilla JavaScript Test
6 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/test/jquery.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | jQuery Test
6 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/test/nested.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vanilla HTML Test
6 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
23 |
24 |
25 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/test/vue.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vue.js Test
6 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
25 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es6",
4 | "lib": ["ESNext", "DOM", "DOM.Iterable"],
5 | "strict": true,
6 | "removeComments": true,
7 | "outFile": "clickout-event.js"
8 | },
9 | "include": [
10 | "src/**/*.ts"
11 | ]
12 | }
--------------------------------------------------------------------------------