Initial Commit Doku
This commit is contained in:
parent
07cc6c7d24
commit
b67ab7fd35
359
api.yaml
Normal file
359
api.yaml
Normal file
@ -0,0 +1,359 @@
|
|||||||
|
openapi: 3.0.0
|
||||||
|
servers:
|
||||||
|
- url: //hombach.de/api
|
||||||
|
description: Hombach WT 20
|
||||||
|
info:
|
||||||
|
description: |
|
||||||
|
# Introduction
|
||||||
|
Diese Dokumentation beschreibt die Modelle und SChnittstellen der WT 20 API von Hombach. Mit dieser können Wärmeübertrager
|
||||||
|
ausgelegt und nachgerechnet werden.
|
||||||
|
|
||||||
|
*Diese Dokumentation ist momentan noch WIP*
|
||||||
|
|
||||||
|
version: 0.1.0
|
||||||
|
title: WT 20 API
|
||||||
|
termsOfService: 'http://hombach.de'
|
||||||
|
contact:
|
||||||
|
name: API Support
|
||||||
|
email: info@hombach.de
|
||||||
|
url: https://hombach.de/api/doc
|
||||||
|
license:
|
||||||
|
name: proprietary
|
||||||
|
tags:
|
||||||
|
- name: Hilfe
|
||||||
|
description: Hilfe mit der API
|
||||||
|
- name: Berechnung
|
||||||
|
description: Berechnung von Wärmeübertragern
|
||||||
|
- name: geo
|
||||||
|
x-displayName: Das Geometrie-Modell
|
||||||
|
description: |
|
||||||
|
<SchemaDefinition schemaRef="#/components/schemas/geo" />
|
||||||
|
- name: betrp
|
||||||
|
x-displayName: Das Betriebspunkt-Modell
|
||||||
|
description: |
|
||||||
|
<SchemaDefinition schemaRef="#/components/schemas/betrp" />
|
||||||
|
x-tagGroups:
|
||||||
|
- name: Hilfe
|
||||||
|
tags:
|
||||||
|
- Hilfe
|
||||||
|
- name: Berechnung
|
||||||
|
tags:
|
||||||
|
- Berechnung
|
||||||
|
paths:
|
||||||
|
/help:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- Hilfe
|
||||||
|
summary: Liefert eine Hilfs-Übersicht der API
|
||||||
|
description: Liefert einige mögliche Werte für den Parameter "command". Identisch mit "command":"help"
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: successful operation
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
minProperties: 2
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
'/help/{query}':
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- Hilfe
|
||||||
|
summary: Auflistung Werte für einen Parameter
|
||||||
|
description: Liefert eine Liste möglicher Werte für den abgefragten Parameter
|
||||||
|
parameters:
|
||||||
|
- name: query
|
||||||
|
in: path
|
||||||
|
desciption: Abzufragender Parameter
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/mode'
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: successful operation
|
||||||
|
example:
|
||||||
|
- key: 22
|
||||||
|
name: 22
|
||||||
|
mat_key: Cu
|
||||||
|
diameter: 22
|
||||||
|
nenndurchmesser: DN 20
|
||||||
|
thickness: 1.5
|
||||||
|
- key: 28
|
||||||
|
name: 28
|
||||||
|
mat_key: Cu
|
||||||
|
diameter: 28
|
||||||
|
nenndurchmesser: DN 25
|
||||||
|
thickness: 1.5
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/mode'
|
||||||
|
components:
|
||||||
|
schemas:
|
||||||
|
ApiResponse:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
code:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
mode:
|
||||||
|
type: string
|
||||||
|
description: Das Kommando, mit dem die API angesprochen wird
|
||||||
|
example: query_sam
|
||||||
|
enum:
|
||||||
|
- help
|
||||||
|
- query_med
|
||||||
|
- query_kmed
|
||||||
|
- query_ansch_typ
|
||||||
|
- query_lam
|
||||||
|
- query_mat
|
||||||
|
- query_rohr
|
||||||
|
- query_sam
|
||||||
|
- query_calc_options
|
||||||
|
- query_baugr
|
||||||
|
- query_dim
|
||||||
|
- query_keys
|
||||||
|
- query_keys_export
|
||||||
|
command:
|
||||||
|
type: string
|
||||||
|
description: Das Kommando, mit dem die API angesprochen wird
|
||||||
|
example: help
|
||||||
|
enum:
|
||||||
|
- auslegung
|
||||||
|
- nachrechnung
|
||||||
|
- reserve
|
||||||
|
- abort
|
||||||
|
kind:
|
||||||
|
type: string
|
||||||
|
description: Das Kommando, mit dem die Berechnungsmethode der API bestimmt wird
|
||||||
|
example: direktverdampfer
|
||||||
|
default: wt
|
||||||
|
enum:
|
||||||
|
- wt
|
||||||
|
- direktverdampfer
|
||||||
|
- verflüssiger
|
||||||
|
- umkehrbetrieb
|
||||||
|
geo:
|
||||||
|
type: object
|
||||||
|
description: Definiert die Ausführung (die Geometrie) des Wärmeübertragers
|
||||||
|
required:
|
||||||
|
- lb
|
||||||
|
- hb
|
||||||
|
- rohr_key
|
||||||
|
- lam_key
|
||||||
|
discriminator:
|
||||||
|
propertyName: ^geoType
|
||||||
|
mapping:
|
||||||
|
WT: '#/components/schemas/geoWT'
|
||||||
|
DV: '#/components/schemas/geoDV'
|
||||||
|
VF: '#/components/schemas/geoVF'
|
||||||
|
properties:
|
||||||
|
lb:
|
||||||
|
description: Berippte/lichte Breite
|
||||||
|
type: number
|
||||||
|
minimum: 125
|
||||||
|
maximum: 5200
|
||||||
|
example: 920
|
||||||
|
hb:
|
||||||
|
description: Berippte/lichte Höhe
|
||||||
|
type: number
|
||||||
|
minimum: 125
|
||||||
|
maximum: 2880
|
||||||
|
example: 600
|
||||||
|
rohr_key:
|
||||||
|
description: Zu verwendendes Rohr
|
||||||
|
type: string
|
||||||
|
example:
|
||||||
|
- key: C12x0.35
|
||||||
|
- key: C9.5x0.3
|
||||||
|
Kreise_fixed:
|
||||||
|
type: boolean
|
||||||
|
description: true, wenn die Anzahl der Kreise vorgegeben werden soll
|
||||||
|
default: false
|
||||||
|
Kreise:
|
||||||
|
type: integer
|
||||||
|
description: Anzahl der Kreise. Wird berechnet, wenn Kreise_fixed=false
|
||||||
|
allowEmptyValue: true
|
||||||
|
example: 8
|
||||||
|
lam_key:
|
||||||
|
description: Zu verwendende Lamelle
|
||||||
|
type: string
|
||||||
|
example:
|
||||||
|
- key: 12:30x26v1
|
||||||
|
- key: 9.5:25x22v1
|
||||||
|
lam_abst_fixed:
|
||||||
|
type: boolean
|
||||||
|
description: true, wenn Lamellenabstand vorgegeben werden soll
|
||||||
|
default: false
|
||||||
|
lam_abst:
|
||||||
|
type: number
|
||||||
|
description: Lamellenabstand (mm). Wird berechnet, wenn lam_abst_fixed=false
|
||||||
|
allowEmptyValue: true
|
||||||
|
example: 2.5
|
||||||
|
teile:
|
||||||
|
type: integer
|
||||||
|
description: Anzahl der Teile des Wärmeübertragers,
|
||||||
|
example: 1
|
||||||
|
default: 1
|
||||||
|
RR_fixed:
|
||||||
|
type: boolean
|
||||||
|
description: true, wenn die Anzahl der Rohrreihen vorgegeben werden soll
|
||||||
|
default: false
|
||||||
|
RR:
|
||||||
|
type: integer
|
||||||
|
description: Anzahl der Rohrreihen. Wird berechnet, wenn RR_fixed=false
|
||||||
|
example: 6
|
||||||
|
allowEmptyValue: true
|
||||||
|
geoWT:
|
||||||
|
description: Definiert die Ausführung (die Geometrie) eines Wasser/Sole Wärmeübertragers
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/components/schemas/geo'
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
sam_fixed :
|
||||||
|
type: boolean
|
||||||
|
description: true, wenn der Sammlerdurchmesser vorgegeben werden soll
|
||||||
|
default: false
|
||||||
|
sammler_key :
|
||||||
|
description: Zu verwendender Sammlerdurchmesser
|
||||||
|
type: string
|
||||||
|
example:
|
||||||
|
- key: 28
|
||||||
|
- key: 32
|
||||||
|
geoDV:
|
||||||
|
description: Definiert die Ausführung (die Geometrie) eines Direktverdampfers
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/components/schemas/geo'
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
anz_med_kreise:
|
||||||
|
type: integer
|
||||||
|
description: Anzahl separater Kältekreise
|
||||||
|
default: 1
|
||||||
|
example: 2
|
||||||
|
sam_fixed :
|
||||||
|
type: boolean
|
||||||
|
description: true, wenn die Sammlerdurchmesser vorgegeben werden sollen
|
||||||
|
default: false
|
||||||
|
sammler_key :
|
||||||
|
description: Zu verwendende Sammlerdurchmesser
|
||||||
|
type: string
|
||||||
|
example:
|
||||||
|
- key: 28
|
||||||
|
- key: 32
|
||||||
|
betrp:
|
||||||
|
type: object
|
||||||
|
description: Ein Betriebspunkt eines Wärmeübertragers
|
||||||
|
required:
|
||||||
|
- select_luftstrom
|
||||||
|
- luft_temp_ein
|
||||||
|
- select_FLE
|
||||||
|
properties:
|
||||||
|
select_luftstrom:
|
||||||
|
type: integer
|
||||||
|
description: |
|
||||||
|
Gibt an in welcher Einheit der Luftstrom vorgegeben wird.
|
||||||
|
* `0` für Luftvolumenstrom (m³/h)
|
||||||
|
* `1` für Luftmassenstrom (kg/h)
|
||||||
|
default: 0
|
||||||
|
luft_volstrom_bez:
|
||||||
|
type: number
|
||||||
|
description: Vorgabe des Luftvolumenstroms bei Bezugsdichte (m³/h), wenn `"select_luftstrom":"0"`
|
||||||
|
example: 6000
|
||||||
|
luft_masstrom_feucht:
|
||||||
|
type: number
|
||||||
|
description: Vorgabe des feuchten Luftmassenstroms (kg/h), wenn `"select_luftstrom":"1"`
|
||||||
|
example: 7200
|
||||||
|
luft_temp_ein:
|
||||||
|
type: number
|
||||||
|
description: Lufttemperatur (°C) am Eintritt
|
||||||
|
example: 32
|
||||||
|
luft_temp_aus:
|
||||||
|
type: number
|
||||||
|
description: |
|
||||||
|
**Erforlderlich für Auslegung**
|
||||||
|
Lufttemperatur (°C) am Austritt
|
||||||
|
example: 16
|
||||||
|
select_FLE:
|
||||||
|
type: integer
|
||||||
|
description: |
|
||||||
|
Gibt an in welcher Einheit die Luftfeuchtigkeit vorgegeben wird.
|
||||||
|
* `0` für relative Feuchte (%)
|
||||||
|
* `1` für absolute feuchte (g/kg)
|
||||||
|
default: 0
|
||||||
|
luft_relfeu_ein:
|
||||||
|
type: number
|
||||||
|
description: Relative Feuchte (%) der Luft am Eintritt
|
||||||
|
example: 40
|
||||||
|
luft_absfeu_ein:
|
||||||
|
type: number
|
||||||
|
description: Absolute Feuchte (g/kg) der Luft am Eintritt
|
||||||
|
example: 10.6
|
||||||
|
betrpWT:
|
||||||
|
description: Definiert einen Betriebspunkt eines Wasser/Sole Wärmeübertragers
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/components/schemas/betrp'
|
||||||
|
- type: object
|
||||||
|
required:
|
||||||
|
- med_key
|
||||||
|
- med_temp_ein
|
||||||
|
properties:
|
||||||
|
med_key:
|
||||||
|
type: string
|
||||||
|
description: Gibt an, welches Medium zu verwenden ist
|
||||||
|
example:
|
||||||
|
- wasser
|
||||||
|
- Antifrogen N
|
||||||
|
med_konz:
|
||||||
|
type: number
|
||||||
|
description: Konzentration (%) des Frostschutzmittels
|
||||||
|
example: 34
|
||||||
|
med_temp_ein:
|
||||||
|
type: number
|
||||||
|
description: Vorlauftemperatur (°C) des Mediums
|
||||||
|
example: 6
|
||||||
|
med_temp_aus:
|
||||||
|
type: number
|
||||||
|
description: Rücklauftemperatur (°C) des Mediums
|
||||||
|
example: 12
|
||||||
|
med_volstrom:
|
||||||
|
type: number
|
||||||
|
description: |
|
||||||
|
**Erforderlich bei Nachrechnung und Reserve**
|
||||||
|
Volumenstrom (L/h) des Mediums
|
||||||
|
example: 3400
|
||||||
|
med_masstrom:
|
||||||
|
type: number
|
||||||
|
description: |
|
||||||
|
**Erforderlich bei Nachrechnung und Reserve**
|
||||||
|
Massenstrom (kg/h) des Mediums
|
||||||
|
example: 3400
|
||||||
|
select_KA:
|
||||||
|
type: integer
|
||||||
|
description: |
|
||||||
|
**Erforderlich bei Nachrechnung und Reserve**
|
||||||
|
Gibt an in welcher Einheit der Mediumstrom vorgegeben wird.
|
||||||
|
* `0` für Volumenstrom (L/h)
|
||||||
|
* `1` für Massenstrom (kg/h)
|
||||||
|
default: 0
|
||||||
|
requestBodies:
|
||||||
|
securitySchemes:
|
||||||
|
api_key:
|
||||||
|
description: >
|
||||||
|
For this sample, you can use the api key `special-key` to test the
|
||||||
|
authorization filters.
|
||||||
|
type: apiKey
|
||||||
|
name: api_key
|
||||||
|
in: header
|
||||||
|
examples:
|
||||||
|
geo:
|
||||||
|
value:
|
||||||
|
lb: 920
|
||||||
|
hb: 600
|
||||||
|
rohr_key: C9.5x0.3
|
||||||
|
lam_key: 9.5:25x22v1
|
27363
big-openapi.json
Normal file
27363
big-openapi.json
Normal file
File diff suppressed because it is too large
Load Diff
27
index.html
Normal file
27
index.html
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Redoc</title>
|
||||||
|
<!-- needed for adaptive design -->
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Montserrat:300,400,700|Roboto:300,400,700" rel="stylesheet">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Redoc doesn't change outer page styles
|
||||||
|
-->
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<redoc spec-url=https://git.hombach.de/Hombach-WT/WT-20/src/branch/master/api.yaml></redoc>
|
||||||
|
<script src="https://cdn.redoc.ly/redoc/latest/bundles/redoc.standalone.js"> </script>
|
||||||
|
</body>
|
||||||
|
</html>
|
210
index.tsx
Normal file
210
index.tsx
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
import * as React from 'react';
|
||||||
|
import { render } from 'react-dom';
|
||||||
|
import styled from 'styled-components';
|
||||||
|
import { RedocStandalone } from '../src';
|
||||||
|
import ComboBox from './ComboBox';
|
||||||
|
import FileInput from './components/FileInput';
|
||||||
|
|
||||||
|
const DEFAULT_SPEC = 'openapi.yaml';
|
||||||
|
const NEW_VERSION_SPEC = 'openapi-3-1.yaml';
|
||||||
|
|
||||||
|
const demos = [
|
||||||
|
{ value: NEW_VERSION_SPEC, label: 'Petstore OpenAPI 3.1' },
|
||||||
|
{ value: 'https://api.apis.guru/v2/specs/instagram.com/1.0.0/swagger.yaml', label: 'Instagram' },
|
||||||
|
{
|
||||||
|
value: 'https://api.apis.guru/v2/specs/googleapis.com/calendar/v3/openapi.yaml',
|
||||||
|
label: 'Google Calendar',
|
||||||
|
},
|
||||||
|
{ value: 'https://api.apis.guru/v2/specs/slack.com/1.7.0/openapi.yaml', label: 'Slack' },
|
||||||
|
{ value: 'https://api.apis.guru/v2/specs/zoom.us/2.0.0/openapi.yaml', label: 'Zoom.us' },
|
||||||
|
];
|
||||||
|
|
||||||
|
class DemoApp extends React.Component<
|
||||||
|
Record<string, unknown>,
|
||||||
|
{ spec: object | undefined; specUrl: string; dropdownOpen: boolean; cors: boolean }
|
||||||
|
> {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
|
||||||
|
let parts = window.location.search.match(/url=([^&]+)/);
|
||||||
|
let url = DEFAULT_SPEC;
|
||||||
|
if (parts && parts.length > 1) {
|
||||||
|
url = decodeURIComponent(parts[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
parts = window.location.search.match(/[?&]nocors(&|#|$)/);
|
||||||
|
let cors = true;
|
||||||
|
if (parts && parts.length > 1) {
|
||||||
|
cors = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.state = {
|
||||||
|
spec: undefined,
|
||||||
|
specUrl: url,
|
||||||
|
dropdownOpen: false,
|
||||||
|
cors,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
handleUploadFile = (spec: object) => {
|
||||||
|
this.setState({
|
||||||
|
spec,
|
||||||
|
specUrl: '',
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
handleChange = (url: string) => {
|
||||||
|
if (url === NEW_VERSION_SPEC) {
|
||||||
|
this.setState({ cors: false });
|
||||||
|
0;
|
||||||
|
}
|
||||||
|
this.setState({
|
||||||
|
specUrl: url,
|
||||||
|
});
|
||||||
|
window.history.pushState(
|
||||||
|
undefined,
|
||||||
|
'',
|
||||||
|
updateQueryStringParameter(location.search, 'url', url),
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
toggleCors = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
const cors = e.currentTarget.checked;
|
||||||
|
this.setState({
|
||||||
|
cors,
|
||||||
|
});
|
||||||
|
window.history.pushState(
|
||||||
|
undefined,
|
||||||
|
'',
|
||||||
|
updateQueryStringParameter(location.search, 'nocors', cors ? undefined : ''),
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { specUrl, cors } = this.state;
|
||||||
|
let proxiedUrl = specUrl;
|
||||||
|
if (specUrl !== DEFAULT_SPEC) {
|
||||||
|
proxiedUrl = cors
|
||||||
|
? 'https://cors.redoc.ly/' + new URL(specUrl, window.location.href).href
|
||||||
|
: specUrl;
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Heading>
|
||||||
|
<a href=".">
|
||||||
|
<Logo
|
||||||
|
src="https://github.com/Redocly/redoc/raw/main/docs/images/redoc.png"
|
||||||
|
alt="Redoc logo"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
<ControlsContainer>
|
||||||
|
<FileInput onUpload={this.handleUploadFile} />
|
||||||
|
<ComboBox
|
||||||
|
placeholder={'URL to a spec to try'}
|
||||||
|
options={demos}
|
||||||
|
onChange={this.handleChange}
|
||||||
|
value={specUrl === DEFAULT_SPEC ? '' : specUrl}
|
||||||
|
/>
|
||||||
|
<CorsCheckbox title="Use CORS proxy">
|
||||||
|
<input id="cors_checkbox" type="checkbox" onChange={this.toggleCors} checked={cors} />
|
||||||
|
<label htmlFor="cors_checkbox">CORS</label>
|
||||||
|
</CorsCheckbox>
|
||||||
|
</ControlsContainer>
|
||||||
|
<iframe
|
||||||
|
src="https://ghbtns.com/github-btn.html?user=Redocly&repo=redoc&type=star&count=true&size=large"
|
||||||
|
frameBorder="0"
|
||||||
|
scrolling="0"
|
||||||
|
width="160px"
|
||||||
|
height="30px"
|
||||||
|
/>
|
||||||
|
</Heading>
|
||||||
|
<RedocStandalone
|
||||||
|
spec={this.state.spec}
|
||||||
|
specUrl={proxiedUrl}
|
||||||
|
options={{ scrollYOffset: 'nav', untrustedSpec: true }}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ====== Styled components ====== */
|
||||||
|
|
||||||
|
const ControlsContainer = styled.div`
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
flex: 1;
|
||||||
|
margin: 0 15px;
|
||||||
|
align-items: center;
|
||||||
|
`;
|
||||||
|
|
||||||
|
const CorsCheckbox = styled.div`
|
||||||
|
margin-left: 10px;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
label {
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 550px) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
const Heading = styled.nav`
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 50px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background: white;
|
||||||
|
border-bottom: 1px solid #cccccc;
|
||||||
|
z-index: 10;
|
||||||
|
padding: 5px;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-family: Roboto, sans-serif;
|
||||||
|
`;
|
||||||
|
|
||||||
|
const Logo = styled.img`
|
||||||
|
height: 40px;
|
||||||
|
width: 124px;
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 15px;
|
||||||
|
|
||||||
|
@media screen and (max-width: 950px) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
render(<DemoApp />, document.getElementById('container'));
|
||||||
|
|
||||||
|
/* ====== Helpers ====== */
|
||||||
|
function updateQueryStringParameter(uri, key, value) {
|
||||||
|
const keyValue = value === '' ? key : key + '=' + value;
|
||||||
|
const re = new RegExp('([?|&])' + key + '=?.*?(&|#|$)', 'i');
|
||||||
|
if (uri.match(re)) {
|
||||||
|
if (value !== undefined) {
|
||||||
|
return uri.replace(re, '$1' + keyValue + '$2');
|
||||||
|
} else {
|
||||||
|
return uri.replace(re, (_, separator: string, rest: string) => {
|
||||||
|
if (rest.startsWith('&')) {
|
||||||
|
rest = rest.substring(1);
|
||||||
|
}
|
||||||
|
return separator === '&' ? rest : separator + rest;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (value === undefined) {
|
||||||
|
return uri;
|
||||||
|
}
|
||||||
|
let hash = '';
|
||||||
|
if (uri.indexOf('#') !== -1) {
|
||||||
|
hash = uri.replace(/.*#/, '#');
|
||||||
|
uri = uri.replace(/#.*/, '');
|
||||||
|
}
|
||||||
|
const separator = uri.indexOf('?') !== -1 ? '&' : '?';
|
||||||
|
return uri + separator + keyValue + hash;
|
||||||
|
}
|
||||||
|
}
|
1359
openapi-3-1.yaml
Normal file
1359
openapi-3-1.yaml
Normal file
File diff suppressed because it is too large
Load Diff
276
openapi.yaml
Normal file
276
openapi.yaml
Normal file
@ -0,0 +1,276 @@
|
|||||||
|
{
|
||||||
|
"openapi": "3.0.0",
|
||||||
|
"info": {
|
||||||
|
"title": "WT 20 API",
|
||||||
|
"description": "This is a sample server Petstore server.\nYou can find out more about Swagger at\n[http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/).\nFor this sample, you can use the api key `special-key` to test the authorization filters.\n\n# Introduction\nThis API is documented in **OpenAPI format** and is based on\n[Petstore sample](http://petstore.swagger.io/) provided by [swagger.io](http://swagger.io) team.\nIt was **extended** to illustrate features of [generator-openapi-repo](https://github.com/Rebilly/generator-openapi-repo)\ntool and [ReDoc](https://github.com/Redocly/redoc) documentation. In addition to standard\nOpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/main/docs/redoc-vendor-extensions.md).\n\n# OpenAPI Specification\nThis API is documented in **OpenAPI format** and is based on\n[Petstore sample](http://petstore.swagger.io/) provided by [swagger.io](http://swagger.io) team.\nIt was **extended** to illustrate features of [generator-openapi-repo](https://github.com/Rebilly/generator-openapi-repo)\ntool and [ReDoc](https://github.com/Redocly/redoc) documentation. In addition to standard\nOpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/main/docs/redoc-vendor-extensions.md).\n\n# Cross-Origin Resource Sharing\nThis API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/).\nAnd that allows cross-domain communication from the browser.\nAll responses have a wildcard same-origin which makes them completely public and accessible to everyone, including any code on any site.\n\n# Authentication\n\nPetstore offers two forms of authentication:\n - API Key\n - OAuth2\nOAuth2 - an open protocol to allow secure authorization in a simple\nand standard method from web, mobile and desktop applications.\n\n<SecurityDefinitions />\n",
|
||||||
|
"termsOfService": "http://hombach.de",
|
||||||
|
"contact": {
|
||||||
|
"name": "API Support",
|
||||||
|
"url": "https://hombach.de/api/doc",
|
||||||
|
"email": "info@hombach.de"
|
||||||
|
},
|
||||||
|
"license": {
|
||||||
|
"name": "proprietary"
|
||||||
|
},
|
||||||
|
"version": "0.1.0"
|
||||||
|
},
|
||||||
|
"servers": [
|
||||||
|
{
|
||||||
|
"url": "//hombach.de/api",
|
||||||
|
"description": "Hombach WT 20"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"paths": {
|
||||||
|
"/help": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"Hilfe"
|
||||||
|
],
|
||||||
|
"summary": "Liefert eine Hilfs-Übersicht der API",
|
||||||
|
"description": "Liefert einige mögliche Werte für den Parameter \"command\". Identisch mit \"command\":\"help\"",
|
||||||
|
"operationId": "help",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "successful operation",
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"minProperties": 2,
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/help/{query}": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"Hilfe"
|
||||||
|
],
|
||||||
|
"summary": "Auflistung Werte für einen Parameter",
|
||||||
|
"description": "Liefert eine Liste möglicher Werte für den abgefragten Parameter",
|
||||||
|
"operationId": "help2",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "query",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/mode"
|
||||||
|
},
|
||||||
|
"desciption": "Abzufragender Parameter"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "successful operation",
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/mode"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"example": [
|
||||||
|
{
|
||||||
|
"key": "22",
|
||||||
|
"name": "22",
|
||||||
|
"mat_key": "Cu",
|
||||||
|
"diameter": "22",
|
||||||
|
"nenndurchmesser": "DN 20",
|
||||||
|
"thickness": "1.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "28",
|
||||||
|
"name": "28",
|
||||||
|
"mat_key": "Cu",
|
||||||
|
"diameter": "28",
|
||||||
|
"nenndurchmesser": "DN 25",
|
||||||
|
"thickness": "1.5"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"components": {
|
||||||
|
"schemas": {
|
||||||
|
"ApiResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"code": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int32"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"message": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Das Kommando, mit dem die API angesprochen wird",
|
||||||
|
"example": "query_sam",
|
||||||
|
"enum": [
|
||||||
|
"help",
|
||||||
|
"query_med",
|
||||||
|
"query_kmed",
|
||||||
|
"query_ansch_typ",
|
||||||
|
"query_lam",
|
||||||
|
"query_mat",
|
||||||
|
"query_rohr",
|
||||||
|
"query_sam",
|
||||||
|
"query_calc_options",
|
||||||
|
"query_baugr",
|
||||||
|
"query_dim",
|
||||||
|
"query_keys",
|
||||||
|
"query_keys_export"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"command": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Das Kommando, mit dem die API angesprochen wird",
|
||||||
|
"example": "help",
|
||||||
|
"enum": [
|
||||||
|
"auslegung",
|
||||||
|
"nachrechnung",
|
||||||
|
"reserve",
|
||||||
|
"abort"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"kind": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Das Kommando, mit dem die Berechnungsmethode der API bestimmt wird",
|
||||||
|
"default": "wt",
|
||||||
|
"example": "direktverdampfer",
|
||||||
|
"enum": [
|
||||||
|
"wt",
|
||||||
|
"direktverdampfer",
|
||||||
|
"verflüssiger",
|
||||||
|
"umkehrbetrieb"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"geo": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Definiert die Ausführung (die Geometrie) des Wärmeübertragers",
|
||||||
|
"required": [
|
||||||
|
"lb",
|
||||||
|
"hb",
|
||||||
|
"rohr_key",
|
||||||
|
"lam_key"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"lb": {
|
||||||
|
"type": "number",
|
||||||
|
"description": "Berippte/lichte Breite",
|
||||||
|
"maximum": 5200.0,
|
||||||
|
"minimum": 125.0,
|
||||||
|
"example": "920"
|
||||||
|
},
|
||||||
|
"hb": {
|
||||||
|
"type": "number",
|
||||||
|
"description": "Berippte/lichte Höhe",
|
||||||
|
"maximum": 2880.0,
|
||||||
|
"minimum": 125.0,
|
||||||
|
"example": "600"
|
||||||
|
},
|
||||||
|
"rohr_key": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Zu verwendendes Rohr",
|
||||||
|
"example": [
|
||||||
|
{
|
||||||
|
"key": "C12x0.35"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "C9.5x0.3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"lam_key": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Zu verwendende Lamelle",
|
||||||
|
"example": [
|
||||||
|
{
|
||||||
|
"key": "12:30x26v1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "9.5:25x22v1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"lam_abst_fixed": {
|
||||||
|
"type": "boolean",
|
||||||
|
"description": "true, wenn Lamellenabstand vorgegeben werden soll",
|
||||||
|
"allowEmptyValue": "true"
|
||||||
|
},
|
||||||
|
"lam_abst": {
|
||||||
|
"type": "number",
|
||||||
|
"description": "Lamellenabstand (mm). Wird berechnet, wenn lam_abst_fixed=false",
|
||||||
|
"allowEmptyValue": "true"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"betrp": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"t_ein": {
|
||||||
|
"type": "number",
|
||||||
|
"description": "T ein"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"examples": {
|
||||||
|
"geo": {
|
||||||
|
"value": {
|
||||||
|
"lb": "920",
|
||||||
|
"hb": "600",
|
||||||
|
"rohr_key": "C9.5x0.3",
|
||||||
|
"lam_key": "9.5:25x22v1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"securitySchemes": {
|
||||||
|
"api_key": {
|
||||||
|
"type": "apiKey",
|
||||||
|
"description": "For this sample, you can use the api key `special-key` to test the authorization filters.\n",
|
||||||
|
"name": "api_key",
|
||||||
|
"in": "header"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": [
|
||||||
|
{
|
||||||
|
"name": "Hilfe",
|
||||||
|
"description": "Hilfe mit der API"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Berechnung",
|
||||||
|
"description": "Berechnung von Wärmeübertragern"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "geo",
|
||||||
|
"description": "<SchemaDefinition schemaRef=\"#/components/schemas/geo\" />\n",
|
||||||
|
"x-displayName": "Das Geometrie-Modell"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "betrp",
|
||||||
|
"description": "<SchemaDefinition schemaRef=\"#/components/schemas/betrp\" />\n",
|
||||||
|
"x-displayName": "Das Betriebspunkt-Modell"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"x-tagGroups": [
|
||||||
|
{
|
||||||
|
"name": "Hilfe"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
petstore-logo.png
Normal file
BIN
petstore-logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.2 KiB |
BIN
redoc-demo.png
Normal file
BIN
redoc-demo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 270 KiB |
867
swagger.yaml
Normal file
867
swagger.yaml
Normal file
@ -0,0 +1,867 @@
|
|||||||
|
swagger: '2.0'
|
||||||
|
schemes:
|
||||||
|
- http
|
||||||
|
- https
|
||||||
|
host: petstore.swagger.io
|
||||||
|
basePath: /v2
|
||||||
|
info:
|
||||||
|
description: |
|
||||||
|
This is a sample server Petstore server.
|
||||||
|
You can find out more about Swagger at
|
||||||
|
[http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/).
|
||||||
|
For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||||
|
# Introduction
|
||||||
|
This API is documented in **OpenAPI format** and is based on
|
||||||
|
[Petstore sample](http://petstore.swagger.io/) provided by [swagger.io](http://swagger.io) team.
|
||||||
|
It was **extended** to illustrate features of [generator-openapi-repo](https://github.com/Rebilly/generator-openapi-repo)
|
||||||
|
tool and [ReDoc](https://github.com/Redocly/redoc) documentation. In addition to standard
|
||||||
|
OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/main/docs/redoc-vendor-extensions.md).
|
||||||
|
# OpenAPI Specification
|
||||||
|
This API is documented in **OpenAPI format** and is based on
|
||||||
|
[Petstore sample](http://petstore.swagger.io/) provided by [swagger.io](http://swagger.io) team.
|
||||||
|
It was **extended** to illustrate features of [generator-openapi-repo](https://github.com/Rebilly/generator-openapi-repo)
|
||||||
|
tool and [ReDoc](https://github.com/Redocly/redoc) documentation. In addition to standard
|
||||||
|
OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/main/docs/redoc-vendor-extensions.md).
|
||||||
|
# Cross-Origin Resource Sharing
|
||||||
|
This API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/).
|
||||||
|
And that allows cross-domain communication from the browser.
|
||||||
|
All responses have a wildcard same-origin which makes them completely public and accessible to everyone, including any code on any site.
|
||||||
|
# Authentication
|
||||||
|
Petstore offers two forms of authentication:
|
||||||
|
- API Key
|
||||||
|
- OAuth2
|
||||||
|
|
||||||
|
OAuth2 - an open protocol to allow secure authorization in a simple
|
||||||
|
and standard method from web, mobile and desktop applications.
|
||||||
|
<!-- ReDoc-Inject: <security-definitions> -->
|
||||||
|
version: 1.0.0
|
||||||
|
title: Swagger Petstore
|
||||||
|
termsOfService: 'http://swagger.io/terms/'
|
||||||
|
contact:
|
||||||
|
email: apiteam@swagger.io
|
||||||
|
url: https://github.com/Redocly/redoc
|
||||||
|
x-logo:
|
||||||
|
url: 'https://redocly.github.io/redoc/petstore-logo.png'
|
||||||
|
altText: Petstore logo
|
||||||
|
license:
|
||||||
|
name: Apache 2.0
|
||||||
|
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
|
||||||
|
externalDocs:
|
||||||
|
description: Find out how to create Github repo for your OpenAPI spec.
|
||||||
|
url: 'https://github.com/Rebilly/generator-openapi-repo'
|
||||||
|
tags:
|
||||||
|
- name: pet
|
||||||
|
description: Everything about your Pets
|
||||||
|
- name: store
|
||||||
|
description: Access to Petstore orders
|
||||||
|
- name: user
|
||||||
|
description: Operations about user
|
||||||
|
x-tagGroups:
|
||||||
|
- name: General
|
||||||
|
tags:
|
||||||
|
- pet
|
||||||
|
- store
|
||||||
|
- name: User Management
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
securityDefinitions:
|
||||||
|
petstore_auth:
|
||||||
|
description: |
|
||||||
|
Get access to data while protecting your account credentials.
|
||||||
|
OAuth2 is also a safer and more secure way to give you access.
|
||||||
|
type: oauth2
|
||||||
|
authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog'
|
||||||
|
flow: implicit
|
||||||
|
scopes:
|
||||||
|
'write:pets': modify pets in your account
|
||||||
|
'read:pets': read your pets
|
||||||
|
api_key:
|
||||||
|
description: |
|
||||||
|
For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||||
|
type: apiKey
|
||||||
|
name: api_key
|
||||||
|
in: header
|
||||||
|
x-servers:
|
||||||
|
- url: //petstore.swagger.io/v2
|
||||||
|
description: Default server
|
||||||
|
- url: //petstore.swagger.io/sandbox
|
||||||
|
description: Sandbox server
|
||||||
|
paths:
|
||||||
|
/pet:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- pet
|
||||||
|
summary: Add a new pet to the store
|
||||||
|
description: Add new pet to the store inventory.
|
||||||
|
operationId: addPet
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
- application/xml
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: Pet object that needs to be added to the store
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/Pet'
|
||||||
|
responses:
|
||||||
|
'405':
|
||||||
|
description: Invalid input
|
||||||
|
security:
|
||||||
|
- petstore_auth:
|
||||||
|
- 'write:pets'
|
||||||
|
- 'read:pets'
|
||||||
|
x-code-samples:
|
||||||
|
- lang: 'C#'
|
||||||
|
source: |
|
||||||
|
PetStore.v1.Pet pet = new PetStore.v1.Pet();
|
||||||
|
pet.setApiKey("your api key");
|
||||||
|
pet.petType = PetStore.v1.Pet.TYPE_DOG;
|
||||||
|
pet.name = "Rex";
|
||||||
|
// set other fields
|
||||||
|
PetStoreResponse response = pet.create();
|
||||||
|
if (response.statusCode == HttpStatusCode.Created)
|
||||||
|
{
|
||||||
|
// Successfully created
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Something wrong -- check response for errors
|
||||||
|
Console.WriteLine(response.getRawResponse());
|
||||||
|
}
|
||||||
|
- lang: PHP
|
||||||
|
source: "$form = new \\PetStore\\Entities\\Pet();\n$form->setPetType(\"Dog\");\n$form->setName(\"Rex\");\n// set other fields\ntry {\n $pet = $client->pets()->create($form);\n} catch (UnprocessableEntityException $e) {\n var_dump($e->getErrors());\n}\n"
|
||||||
|
put:
|
||||||
|
tags:
|
||||||
|
- pet
|
||||||
|
summary: Update an existing pet
|
||||||
|
description: ''
|
||||||
|
operationId: updatePet
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
- application/xml
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: Pet object that needs to be added to the store
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/Pet'
|
||||||
|
responses:
|
||||||
|
'400':
|
||||||
|
description: Invalid ID supplied
|
||||||
|
'404':
|
||||||
|
description: Pet not found
|
||||||
|
'405':
|
||||||
|
description: Validation exception
|
||||||
|
security:
|
||||||
|
- petstore_auth:
|
||||||
|
- 'write:pets'
|
||||||
|
- 'read:pets'
|
||||||
|
x-code-samples:
|
||||||
|
- lang: PHP
|
||||||
|
source: "$form = new \\PetStore\\Entities\\Pet();\n$form->setPetId(1);\n$form->setPetType(\"Dog\");\n$form->setName(\"Rex\");\n// set other fields\ntry {\n $pet = $client->pets()->update($form);\n} catch (UnprocessableEntityException $e) {\n var_dump($e->getErrors());\n}\n"
|
||||||
|
'/pet/{petId}':
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- pet
|
||||||
|
summary: Find pet by ID
|
||||||
|
description: Returns a single pet
|
||||||
|
operationId: getPetById
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- name: petId
|
||||||
|
in: path
|
||||||
|
description: ID of pet to return
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: successful operation
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/Pet'
|
||||||
|
'400':
|
||||||
|
description: Invalid ID supplied
|
||||||
|
'404':
|
||||||
|
description: Pet not found
|
||||||
|
security:
|
||||||
|
- api_key: []
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- pet
|
||||||
|
summary: Updates a pet in the store with form data
|
||||||
|
description: ''
|
||||||
|
operationId: updatePetWithForm
|
||||||
|
consumes:
|
||||||
|
- application/x-www-form-urlencoded
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- name: petId
|
||||||
|
in: path
|
||||||
|
description: ID of pet that needs to be updated
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
- name: name
|
||||||
|
in: formData
|
||||||
|
description: Updated name of the pet
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
- name: status
|
||||||
|
in: formData
|
||||||
|
description: Updated status of the pet
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
'405':
|
||||||
|
description: Invalid input
|
||||||
|
security:
|
||||||
|
- petstore_auth:
|
||||||
|
- 'write:pets'
|
||||||
|
- 'read:pets'
|
||||||
|
delete:
|
||||||
|
tags:
|
||||||
|
- pet
|
||||||
|
summary: Deletes a pet
|
||||||
|
description: ''
|
||||||
|
operationId: deletePet
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- name: api_key
|
||||||
|
in: header
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
x-example: Bearer <TOKEN>
|
||||||
|
- name: petId
|
||||||
|
in: path
|
||||||
|
description: Pet id to delete
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
responses:
|
||||||
|
'400':
|
||||||
|
description: Invalid pet value
|
||||||
|
security:
|
||||||
|
- petstore_auth:
|
||||||
|
- 'write:pets'
|
||||||
|
- 'read:pets'
|
||||||
|
'/pet/{petId}/uploadImage':
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- pet
|
||||||
|
summary: uploads an image
|
||||||
|
description: ''
|
||||||
|
operationId: uploadFile
|
||||||
|
consumes:
|
||||||
|
- multipart/form-data
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- name: petId
|
||||||
|
in: path
|
||||||
|
description: ID of pet to update
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
- name: additionalMetadata
|
||||||
|
in: formData
|
||||||
|
description: Additional data to pass to server
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
- name: file
|
||||||
|
in: formData
|
||||||
|
description: file to upload
|
||||||
|
required: false
|
||||||
|
type: file
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: successful operation
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/ApiResponse'
|
||||||
|
security:
|
||||||
|
- petstore_auth:
|
||||||
|
- 'write:pets'
|
||||||
|
- 'read:pets'
|
||||||
|
/pet/findByStatus:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- pet
|
||||||
|
summary: Finds Pets by status
|
||||||
|
description: Multiple status values can be provided with comma separated strings
|
||||||
|
operationId: findPetsByStatus
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- name: status
|
||||||
|
in: query
|
||||||
|
description: Status values that need to be considered for filter
|
||||||
|
required: true
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- available
|
||||||
|
- pending
|
||||||
|
- sold
|
||||||
|
default: available
|
||||||
|
collectionFormat: csv
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: successful operation
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/definitions/Pet'
|
||||||
|
'400':
|
||||||
|
description: Invalid status value
|
||||||
|
security:
|
||||||
|
- petstore_auth:
|
||||||
|
- 'write:pets'
|
||||||
|
- 'read:pets'
|
||||||
|
/pet/findByTags:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- pet
|
||||||
|
summary: Finds Pets by tags
|
||||||
|
description: 'Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.'
|
||||||
|
operationId: findPetsByTags
|
||||||
|
deprecated: true
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- name: tags
|
||||||
|
in: query
|
||||||
|
description: Tags to filter by
|
||||||
|
required: true
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
collectionFormat: csv
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: successful operation
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/definitions/Pet'
|
||||||
|
'400':
|
||||||
|
description: Invalid tag value
|
||||||
|
security:
|
||||||
|
- petstore_auth:
|
||||||
|
- 'write:pets'
|
||||||
|
- 'read:pets'
|
||||||
|
/store/inventory:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- store
|
||||||
|
summary: Returns pet inventories by status
|
||||||
|
description: Returns a map of status codes to quantities
|
||||||
|
operationId: getInventory
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
parameters: []
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: successful operation
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
additionalProperties:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
security:
|
||||||
|
- api_key: []
|
||||||
|
/store/order:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- store
|
||||||
|
summary: Place an order for a pet
|
||||||
|
description: ''
|
||||||
|
operationId: placeOrder
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: order placed for purchasing the pet
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/Order'
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: successful operation
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/Order'
|
||||||
|
'400':
|
||||||
|
description: Invalid Order
|
||||||
|
'/store/order/{orderId}':
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- store
|
||||||
|
summary: Find purchase order by ID
|
||||||
|
description: 'For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions'
|
||||||
|
operationId: getOrderById
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- name: orderId
|
||||||
|
in: path
|
||||||
|
description: ID of pet that needs to be fetched
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
maximum: 5
|
||||||
|
minimum: 1
|
||||||
|
format: int64
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: successful operation
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/Order'
|
||||||
|
'400':
|
||||||
|
description: Invalid ID supplied
|
||||||
|
'404':
|
||||||
|
description: Order not found
|
||||||
|
delete:
|
||||||
|
tags:
|
||||||
|
- store
|
||||||
|
summary: Delete purchase order by ID
|
||||||
|
description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
|
||||||
|
operationId: deleteOrder
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- name: orderId
|
||||||
|
in: path
|
||||||
|
description: ID of the order that needs to be deleted
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
minimum: 1
|
||||||
|
responses:
|
||||||
|
'400':
|
||||||
|
description: Invalid ID supplied
|
||||||
|
'404':
|
||||||
|
description: Order not found
|
||||||
|
/user:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
summary: Create user
|
||||||
|
description: This can only be done by the logged in user.
|
||||||
|
operationId: createUser
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: Created user object
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/User'
|
||||||
|
responses:
|
||||||
|
default:
|
||||||
|
description: successful operation
|
||||||
|
'/user/{username}':
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
summary: Get user by user name
|
||||||
|
description: ''
|
||||||
|
operationId: getUserByName
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- name: username
|
||||||
|
in: path
|
||||||
|
description: 'The name that needs to be fetched. Use user1 for testing. '
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: successful operation
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/User'
|
||||||
|
'400':
|
||||||
|
description: Invalid username supplied
|
||||||
|
'404':
|
||||||
|
description: User not found
|
||||||
|
put:
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
summary: Updated user
|
||||||
|
description: This can only be done by the logged in user.
|
||||||
|
operationId: updateUser
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- name: username
|
||||||
|
in: path
|
||||||
|
description: name that need to be deleted
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: Updated user object
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/User'
|
||||||
|
responses:
|
||||||
|
'400':
|
||||||
|
description: Invalid user supplied
|
||||||
|
'404':
|
||||||
|
description: User not found
|
||||||
|
delete:
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
summary: Delete user
|
||||||
|
description: This can only be done by the logged in user.
|
||||||
|
operationId: deleteUser
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- name: username
|
||||||
|
in: path
|
||||||
|
description: The name that needs to be deleted
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
'400':
|
||||||
|
description: Invalid username supplied
|
||||||
|
'404':
|
||||||
|
description: User not found
|
||||||
|
/user/createWithArray:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
summary: Creates list of users with given input array
|
||||||
|
description: ''
|
||||||
|
operationId: createUsersWithArrayInput
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: List of user object
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/definitions/User'
|
||||||
|
responses:
|
||||||
|
default:
|
||||||
|
description: successful operation
|
||||||
|
/user/createWithList:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
summary: Creates list of users with given input array
|
||||||
|
description: ''
|
||||||
|
operationId: createUsersWithListInput
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: List of user object
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/definitions/User'
|
||||||
|
responses:
|
||||||
|
default:
|
||||||
|
description: successful operation
|
||||||
|
/user/login:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
summary: Logs user into the system
|
||||||
|
description: ''
|
||||||
|
operationId: loginUser
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- name: username
|
||||||
|
in: query
|
||||||
|
description: The user name for login
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- name: password
|
||||||
|
in: query
|
||||||
|
description: The password for login in clear text
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: successful operation
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
examples:
|
||||||
|
application/json: OK
|
||||||
|
application/xml: <message> OK </message>
|
||||||
|
text/plain: OK
|
||||||
|
headers:
|
||||||
|
X-Rate-Limit:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
description: calls per hour allowed by the user
|
||||||
|
X-Expires-After:
|
||||||
|
type: string
|
||||||
|
format: date-time
|
||||||
|
description: date in UTC when token expires
|
||||||
|
'400':
|
||||||
|
description: Invalid username/password supplied
|
||||||
|
/user/logout:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
summary: Logs out current logged in user session
|
||||||
|
description: ''
|
||||||
|
operationId: logoutUser
|
||||||
|
produces:
|
||||||
|
- application/xml
|
||||||
|
- application/json
|
||||||
|
parameters: []
|
||||||
|
responses:
|
||||||
|
default:
|
||||||
|
description: successful operation
|
||||||
|
definitions:
|
||||||
|
ApiResponse:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
code:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
Cat:
|
||||||
|
description: A representation of a cat
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/definitions/Pet'
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
huntingSkill:
|
||||||
|
type: string
|
||||||
|
description: The measured skill for hunting
|
||||||
|
default: lazy
|
||||||
|
enum:
|
||||||
|
- clueless
|
||||||
|
- lazy
|
||||||
|
- adventurous
|
||||||
|
- aggressive
|
||||||
|
required:
|
||||||
|
- huntingSkill
|
||||||
|
Category:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
description: Category ID
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/definitions/Id'
|
||||||
|
name:
|
||||||
|
description: Category name
|
||||||
|
type: string
|
||||||
|
minLength: 1
|
||||||
|
sub:
|
||||||
|
description: Test Sub Category
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
prop1:
|
||||||
|
type: string
|
||||||
|
description: Dumb Property
|
||||||
|
xml:
|
||||||
|
name: Category
|
||||||
|
Dog:
|
||||||
|
description: A representation of a dog
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/definitions/Pet'
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
packSize:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
description: The size of the pack the dog is from
|
||||||
|
default: 1
|
||||||
|
minimum: 1
|
||||||
|
required:
|
||||||
|
- packSize
|
||||||
|
HoneyBee:
|
||||||
|
description: A representation of a honey bee
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/definitions/Pet'
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
honeyPerDay:
|
||||||
|
type: number
|
||||||
|
description: Average amount of honey produced per day in ounces
|
||||||
|
example: 3.14
|
||||||
|
required:
|
||||||
|
- honeyPerDay
|
||||||
|
Id:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
Order:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
description: Order ID
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/definitions/Id'
|
||||||
|
petId:
|
||||||
|
description: Pet ID
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/definitions/Id'
|
||||||
|
quantity:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
minimum: 1
|
||||||
|
default: 1
|
||||||
|
shipDate:
|
||||||
|
description: Estimated ship date
|
||||||
|
type: string
|
||||||
|
format: date-time
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
description: Order Status
|
||||||
|
enum:
|
||||||
|
- placed
|
||||||
|
- approved
|
||||||
|
- delivered
|
||||||
|
complete:
|
||||||
|
description: Indicates whenever order was completed or not
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
xml:
|
||||||
|
name: Order
|
||||||
|
Pet:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- photoUrls
|
||||||
|
discriminator: petType
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
description: Pet ID
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/definitions/Id'
|
||||||
|
category:
|
||||||
|
description: Categories this pet belongs to
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/definitions/Category'
|
||||||
|
name:
|
||||||
|
description: The name given to a pet
|
||||||
|
type: string
|
||||||
|
example: Guru
|
||||||
|
photoUrls:
|
||||||
|
description: The list of URL to a cute photos featuring pet
|
||||||
|
type: array
|
||||||
|
default: []
|
||||||
|
xml:
|
||||||
|
name: photoUrl
|
||||||
|
wrapped: true
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
format: url
|
||||||
|
tags:
|
||||||
|
description: Tags attached to the pet
|
||||||
|
type: array
|
||||||
|
xml:
|
||||||
|
name: tag
|
||||||
|
wrapped: true
|
||||||
|
items:
|
||||||
|
$ref: '#/definitions/Tag'
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
description: Pet status in the store
|
||||||
|
enum:
|
||||||
|
- available
|
||||||
|
- pending
|
||||||
|
- sold
|
||||||
|
petType:
|
||||||
|
description: Type of a pet
|
||||||
|
type: string
|
||||||
|
xml:
|
||||||
|
name: Pet
|
||||||
|
Tag:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
description: Tag ID
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/definitions/Id'
|
||||||
|
name:
|
||||||
|
description: Tag name
|
||||||
|
type: string
|
||||||
|
minLength: 1
|
||||||
|
xml:
|
||||||
|
name: Tag
|
||||||
|
User:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
description: User ID
|
||||||
|
$ref: '#/definitions/Id'
|
||||||
|
username:
|
||||||
|
description: User supplied username
|
||||||
|
type: string
|
||||||
|
minLength: 4
|
||||||
|
example: John78
|
||||||
|
firstName:
|
||||||
|
description: User first name
|
||||||
|
type: string
|
||||||
|
minLength: 1
|
||||||
|
example: John
|
||||||
|
lastName:
|
||||||
|
description: User last name
|
||||||
|
type: string
|
||||||
|
minLength: 1
|
||||||
|
example: Smith
|
||||||
|
email:
|
||||||
|
description: User email address
|
||||||
|
type: string
|
||||||
|
format: email
|
||||||
|
example: john.smith@example.com
|
||||||
|
password:
|
||||||
|
type: string
|
||||||
|
description: 'User password, MUST contain a mix of upper and lower case letters, as well as digits'
|
||||||
|
format: password
|
||||||
|
minLength: 8
|
||||||
|
pattern: '(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])'
|
||||||
|
example: drowssaP123
|
||||||
|
phone:
|
||||||
|
description: User phone number in international format
|
||||||
|
type: string
|
||||||
|
pattern: "^\\+(?:[0-9]-?){6,14}[0-9]$"
|
||||||
|
example: +1-202-555-0192
|
||||||
|
x-nullable: true
|
||||||
|
userStatus:
|
||||||
|
description: User status
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
xml:
|
||||||
|
name: User
|
127
webpack.config.ts
Normal file
127
webpack.config.ts
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
import * as CopyWebpackPlugin from 'copy-webpack-plugin';
|
||||||
|
import ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
|
||||||
|
import * as HtmlWebpackPlugin from 'html-webpack-plugin';
|
||||||
|
import { resolve } from 'path';
|
||||||
|
import * as webpack from 'webpack';
|
||||||
|
import { webpackIgnore } from '../config/webpack-utils';
|
||||||
|
|
||||||
|
const VERSION = JSON.stringify(require('../package.json').version);
|
||||||
|
const REVISION = JSON.stringify(
|
||||||
|
require('child_process').execSync('git rev-parse --short HEAD').toString().trim(),
|
||||||
|
);
|
||||||
|
|
||||||
|
function root(filename) {
|
||||||
|
return resolve(__dirname + '/' + filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default (env: { playground?: boolean; bench?: boolean } = {}, { mode }) => ({
|
||||||
|
entry: [
|
||||||
|
root('../src/polyfills.ts'),
|
||||||
|
root(
|
||||||
|
env.playground
|
||||||
|
? 'playground/hmr-playground.tsx'
|
||||||
|
: env.bench
|
||||||
|
? '../benchmark/index.tsx'
|
||||||
|
: 'index.tsx',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
target: 'web',
|
||||||
|
output: {
|
||||||
|
filename: 'redoc-demo.bundle.js',
|
||||||
|
path: root('dist'),
|
||||||
|
globalObject: 'this',
|
||||||
|
},
|
||||||
|
|
||||||
|
devServer: {
|
||||||
|
static: __dirname,
|
||||||
|
port: 9090,
|
||||||
|
hot: true,
|
||||||
|
historyApiFallback: true,
|
||||||
|
open: true,
|
||||||
|
},
|
||||||
|
stats: {
|
||||||
|
children: true,
|
||||||
|
},
|
||||||
|
resolve: {
|
||||||
|
extensions: ['.ts', '.tsx', '.js', '.json'],
|
||||||
|
fallback: {
|
||||||
|
path: require.resolve('path-browserify'),
|
||||||
|
buffer: require.resolve('buffer'),
|
||||||
|
http: false,
|
||||||
|
fs: false,
|
||||||
|
os: false,
|
||||||
|
},
|
||||||
|
alias:
|
||||||
|
mode !== 'production'
|
||||||
|
? {
|
||||||
|
'react-dom': '@hot-loader/react-dom',
|
||||||
|
}
|
||||||
|
: {},
|
||||||
|
},
|
||||||
|
|
||||||
|
performance: false,
|
||||||
|
|
||||||
|
externals: {
|
||||||
|
esprima: 'esprima',
|
||||||
|
'node-fetch': 'null',
|
||||||
|
'node-fetch-h2': 'null',
|
||||||
|
yaml: 'null',
|
||||||
|
'safe-json-stringify': 'null',
|
||||||
|
},
|
||||||
|
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{ test: [/\.eot$/, /\.gif$/, /\.woff$/, /\.svg$/, /\.ttf$/], use: 'null-loader' },
|
||||||
|
{
|
||||||
|
test: /\.(tsx?|[cm]?js)$/,
|
||||||
|
loader: 'esbuild-loader',
|
||||||
|
options: {
|
||||||
|
target: 'es2015',
|
||||||
|
tsconfigRaw: require('../tsconfig.json'),
|
||||||
|
},
|
||||||
|
exclude: [/node_modules/],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.css$/,
|
||||||
|
use: [
|
||||||
|
'style-loader',
|
||||||
|
'css-loader',
|
||||||
|
{
|
||||||
|
loader: 'esbuild-loader',
|
||||||
|
options: {
|
||||||
|
minify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
new webpack.DefinePlugin({
|
||||||
|
__REDOC_VERSION__: VERSION,
|
||||||
|
__REDOC_REVISION__: REVISION,
|
||||||
|
'process.env': '{}',
|
||||||
|
'process.platform': '"browser"',
|
||||||
|
'process.stdout': 'null',
|
||||||
|
}),
|
||||||
|
// new webpack.NamedModulesPlugin(),
|
||||||
|
// new webpack.optimize.ModuleConcatenationPlugin(),
|
||||||
|
new HtmlWebpackPlugin({
|
||||||
|
template: env.playground
|
||||||
|
? 'demo/playground/index.html'
|
||||||
|
: env.bench
|
||||||
|
? 'benchmark/index.html'
|
||||||
|
: 'demo/index.html',
|
||||||
|
}),
|
||||||
|
new webpack.ProvidePlugin({
|
||||||
|
Buffer: ['buffer', 'Buffer'],
|
||||||
|
}),
|
||||||
|
new ForkTsCheckerWebpackPlugin({ logger: { infrastructure: 'silent', issues: 'console' } }),
|
||||||
|
webpackIgnore(/js-yaml\/dumper\.js$/),
|
||||||
|
webpackIgnore(/json-schema-ref-parser\/lib\/dereference\.js/),
|
||||||
|
webpackIgnore(/^\.\/SearchWorker\.worker$/),
|
||||||
|
new CopyWebpackPlugin({
|
||||||
|
patterns: ['demo/openapi.yaml'],
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user