vasuzex 2.0.13 → 2.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NPM_LINK_TEST_RESULTS.md +215 -0
- package/PRODUCTION_FIXES_V2.0.15.md +357 -0
- package/bin/create-vasuzex.js +44 -5
- package/database/index.js +5 -5
- package/database/models/User.js +15 -0
- package/database/package.json +10 -0
- package/framework/Console/Commands/generate-app.js +17 -19
- package/framework/Console/Commands/utils/databasePackageTemplate.js +20 -0
- package/framework/Console/Commands/utils/fileOperations.js +14 -0
- package/framework/Console/Commands/utils/index.js +4 -7
- package/framework/Console/Commands/utils/packageManager.js +20 -6
- package/framework/Console/Commands/utils/plopGenerator.js +113 -0
- package/framework/Console/Commands/utils/templateGenerator.js +0 -8
- package/framework/Console/config/generator.config.js +142 -0
- package/framework/Console/plopfile.js +142 -0
- package/{apps/pilot-test/api → framework/Console}/src/app.js +5 -13
- package/framework/Console/src/config/database.js +53 -0
- package/framework/Console/src/helpers/env.js +8 -0
- package/{apps/pilot-test/api → framework/Console}/src/index.js +11 -11
- package/{apps/pilot-test/api → framework/Console}/src/middleware/authMiddleware.js +1 -1
- package/framework/Console/src/routes/index.js +16 -0
- package/{apps/pilot-test/api → framework/Console}/src/services/AuthService.js +1 -1
- package/framework/Console/templates/api/app.js.hbs +59 -0
- package/framework/Console/templates/api/config/database.js.hbs +53 -0
- package/framework/Console/templates/api/controllers/AuthController.js.hbs +90 -0
- package/framework/Console/templates/api/controllers/BaseController.js.hbs +25 -0
- package/framework/Console/templates/api/helpers/env.js.hbs +8 -0
- package/framework/Console/templates/api/middleware/authMiddleware.js.hbs +48 -0
- package/framework/Console/templates/api/middleware/errorHandler.js.hbs +30 -0
- package/framework/Console/templates/api/requests/AuthRequests.js.hbs +16 -0
- package/framework/Console/templates/api/routes/auth.js.hbs +20 -0
- package/framework/Console/templates/api/routes/index.js.hbs +16 -0
- package/framework/Console/templates/api/server.js.hbs +127 -0
- package/framework/Console/templates/api/services/AuthService.js.hbs +95 -0
- package/framework/Database/Model.js +58 -4
- package/framework/Foundation/BaseApp.js +42 -1
- package/framework/package.json +3 -0
- package/framework/vasuzex-framework-core-1.0.0.tgz +0 -0
- package/frontend/react-ui/node_modules/@esbuild/darwin-x64/README.md +3 -0
- package/frontend/react-ui/node_modules/@esbuild/darwin-x64/bin/esbuild +0 -0
- package/frontend/react-ui/node_modules/@esbuild/darwin-x64/package.json +20 -0
- package/frontend/react-ui/node_modules/esbuild/LICENSE.md +21 -0
- package/frontend/react-ui/node_modules/esbuild/README.md +3 -0
- package/frontend/react-ui/node_modules/esbuild/bin/esbuild +223 -0
- package/frontend/react-ui/node_modules/esbuild/install.js +289 -0
- package/frontend/react-ui/node_modules/esbuild/lib/main.d.ts +716 -0
- package/frontend/react-ui/node_modules/esbuild/lib/main.js +2242 -0
- package/frontend/react-ui/node_modules/esbuild/package.json +49 -0
- package/frontend/react-ui/node_modules/jsdom/LICENSE.txt +22 -0
- package/frontend/react-ui/node_modules/jsdom/README.md +521 -0
- package/frontend/react-ui/node_modules/jsdom/lib/api.js +334 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/Window.js +1012 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/default-stylesheet.js +789 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/js-globals.json +312 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/not-implemented.js +13 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/parser/html.js +208 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/parser/index.js +37 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/parser/xml.js +202 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/resources/async-resource-queue.js +114 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/resources/no-op-resource-loader.js +8 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/resources/per-document-resource-loader.js +98 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/resources/request-manager.js +33 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/resources/resource-loader.js +142 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/resources/resource-queue.js +142 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/level2/style.js +57 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/level3/xpath.js +1875 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/aborting/AbortController-impl.js +17 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/aborting/AbortSignal-impl.js +84 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/attributes/Attr-impl.js +60 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/attributes/NamedNodeMap-impl.js +78 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/attributes.js +312 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/constraint-validation/DefaultConstraintValidation-impl.js +75 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/constraint-validation/ValidityState-impl.js +66 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/crypto/Crypto-impl.js +68 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/cssom/StyleSheetList-impl.js +38 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/custom-elements/CustomElementRegistry-impl.js +268 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/custom-elements/ElementInternals-impl.js +38 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/documents.js +15 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/domparsing/DOMParser-impl.js +59 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/domparsing/InnerHTML-impl.js +30 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/domparsing/XMLSerializer-impl.js +18 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/domparsing/parse5-adapter-serialization.js +63 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js +36 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/CloseEvent-impl.js +10 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/CompositionEvent-impl.js +20 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/CustomEvent-impl.js +21 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/ErrorEvent-impl.js +14 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/Event-impl.js +197 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/EventModifierMixin-impl.js +24 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js +419 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/FocusEvent-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/HashChangeEvent-impl.js +14 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/InputEvent-impl.js +11 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/KeyboardEvent-impl.js +29 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/MessageEvent-impl.js +25 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/MouseEvent-impl.js +72 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/PageTransitionEvent-impl.js +20 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/PopStateEvent-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/ProgressEvent-impl.js +14 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/StorageEvent-impl.js +26 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/SubmitEvent-impl.js +13 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/TouchEvent-impl.js +14 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/UIEvent-impl.js +59 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/WheelEvent-impl.js +12 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/fetch/Headers-impl.js +172 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/fetch/header-list.js +65 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/fetch/header-types.js +103 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/file-api/Blob-impl.js +93 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/file-api/File-impl.js +12 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/file-api/FileList-impl.js +15 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/file-api/FileReader-impl.js +130 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/AbortController.js +143 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/AbortSignal.js +215 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/AbstractRange.js +171 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/AddEventListenerOptions.js +55 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/AssignedNodesOptions.js +28 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Attr.js +217 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/BarProp.js +117 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/BinaryType.js +12 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Blob.js +203 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/BlobCallback.js +30 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/BlobPropertyBag.js +42 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CDATASection.js +109 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CanPlayTypeResult.js +12 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CharacterData.js +453 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CloseEvent.js +168 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CloseEventInit.js +65 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Comment.js +120 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CompositionEvent.js +219 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CompositionEventInit.js +32 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Crypto.js +144 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CustomElementConstructor.js +34 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CustomElementRegistry.js +242 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CustomEvent.js +206 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CustomEventInit.js +32 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMException.js +222 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMImplementation.js +237 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMParser.js +140 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMRect.js +276 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMRectInit.js +76 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMRectReadOnly.js +285 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMStringMap.js +323 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMTokenList.js +563 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Document.js +4157 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DocumentFragment.js +334 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DocumentReadyState.js +12 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DocumentType.js +252 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Element.js +3718 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ElementCreationOptions.js +26 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ElementDefinitionOptions.js +29 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ElementInternals.js +2137 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/EndingType.js +12 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ErrorEvent.js +192 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ErrorEventInit.js +92 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Event.js +430 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/EventHandlerNonNull.js +36 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/EventInit.js +58 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/EventListener.js +35 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/EventListenerOptions.js +28 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/EventModifierInit.js +221 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js +259 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/External.js +130 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/File.js +177 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/FileList.js +324 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/FilePropertyBag.js +33 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/FileReader.js +468 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/FocusEvent.js +144 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/FocusEventInit.js +36 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/FormData.js +468 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Function.js +42 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/GetRootNodeOptions.js +31 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLAnchorElement.js +1023 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLAreaElement.js +822 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLAudioElement.js +110 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLBRElement.js +153 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLBaseElement.js +193 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLBodyElement.js +877 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLButtonElement.js +522 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLCanvasElement.js +304 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLCollection.js +378 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLDListElement.js +156 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLDataElement.js +153 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLDataListElement.js +125 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLDetailsElement.js +156 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLDialogElement.js +156 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLDirectoryElement.js +156 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLDivElement.js +153 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js +3137 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLEmbedElement.js +371 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLFieldSetElement.js +329 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLFontElement.js +236 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLFormControlsCollection.js +344 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLFormElement.js +501 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLFrameElement.js +494 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLFrameSetElement.js +708 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLHRElement.js +320 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLHeadElement.js +110 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLHeadingElement.js +153 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLHtmlElement.js +153 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLIFrameElement.js +670 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLImageElement.js +877 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLInputElement.js +1920 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLLIElement.js +201 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLLabelElement.js +179 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLLegendElement.js +166 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLLinkElement.js +545 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLMapElement.js +168 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLMarqueeElement.js +554 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLMediaElement.js +891 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLMenuElement.js +156 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLMetaElement.js +276 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLMeterElement.js +365 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLModElement.js +207 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLOListElement.js +281 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLObjectElement.js +925 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptGroupElement.js +197 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptionElement.js +376 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptionsCollection.js +537 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLOutputElement.js +392 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLParagraphElement.js +153 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLParamElement.js +276 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLPictureElement.js +110 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLPreElement.js +160 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLProgressElement.js +228 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLQuoteElement.js +166 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLScriptElement.js +462 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLSelectElement.js +1015 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLSlotElement.js +192 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLSourceElement.js +330 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLSpanElement.js +110 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLStyleElement.js +207 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableCaptionElement.js +153 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableCellElement.js +729 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableColElement.js +372 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableElement.js +799 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableRowElement.js +414 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableSectionElement.js +346 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTemplateElement.js +123 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTextAreaElement.js +1206 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTimeElement.js +153 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTitleElement.js +152 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTrackElement.js +356 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLUListElement.js +197 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLUnknownElement.js +109 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLVideoElement.js +333 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HashChangeEvent.js +157 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HashChangeEventInit.js +50 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Headers.js +418 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/History.js +266 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/InputEvent.js +168 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/InputEventInit.js +68 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/KeyboardEvent.js +445 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/KeyboardEventInit.js +116 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Location.js +404 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MessageEvent.js +317 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MessageEventInit.js +100 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MimeType.js +156 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MimeTypeArray.js +352 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MouseEvent.js +569 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MouseEventInit.js +159 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MutationCallback.js +34 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MutationObserver.js +178 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MutationObserverInit.js +121 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MutationRecord.js +229 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/NamedNodeMap.js +553 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Navigator.js +326 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Node.js +763 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/NodeFilter.js +75 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/NodeIterator.js +207 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/NodeList.js +328 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/OnBeforeUnloadEventHandlerNonNull.js +42 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/OnErrorEventHandlerNonNull.js +56 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/PageTransitionEvent.js +144 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/PageTransitionEventInit.js +35 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Performance.js +142 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Plugin.js +385 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/PluginArray.js +362 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/PopStateEvent.js +144 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/PopStateEventInit.js +32 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ProcessingInstruction.js +122 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ProgressEvent.js +170 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ProgressEventInit.js +65 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/RadioNodeList.js +322 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Range.js +641 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGAnimatedString.js +149 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGBoundingBoxOptions.js +64 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGElement.js +2799 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGGraphicsElement.js +139 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGNumber.js +132 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGSVGElement.js +737 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGStringList.js +537 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGTitleElement.js +109 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Screen.js +180 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ScrollBehavior.js +12 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ScrollIntoViewOptions.js +45 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ScrollLogicalPosition.js +14 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ScrollOptions.js +30 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ScrollRestoration.js +12 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Selection.js +569 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SelectionMode.js +12 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ShadowRoot.js +187 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ShadowRootInit.js +30 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ShadowRootMode.js +12 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/StaticRange.js +123 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/StaticRangeInit.js +72 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Storage.js +423 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/StorageEvent.js +318 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/StorageEventInit.js +99 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/StyleSheetList.js +326 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SubmitEvent.js +144 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SubmitEventInit.js +36 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SupportedType.js +18 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Text.js +170 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/TextTrackKind.js +12 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/TouchEvent.js +222 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/TouchEventInit.js +89 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/TreeWalker.js +255 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/UIEvent.js +235 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/UIEventInit.js +62 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ValidityState.js +249 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/VisibilityState.js +12 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/VoidFunction.js +26 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/WebSocket.js +476 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/WheelEvent.js +191 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/WheelEventInit.js +71 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/XMLDocument.js +109 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequest.js +655 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestEventTarget.js +334 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestResponseType.js +14 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestUpload.js +109 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/XMLSerializer.js +132 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/utils.js +190 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/geometry/DOMRect-impl.js +39 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/geometry/DOMRectReadOnly-impl.js +72 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/agent-factory.js +13 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/binary-data.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/colors.js +245 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/create-element.js +323 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/create-event-accessor.js +188 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/custom-elements.js +272 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/dates-and-times.js +270 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/details.js +15 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/document-base-url.js +54 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/events.js +24 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/focusing.js +104 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/form-controls.js +306 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/html-constructor.js +78 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/http-request.js +261 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/internal-constants.js +12 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/iterable-weak-set.js +48 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/json.js +12 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/mutation-observers.js +198 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/namespaces.js +15 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/node.js +68 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/number-and-date-inputs.js +195 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/ordered-set.js +104 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/page-transition-event.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js +76 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/selectors.js +47 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/shadow-dom.js +285 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/strings.js +148 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/style-rules.js +243 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/stylesheets.js +123 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/svg/basic-types.js +41 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/svg/render.js +46 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/text.js +19 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/traversal.js +72 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/validate-names.js +65 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/hr-time/Performance-impl.js +22 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/interfaces.js +228 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/mutation-observer/MutationObserver-impl.js +95 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/mutation-observer/MutationRecord-impl.js +37 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/named-properties-window.js +141 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/MimeType-impl.js +3 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/MimeTypeArray-impl.js +21 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/Navigator-impl.js +29 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorConcurrentHardware-impl.js +8 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorCookies-impl.js +7 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorID-impl.js +37 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorLanguage-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorOnLine-impl.js +7 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorPlugins-impl.js +8 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/Plugin-impl.js +3 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/PluginArray-impl.js +23 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/node-document-position.js +10 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/node-type.js +16 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/node.js +331 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/CDATASection-impl.js +16 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/CharacterData-impl.js +118 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/ChildNode-impl.js +80 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/Comment-impl.js +20 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/DOMImplementation-impl.js +120 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/DOMStringMap-impl.js +64 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/DOMTokenList-impl.js +171 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/Document-impl.js +935 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/DocumentFragment-impl.js +44 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/DocumentOrShadowRoot-impl.js +28 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/DocumentType-impl.js +24 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/Element-impl.js +599 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/ElementCSSInlineStyle-impl.js +22 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/ElementContentEditable-impl.js +7 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/GlobalEventHandlers-impl.js +145 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAnchorElement-impl.js +50 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAreaElement-impl.js +43 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAudioElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBRElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBaseElement-impl.js +27 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBodyElement-impl.js +17 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLButtonElement-impl.js +79 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCanvasElement-impl.js +130 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCollection-impl.js +96 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDListElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDataElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDataListElement-impl.js +20 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDetailsElement-impl.js +35 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDialogElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDirectoryElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDivElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js +210 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLEmbedElement-impl.js +8 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFieldSetElement-impl.js +43 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFontElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFormControlsCollection-impl.js +33 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFormElement-impl.js +240 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFrameElement-impl.js +261 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFrameSetElement-impl.js +17 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHRElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHeadElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHeadingElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHtmlElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHyperlinkElementUtils-impl.js +367 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLIFrameElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLImageElement-impl.js +132 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLInputElement-impl.js +1097 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLIElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLabelElement-impl.js +94 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLegendElement-impl.js +18 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLinkElement-impl.js +108 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMapElement-impl.js +13 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMarqueeElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMediaElement-impl.js +138 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMenuElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMetaElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMeterElement-impl.js +180 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLModElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOListElement-impl.js +22 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLObjectElement-impl.js +26 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptGroupElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptionElement-impl.js +146 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptionsCollection-impl.js +110 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js +85 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOutputElement-impl.js +88 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLParagraphElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLParamElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLPictureElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLPreElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js +72 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLQuoteElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLScriptElement-impl.js +262 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSelectElement-impl.js +283 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js +59 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSourceElement-impl.js +8 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSpanElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLStyleElement-impl.js +74 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableCaptionElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableCellElement-impl.js +73 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableColElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableElement-impl.js +236 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableRowElement-impl.js +88 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableSectionElement-impl.js +61 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTemplateElement-impl.js +67 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTextAreaElement-impl.js +244 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTimeElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTitleElement-impl.js +18 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTrackElement-impl.js +13 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLUListElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLUnknownElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLVideoElement-impl.js +17 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/LinkStyle-impl.js +2 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js +1161 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/NodeList-impl.js +43 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/NonDocumentTypeChildNode-impl.js +28 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/NonElementParentNode-impl.js +11 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/ParentNode-impl.js +91 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/ProcessingInstruction-impl.js +22 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/RadioNodeList-impl.js +49 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/SVGElement-impl.js +64 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/SVGGraphicsElement-impl.js +16 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/SVGSVGElement-impl.js +42 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/SVGTests-impl.js +42 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/SVGTitleElement-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/ShadowRoot-impl.js +41 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/Slotable-impl.js +48 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/Text-impl.js +96 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/WindowEventHandlers-impl.js +52 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/XMLDocument-impl.js +4 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/range/AbstractRange-impl.js +43 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/range/Range-impl.js +897 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/range/StaticRange-impl.js +39 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/range/boundary-point.js +47 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/selection/Selection-impl.js +358 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedString-impl.js +38 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/svg/SVGListBase.js +195 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/svg/SVGNumber-impl.js +48 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/svg/SVGStringList-impl.js +16 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/traversal/NodeIterator-impl.js +107 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/traversal/TreeWalker-impl.js +217 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/traversal/helpers.js +44 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/webidl/DOMException-impl.js +46 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/websockets/WebSocket-impl.js +328 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/webstorage/Storage-impl.js +102 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/window/BarProp-impl.js +10 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/window/External-impl.js +9 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/window/History-impl.js +148 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/window/Location-impl.js +228 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/window/Screen-impl.js +13 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/window/SessionHistory.js +163 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/window/navigation.js +85 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/xhr/FormData-impl.js +191 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequest-impl.js +1023 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestEventTarget-impl.js +17 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestUpload-impl.js +4 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js +59 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/xhr/xhr-utils.js +441 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/named-properties-tracker.js +158 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/utils.js +105 -0
- package/frontend/react-ui/node_modules/jsdom/lib/jsdom/virtual-console.js +34 -0
- package/frontend/react-ui/node_modules/jsdom/package.json +92 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/LICENSE.txt +20 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/README.mdown +74 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/build/CSSOM.js +1932 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSConditionRule.js +25 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSContainerRule.js +50 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSDocumentRule.js +39 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSFontFaceRule.js +36 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSGroupingRule.js +69 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSHostRule.js +37 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSImportRule.js +132 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSKeyframeRule.js +37 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSKeyframesRule.js +39 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSMediaRule.js +53 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSOM.js +3 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSRule.js +45 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSStartingStyleRule.js +37 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSStyleDeclaration.js +148 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSStyleRule.js +190 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSStyleSheet.js +88 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSSupportsRule.js +36 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSValue.js +43 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSValueExpression.js +344 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/MatcherList.js +62 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/MediaList.js +61 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/StyleSheet.js +17 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/clone.js +75 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/index.js +25 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/lib/parse.js +504 -0
- package/frontend/react-ui/node_modules/rrweb-cssom/package.json +27 -0
- package/frontend/react-ui/node_modules/vite/LICENSE.md +2406 -0
- package/frontend/react-ui/node_modules/vite/README.md +20 -0
- package/frontend/react-ui/node_modules/vite/bin/openChrome.applescript +95 -0
- package/frontend/react-ui/node_modules/vite/bin/vite.js +79 -0
- package/frontend/react-ui/node_modules/vite/client.d.ts +279 -0
- package/frontend/react-ui/node_modules/vite/dist/client/client.mjs +1134 -0
- package/frontend/react-ui/node_modules/vite/dist/client/env.mjs +24 -0
- package/frontend/react-ui/node_modules/vite/dist/node/chunks/dep-3RmXg9uo.js +553 -0
- package/frontend/react-ui/node_modules/vite/dist/node/chunks/dep-C9BXG1mU.js +822 -0
- package/frontend/react-ui/node_modules/vite/dist/node/chunks/dep-CvfTChi5.js +8218 -0
- package/frontend/react-ui/node_modules/vite/dist/node/chunks/dep-D4NMHUTW.js +49531 -0
- package/frontend/react-ui/node_modules/vite/dist/node/chunks/dep-DWMUTS1A.js +7113 -0
- package/frontend/react-ui/node_modules/vite/dist/node/cli.js +949 -0
- package/frontend/react-ui/node_modules/vite/dist/node/constants.js +149 -0
- package/frontend/react-ui/node_modules/vite/dist/node/index.d.ts +4222 -0
- package/frontend/react-ui/node_modules/vite/dist/node/index.js +194 -0
- package/frontend/react-ui/node_modules/vite/dist/node/module-runner.d.ts +290 -0
- package/frontend/react-ui/node_modules/vite/dist/node/module-runner.js +1311 -0
- package/frontend/react-ui/node_modules/vite/dist/node/moduleRunnerTransport.d-DJ_mE5sf.d.ts +87 -0
- package/frontend/react-ui/node_modules/vite/dist/node-cjs/publicUtils.cjs +3987 -0
- package/frontend/react-ui/node_modules/vite/index.cjs +96 -0
- package/frontend/react-ui/node_modules/vite/index.d.cts +6 -0
- package/frontend/react-ui/node_modules/vite/misc/false.js +1 -0
- package/frontend/react-ui/node_modules/vite/misc/true.js +1 -0
- package/frontend/react-ui/node_modules/vite/package.json +204 -0
- package/frontend/react-ui/node_modules/vite/types/customEvent.d.ts +45 -0
- package/frontend/react-ui/node_modules/vite/types/hmrPayload.d.ts +74 -0
- package/frontend/react-ui/node_modules/vite/types/hot.d.ts +39 -0
- package/frontend/react-ui/node_modules/vite/types/import-meta.d.ts +5 -0
- package/frontend/react-ui/node_modules/vite/types/importGlob.d.ts +75 -0
- package/frontend/react-ui/node_modules/vite/types/importMeta.d.ts +31 -0
- package/frontend/react-ui/node_modules/vite/types/internal/cssPreprocessorOptions.d.ts +63 -0
- package/frontend/react-ui/node_modules/vite/types/internal/lightningcssOptions.d.ts +18 -0
- package/frontend/react-ui/node_modules/vite/types/metadata.d.ts +35 -0
- package/frontend/react-ui/node_modules/vite/types/package.json +4 -0
- package/package.json +35 -29
- package/apps/pilot-test/api/.env.example +0 -8
- package/apps/pilot-test/api/README.md +0 -105
- package/apps/pilot-test/api/config/database.js +0 -27
- package/apps/pilot-test/api/database/migrations/2025_12_06_19_20_57_create_users_table.js +0 -21
- package/apps/pilot-test/api/database/seeders/UserSeeder.js +0 -30
- package/apps/pilot-test/api/package.json +0 -26
- package/apps/pilot-test/api/src/helpers/env.js +0 -8
- package/apps/pilot-test/api/src/models/User.js +0 -76
- package/apps/pilot-test/api/src/routes/index.js +0 -33
- package/apps/pilot-test/api/src/routes/post.routes.js +0 -25
- package/bin/create-vasuzex.js.backup +0 -699
- package/framework/Console/Commands/utils/apiStructure.js +0 -167
- package/framework/Console/Commands/utils/apiTemplates.js +0 -933
- /package/{apps/pilot-test/api → framework/Console}/src/controllers/AuthController.js +0 -0
- /package/{apps/pilot-test/api → framework/Console}/src/controllers/BaseController.js +0 -0
- /package/{apps/pilot-test/api → framework/Console}/src/middleware/errorHandler.js +0 -0
- /package/{apps/pilot-test/api → framework/Console}/src/requests/AuthRequests.js +0 -0
- /package/{apps/pilot-test/api/src/routes/auth.routes.js → framework/Console/src/routes/auth.js} +0 -0
package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestEventTarget-impl.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const EventTargetImpl = require("../events/EventTarget-impl").implementation;
|
|
3
|
+
const idlUtils = require("../generated/utils");
|
|
4
|
+
const { setupForSimpleEventAccessors } = require("../helpers/create-event-accessor");
|
|
5
|
+
|
|
6
|
+
const events = ["loadstart", "progress", "abort", "error", "load", "timeout", "loadend"];
|
|
7
|
+
|
|
8
|
+
class XMLHttpRequestEventTargetImpl extends EventTargetImpl {
|
|
9
|
+
// TODO: remove this when we fix EventTargetImpl to use this._globalObject directly instead of using _ownerDocument.
|
|
10
|
+
// https://github.com/jsdom/jsdom/issues/2780
|
|
11
|
+
get _ownerDocument() {
|
|
12
|
+
return idlUtils.implForWrapper(this._globalObject._document);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
setupForSimpleEventAccessors(XMLHttpRequestEventTargetImpl.prototype, events);
|
|
16
|
+
|
|
17
|
+
exports.implementation = XMLHttpRequestEventTargetImpl;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const util = require("util");
|
|
3
|
+
const { JSDOM } = require("../../../..");
|
|
4
|
+
const { READY_STATES } = require("./xhr-utils");
|
|
5
|
+
const idlUtils = require("../generated/utils");
|
|
6
|
+
const tough = require("tough-cookie");
|
|
7
|
+
|
|
8
|
+
const dom = new JSDOM();
|
|
9
|
+
const xhr = new dom.window.XMLHttpRequest();
|
|
10
|
+
const xhrImpl = idlUtils.implForWrapper(xhr);
|
|
11
|
+
|
|
12
|
+
const chunks = [];
|
|
13
|
+
|
|
14
|
+
process.stdin.on("data", chunk => {
|
|
15
|
+
chunks.push(chunk);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
process.stdin.on("end", () => {
|
|
19
|
+
const buffer = Buffer.concat(chunks);
|
|
20
|
+
|
|
21
|
+
const flag = JSON.parse(buffer.toString());
|
|
22
|
+
if (flag.body && flag.body.type === "Buffer" && flag.body.data) {
|
|
23
|
+
flag.body = Buffer.from(flag.body.data);
|
|
24
|
+
}
|
|
25
|
+
if (flag.cookieJar) {
|
|
26
|
+
flag.cookieJar = tough.CookieJar.fromJSON(flag.cookieJar);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
flag.synchronous = false;
|
|
30
|
+
Object.assign(xhrImpl.flag, flag);
|
|
31
|
+
const { properties } = xhrImpl;
|
|
32
|
+
xhrImpl.readyState = READY_STATES.OPENED;
|
|
33
|
+
try {
|
|
34
|
+
xhr.addEventListener("loadend", () => {
|
|
35
|
+
if (properties.error) {
|
|
36
|
+
properties.error = properties.error.stack || util.inspect(properties.error);
|
|
37
|
+
}
|
|
38
|
+
process.stdout.write(JSON.stringify({
|
|
39
|
+
responseURL: xhrImpl.responseURL,
|
|
40
|
+
status: xhrImpl.status,
|
|
41
|
+
statusText: xhrImpl.statusText,
|
|
42
|
+
properties
|
|
43
|
+
}), () => {
|
|
44
|
+
process.exit(0);
|
|
45
|
+
});
|
|
46
|
+
}, false);
|
|
47
|
+
xhr.send(flag.body);
|
|
48
|
+
} catch (error) {
|
|
49
|
+
properties.error += error.stack || util.inspect(error);
|
|
50
|
+
process.stdout.write(JSON.stringify({
|
|
51
|
+
responseURL: xhrImpl.responseURL,
|
|
52
|
+
status: xhrImpl.status,
|
|
53
|
+
statusText: xhrImpl.statusText,
|
|
54
|
+
properties
|
|
55
|
+
}), () => {
|
|
56
|
+
process.exit(0);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
});
|
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const fs = require("fs");
|
|
3
|
+
const { EventEmitter } = require("events");
|
|
4
|
+
const { URL } = require("whatwg-url");
|
|
5
|
+
const parseDataURL = require("data-urls");
|
|
6
|
+
const DOMException = require("../generated/DOMException");
|
|
7
|
+
|
|
8
|
+
const ProgressEvent = require("../generated/ProgressEvent");
|
|
9
|
+
|
|
10
|
+
const agentFactory = require("../helpers/agent-factory");
|
|
11
|
+
const Request = require("../helpers/http-request");
|
|
12
|
+
const FormData = require("form-data");
|
|
13
|
+
const { fireAnEvent } = require("../helpers/events");
|
|
14
|
+
|
|
15
|
+
const headerListSeparatorRegexp = /,[ \t]*/;
|
|
16
|
+
const simpleMethods = new Set(["GET", "HEAD", "POST"]);
|
|
17
|
+
const simpleHeaders = new Set(["accept", "accept-language", "content-language", "content-type"]);
|
|
18
|
+
const preflightHeaders = new Set([
|
|
19
|
+
"access-control-expose-headers",
|
|
20
|
+
"access-control-allow-headers",
|
|
21
|
+
"access-control-allow-credentials",
|
|
22
|
+
"access-control-allow-origin"
|
|
23
|
+
]);
|
|
24
|
+
|
|
25
|
+
const READY_STATES = exports.READY_STATES = Object.freeze({
|
|
26
|
+
UNSENT: 0,
|
|
27
|
+
OPENED: 1,
|
|
28
|
+
HEADERS_RECEIVED: 2,
|
|
29
|
+
LOADING: 3,
|
|
30
|
+
DONE: 4
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
function getRequestHeader(requestHeaders, header) {
|
|
34
|
+
const lcHeader = header.toLowerCase();
|
|
35
|
+
const keys = Object.keys(requestHeaders);
|
|
36
|
+
let n = keys.length;
|
|
37
|
+
while (n--) {
|
|
38
|
+
const key = keys[n];
|
|
39
|
+
if (key.toLowerCase() === lcHeader) {
|
|
40
|
+
return requestHeaders[key];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function updateRequestHeader(requestHeaders, header, newValue) {
|
|
47
|
+
const lcHeader = header.toLowerCase();
|
|
48
|
+
const keys = Object.keys(requestHeaders);
|
|
49
|
+
let n = keys.length;
|
|
50
|
+
while (n--) {
|
|
51
|
+
const key = keys[n];
|
|
52
|
+
if (key.toLowerCase() === lcHeader) {
|
|
53
|
+
requestHeaders[key] = newValue;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function dispatchError(xhr) {
|
|
59
|
+
const errMessage = xhr.properties.error;
|
|
60
|
+
requestErrorSteps(xhr, "error", DOMException.create(xhr._globalObject, [errMessage, "NetworkError"]));
|
|
61
|
+
|
|
62
|
+
if (xhr._ownerDocument) {
|
|
63
|
+
const error = new Error(errMessage);
|
|
64
|
+
error.type = "XMLHttpRequest"; // TODO this should become "resource loading" when XHR goes through resource loader
|
|
65
|
+
|
|
66
|
+
xhr._ownerDocument._defaultView._virtualConsole.emit("jsdomError", error);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function validCORSHeaders(xhr, response, flag, properties, origin) {
|
|
71
|
+
const acaoStr = response.headers["access-control-allow-origin"];
|
|
72
|
+
const acao = acaoStr ? acaoStr.trim() : null;
|
|
73
|
+
if (acao !== "*" && acao !== origin) {
|
|
74
|
+
properties.error = "Cross origin " + origin + " forbidden";
|
|
75
|
+
dispatchError(xhr);
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
const acacStr = response.headers["access-control-allow-credentials"];
|
|
79
|
+
const acac = acacStr ? acacStr.trim() : null;
|
|
80
|
+
if (flag.withCredentials && acac !== "true") {
|
|
81
|
+
properties.error = "Credentials forbidden";
|
|
82
|
+
dispatchError(xhr);
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function validCORSPreflightHeaders(xhr, response, flag, properties) {
|
|
89
|
+
if (!validCORSHeaders(xhr, response, flag, properties, properties.origin)) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
const acahStr = response.headers["access-control-allow-headers"];
|
|
93
|
+
const acah = new Set(acahStr ? acahStr.trim().toLowerCase().split(headerListSeparatorRegexp) : []);
|
|
94
|
+
const forbiddenHeaders = acah.has("*") ?
|
|
95
|
+
[] :
|
|
96
|
+
Object.keys(flag.requestHeaders).filter(header => {
|
|
97
|
+
const lcHeader = header.toLowerCase();
|
|
98
|
+
return !simpleHeaders.has(lcHeader) && !acah.has(lcHeader);
|
|
99
|
+
});
|
|
100
|
+
if (forbiddenHeaders.length > 0) {
|
|
101
|
+
properties.error = "Headers " + forbiddenHeaders + " forbidden";
|
|
102
|
+
dispatchError(xhr);
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function requestErrorSteps(xhr, event, exception) {
|
|
109
|
+
const { flag, properties, upload } = xhr;
|
|
110
|
+
|
|
111
|
+
xhr.readyState = READY_STATES.DONE;
|
|
112
|
+
properties.send = false;
|
|
113
|
+
|
|
114
|
+
setResponseToNetworkError(xhr);
|
|
115
|
+
|
|
116
|
+
if (flag.synchronous) {
|
|
117
|
+
throw exception;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
fireAnEvent("readystatechange", xhr);
|
|
121
|
+
|
|
122
|
+
if (!properties.uploadComplete) {
|
|
123
|
+
properties.uploadComplete = true;
|
|
124
|
+
|
|
125
|
+
if (properties.uploadListener) {
|
|
126
|
+
fireAnEvent(event, upload, ProgressEvent, { loaded: 0, total: 0, lengthComputable: false });
|
|
127
|
+
fireAnEvent("loadend", upload, ProgressEvent, { loaded: 0, total: 0, lengthComputable: false });
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
fireAnEvent(event, xhr, ProgressEvent, { loaded: 0, total: 0, lengthComputable: false });
|
|
132
|
+
fireAnEvent("loadend", xhr, ProgressEvent, { loaded: 0, total: 0, lengthComputable: false });
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function setResponseToNetworkError(xhr) {
|
|
136
|
+
const { properties } = xhr;
|
|
137
|
+
|
|
138
|
+
properties.responseBuffer =
|
|
139
|
+
properties.responseCache =
|
|
140
|
+
properties.responseTextCache =
|
|
141
|
+
properties.responseXMLCache = null;
|
|
142
|
+
|
|
143
|
+
properties.responseHeaders = {};
|
|
144
|
+
xhr.status = 0;
|
|
145
|
+
xhr.statusText = "";
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// return a "request" client object or an event emitter matching the same behaviour for unsupported protocols
|
|
149
|
+
// the callback should be called with a "request" response object or an event emitter matching the same behaviour too
|
|
150
|
+
function createClient(xhr) {
|
|
151
|
+
const { flag, properties } = xhr;
|
|
152
|
+
const urlObj = new URL(flag.uri);
|
|
153
|
+
const uri = urlObj.href;
|
|
154
|
+
const ucMethod = flag.method.toUpperCase();
|
|
155
|
+
|
|
156
|
+
const { requestManager } = flag;
|
|
157
|
+
|
|
158
|
+
if (urlObj.protocol === "file:") {
|
|
159
|
+
const response = new EventEmitter();
|
|
160
|
+
response.statusCode = 200;
|
|
161
|
+
response.rawHeaders = [];
|
|
162
|
+
response.headers = {};
|
|
163
|
+
const filePath = urlObj.pathname
|
|
164
|
+
.replace(/^file:\/\//, "")
|
|
165
|
+
.replace(/^\/([a-z]):\//i, "$1:/")
|
|
166
|
+
.replace(/%20/g, " ");
|
|
167
|
+
|
|
168
|
+
const client = new EventEmitter();
|
|
169
|
+
|
|
170
|
+
const readableStream = fs.createReadStream(filePath, { encoding: null });
|
|
171
|
+
|
|
172
|
+
readableStream.on("data", chunk => {
|
|
173
|
+
response.emit("data", chunk);
|
|
174
|
+
client.emit("data", chunk);
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
readableStream.on("end", () => {
|
|
178
|
+
response.emit("end");
|
|
179
|
+
client.emit("end");
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
readableStream.on("error", err => {
|
|
183
|
+
client.emit("error", err);
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
client.abort = function () {
|
|
187
|
+
readableStream.destroy();
|
|
188
|
+
client.emit("abort");
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
if (requestManager) {
|
|
192
|
+
const req = {
|
|
193
|
+
abort() {
|
|
194
|
+
properties.abortError = true;
|
|
195
|
+
xhr.abort();
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
requestManager.add(req);
|
|
199
|
+
const rmReq = requestManager.remove.bind(requestManager, req);
|
|
200
|
+
client.on("abort", rmReq);
|
|
201
|
+
client.on("error", rmReq);
|
|
202
|
+
client.on("end", rmReq);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
process.nextTick(() => client.emit("response", response, urlObj.href));
|
|
206
|
+
|
|
207
|
+
return client;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (urlObj.protocol === "data:") {
|
|
211
|
+
const response = new EventEmitter();
|
|
212
|
+
|
|
213
|
+
const client = new EventEmitter();
|
|
214
|
+
|
|
215
|
+
let buffer;
|
|
216
|
+
try {
|
|
217
|
+
const parsed = parseDataURL(uri);
|
|
218
|
+
const contentType = parsed.mimeType.toString();
|
|
219
|
+
buffer = Buffer.from(parsed.body);
|
|
220
|
+
response.statusCode = 200;
|
|
221
|
+
response.rawHeaders = ["Content-Type", contentType];
|
|
222
|
+
response.headers = { "content-type": contentType };
|
|
223
|
+
} catch (err) {
|
|
224
|
+
process.nextTick(() => client.emit("error", err));
|
|
225
|
+
return client;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
client.abort = () => {
|
|
229
|
+
// do nothing
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
process.nextTick(() => {
|
|
233
|
+
client.emit("response", response, urlObj.href);
|
|
234
|
+
process.nextTick(() => {
|
|
235
|
+
response.emit("data", buffer);
|
|
236
|
+
client.emit("data", buffer);
|
|
237
|
+
response.emit("end");
|
|
238
|
+
client.emit("end");
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
return client;
|
|
243
|
+
}
|
|
244
|
+
const agents = agentFactory(flag.proxy, flag.strictSSL);
|
|
245
|
+
const requestHeaders = {};
|
|
246
|
+
|
|
247
|
+
for (const header in flag.requestHeaders) {
|
|
248
|
+
requestHeaders[header] = flag.requestHeaders[header];
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
if (getRequestHeader(flag.requestHeaders, "referer") === null) {
|
|
252
|
+
requestHeaders.Referer = flag.referrer;
|
|
253
|
+
}
|
|
254
|
+
if (getRequestHeader(flag.requestHeaders, "user-agent") === null) {
|
|
255
|
+
requestHeaders["User-Agent"] = flag.userAgent;
|
|
256
|
+
}
|
|
257
|
+
if (getRequestHeader(flag.requestHeaders, "accept-language") === null) {
|
|
258
|
+
requestHeaders["Accept-Language"] = "en";
|
|
259
|
+
}
|
|
260
|
+
if (getRequestHeader(flag.requestHeaders, "accept") === null) {
|
|
261
|
+
requestHeaders.Accept = "*/*";
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
const crossOrigin = flag.origin !== urlObj.origin;
|
|
265
|
+
if (crossOrigin) {
|
|
266
|
+
requestHeaders.Origin = flag.origin;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
const options = { rejectUnauthorized: flag.strictSSL, agents, followRedirects: true };
|
|
270
|
+
if (flag.auth) {
|
|
271
|
+
options.user = flag.auth.user || "";
|
|
272
|
+
options.pass = flag.auth.pass || "";
|
|
273
|
+
}
|
|
274
|
+
if (flag.cookieJar && (!crossOrigin || flag.withCredentials)) {
|
|
275
|
+
options.cookieJar = flag.cookieJar;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
const { body } = flag;
|
|
279
|
+
const hasBody = body !== undefined &&
|
|
280
|
+
body !== null &&
|
|
281
|
+
body !== "" &&
|
|
282
|
+
!(ucMethod === "HEAD" || ucMethod === "GET");
|
|
283
|
+
|
|
284
|
+
if (hasBody && getRequestHeader(flag.requestHeaders, "content-type") === null) {
|
|
285
|
+
requestHeaders["Content-Type"] = "text/plain;charset=UTF-8";
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
function doRequest() {
|
|
289
|
+
try {
|
|
290
|
+
let requestBody = body;
|
|
291
|
+
let len = 0;
|
|
292
|
+
if (hasBody) {
|
|
293
|
+
if (flag.formData) {
|
|
294
|
+
// TODO: implement https://html.spec.whatwg.org/#multipart-form-data
|
|
295
|
+
// directly instead of using an external library
|
|
296
|
+
requestBody = new FormData();
|
|
297
|
+
for (const entry of body) {
|
|
298
|
+
requestBody.append(entry.name, entry.value, entry.options);
|
|
299
|
+
}
|
|
300
|
+
len = requestBody.getLengthSync();
|
|
301
|
+
requestHeaders["Content-Type"] = `multipart/form-data; boundary=${requestBody.getBoundary()}`;
|
|
302
|
+
} else {
|
|
303
|
+
if (typeof body === "string") {
|
|
304
|
+
len = Buffer.byteLength(body);
|
|
305
|
+
} else {
|
|
306
|
+
len = body.length;
|
|
307
|
+
}
|
|
308
|
+
requestBody = Buffer.isBuffer(requestBody) ? requestBody : Buffer.from(requestBody);
|
|
309
|
+
}
|
|
310
|
+
requestHeaders["Content-Length"] = len;
|
|
311
|
+
}
|
|
312
|
+
requestHeaders["Accept-Encoding"] = "gzip, deflate";
|
|
313
|
+
const requestClient = new Request(uri, options, { method: flag.method, headers: requestHeaders });
|
|
314
|
+
if (hasBody) {
|
|
315
|
+
if (flag.formData) {
|
|
316
|
+
requestBody.on("error", err => {
|
|
317
|
+
requestClient.emit("error", err);
|
|
318
|
+
requestClient.abort();
|
|
319
|
+
});
|
|
320
|
+
requestClient.pipeRequest(requestBody);
|
|
321
|
+
} else {
|
|
322
|
+
requestClient.write(requestBody);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return requestClient;
|
|
326
|
+
} catch (e) {
|
|
327
|
+
const eventEmitterclient = new EventEmitter();
|
|
328
|
+
process.nextTick(() => eventEmitterclient.emit("error", e));
|
|
329
|
+
eventEmitterclient.end = () => {};
|
|
330
|
+
eventEmitterclient.abort = () => {
|
|
331
|
+
// do nothing
|
|
332
|
+
};
|
|
333
|
+
return eventEmitterclient;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
let client;
|
|
338
|
+
|
|
339
|
+
const nonSimpleHeaders = Object.keys(flag.requestHeaders)
|
|
340
|
+
.filter(header => !simpleHeaders.has(header.toLowerCase()));
|
|
341
|
+
|
|
342
|
+
if (crossOrigin && (!simpleMethods.has(ucMethod) || nonSimpleHeaders.length > 0 || properties.uploadListener)) {
|
|
343
|
+
client = new EventEmitter();
|
|
344
|
+
|
|
345
|
+
const preflightRequestHeaders = {};
|
|
346
|
+
for (const header in requestHeaders) {
|
|
347
|
+
// the only existing request headers the cors spec allows on the preflight request are Origin and Referer
|
|
348
|
+
const lcHeader = header.toLowerCase();
|
|
349
|
+
if (lcHeader === "origin" || lcHeader === "referer") {
|
|
350
|
+
preflightRequestHeaders[header] = requestHeaders[header];
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
preflightRequestHeaders["Access-Control-Request-Method"] = flag.method;
|
|
355
|
+
if (nonSimpleHeaders.length > 0) {
|
|
356
|
+
preflightRequestHeaders["Access-Control-Request-Headers"] = nonSimpleHeaders.join(", ");
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
preflightRequestHeaders["User-Agent"] = flag.userAgent;
|
|
360
|
+
|
|
361
|
+
flag.preflight = true;
|
|
362
|
+
|
|
363
|
+
const rejectUnauthorized = flag.strictSSL;
|
|
364
|
+
const preflightClient = new Request(
|
|
365
|
+
uri,
|
|
366
|
+
{ agents, followRedirects: false },
|
|
367
|
+
{ method: "OPTIONS", headers: preflightRequestHeaders, rejectUnauthorized }
|
|
368
|
+
);
|
|
369
|
+
|
|
370
|
+
preflightClient.on("response", resp => {
|
|
371
|
+
// don't send the real request if the preflight request returned an error
|
|
372
|
+
if (resp.statusCode < 200 || resp.statusCode > 299) {
|
|
373
|
+
client.emit("error", new Error("Response for preflight has invalid HTTP status code " + resp.statusCode));
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
// don't send the real request if we aren't allowed to use the headers
|
|
377
|
+
if (!validCORSPreflightHeaders(xhr, resp, flag, properties)) {
|
|
378
|
+
setResponseToNetworkError(xhr);
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
// Set request gzip option right before headers are set
|
|
382
|
+
const realClient = doRequest();
|
|
383
|
+
realClient.on("response", (...args) => client.emit("response", ...args));
|
|
384
|
+
realClient.on("data", chunk => client.emit("data", chunk));
|
|
385
|
+
realClient.on("end", () => client.emit("end"));
|
|
386
|
+
realClient.on("abort", () => client.emit("abort"));
|
|
387
|
+
realClient.on("request", req => {
|
|
388
|
+
client.headers = realClient.headers;
|
|
389
|
+
client.emit("request", req);
|
|
390
|
+
});
|
|
391
|
+
realClient.on("redirect", (...args) => {
|
|
392
|
+
client.emit("redirect", ...args);
|
|
393
|
+
});
|
|
394
|
+
realClient.on("error", err => {
|
|
395
|
+
client.emit("error", err);
|
|
396
|
+
});
|
|
397
|
+
client.abort = () => {
|
|
398
|
+
realClient.abort();
|
|
399
|
+
};
|
|
400
|
+
setImmediate(() => realClient.end());
|
|
401
|
+
});
|
|
402
|
+
|
|
403
|
+
preflightClient.on("error", err => {
|
|
404
|
+
client.emit("error", err);
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
client.abort = () => {
|
|
408
|
+
preflightClient.abort();
|
|
409
|
+
};
|
|
410
|
+
setImmediate(() => preflightClient.end());
|
|
411
|
+
} else {
|
|
412
|
+
client = doRequest();
|
|
413
|
+
setImmediate(() => client.end());
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
if (requestManager) {
|
|
417
|
+
const req = {
|
|
418
|
+
abort() {
|
|
419
|
+
properties.abortError = true;
|
|
420
|
+
xhr.abort();
|
|
421
|
+
}
|
|
422
|
+
};
|
|
423
|
+
requestManager.add(req);
|
|
424
|
+
const rmReq = requestManager.remove.bind(requestManager, req);
|
|
425
|
+
client.on("abort", rmReq);
|
|
426
|
+
client.on("error", rmReq);
|
|
427
|
+
client.on("end", rmReq);
|
|
428
|
+
}
|
|
429
|
+
return client;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
exports.headerListSeparatorRegexp = headerListSeparatorRegexp;
|
|
433
|
+
exports.simpleHeaders = simpleHeaders;
|
|
434
|
+
exports.preflightHeaders = preflightHeaders;
|
|
435
|
+
exports.getRequestHeader = getRequestHeader;
|
|
436
|
+
exports.updateRequestHeader = updateRequestHeader;
|
|
437
|
+
exports.dispatchError = dispatchError;
|
|
438
|
+
exports.validCORSHeaders = validCORSHeaders;
|
|
439
|
+
exports.requestErrorSteps = requestErrorSteps;
|
|
440
|
+
exports.setResponseToNetworkError = setResponseToNetworkError;
|
|
441
|
+
exports.createClient = createClient;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// https://heycam.github.io/webidl/#idl-named-properties
|
|
3
|
+
|
|
4
|
+
const IS_NAMED_PROPERTY = Symbol("is named property");
|
|
5
|
+
const TRACKER = Symbol("named property tracker");
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Create a new NamedPropertiesTracker for the given `object`.
|
|
9
|
+
*
|
|
10
|
+
* Named properties are used in DOM to let you lookup (for example) a Node by accessing a property on another object.
|
|
11
|
+
* For example `window.foo` might resolve to an image element with id "foo".
|
|
12
|
+
*
|
|
13
|
+
* This tracker is a workaround because the ES6 Proxy feature is not yet available.
|
|
14
|
+
*
|
|
15
|
+
* @param {Object} object Object used to write properties to
|
|
16
|
+
* @param {Object} objectProxy Object used to check if a property is already defined
|
|
17
|
+
* @param {Function} resolverFunc Each time a property is accessed, this function is called to determine the value of
|
|
18
|
+
* the property. The function is passed 3 arguments: (object, name, values).
|
|
19
|
+
* `object` is identical to the `object` parameter of this `create` function.
|
|
20
|
+
* `name` is the name of the property.
|
|
21
|
+
* `values` is a function that returns a Set with all the tracked values for this name. The order of these
|
|
22
|
+
* values is undefined.
|
|
23
|
+
*
|
|
24
|
+
* @returns {NamedPropertiesTracker}
|
|
25
|
+
*/
|
|
26
|
+
exports.create = function (object, objectProxy, resolverFunc) {
|
|
27
|
+
if (object[TRACKER]) {
|
|
28
|
+
throw Error("A NamedPropertiesTracker has already been created for this object");
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const tracker = new NamedPropertiesTracker(object, objectProxy, resolverFunc);
|
|
32
|
+
object[TRACKER] = tracker;
|
|
33
|
+
return tracker;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.get = function (object) {
|
|
37
|
+
if (!object) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return object[TRACKER] || null;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
function NamedPropertiesTracker(object, objectProxy, resolverFunc) {
|
|
45
|
+
this.object = object;
|
|
46
|
+
this.objectProxy = objectProxy;
|
|
47
|
+
this.resolverFunc = resolverFunc;
|
|
48
|
+
this.trackedValues = new Map(); // Map<Set<value>>
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function newPropertyDescriptor(tracker, name) {
|
|
52
|
+
const emptySet = new Set();
|
|
53
|
+
|
|
54
|
+
function getValues() {
|
|
55
|
+
return tracker.trackedValues.get(name) || emptySet;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const descriptor = {
|
|
59
|
+
enumerable: true,
|
|
60
|
+
configurable: true,
|
|
61
|
+
get() {
|
|
62
|
+
return tracker.resolverFunc(tracker.object, name, getValues);
|
|
63
|
+
},
|
|
64
|
+
set(value) {
|
|
65
|
+
Object.defineProperty(tracker.object, name, {
|
|
66
|
+
enumerable: true,
|
|
67
|
+
configurable: true,
|
|
68
|
+
writable: true,
|
|
69
|
+
value
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
descriptor.get[IS_NAMED_PROPERTY] = true;
|
|
75
|
+
descriptor.set[IS_NAMED_PROPERTY] = true;
|
|
76
|
+
return descriptor;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Track a value (e.g. a Node) for a specified name.
|
|
81
|
+
*
|
|
82
|
+
* Values can be tracked eagerly, which means that not all tracked values *have* to appear in the output. The resolver
|
|
83
|
+
* function that was passed to the output may filter the value.
|
|
84
|
+
*
|
|
85
|
+
* Tracking the same `name` and `value` pair multiple times has no effect
|
|
86
|
+
*
|
|
87
|
+
* @param {String} name
|
|
88
|
+
* @param {*} value
|
|
89
|
+
*/
|
|
90
|
+
NamedPropertiesTracker.prototype.track = function (name, value) {
|
|
91
|
+
if (name === undefined || name === null || name === "") {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
let valueSet = this.trackedValues.get(name);
|
|
96
|
+
if (!valueSet) {
|
|
97
|
+
valueSet = new Set();
|
|
98
|
+
this.trackedValues.set(name, valueSet);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
valueSet.add(value);
|
|
102
|
+
|
|
103
|
+
if (name in this.objectProxy) {
|
|
104
|
+
// already added our getter or it is not a named property (e.g. "addEventListener")
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const descriptor = newPropertyDescriptor(this, name);
|
|
109
|
+
Object.defineProperty(this.object, name, descriptor);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Stop tracking a previously tracked `name` & `value` pair, see track().
|
|
114
|
+
*
|
|
115
|
+
* Untracking the same `name` and `value` pair multiple times has no effect
|
|
116
|
+
*
|
|
117
|
+
* @param {String} name
|
|
118
|
+
* @param {*} value
|
|
119
|
+
*/
|
|
120
|
+
NamedPropertiesTracker.prototype.untrack = function (name, value) {
|
|
121
|
+
if (name === undefined || name === null || name === "") {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const valueSet = this.trackedValues.get(name);
|
|
126
|
+
if (!valueSet) {
|
|
127
|
+
// the value is not present
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (!valueSet.delete(value)) {
|
|
132
|
+
// the value was not present
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (valueSet.size === 0) {
|
|
137
|
+
this.trackedValues.delete(name);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (valueSet.size > 0) {
|
|
141
|
+
// other values for this name are still present
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// at this point there are no more values, delete the property
|
|
146
|
+
|
|
147
|
+
const descriptor = Object.getOwnPropertyDescriptor(this.object, name);
|
|
148
|
+
|
|
149
|
+
if (!descriptor || !descriptor.get || descriptor.get[IS_NAMED_PROPERTY] !== true) {
|
|
150
|
+
// Not defined by NamedPropertyTracker
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// note: delete puts the object in dictionary mode.
|
|
155
|
+
// if this turns out to be a performance issue, maybe add:
|
|
156
|
+
// https://github.com/petkaantonov/bluebird/blob/3e36fc861ac5795193ba37935333eb6ef3716390/src/util.js#L177
|
|
157
|
+
delete this.object[name];
|
|
158
|
+
};
|