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
|
@@ -1,933 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* API Templates
|
|
3
|
-
* Templates for API-specific files (controllers, models, routes, etc.)
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Generate package.json with subpath imports for aliases
|
|
8
|
-
*/
|
|
9
|
-
export function generateApiPackageJsonTemplate(appName) {
|
|
10
|
-
return `{
|
|
11
|
-
"name": "@${appName}/api",
|
|
12
|
-
"version": "1.0.0",
|
|
13
|
-
"type": "module",
|
|
14
|
-
"imports": {
|
|
15
|
-
"@database": "../../../database/index.js",
|
|
16
|
-
"@database/*": "../../../database/*",
|
|
17
|
-
"@models/*": "../../../database/models/*",
|
|
18
|
-
"@config/*": "../../../config/*"
|
|
19
|
-
},
|
|
20
|
-
"scripts": {
|
|
21
|
-
"dev": "nodemon src/index.js",
|
|
22
|
-
"start": "node src/index.js"
|
|
23
|
-
},
|
|
24
|
-
"dependencies": {
|
|
25
|
-
"express": "^4.18.2",
|
|
26
|
-
"bcryptjs": "^2.4.3",
|
|
27
|
-
"jsonwebtoken": "^9.0.2",
|
|
28
|
-
"dotenv": "^16.3.1"
|
|
29
|
-
},
|
|
30
|
-
"devDependencies": {
|
|
31
|
-
"nodemon": "^3.0.1"
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
`;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Generate BaseController
|
|
39
|
-
*/
|
|
40
|
-
export function generateBaseControllerTemplate() {
|
|
41
|
-
return `/**
|
|
42
|
-
* Base Controller
|
|
43
|
-
* Extends framework Controller with app-specific helpers
|
|
44
|
-
*/
|
|
45
|
-
|
|
46
|
-
import { Controller } from 'vasuzex';
|
|
47
|
-
|
|
48
|
-
export class BaseController extends Controller {
|
|
49
|
-
/**
|
|
50
|
-
* Paginate response helper
|
|
51
|
-
*/
|
|
52
|
-
paginate(res, data, total, page = 1, perPage = 15) {
|
|
53
|
-
const lastPage = Math.ceil(total / perPage);
|
|
54
|
-
return this.success(res, {
|
|
55
|
-
items: data,
|
|
56
|
-
pagination: {
|
|
57
|
-
total,
|
|
58
|
-
perPage,
|
|
59
|
-
currentPage: page,
|
|
60
|
-
lastPage,
|
|
61
|
-
hasMore: page < lastPage,
|
|
62
|
-
},
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
`;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Generate AuthController
|
|
71
|
-
*/
|
|
72
|
-
export function generateAuthControllerTemplate() {
|
|
73
|
-
return `/**
|
|
74
|
-
* Authentication Controller
|
|
75
|
-
* Handles user registration, login, and authentication
|
|
76
|
-
*/
|
|
77
|
-
|
|
78
|
-
import { BaseController } from './BaseController.js';
|
|
79
|
-
import { AuthService } from '../services/AuthService.js';
|
|
80
|
-
import { LoginRequest, RegisterRequest } from '../requests/AuthRequests.js';
|
|
81
|
-
|
|
82
|
-
export class AuthController extends BaseController {
|
|
83
|
-
constructor() {
|
|
84
|
-
super();
|
|
85
|
-
this.authService = new AuthService();
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* POST /api/auth/register
|
|
90
|
-
* Register a new user
|
|
91
|
-
*/
|
|
92
|
-
register = async (req, res) => {
|
|
93
|
-
try {
|
|
94
|
-
// Validate request
|
|
95
|
-
const { error, value } = RegisterRequest.validate(req.body);
|
|
96
|
-
if (error) {
|
|
97
|
-
return this.validationError(res, error.details);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Register user
|
|
101
|
-
const result = await this.authService.register(value);
|
|
102
|
-
|
|
103
|
-
return this.success(res, result, 'Registration successful', 201);
|
|
104
|
-
} catch (error) {
|
|
105
|
-
console.error('Registration error:', error);
|
|
106
|
-
return this.error(res, error.message, 400);
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* POST /api/auth/login
|
|
112
|
-
* Login user
|
|
113
|
-
*/
|
|
114
|
-
login = async (req, res) => {
|
|
115
|
-
try {
|
|
116
|
-
// Validate request
|
|
117
|
-
const { error, value } = LoginRequest.validate(req.body);
|
|
118
|
-
if (error) {
|
|
119
|
-
return this.validationError(res, error.details);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// Login user
|
|
123
|
-
const result = await this.authService.login(value.email, value.password);
|
|
124
|
-
|
|
125
|
-
return this.success(res, result, 'Login successful');
|
|
126
|
-
} catch (error) {
|
|
127
|
-
console.error('Login error:', error);
|
|
128
|
-
return this.unauthorized(res, error.message);
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* GET /api/auth/me
|
|
134
|
-
* Get current user
|
|
135
|
-
*/
|
|
136
|
-
me = async (req, res) => {
|
|
137
|
-
try {
|
|
138
|
-
const user = req.user; // Set by auth middleware
|
|
139
|
-
|
|
140
|
-
return this.success(res, user, 'User retrieved successfully');
|
|
141
|
-
} catch (error) {
|
|
142
|
-
console.error('Get user error:', error);
|
|
143
|
-
return this.error(res, error.message);
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* POST /api/auth/logout
|
|
149
|
-
* Logout user
|
|
150
|
-
*/
|
|
151
|
-
logout = async (req, res) => {
|
|
152
|
-
try {
|
|
153
|
-
// In JWT, logout is handled client-side by removing the token
|
|
154
|
-
// Here you can add token to blacklist if needed
|
|
155
|
-
|
|
156
|
-
return this.success(res, null, 'Logged out successfully');
|
|
157
|
-
} catch (error) {
|
|
158
|
-
console.error('Logout error:', error);
|
|
159
|
-
return this.error(res, error.message);
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
`;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Generate User model with database operations
|
|
168
|
-
*/
|
|
169
|
-
export function generateUserModelTemplate() {
|
|
170
|
-
return `/**
|
|
171
|
-
* User Model
|
|
172
|
-
* Database operations for users table
|
|
173
|
-
*/
|
|
174
|
-
|
|
175
|
-
import { DB } from 'vasuzex';
|
|
176
|
-
|
|
177
|
-
export class User {
|
|
178
|
-
/**
|
|
179
|
-
* Get query builder for users table
|
|
180
|
-
*/
|
|
181
|
-
static query() {
|
|
182
|
-
return DB.table('users');
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Create a new user
|
|
187
|
-
*/
|
|
188
|
-
static async create(data) {
|
|
189
|
-
const [user] = await DB.table('users').insert({
|
|
190
|
-
name: data.name,
|
|
191
|
-
email: data.email,
|
|
192
|
-
password: data.password,
|
|
193
|
-
created_at: new Date(),
|
|
194
|
-
updated_at: new Date()
|
|
195
|
-
}).returning('*');
|
|
196
|
-
|
|
197
|
-
return user;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Find user by email
|
|
202
|
-
*/
|
|
203
|
-
static async findByEmail(email) {
|
|
204
|
-
const user = await DB.table('users')
|
|
205
|
-
.where('email', email)
|
|
206
|
-
.first();
|
|
207
|
-
|
|
208
|
-
return user;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* Find user by ID
|
|
213
|
-
*/
|
|
214
|
-
static async findById(id) {
|
|
215
|
-
const user = await DB.table('users')
|
|
216
|
-
.where('id', id)
|
|
217
|
-
.first();
|
|
218
|
-
|
|
219
|
-
return user;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* Update user
|
|
224
|
-
*/
|
|
225
|
-
static async update(id, data) {
|
|
226
|
-
const [user] = await DB.table('users')
|
|
227
|
-
.where('id', id)
|
|
228
|
-
.update({
|
|
229
|
-
...data,
|
|
230
|
-
updated_at: new Date()
|
|
231
|
-
})
|
|
232
|
-
.returning('*');
|
|
233
|
-
|
|
234
|
-
return user;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* Delete user
|
|
239
|
-
*/
|
|
240
|
-
static async delete(id) {
|
|
241
|
-
await DB.table('users')
|
|
242
|
-
.where('id', id)
|
|
243
|
-
.delete();
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
`;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
/**
|
|
250
|
-
* Generate AuthService
|
|
251
|
-
*/
|
|
252
|
-
export function generateAuthServiceTemplate() {
|
|
253
|
-
return `/**
|
|
254
|
-
* Authentication Service
|
|
255
|
-
* Business logic for authentication
|
|
256
|
-
*/
|
|
257
|
-
|
|
258
|
-
import bcrypt from 'bcryptjs';
|
|
259
|
-
import jwt from 'jsonwebtoken';
|
|
260
|
-
import { User } from '@database';
|
|
261
|
-
|
|
262
|
-
export class AuthService {
|
|
263
|
-
/**
|
|
264
|
-
* Register a new user
|
|
265
|
-
*/
|
|
266
|
-
async register(data) {
|
|
267
|
-
// Check if user already exists
|
|
268
|
-
const existingUser = await User.findByEmail(data.email);
|
|
269
|
-
if (existingUser) {
|
|
270
|
-
throw new Error('User already exists with this email');
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
// Hash password
|
|
274
|
-
const hashedPassword = await bcrypt.hash(data.password, 10);
|
|
275
|
-
|
|
276
|
-
// Create user
|
|
277
|
-
const user = await User.create({
|
|
278
|
-
name: data.name,
|
|
279
|
-
email: data.email,
|
|
280
|
-
password: hashedPassword,
|
|
281
|
-
});
|
|
282
|
-
|
|
283
|
-
// Generate token
|
|
284
|
-
const token = this.generateToken(user);
|
|
285
|
-
|
|
286
|
-
// Remove password from response
|
|
287
|
-
delete user.password;
|
|
288
|
-
|
|
289
|
-
return {
|
|
290
|
-
user,
|
|
291
|
-
token,
|
|
292
|
-
};
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* Login user
|
|
297
|
-
*/
|
|
298
|
-
async login(email, password) {
|
|
299
|
-
// Find user
|
|
300
|
-
const user = await User.findByEmail(email);
|
|
301
|
-
if (!user) {
|
|
302
|
-
throw new Error('Invalid credentials');
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
// Verify password
|
|
306
|
-
const isValid = await bcrypt.compare(password, user.password);
|
|
307
|
-
if (!isValid) {
|
|
308
|
-
throw new Error('Invalid credentials');
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
// Generate token
|
|
312
|
-
const token = this.generateToken(user);
|
|
313
|
-
|
|
314
|
-
// Remove password from response
|
|
315
|
-
delete user.password;
|
|
316
|
-
|
|
317
|
-
return {
|
|
318
|
-
user,
|
|
319
|
-
token,
|
|
320
|
-
};
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
/**
|
|
324
|
-
* Generate JWT token
|
|
325
|
-
*/
|
|
326
|
-
generateToken(user) {
|
|
327
|
-
return jwt.sign(
|
|
328
|
-
{
|
|
329
|
-
id: user.id,
|
|
330
|
-
email: user.email
|
|
331
|
-
},
|
|
332
|
-
process.env.JWT_SECRET || 'secret',
|
|
333
|
-
{ expiresIn: process.env.JWT_EXPIRES_IN || '7d' }
|
|
334
|
-
);
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
/**
|
|
338
|
-
* Verify JWT token
|
|
339
|
-
*/
|
|
340
|
-
verifyToken(token) {
|
|
341
|
-
try {
|
|
342
|
-
return jwt.verify(token, process.env.JWT_SECRET || 'secret');
|
|
343
|
-
} catch (error) {
|
|
344
|
-
throw new Error('Invalid token');
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
`;
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
/**
|
|
352
|
-
* Generate auth middleware
|
|
353
|
-
*/
|
|
354
|
-
export function generateAuthMiddlewareTemplate() {
|
|
355
|
-
return `/**
|
|
356
|
-
* Authentication Middleware
|
|
357
|
-
* Verify JWT token and attach user to request
|
|
358
|
-
*/
|
|
359
|
-
|
|
360
|
-
import { AuthService } from '../services/AuthService.js';
|
|
361
|
-
import { User } from '@database';
|
|
362
|
-
|
|
363
|
-
export async function authMiddleware(req, res, next) {
|
|
364
|
-
try {
|
|
365
|
-
// Get token from header
|
|
366
|
-
const authHeader = req.headers.authorization;
|
|
367
|
-
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
|
368
|
-
return res.status(401).json({
|
|
369
|
-
success: false,
|
|
370
|
-
message: 'No token provided',
|
|
371
|
-
});
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
const token = authHeader.substring(7); // Remove 'Bearer '
|
|
375
|
-
|
|
376
|
-
// Verify token
|
|
377
|
-
const authService = new AuthService();
|
|
378
|
-
const decoded = authService.verifyToken(token);
|
|
379
|
-
|
|
380
|
-
// Get user
|
|
381
|
-
const user = await User.findById(decoded.id);
|
|
382
|
-
if (!user) {
|
|
383
|
-
return res.status(401).json({
|
|
384
|
-
success: false,
|
|
385
|
-
message: 'User not found',
|
|
386
|
-
});
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
// Remove password
|
|
390
|
-
delete user.password;
|
|
391
|
-
|
|
392
|
-
// Attach user to request
|
|
393
|
-
req.user = user;
|
|
394
|
-
|
|
395
|
-
next();
|
|
396
|
-
} catch (error) {
|
|
397
|
-
return res.status(401).json({
|
|
398
|
-
success: false,
|
|
399
|
-
message: 'Invalid token',
|
|
400
|
-
});
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
`;
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
/**
|
|
407
|
-
* Generate error handler middleware
|
|
408
|
-
*/
|
|
409
|
-
export function generateErrorHandlerTemplate() {
|
|
410
|
-
return `/**
|
|
411
|
-
* Global Error Handlers
|
|
412
|
-
*/
|
|
413
|
-
|
|
414
|
-
/**
|
|
415
|
-
* 404 Not Found Handler
|
|
416
|
-
*/
|
|
417
|
-
export function notFoundHandler(req, res, next) {
|
|
418
|
-
res.status(404).json({
|
|
419
|
-
success: false,
|
|
420
|
-
message: 'Route not found',
|
|
421
|
-
path: req.path,
|
|
422
|
-
});
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
/**
|
|
426
|
-
* Global Error Handler
|
|
427
|
-
*/
|
|
428
|
-
export function errorHandler(err, req, res, next) {
|
|
429
|
-
console.error('Error:', err);
|
|
430
|
-
|
|
431
|
-
const statusCode = err.statusCode || err.status || 500;
|
|
432
|
-
const message = err.message || 'Internal server error';
|
|
433
|
-
|
|
434
|
-
res.status(statusCode).json({
|
|
435
|
-
success: false,
|
|
436
|
-
message,
|
|
437
|
-
...(process.env.APP_ENV === 'development' && { stack: err.stack }),
|
|
438
|
-
});
|
|
439
|
-
}
|
|
440
|
-
`;
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
/**
|
|
444
|
-
* Generate AuthRequests validators
|
|
445
|
-
*/
|
|
446
|
-
export function generateAuthRequestsTemplate() {
|
|
447
|
-
return `/**
|
|
448
|
-
* Authentication Request Validators
|
|
449
|
-
*/
|
|
450
|
-
|
|
451
|
-
import Joi from 'joi';
|
|
452
|
-
|
|
453
|
-
export const RegisterRequest = Joi.object({
|
|
454
|
-
name: Joi.string().min(2).max(100).required(),
|
|
455
|
-
email: Joi.string().email().required(),
|
|
456
|
-
password: Joi.string().min(6).required(),
|
|
457
|
-
});
|
|
458
|
-
|
|
459
|
-
export const LoginRequest = Joi.object({
|
|
460
|
-
email: Joi.string().email().required(),
|
|
461
|
-
password: Joi.string().required(),
|
|
462
|
-
});
|
|
463
|
-
`;
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
/**
|
|
467
|
-
* Generate auth routes
|
|
468
|
-
*/
|
|
469
|
-
export function generateAuthRoutesTemplate() {
|
|
470
|
-
return `/**
|
|
471
|
-
* Authentication Routes
|
|
472
|
-
*/
|
|
473
|
-
|
|
474
|
-
import express from 'express';
|
|
475
|
-
import { AuthController } from '../controllers/AuthController.js';
|
|
476
|
-
import { authMiddleware } from '../middleware/authMiddleware.js';
|
|
477
|
-
|
|
478
|
-
const router = express.Router();
|
|
479
|
-
const authController = new AuthController();
|
|
480
|
-
|
|
481
|
-
// Public routes
|
|
482
|
-
router.post('/register', authController.register);
|
|
483
|
-
router.post('/login', authController.login);
|
|
484
|
-
|
|
485
|
-
// Protected routes
|
|
486
|
-
router.get('/me', authMiddleware, authController.me);
|
|
487
|
-
router.post('/logout', authMiddleware, authController.logout);
|
|
488
|
-
|
|
489
|
-
export const authRoutes = router;
|
|
490
|
-
`;
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
/**
|
|
494
|
-
* Generate routes/index.js
|
|
495
|
-
*/
|
|
496
|
-
export function generateRoutesIndexTemplate() {
|
|
497
|
-
return `/**
|
|
498
|
-
* Route Registry
|
|
499
|
-
* Central place to register all routes
|
|
500
|
-
*/
|
|
501
|
-
|
|
502
|
-
import { authRoutes } from './auth.routes.js';
|
|
503
|
-
|
|
504
|
-
/**
|
|
505
|
-
* Health check route (can be used separately)
|
|
506
|
-
*/
|
|
507
|
-
export const healthRoutes = (req, res) => {
|
|
508
|
-
res.json({
|
|
509
|
-
success: true,
|
|
510
|
-
service: process.env.APP_NAME,
|
|
511
|
-
status: 'healthy',
|
|
512
|
-
timestamp: new Date().toISOString(),
|
|
513
|
-
});
|
|
514
|
-
};
|
|
515
|
-
|
|
516
|
-
/**
|
|
517
|
-
* Get all routes with their base paths
|
|
518
|
-
* @returns {Array} Array of route definitions
|
|
519
|
-
*/
|
|
520
|
-
export function getAllRoutes() {
|
|
521
|
-
return [
|
|
522
|
-
{ path: '/health', handler: healthRoutes },
|
|
523
|
-
{ path: '/api/auth', router: authRoutes },
|
|
524
|
-
// Add more routes here as your app grows
|
|
525
|
-
// Example: { path: '/api/posts', router: postRoutes },
|
|
526
|
-
];
|
|
527
|
-
}
|
|
528
|
-
`;
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
/**
|
|
532
|
-
* Generate PostController
|
|
533
|
-
*/
|
|
534
|
-
export function generatePostControllerTemplate() {
|
|
535
|
-
return `/**
|
|
536
|
-
* Post Controller
|
|
537
|
-
* Handles blog post CRUD operations
|
|
538
|
-
*/
|
|
539
|
-
|
|
540
|
-
import { BaseController } from './BaseController.js';
|
|
541
|
-
import { Post } from '../models/Post.js';
|
|
542
|
-
import { Comment } from '../models/Comment.js';
|
|
543
|
-
|
|
544
|
-
export class PostController extends BaseController {
|
|
545
|
-
/**
|
|
546
|
-
* Get all posts with pagination
|
|
547
|
-
*/
|
|
548
|
-
async index(req, res) {
|
|
549
|
-
try {
|
|
550
|
-
const page = parseInt(req.query.page) || 1;
|
|
551
|
-
const perPage = parseInt(req.query.perPage) || 15;
|
|
552
|
-
const offset = (page - 1) * perPage;
|
|
553
|
-
|
|
554
|
-
const posts = await Post.query()
|
|
555
|
-
.select(['id', 'title', 'slug', 'excerpt', 'created_at', 'updated_at'])
|
|
556
|
-
.orderBy('created_at', 'DESC')
|
|
557
|
-
.limit(perPage)
|
|
558
|
-
.offset(offset);
|
|
559
|
-
|
|
560
|
-
const total = await Post.query().count();
|
|
561
|
-
|
|
562
|
-
return this.paginate(res, posts, total[0].count, page, perPage);
|
|
563
|
-
} catch (error) {
|
|
564
|
-
return this.error(res, error.message, 500);
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
/**
|
|
569
|
-
* Get single post by slug
|
|
570
|
-
*/
|
|
571
|
-
async show(req, res) {
|
|
572
|
-
try {
|
|
573
|
-
const { slug } = req.params;
|
|
574
|
-
|
|
575
|
-
const post = await Post.query()
|
|
576
|
-
.where('slug', slug)
|
|
577
|
-
.first();
|
|
578
|
-
|
|
579
|
-
if (!post) {
|
|
580
|
-
return this.error(res, 'Post not found', 404);
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
// Get comments for this post
|
|
584
|
-
const comments = await Comment.query()
|
|
585
|
-
.where('post_id', post.id)
|
|
586
|
-
.orderBy('created_at', 'DESC');
|
|
587
|
-
|
|
588
|
-
return this.success(res, {
|
|
589
|
-
...post,
|
|
590
|
-
comments
|
|
591
|
-
});
|
|
592
|
-
} catch (error) {
|
|
593
|
-
return this.error(res, error.message, 500);
|
|
594
|
-
}
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
/**
|
|
598
|
-
* Create new post
|
|
599
|
-
*/
|
|
600
|
-
async store(req, res) {
|
|
601
|
-
try {
|
|
602
|
-
const { title, content, excerpt } = req.body;
|
|
603
|
-
|
|
604
|
-
// Generate slug from title
|
|
605
|
-
const slug = title
|
|
606
|
-
.toLowerCase()
|
|
607
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
608
|
-
.replace(/(^-|-$)/g, '');
|
|
609
|
-
|
|
610
|
-
const post = await Post.create({
|
|
611
|
-
title,
|
|
612
|
-
slug,
|
|
613
|
-
content,
|
|
614
|
-
excerpt: excerpt || content.substring(0, 200) + '...',
|
|
615
|
-
});
|
|
616
|
-
|
|
617
|
-
return this.success(res, post, 201);
|
|
618
|
-
} catch (error) {
|
|
619
|
-
return this.error(res, error.message, 500);
|
|
620
|
-
}
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
/**
|
|
624
|
-
* Update post
|
|
625
|
-
*/
|
|
626
|
-
async update(req, res) {
|
|
627
|
-
try {
|
|
628
|
-
const { id } = req.params;
|
|
629
|
-
const { title, content, excerpt } = req.body;
|
|
630
|
-
|
|
631
|
-
const post = await Post.query()
|
|
632
|
-
.where('id', id)
|
|
633
|
-
.first();
|
|
634
|
-
|
|
635
|
-
if (!post) {
|
|
636
|
-
return this.error(res, 'Post not found', 404);
|
|
637
|
-
}
|
|
638
|
-
|
|
639
|
-
// Update slug if title changed
|
|
640
|
-
const updateData = { content, excerpt };
|
|
641
|
-
if (title && title !== post.title) {
|
|
642
|
-
updateData.title = title;
|
|
643
|
-
updateData.slug = title
|
|
644
|
-
.toLowerCase()
|
|
645
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
646
|
-
.replace(/(^-|-$)/g, '');
|
|
647
|
-
}
|
|
648
|
-
|
|
649
|
-
await Post.query()
|
|
650
|
-
.where('id', id)
|
|
651
|
-
.update(updateData);
|
|
652
|
-
|
|
653
|
-
const updatedPost = await Post.query()
|
|
654
|
-
.where('id', id)
|
|
655
|
-
.first();
|
|
656
|
-
|
|
657
|
-
return this.success(res, updatedPost);
|
|
658
|
-
} catch (error) {
|
|
659
|
-
return this.error(res, error.message, 500);
|
|
660
|
-
}
|
|
661
|
-
}
|
|
662
|
-
|
|
663
|
-
/**
|
|
664
|
-
* Delete post
|
|
665
|
-
*/
|
|
666
|
-
async destroy(req, res) {
|
|
667
|
-
try {
|
|
668
|
-
const { id } = req.params;
|
|
669
|
-
|
|
670
|
-
const post = await Post.query()
|
|
671
|
-
.where('id', id)
|
|
672
|
-
.first();
|
|
673
|
-
|
|
674
|
-
if (!post) {
|
|
675
|
-
return this.error(res, 'Post not found', 404);
|
|
676
|
-
}
|
|
677
|
-
|
|
678
|
-
// Delete associated comments first
|
|
679
|
-
await Comment.query()
|
|
680
|
-
.where('post_id', id)
|
|
681
|
-
.delete();
|
|
682
|
-
|
|
683
|
-
// Delete post
|
|
684
|
-
await Post.query()
|
|
685
|
-
.where('id', id)
|
|
686
|
-
.delete();
|
|
687
|
-
|
|
688
|
-
return this.success(res, { message: 'Post deleted successfully' });
|
|
689
|
-
} catch (error) {
|
|
690
|
-
return this.error(res, error.message, 500);
|
|
691
|
-
}
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
`;
|
|
695
|
-
}
|
|
696
|
-
|
|
697
|
-
/**
|
|
698
|
-
* Generate CommentController
|
|
699
|
-
*/
|
|
700
|
-
export function generateCommentControllerTemplate() {
|
|
701
|
-
return `/**
|
|
702
|
-
* Comment Controller
|
|
703
|
-
* Handles comment operations
|
|
704
|
-
*/
|
|
705
|
-
|
|
706
|
-
import { BaseController } from './BaseController.js';
|
|
707
|
-
import { Comment } from '../models/Comment.js';
|
|
708
|
-
import { Post } from '../models/Post.js';
|
|
709
|
-
|
|
710
|
-
export class CommentController extends BaseController {
|
|
711
|
-
/**
|
|
712
|
-
* Add comment to post
|
|
713
|
-
*/
|
|
714
|
-
async store(req, res) {
|
|
715
|
-
try {
|
|
716
|
-
const { post_id, author, content } = req.body;
|
|
717
|
-
|
|
718
|
-
// Verify post exists
|
|
719
|
-
const post = await Post.query()
|
|
720
|
-
.where('id', post_id)
|
|
721
|
-
.first();
|
|
722
|
-
|
|
723
|
-
if (!post) {
|
|
724
|
-
return this.error(res, 'Post not found', 404);
|
|
725
|
-
}
|
|
726
|
-
|
|
727
|
-
const comment = await Comment.create({
|
|
728
|
-
post_id,
|
|
729
|
-
author,
|
|
730
|
-
content,
|
|
731
|
-
});
|
|
732
|
-
|
|
733
|
-
return this.success(res, comment, 201);
|
|
734
|
-
} catch (error) {
|
|
735
|
-
return this.error(res, error.message, 500);
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
|
-
|
|
739
|
-
/**
|
|
740
|
-
* Delete comment
|
|
741
|
-
*/
|
|
742
|
-
async destroy(req, res) {
|
|
743
|
-
try {
|
|
744
|
-
const { id } = req.params;
|
|
745
|
-
|
|
746
|
-
const comment = await Comment.query()
|
|
747
|
-
.where('id', id)
|
|
748
|
-
.first();
|
|
749
|
-
|
|
750
|
-
if (!comment) {
|
|
751
|
-
return this.error(res, 'Comment not found', 404);
|
|
752
|
-
}
|
|
753
|
-
|
|
754
|
-
await Comment.query()
|
|
755
|
-
.where('id', id)
|
|
756
|
-
.delete();
|
|
757
|
-
|
|
758
|
-
return this.success(res, { message: 'Comment deleted successfully' });
|
|
759
|
-
} catch (error) {
|
|
760
|
-
return this.error(res, error.message, 500);
|
|
761
|
-
}
|
|
762
|
-
}
|
|
763
|
-
}
|
|
764
|
-
`;
|
|
765
|
-
}
|
|
766
|
-
|
|
767
|
-
/**
|
|
768
|
-
* Generate Post routes
|
|
769
|
-
*/
|
|
770
|
-
export function generatePostRoutesTemplate() {
|
|
771
|
-
return `/**
|
|
772
|
-
* Post Routes
|
|
773
|
-
* API routes for blog posts
|
|
774
|
-
*/
|
|
775
|
-
|
|
776
|
-
import express from 'express';
|
|
777
|
-
import { PostController } from '../controllers/PostController.js';
|
|
778
|
-
import { CommentController } from '../controllers/CommentController.js';
|
|
779
|
-
|
|
780
|
-
const router = express.Router();
|
|
781
|
-
const postController = new PostController();
|
|
782
|
-
const commentController = new CommentController();
|
|
783
|
-
|
|
784
|
-
// Post routes
|
|
785
|
-
router.get('/', (req, res) => postController.index(req, res));
|
|
786
|
-
router.get('/:slug', (req, res) => postController.show(req, res));
|
|
787
|
-
router.post('/', (req, res) => postController.store(req, res));
|
|
788
|
-
router.put('/:id', (req, res) => postController.update(req, res));
|
|
789
|
-
router.delete('/:id', (req, res) => postController.destroy(req, res));
|
|
790
|
-
|
|
791
|
-
// Comment routes
|
|
792
|
-
router.post('/comments', (req, res) => commentController.store(req, res));
|
|
793
|
-
router.delete('/comments/:id', (req, res) => commentController.destroy(req, res));
|
|
794
|
-
|
|
795
|
-
export default router;
|
|
796
|
-
`;
|
|
797
|
-
}
|
|
798
|
-
|
|
799
|
-
/**
|
|
800
|
-
* Generate database config template
|
|
801
|
-
*/
|
|
802
|
-
export function generateDatabaseConfigTemplate() {
|
|
803
|
-
return `/**
|
|
804
|
-
* Database Configuration
|
|
805
|
-
* Uses environment variables via env() helper
|
|
806
|
-
*/
|
|
807
|
-
|
|
808
|
-
import { env } from '../helpers/env.js';
|
|
809
|
-
|
|
810
|
-
export default {
|
|
811
|
-
// Database connection URL
|
|
812
|
-
url: env('DATABASE_URL', 'postgresql://user:password@localhost:5432/mydb'),
|
|
813
|
-
|
|
814
|
-
// Connection pool settings
|
|
815
|
-
pool: {
|
|
816
|
-
min: parseInt(env('DB_POOL_MIN', '2')),
|
|
817
|
-
max: parseInt(env('DB_POOL_MAX', '10'))
|
|
818
|
-
},
|
|
819
|
-
|
|
820
|
-
// Migrations path
|
|
821
|
-
migrations: {
|
|
822
|
-
directory: './database/migrations'
|
|
823
|
-
},
|
|
824
|
-
|
|
825
|
-
// Seeds path
|
|
826
|
-
seeds: {
|
|
827
|
-
directory: './database/seeders'
|
|
828
|
-
}
|
|
829
|
-
};
|
|
830
|
-
`;
|
|
831
|
-
}
|
|
832
|
-
|
|
833
|
-
/**
|
|
834
|
-
* Generate env helper template
|
|
835
|
-
*/
|
|
836
|
-
export function generateEnvHelperTemplate() {
|
|
837
|
-
return `/**
|
|
838
|
-
* Environment Helper
|
|
839
|
-
* Laravel-style env() function for accessing environment variables
|
|
840
|
-
*/
|
|
841
|
-
|
|
842
|
-
export function env(key, defaultValue = null) {
|
|
843
|
-
return process.env[key] ?? defaultValue;
|
|
844
|
-
}
|
|
845
|
-
`;
|
|
846
|
-
}
|
|
847
|
-
|
|
848
|
-
/**
|
|
849
|
-
* Generate users migration template
|
|
850
|
-
*/
|
|
851
|
-
export function generateUsersMigrationTemplate() {
|
|
852
|
-
return `/**
|
|
853
|
-
* Users Table Migration
|
|
854
|
-
* Creates users table with authentication fields
|
|
855
|
-
*/
|
|
856
|
-
|
|
857
|
-
export const up = async (db) => {
|
|
858
|
-
await db.schema.createTable('users', (table) => {
|
|
859
|
-
table.increments('id').primary();
|
|
860
|
-
table.string('name', 255).notNullable();
|
|
861
|
-
table.string('email', 255).unique().notNullable();
|
|
862
|
-
table.string('password', 255).notNullable();
|
|
863
|
-
table.timestamps();
|
|
864
|
-
});
|
|
865
|
-
|
|
866
|
-
console.log('✅ Users table created');
|
|
867
|
-
};
|
|
868
|
-
|
|
869
|
-
export const down = async (db) => {
|
|
870
|
-
await db.schema.dropTableIfExists('users');
|
|
871
|
-
console.log('✅ Users table dropped');
|
|
872
|
-
};
|
|
873
|
-
`;
|
|
874
|
-
}
|
|
875
|
-
|
|
876
|
-
/**
|
|
877
|
-
* Generate user seeder template
|
|
878
|
-
*/
|
|
879
|
-
export function generateUserSeederTemplate() {
|
|
880
|
-
return `/**
|
|
881
|
-
* User Seeder
|
|
882
|
-
* Creates demo users for development
|
|
883
|
-
*/
|
|
884
|
-
|
|
885
|
-
import bcrypt from 'bcryptjs';
|
|
886
|
-
|
|
887
|
-
export default class UserSeeder {
|
|
888
|
-
async run(db) {
|
|
889
|
-
const users = [
|
|
890
|
-
{
|
|
891
|
-
name: 'Admin User',
|
|
892
|
-
email: 'admin@example.com',
|
|
893
|
-
password: await bcrypt.hash('password123', 10),
|
|
894
|
-
created_at: new Date(),
|
|
895
|
-
updated_at: new Date()
|
|
896
|
-
},
|
|
897
|
-
{
|
|
898
|
-
name: 'Test User',
|
|
899
|
-
email: 'test@example.com',
|
|
900
|
-
password: await bcrypt.hash('password123', 10),
|
|
901
|
-
created_at: new Date(),
|
|
902
|
-
updated_at: new Date()
|
|
903
|
-
}
|
|
904
|
-
];
|
|
905
|
-
|
|
906
|
-
await db.table('users').insert(users);
|
|
907
|
-
console.log('✅ Seeded', users.length, 'users');
|
|
908
|
-
}
|
|
909
|
-
}
|
|
910
|
-
`;
|
|
911
|
-
}
|
|
912
|
-
|
|
913
|
-
/**
|
|
914
|
-
* Generate .env.example template for API
|
|
915
|
-
*/
|
|
916
|
-
export function generateApiEnvTemplate() {
|
|
917
|
-
return `# Application
|
|
918
|
-
APP_NAME=My App
|
|
919
|
-
APP_ENV=development
|
|
920
|
-
APP_PORT=3000
|
|
921
|
-
|
|
922
|
-
# Database (PostgreSQL)
|
|
923
|
-
DATABASE_URL=postgresql://user:password@localhost:5432/mydb
|
|
924
|
-
DB_POOL_MIN=2
|
|
925
|
-
DB_POOL_MAX=10
|
|
926
|
-
|
|
927
|
-
# Authentication
|
|
928
|
-
JWT_SECRET=your-secret-key-change-in-production
|
|
929
|
-
JWT_EXPIRES_IN=7d
|
|
930
|
-
|
|
931
|
-
# CORS
|
|
932
|
-
CORS_ORIGIN=http://localhost:3001`;
|
|
933
|
-
}
|