diff --git a/ROUTES.md b/ROUTES.md new file mode 100644 index 0000000..404fb0f --- /dev/null +++ b/ROUTES.md @@ -0,0 +1,10 @@ +# Route Documentation + +### [GET] / + Returns the index page... + +### [GET] /users + Shows a list of all the users. + + [REQUIREMENTS] + The user must be authenticated! \ No newline at end of file diff --git a/skolehjem/app/Http/Controllers/UserController.php b/skolehjem/app/Http/Controllers/UserController.php index 7889d78..ecc9490 100644 --- a/skolehjem/app/Http/Controllers/UserController.php +++ b/skolehjem/app/Http/Controllers/UserController.php @@ -3,60 +3,86 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use App\User; +use Illuminate\Support\Facades\Auth; + class UserController extends Controller { /** * Display a listing of the resource. * - * @return \Illuminate\Http\Response + * @param Request $request + * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View */ - public function index() + public function index(Request $request) { - // + $users = User::query()->paginate($request->query("page", 1)); + + return view("user.index", [ "users" => $users ]); } /** * Show the form for creating a new resource. * - * @return \Illuminate\Http\Response + * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function create() { - // + return view("user.create"); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response + * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function store(Request $request) { - // + $data = $request->validate([ + "name_first" => "required|max:255", + "name_last" => "required|max:255", + "email" => "required|email|unique:users", + "password" => "required|max:60", + "phone" => "required|unique:users", + + ]); + + $user = new User($data); + $user->save(); + + return view("user.success"); } /** * Display the specified resource. * * @param int $id - * @return \Illuminate\Http\Response + * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function show($id) { - // + $user = User::find($id); + + return view("user.show", [ + "user" => $user + ]); } /** * Show the form for editing the specified resource. * * @param int $id - * @return \Illuminate\Http\Response + * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function edit($id) { - // + $user = User::find($id); + + return view("user.edit", [ + "user" => $user + ]); } /** @@ -81,4 +107,18 @@ class UserController extends Controller { // } + + /*******************************************/ + /* Authentication */ + /*******************************************/ + + public function login(Request $request) { + $data = $request->only("email", "password"); + + if(Auth::attempt($data)) { + return view("user.home", [ "user" => Auth::user() ]); + } + + return redirect()->back(400); + } } diff --git a/skolehjem/app/User.php b/skolehjem/app/User.php index 3bb5757..e0df5d5 100644 --- a/skolehjem/app/User.php +++ b/skolehjem/app/User.php @@ -20,7 +20,7 @@ class User extends Authenticatable * @var array */ protected $fillable = [ - 'name', 'email', 'password', + 'name_first', "name_last", 'email', 'password', "phone" ]; /** diff --git a/skolehjem/routes/web.php b/skolehjem/routes/web.php index 495e801..cc84197 100644 --- a/skolehjem/routes/web.php +++ b/skolehjem/routes/web.php @@ -17,4 +17,8 @@ use Illuminate\Support\Facades\Route; // return view('welcome'); //}); +Route::middleware(["auth"])->group(function () { + +}); + Route::get("/", "RootController@index")->name("root.index"); diff --git a/swagger/.agignore b/swagger/.agignore new file mode 100644 index 0000000..849ddff --- /dev/null +++ b/swagger/.agignore @@ -0,0 +1 @@ +dist/ diff --git a/swagger/.babelrc b/swagger/.babelrc new file mode 100644 index 0000000..b89cac8 --- /dev/null +++ b/swagger/.babelrc @@ -0,0 +1,49 @@ +{ + "presets": [ + [ + "@babel/env", + { + "targets": { + "browsers": [ + /* benefit of C/S/FF/Edge only? */ + "> 1%", + "last 2 versions", + "Firefox ESR", + "not dead", + ] + }, + "useBuiltIns": "entry", + "corejs": "2" + } + ], + "@babel/preset-react" + ], + "plugins": [ + [ + "@babel/plugin-transform-runtime", + { + "corejs": "2" + } + ], + "@babel/plugin-proposal-class-properties", + "@babel/plugin-proposal-optional-chaining", + [ + "transform-react-remove-prop-types", + { + "additionalLibraries": [ + "react-immutable-proptypes" + ] + } + ], + [ + "babel-plugin-module-resolver", + { + "alias": { + "plugins": "./src/plugins", + "test": "./test", + "src": "./src" + } + } + ] + ] +} diff --git a/swagger/.dockerignore b/swagger/.dockerignore new file mode 100644 index 0000000..ca145d6 --- /dev/null +++ b/swagger/.dockerignore @@ -0,0 +1,8 @@ +/.git +/.github +/dev-helpers +/docs +/src +/swagger-editor-dist-package +/test +/node_modules \ No newline at end of file diff --git a/swagger/.editorconfig b/swagger/.editorconfig new file mode 100644 index 0000000..2d95946 --- /dev/null +++ b/swagger/.editorconfig @@ -0,0 +1,10 @@ +root = true + +[*] +end_of_line = lf +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +insert_final_newline = true +[*.md] +trim_trailing_whitespace = false diff --git a/swagger/.eslintrc b/swagger/.eslintrc new file mode 100644 index 0000000..6f9e38c --- /dev/null +++ b/swagger/.eslintrc @@ -0,0 +1,38 @@ +{ + "parser": "babel-eslint", + + "env": { + "browser": true, + "node": true, + "es6": true + }, + + "parserOptions": { + "ecmaFeatures": { + "jsx": true + } + }, + + "extends": ["eslint:recommended", "plugin:react/recommended"], + + "plugins": ["react", "import", "mocha"], + + "rules": { + "semi": [2, "never"], + "strict": 0, + "quotes": [2, "double", { "allowTemplateLiterals": true }], + "no-unused-vars": 2, + "no-multi-spaces": 1, + "camelcase": 1, + "no-use-before-define": [2, "nofunc"], + "no-underscore-dangle": 0, + "no-unused-expressions": 1, + "comma-dangle": 0, + "no-console": ["error", { "allow": ["warn", "error"] }], + "react/jsx-no-bind": [1, { "allowArrowFunctions": true }], // TODO: make this an error + "react/display-name": 0, + "import/no-extraneous-dependencies": [2], + "no-useless-escape": 1, + "mocha/no-exclusive-tests": 2 + } +} diff --git a/swagger/.gitignore b/swagger/.gitignore new file mode 100644 index 0000000..b47601b --- /dev/null +++ b/swagger/.gitignore @@ -0,0 +1,10 @@ +node_modules +.idea +.deps_check +.DS_Store +npm-debug.log* +.eslintcache + +# Cypress +test/e2e/screenshots +test/e2e/videos \ No newline at end of file diff --git a/swagger/.npmignore b/swagger/.npmignore new file mode 100644 index 0000000..44f4200 --- /dev/null +++ b/swagger/.npmignore @@ -0,0 +1,10 @@ +* +*/ +!README.md +!package.json +!dist/swagger-editor.js +!dist/swagger-editor.js.map +!dist/swagger-editor.css +!dist/swagger-editor.css.map +!dist/validation.worker.js +!dist/validation.worker.js.map diff --git a/swagger/.prettierrc.yaml b/swagger/.prettierrc.yaml new file mode 100644 index 0000000..2e34d75 --- /dev/null +++ b/swagger/.prettierrc.yaml @@ -0,0 +1,5 @@ +semi: false +trailingComma: es5 +endOfLine: lf +requirePragma: true +insertPragma: true diff --git a/swagger/Dockerfile b/swagger/Dockerfile new file mode 100644 index 0000000..f5184d0 --- /dev/null +++ b/swagger/Dockerfile @@ -0,0 +1,19 @@ +FROM nginx:1.17-alpine + +MAINTAINER fehguy + +RUN mkdir -p /run/nginx + +COPY nginx.conf /etc/nginx/ + +# copy swagger files to the `/js` folder +COPY ./index.html /usr/share/nginx/html/ +ADD ./dist/*.js /usr/share/nginx/html/dist/ +ADD ./dist/*.map /usr/share/nginx/html/dist/ +ADD ./dist/*.css /usr/share/nginx/html/dist/ +ADD ./dist/*.png /usr/share/nginx/html/dist/ +ADD ./docker-run.sh /usr/share/nginx/ + +EXPOSE 8080 + +CMD ["sh", "/usr/share/nginx/docker-run.sh"] diff --git a/swagger/LICENSE b/swagger/LICENSE new file mode 100644 index 0000000..01abb44 --- /dev/null +++ b/swagger/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 SmartBear Software Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/swagger/README.md b/swagger/README.md new file mode 100644 index 0000000..e4c643f --- /dev/null +++ b/swagger/README.md @@ -0,0 +1,114 @@ +# +[![NPM version](https://badge.fury.io/js/swagger-ui.svg)](http://badge.fury.io/js/swagger-editor) +[![Build Status](https://jenkins.swagger.io/buildStatus/icon?job=oss-swagger-editor-master)](https://jenkins.swagger.io/job/oss-swagger-editor-master/) +[![Code Climate](https://codeclimate.com/github/swagger-api/swagger-editor/badges/gpa.svg)](https://codeclimate.com/github/swagger-api/swagger-editor) +[![Dependency Status](https://david-dm.org/swagger-api/swagger-editor/status.svg)](https://david-dm.org/swagger-api/swagger-editor) +[![devDependency Status](https://david-dm.org/swagger-api/swagger-editor/dev-status.svg)](https://david-dm.org/swagger-api/swagger-editor-#info=devDependencies) +[![Build Status](https://jenkins.swagger.io/view/OSS%20-%20JavaScript/job/oss-swagger-editor-master/badge/icon?subject=jenkins%20build)](https://jenkins.swagger.io/view/OSS%20-%20JavaScript/job/oss-swagger-editor-master/) + +**🕰️ Looking for the older version of Swagger Editor?** Refer to the [*2.x* branch](https://github.com/swagger-api/swagger-editor/tree/2.x). + +Swagger Editor lets you edit [Swagger API specifications](https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md) in YAML inside your browser and to preview documentations in real time. +Valid Swagger JSON descriptions can then be generated and used with the full Swagger tooling (code generation, documentation, etc). + +As a brand new version, written from the ground up, there are some known issues and unimplemented features. Check out the [Known Issues](#known-issues) section for more details. + +This repository publishes to two different NPM modules: + +* [swagger-editor](https://www.npmjs.com/package/swagger-editor) is a traditional npm module intended for use in single-page applications that are capable of resolving dependencies (via Webpack, Browserify, etc). +* [swagger-editor-dist](https://www.npmjs.com/package/swagger-editor-dist) is a dependency-free module that includes everything you need to serve Swagger Editor in a server-side project, or a web project that can't resolve npm module dependencies. + +If you're building a single-page application, using `swagger-editor` is strongly recommended, since `swagger-editor-dist` is significantly larger. + +For the older version of swagger-editor, refer to the [*2.x branch*](https://github.com/swagger-api/swagger-editor/tree/2.x). + +## Running locally + +##### Prerequisites + +- NPM 6.x + +Generally, we recommend following guidelines from [Node.js Releases](https://nodejs.org/en/about/releases/) to only use Active LTS or Maintenance LTS releases. + +Current Node.js Active LTS: +- Node.js 12.x +- NPM 6.x + +Current Node.js Maintenance LTS: +- Node.js 10.x +- NPM 6.x + + +If you have Node.js and npm installed, you can run `npm start` to spin up a static server. + +Otherwise, you can open `index.html` directly from your filesystem in your browser. + +If you'd like to make code changes to Swagger Editor, you can start up a Webpack hot-reloading dev server via `npm run dev`. + +##### Browser support + +Swagger Editor works in the latest versions of Chrome, Safari, Firefox, and Edge. + +### Known Issues + +To help with the migration, here are the currently known issues with 3.X. This list will update regularly, and will not include features that were not implemented in previous versions. + +- Everything listed in [Swagger UI's Known Issues](https://github.com/swagger-api/swagger-ui/blob/master/README.md#known-issues). +- The integration with the codegen is still missing. +- Importing specs from a URL is not implemented. + +## Docker + +### Running the image from DockerHub +There is a docker image published in [DockerHub](https://hub.docker.com/r/swaggerapi/swagger-editor/). + +To use this, run the following: + +``` +docker pull swaggerapi/swagger-editor +docker run -d -p 80:8080 swaggerapi/swagger-editor +``` + +This will run Swagger Editor (in detached mode) on port 80 on your machine, so you can open it by navigating to `http://localhost` in your browser. + + +* You can provide your own `json` or `yaml` definition file on your host + +``` +docker run -d -p 80:8080 -v $(pwd):/tmp -e SWAGGER_FILE=/tmp/swagger.json swaggerapi/swagger-editor +``` + +* You can provide a API document from your local machine — for example, if you have a file at `./bar/swagger.json`: + +``` +docker run -d -p 80:8080 -e URL=/foo/swagger.json -v /bar:/usr/share/nginx/html/foo swaggerapi/swagger-editor +``` + +### Building and running an image locally + +To build and run a docker image with the code checked out on your machine, run the following from the root directory of the project: + +``` +# Install npm packages (if needed) +npm install + +# Build the app +npm run build + +# Build an image +docker build -t swagger-editor . + +# Run the container +docker run -d -p 80:8080 swagger-editor + +``` + +You can then view the app by navigating to `http://localhost` in your browser. + +## Documentation + +* [Importing your OpenAPI document](docs/import.md) + +## Security contact + +Please disclose any security-related issues or vulnerabilities by emailing [security@swagger.io](mailto:security@swagger.io), instead of using the public issue tracker. diff --git a/swagger/SECURITY.md b/swagger/SECURITY.md new file mode 100644 index 0000000..a185798 --- /dev/null +++ b/swagger/SECURITY.md @@ -0,0 +1,21 @@ +# Security Policy + +If you believe you've found an exploitable security issue in Swagger Editor, +**please don't create a public issue**. + + +## Supported versions + +This is the list of versions of `swagger-editor` which are +currently being supported with security updates. + +| Version | Supported | Notes | +| -------- | ------------------ | ---------------------- | +| 3.x | :white_check_mark: | | +| 2.x | :x: | End-of-life as of 2017 | + +## Reporting a vulnerability + +To report a vulnerability please send an email with the details to [security@swagger.io](mailto:security@swagger.io). + +We'll acknowledge receipt of your report ASAP, and set expectations on how we plan to handle it. diff --git a/swagger/build-tools/deploy-docker-hub-tag.sh b/swagger/build-tools/deploy-docker-hub-tag.sh new file mode 100644 index 0000000..9125ba8 --- /dev/null +++ b/swagger/build-tools/deploy-docker-hub-tag.sh @@ -0,0 +1,12 @@ +if [ $DOCKER_HUB_USERNAME ]; then + docker login --username=$DOCKER_HUB_USERNAME --password=$DOCKER_HUB_PASSWORD; + + if [ ! -z "$TRAVIS_TAG" ]; then + DOCKER_IMAGE_TAG=${TRAVIS_TAG#?}; + docker build -t $DOCKER_IMAGE_NAME .; + docker tag $DOCKER_IMAGE_NAME $DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG; + docker push $DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG; + docker tag $DOCKER_IMAGE_NAME $DOCKER_IMAGE_NAME:latest; + docker push $DOCKER_IMAGE_NAME:latest; + fi; +fi; diff --git a/swagger/build-tools/loadersByExtension.js b/swagger/build-tools/loadersByExtension.js new file mode 100644 index 0000000..3ae6833 --- /dev/null +++ b/swagger/build-tools/loadersByExtension.js @@ -0,0 +1,28 @@ +function extsToRegExp(exts) { + return new RegExp("\\.(" + exts.map(function(ext) { + return ext.replace(/\./g, "\\."); + }).join("|") + ")(\\?.*)?$"); +} + +module.exports = function loadersByExtension(obj) { + var loaders = []; + Object.keys(obj).forEach(function(key) { + var exts = key.split("|"); + var value = obj[key]; + var entry = { + extensions: exts, + test: extsToRegExp(exts) + }; + if(Array.isArray(value)) { + entry.loaders = value; + } else if(typeof value === "string") { + entry.loader = value; + } else { + Object.keys(value).forEach(function(valueKey) { + entry[valueKey] = value[valueKey]; + }); + } + loaders.push(entry); + }); + return loaders; +}; diff --git a/swagger/cypress.json b/swagger/cypress.json new file mode 100644 index 0000000..68f315b --- /dev/null +++ b/swagger/cypress.json @@ -0,0 +1,10 @@ +{ + "fileServerFolder": "test/e2e/static", + "fixturesFolder": "test/e2e/fixtures", + "integrationFolder": "test/e2e/tests", + "pluginsFile": "test/e2e/plugins/index.js", + "screenshotsFolder": "test/e2e/screenshots", + "supportFile": "test/e2e/support/index.js", + "videosFolder": "test/e2e/videos", + "baseUrl": "http://localhost:3260/" +} diff --git a/swagger/dev-helpers/index.html b/swagger/dev-helpers/index.html new file mode 100644 index 0000000..5176622 --- /dev/null +++ b/swagger/dev-helpers/index.html @@ -0,0 +1,106 @@ + + + +
+ +1){for(var w=Array(m),v=0;v0&&(_>=48&&_<=57||_>=65&&_<=70||_>=97&&_<=102)?3==++C&&(y=!0):C=0)}43===_&&(w0&&(v+=e.slice(f,x)),v+="%20",y=!0):(x-f>0&&(A+=e.slice(f,x)),A+="%20",b=!0),f=x+1)}else if(++m===u){var k,E=x-m+1;if(w0&&(f