mirror of
https://github.com/gosticks/octoprint-open-api.git
synced 2025-10-16 11:45:38 +00:00
Initial commit from create-openapi-repo
This commit is contained in:
commit
5bf1e6a613
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
# Dir for bundles
|
||||
dist
|
||||
node_modules
|
||||
14
.redocly.yaml
Normal file
14
.redocly.yaml
Normal file
@ -0,0 +1,14 @@
|
||||
# See https://redoc.ly/docs/cli/configuration/ for more information.
|
||||
apiDefinitions:
|
||||
main: openapi/openapi.yaml
|
||||
lint:
|
||||
extends:
|
||||
- recommended
|
||||
rules:
|
||||
no-unused-components: warning
|
||||
referenceDocs:
|
||||
htmlTemplate: ./docs/index.html
|
||||
theme:
|
||||
colors:
|
||||
primary:
|
||||
main: "#32329f"
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Ivan Goncharov
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
250
README.md
Normal file
250
README.md
Normal file
@ -0,0 +1,250 @@
|
||||
# OctoPrint OpenAPI Definition
|
||||
|
||||
## Working on your OpenAPI Definition
|
||||
|
||||
### Install
|
||||
|
||||
1. Install [Node JS](https://nodejs.org/).
|
||||
2. Clone this repo and run `npm install` in the repo root.
|
||||
|
||||
### Usage
|
||||
|
||||
#### `npm start`
|
||||
Starts the reference docs preview server.
|
||||
|
||||
#### `npm run build`
|
||||
Bundles the definition to the dist folder.
|
||||
|
||||
#### `npm test`
|
||||
Validates the definition.
|
||||
|
||||
## Contribution Guide
|
||||
|
||||
Below is a sample contribution guide. The tools
|
||||
in the repository don't restrict you to any
|
||||
specific structure. Adjust the contribution guide
|
||||
to match your own structure. However, if you
|
||||
don't have a structure in mind, this is a
|
||||
good place to start.
|
||||
|
||||
Update this contribution guide if you
|
||||
adjust the file/folder organization.
|
||||
|
||||
The `.redocly.yaml` controls settings for various
|
||||
tools including the lint tool and the reference
|
||||
docs engine. Open it to find examples and
|
||||
[read the docs](https://redoc.ly/docs/cli/configuration/)
|
||||
for more information.
|
||||
|
||||
|
||||
### Schemas
|
||||
|
||||
#### Adding Schemas
|
||||
|
||||
1. Navigate to the `openapi/components/schemas` folder.
|
||||
2. Add a file named as you wish to name the schema.
|
||||
3. Define the schema.
|
||||
4. Refer to the schema using the `$ref` (see example below).
|
||||
|
||||
##### Example Schema
|
||||
This is a very simple schema example:
|
||||
```yaml
|
||||
type: string
|
||||
description: The resource ID. Defaults to UUID v4
|
||||
maxLength: 50
|
||||
example: 4f6cf35x-2c4y-483z-a0a9-158621f77a21
|
||||
```
|
||||
This is a more complex schema example:
|
||||
```yaml
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
description: The customer identifier string
|
||||
readOnly: true
|
||||
allOf:
|
||||
- $ref: ./ResourceId.yaml
|
||||
websiteId:
|
||||
description: The website's ID
|
||||
allOf:
|
||||
- $ref: ./ResourceId.yaml
|
||||
paymentToken:
|
||||
type: string
|
||||
writeOnly: true
|
||||
description: |
|
||||
A write-only payment token; if supplied, it will be converted into a
|
||||
payment instrument and be set as the `defaultPaymentInstrument`. The
|
||||
value of this property will override the `defaultPaymentInstrument`
|
||||
in the case that both are supplied. The token may only be used once
|
||||
before it is expired.
|
||||
defaultPaymentInstrument:
|
||||
$ref: ./PaymentInstrument.yaml
|
||||
createdTime:
|
||||
description: The customer created time
|
||||
allOf:
|
||||
- $ref: ./ServerTimestamp.yaml
|
||||
updatedTime:
|
||||
description: The customer updated time
|
||||
allOf:
|
||||
- $ref: ./ServerTimestamp.yaml
|
||||
tags:
|
||||
description: A list of customer's tags
|
||||
readOnly: true
|
||||
type: array
|
||||
items:
|
||||
$ref: ./Tags/Tag.yaml
|
||||
revision:
|
||||
description: >
|
||||
The number of times the customer data has been modified.
|
||||
|
||||
The revision is useful when analyzing webhook data to determine if the
|
||||
change takes precedence over the current representation.
|
||||
type: integer
|
||||
readOnly: true
|
||||
_links:
|
||||
type: array
|
||||
description: The links related to resource
|
||||
readOnly: true
|
||||
minItems: 3
|
||||
items:
|
||||
anyOf:
|
||||
- $ref: ./Links/SelfLink.yaml
|
||||
- $ref: ./Links/NotesLink.yaml
|
||||
- $ref: ./Links/DefaultPaymentInstrumentLink.yaml
|
||||
- $ref: ./Links/LeadSourceLink.yaml
|
||||
- $ref: ./Links/WebsiteLink.yaml
|
||||
_embedded:
|
||||
type: array
|
||||
description: >-
|
||||
Any embedded objects available that are requested by the `expand`
|
||||
querystring parameter.
|
||||
readOnly: true
|
||||
minItems: 1
|
||||
items:
|
||||
anyOf:
|
||||
- $ref: ./Embeds/LeadSourceEmbed.yaml
|
||||
|
||||
```
|
||||
|
||||
##### Using the `$ref`
|
||||
|
||||
Notice in the complex example above the schema definition itself has `$ref` links to other schemas defined.
|
||||
|
||||
Here is a small excerpt with an example:
|
||||
|
||||
```yaml
|
||||
defaultPaymentInstrument:
|
||||
$ref: ./PaymentInstrument.yaml
|
||||
```
|
||||
|
||||
The value of the `$ref` is the path to the other schema definition.
|
||||
|
||||
You may use `$ref`s to compose schema from other existing schema to avoid duplication.
|
||||
|
||||
You will use `$ref`s to reference schema from your path definitions.
|
||||
|
||||
#### Editing Schemas
|
||||
|
||||
1. Navigate to the `openapi/components/schemas` folder.
|
||||
2. Open the file you wish to edit.
|
||||
3. Edit.
|
||||
|
||||
### Paths
|
||||
|
||||
#### Adding a Path
|
||||
|
||||
1. Navigate to the `openapi/paths` folder.
|
||||
2. Add a new YAML file named like your URL endpoint except replacing `/` with `@` and putting path parameters into curly braces like `{example}`.
|
||||
3. Add the path and a ref to it inside of your `openapi.yaml` file inside of the `openapi` folder.
|
||||
|
||||
Example addition to the `openapi.yaml` file:
|
||||
```yaml
|
||||
'/customers/{id}':
|
||||
$ref: './paths/customers@{id}.yaml'
|
||||
```
|
||||
|
||||
Here is an example of a YAML file named `customers@{id}.yaml` in the `paths` folder:
|
||||
|
||||
```yaml
|
||||
get:
|
||||
tags:
|
||||
- Customers
|
||||
summary: Retrieve a list of customers
|
||||
operationId: GetCustomerCollection
|
||||
description: |
|
||||
You can have a markdown description here.
|
||||
parameters:
|
||||
- $ref: ../components/parameters/collectionLimit.yaml
|
||||
- $ref: ../components/parameters/collectionOffset.yaml
|
||||
- $ref: ../components/parameters/collectionFilter.yaml
|
||||
- $ref: ../components/parameters/collectionQuery.yaml
|
||||
- $ref: ../components/parameters/collectionExpand.yaml
|
||||
- $ref: ../components/parameters/collectionFields.yaml
|
||||
responses:
|
||||
'200':
|
||||
description: A list of Customers was retrieved successfully
|
||||
headers:
|
||||
Rate-Limit-Limit:
|
||||
$ref: ../components/headers/Rate-Limit-Limit.yaml
|
||||
Rate-Limit-Remaining:
|
||||
$ref: ../components/headers/Rate-Limit-Remaining.yaml
|
||||
Rate-Limit-Reset:
|
||||
$ref: ../components/headers/Rate-Limit-Reset.yaml
|
||||
Pagination-Total:
|
||||
$ref: ../components/headers/Pagination-Total.yaml
|
||||
Pagination-Limit:
|
||||
$ref: ../components/headers/Pagination-Limit.yaml
|
||||
Pagination-Offset:
|
||||
$ref: ../components/headers/Pagination-Offset.yaml
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: ../components/schemas/Customer.yaml
|
||||
text/csv:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: ../components/schemas/Customer.yaml
|
||||
'401':
|
||||
$ref: ../components/responses/AccessForbidden.yaml
|
||||
x-code-samples:
|
||||
- lang: PHP
|
||||
source:
|
||||
$ref: ../code_samples/PHP/customers/get.php
|
||||
post:
|
||||
tags:
|
||||
- Customers
|
||||
summary: Create a customer (without an ID)
|
||||
operationId: PostCustomer
|
||||
description: Another markdown description here.
|
||||
requestBody:
|
||||
$ref: ../components/requestBodies/Customer.yaml
|
||||
responses:
|
||||
'201':
|
||||
$ref: ../components/responses/Customer.yaml
|
||||
'401':
|
||||
$ref: ../components/responses/AccessForbidden.yaml
|
||||
'409':
|
||||
$ref: ../components/responses/Conflict.yaml
|
||||
'422':
|
||||
$ref: ../components/responses/InvalidDataError.yaml
|
||||
x-code-samples:
|
||||
- lang: PHP
|
||||
source:
|
||||
$ref: ../code_samples/PHP/customers/post.php
|
||||
```
|
||||
|
||||
You'll see extensive usage of `$ref`s in this example to different types of components including schemas.
|
||||
|
||||
You'll also notice `$ref`s to code samples.
|
||||
|
||||
### Code samples
|
||||
|
||||
1. Navigate to the `openapi/code_samples` folder.
|
||||
2. Navigate to the `<language>` (e.g. PHP) sub-folder.
|
||||
3. Navigate to the `path` folder, and add ref to the code sample.
|
||||
|
||||
You can add languages by adding new folders at the appropriate path level.
|
||||
|
||||
More details inside the `code_samples` folder README.
|
||||
BIN
docs/favicon.png
Normal file
BIN
docs/favicon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 716 B |
24
docs/index.html
Normal file
24
docs/index.html
Normal file
@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>API Reference | ReDoc</title>
|
||||
<!-- needed for adaptive design -->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" type="image/png" href="favicon.png">
|
||||
|
||||
<!--
|
||||
ReDoc uses font options from the parent element
|
||||
So override default browser styles
|
||||
-->
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
</style>
|
||||
{{{redocHead}}}
|
||||
</head>
|
||||
<body>
|
||||
{{{redocHTML}}}
|
||||
</body>
|
||||
</html>
|
||||
13
openapi/README.md
Normal file
13
openapi/README.md
Normal file
@ -0,0 +1,13 @@
|
||||
## The `openapi` folder
|
||||
|
||||
This folder contains your entrypoint `openapi.yaml`.
|
||||
|
||||
That file contains references to the entire API definition.
|
||||
|
||||
Here are some sections to pay attention to:
|
||||
|
||||
* Top-level **description**: this accepts markdown, and Redoc and Redocly API Reference will render it at the top of the docs. Consider maintaining your markdown in a separate file and [embedding it](https://redoc.ly/docs/api-reference-docs/embedded-markdown/). Note to Redoc community edition users, the special tags are only available to the Redocly API Reference users, but you can still embed markdown.
|
||||
* Security schemes: you will define the scheme(s) your API uses for security (eg OAuth2, API Key, etc...). The security schemes are used by the Redocly API Reference "Try It" API console feature.
|
||||
* [Paths](paths/README.md): this defines each endpoint. A path can have one operation per http method.
|
||||
* Tags: it's a good idea to organize each operation. Each tag can have a description. The description is used as a section description within the reference docs.
|
||||
* Servers: a list of your servers, each with a URL.
|
||||
14
openapi/components/README.md
Normal file
14
openapi/components/README.md
Normal file
@ -0,0 +1,14 @@
|
||||
Reusable components
|
||||
===========
|
||||
|
||||
* You can create the following folders here:
|
||||
- `schemas` - reusable [Schema Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#schemaObject)
|
||||
- `responses` - reusable [Response Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#responseObject)
|
||||
- `parameters` - reusable [Parameter Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#parameterObject)
|
||||
- `examples` - reusable [Example Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#exampleObject)
|
||||
- `headers` - reusable [Header Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#headerObject)
|
||||
- `requestBodies` - reusable [Request Body Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#requestBodyObject)
|
||||
- `links` - reusable [Link Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#linkObject)
|
||||
- `callbacks` - reusable [Callback Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#callbackObject)
|
||||
- `securitySchemes` - reusable [Security Scheme Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#securitySchemeObject)
|
||||
* Filename of files inside the folders represent component name, e.g. `Customer.yaml`
|
||||
16
openapi/components/schemas/ConnectCmd.yaml
Normal file
16
openapi/components/schemas/ConnectCmd.yaml
Normal file
@ -0,0 +1,16 @@
|
||||
type: object
|
||||
properties:
|
||||
command:
|
||||
type: string
|
||||
enum:
|
||||
- connect
|
||||
port:
|
||||
type: string
|
||||
baudrate:
|
||||
type: number
|
||||
printerProfile:
|
||||
type: string
|
||||
save:
|
||||
type: boolean
|
||||
autoconnect:
|
||||
type: boolean
|
||||
15
openapi/components/schemas/ConnectionInfo.yaml
Normal file
15
openapi/components/schemas/ConnectionInfo.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
type: object
|
||||
properties:
|
||||
current:
|
||||
type: object
|
||||
properties:
|
||||
state:
|
||||
type: string
|
||||
port:
|
||||
type: string
|
||||
baudrate:
|
||||
type: number
|
||||
printerProfile:
|
||||
type: string
|
||||
options:
|
||||
$ref: ./PrinterConnectionOptions.yaml
|
||||
12
openapi/components/schemas/CurrentUser.yaml
Normal file
12
openapi/components/schemas/CurrentUser.yaml
Normal file
@ -0,0 +1,12 @@
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
groups:
|
||||
type: array
|
||||
items:
|
||||
$ref: ./GroupRecord.yaml
|
||||
permissions:
|
||||
type: array
|
||||
items:
|
||||
$ref: ./PermissionRecord.yaml
|
||||
6
openapi/components/schemas/DisconnectCmd.yaml
Normal file
6
openapi/components/schemas/DisconnectCmd.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
type: object
|
||||
properties:
|
||||
command:
|
||||
type: string
|
||||
enum:
|
||||
- disconnect
|
||||
6
openapi/components/schemas/FakeAckCmd.yaml
Normal file
6
openapi/components/schemas/FakeAckCmd.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
type: object
|
||||
properties:
|
||||
command:
|
||||
type: string
|
||||
enum:
|
||||
- fake_ack
|
||||
26
openapi/components/schemas/GroupRecord.yaml
Normal file
26
openapi/components/schemas/GroupRecord.yaml
Normal file
@ -0,0 +1,26 @@
|
||||
type: object
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
description:
|
||||
type: string
|
||||
permissions:
|
||||
type: array
|
||||
items:
|
||||
$ref: ./PermissionRecord.yaml
|
||||
subgroups:
|
||||
type: array
|
||||
items:
|
||||
$ref: ./GroupRecord.yaml
|
||||
needs:
|
||||
$ref: ./Needs.yaml
|
||||
default:
|
||||
type: boolean
|
||||
removable:
|
||||
type: boolean
|
||||
changeable:
|
||||
type: boolean
|
||||
toggleable:
|
||||
type: boolean
|
||||
6
openapi/components/schemas/Login.yaml
Normal file
6
openapi/components/schemas/Login.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
type: object
|
||||
properties:
|
||||
user:
|
||||
type: string
|
||||
pass:
|
||||
type: string
|
||||
6
openapi/components/schemas/LoginResponse.yaml
Normal file
6
openapi/components/schemas/LoginResponse.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
type: object
|
||||
properties:
|
||||
session:
|
||||
type: string
|
||||
_is_external_client:
|
||||
type: boolean
|
||||
10
openapi/components/schemas/Needs.yaml
Normal file
10
openapi/components/schemas/Needs.yaml
Normal file
@ -0,0 +1,10 @@
|
||||
type: object
|
||||
properties:
|
||||
role:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
group:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
6
openapi/components/schemas/PassiveLogin.yaml
Normal file
6
openapi/components/schemas/PassiveLogin.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
type: object
|
||||
properties:
|
||||
passive:
|
||||
type: boolean
|
||||
remember:
|
||||
type: boolean
|
||||
16
openapi/components/schemas/PermissionRecord.yaml
Normal file
16
openapi/components/schemas/PermissionRecord.yaml
Normal file
@ -0,0 +1,16 @@
|
||||
type: object
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
dangerous:
|
||||
type: boolean
|
||||
default_groups:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
description:
|
||||
type: string
|
||||
needs:
|
||||
$ref: ./Needs.yaml
|
||||
20
openapi/components/schemas/PrinterConnectionOptions.yaml
Normal file
20
openapi/components/schemas/PrinterConnectionOptions.yaml
Normal file
@ -0,0 +1,20 @@
|
||||
type: object
|
||||
properties:
|
||||
ports:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
baudrates:
|
||||
type: array
|
||||
items:
|
||||
type: number
|
||||
printerProfiles:
|
||||
type: array
|
||||
items:
|
||||
$ref: ./PrinterProfile.yaml
|
||||
baudratePreference:
|
||||
type: number
|
||||
printerProfilePreference:
|
||||
type: string
|
||||
autoconnect:
|
||||
type: boolean
|
||||
6
openapi/components/schemas/PrinterProfile.yaml
Normal file
6
openapi/components/schemas/PrinterProfile.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
id:
|
||||
type: string
|
||||
1
openapi/components/schemas/ToolInfo.yaml
Normal file
1
openapi/components/schemas/ToolInfo.yaml
Normal file
@ -0,0 +1 @@
|
||||
type: object
|
||||
24
openapi/components/schemas/UserRecord.yaml
Normal file
24
openapi/components/schemas/UserRecord.yaml
Normal file
@ -0,0 +1,24 @@
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
active:
|
||||
type: boolean
|
||||
user:
|
||||
type: boolean
|
||||
admin:
|
||||
type: boolean
|
||||
apiKey:
|
||||
type: string
|
||||
settings:
|
||||
type: object
|
||||
groups:
|
||||
type: array
|
||||
items:
|
||||
$ref: ./GroupRecord.yaml
|
||||
permissions:
|
||||
type: array
|
||||
items:
|
||||
$ref: ./PermissionRecord.yaml
|
||||
needs:
|
||||
$ref: ./Needs.yaml
|
||||
21
openapi/openapi.yaml
Normal file
21
openapi/openapi.yaml
Normal file
@ -0,0 +1,21 @@
|
||||
openapi: 3.0.2
|
||||
info:
|
||||
title: OctoPrint
|
||||
version: '1.0'
|
||||
servers:
|
||||
- url: 'http://192.168.178.66:5000/api'
|
||||
paths:
|
||||
/login:
|
||||
$ref: paths/login.yaml
|
||||
/logout:
|
||||
$ref: paths/logout.yaml
|
||||
/currentuser:
|
||||
$ref: paths/currentuser.yaml
|
||||
/version:
|
||||
$ref: paths/version.yaml
|
||||
/connection:
|
||||
$ref: paths/connection.yaml
|
||||
/printer:
|
||||
$ref: paths/printer.yaml
|
||||
/printer/tool:
|
||||
$ref: paths/printer@tool.yaml
|
||||
105
openapi/paths/README.md
Normal file
105
openapi/paths/README.md
Normal file
@ -0,0 +1,105 @@
|
||||
Paths
|
||||
=====
|
||||
|
||||
Organize your path definitions within this folder. You will reference your paths from your main `openapi.yaml` entrypoint file.
|
||||
|
||||
It may help you to adopt some conventions:
|
||||
|
||||
* path separator token (e.g. `@`) or subfolders
|
||||
* path parameter (e.g. `{example}`)
|
||||
* file-per-path or file-per-operation
|
||||
|
||||
There are different benefits and drawbacks to each decision.
|
||||
|
||||
You can adopt any organization you wish. We have some tips for organizing paths based on common practices.
|
||||
|
||||
## Each path in a separate file
|
||||
|
||||
Use a predefined "path separator" and keep all of your path files in the top level of the `paths` folder.
|
||||
|
||||
```
|
||||
# todo: insert tree view of paths folder
|
||||
```
|
||||
|
||||
Redocly recommends using the `@` character for this case.
|
||||
|
||||
In addition, Redocly recommends placing path parameters within `{}` curly braces if you adopt this style.
|
||||
|
||||
#### Motivations
|
||||
|
||||
* Quickly see a list of all paths. Many people think in terms of the "number" of "endpoints" (paths), and not the "number" of "operations" (paths * http methods).
|
||||
|
||||
* Only the "file-per-path" option is semantically correct with the OpenAPI Specification 3.0.2. However, Redocly's openapi-cli will build valid bundles for any of the other options too.
|
||||
|
||||
|
||||
#### Drawbacks
|
||||
|
||||
* This may require multiple definitions per http method within a single file.
|
||||
* It requires settling on a path separator (that is allowed to be used in filenames) and sticking to that convention.
|
||||
|
||||
## Each operation in a separate file
|
||||
|
||||
You may also place each operation in a separate file.
|
||||
|
||||
In this case, if you want all paths at the top-level, you can concatenate the http method to the path name. Similar to the above option, you can
|
||||
|
||||
### Files at top-level of `paths`
|
||||
|
||||
You may name your files with some concatenation for the http method. For example, following a convention such as: `<path with allowed separator>-<http-method>.yaml`.
|
||||
|
||||
#### Motivations
|
||||
|
||||
* Quickly see all operations without needing to navigate subfolders.
|
||||
|
||||
#### Drawbacks
|
||||
|
||||
* Adopting an unusual path separator convention, instead of using subfolders.
|
||||
|
||||
### Use subfolders to mirror API path structure
|
||||
|
||||
Example:
|
||||
```
|
||||
GET /customers
|
||||
|
||||
/paths/customers/get.yaml
|
||||
```
|
||||
|
||||
In this case, the path id defined within subfolders which mirror the API URL structure.
|
||||
|
||||
Example with path parameter:
|
||||
```
|
||||
GET /customers/{id}
|
||||
|
||||
/paths/customers/{id}/get.yaml
|
||||
```
|
||||
|
||||
#### Motivations
|
||||
|
||||
It matches the URL structure.
|
||||
|
||||
It is pretty easy to reference:
|
||||
|
||||
```yaml
|
||||
paths:
|
||||
'/customers/{id}':
|
||||
get:
|
||||
$ref: ./paths/customers/{id}/get.yaml
|
||||
put:
|
||||
$ref: ./paths/customers/{id}/put.yaml
|
||||
```
|
||||
|
||||
#### Drawbacks
|
||||
|
||||
If you have a lot of nested folders, it may be confusing to reference your schemas.
|
||||
|
||||
Example
|
||||
```
|
||||
file: /paths/customers/{id}/timeline/{messageId}/get.yaml
|
||||
|
||||
# excerpt of file
|
||||
headers:
|
||||
Rate-Limit-Remaining:
|
||||
$ref: ../../../../../components/headers/Rate-Limit-Remaining.yaml
|
||||
|
||||
```
|
||||
Notice the `../../../../../` in the ref which requires some attention to formulate correctly. While openapi-cli has a linter which suggests possible refs when there is a mistake, this is still a net drawback for APIs with deep paths.
|
||||
30
openapi/paths/connection.yaml
Normal file
30
openapi/paths/connection.yaml
Normal file
@ -0,0 +1,30 @@
|
||||
get:
|
||||
responses:
|
||||
'200':
|
||||
description: >-
|
||||
Retrieve the current connection settings, including information
|
||||
regarding the available baudrates and serial ports and the current
|
||||
connection state.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: ../components/schemas/ConnectionInfo.yaml
|
||||
post:
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
oneOf:
|
||||
- $ref: ../components/schemas/ConnectCmd.yaml
|
||||
- $ref: ../components/schemas/DisconnectCmd.yaml
|
||||
- $ref: ../components/schemas/FakeAckCmd.yaml
|
||||
discriminator:
|
||||
propertyName: command
|
||||
responses:
|
||||
'204':
|
||||
description: success
|
||||
'400':
|
||||
description: >-
|
||||
If the selected port or baudrate for a connect command are not part of
|
||||
the available options.
|
||||
9
openapi/paths/currentuser.yaml
Normal file
9
openapi/paths/currentuser.yaml
Normal file
@ -0,0 +1,9 @@
|
||||
description: Retrieves information about the current user.
|
||||
get:
|
||||
responses:
|
||||
'200':
|
||||
description: Current user object
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: ../components/schemas/CurrentUser.yaml
|
||||
18
openapi/paths/login.yaml
Normal file
18
openapi/paths/login.yaml
Normal file
@ -0,0 +1,18 @@
|
||||
post:
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
oneOf:
|
||||
- $ref: ../components/schemas/Login.yaml
|
||||
- $ref: ../components/schemas/PassiveLogin.yaml
|
||||
responses:
|
||||
'200':
|
||||
description: Successful login
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: ../components/schemas/LoginResponse.yaml
|
||||
'403':
|
||||
description: 'Username/password mismatch, unknown user or deactivated account'
|
||||
5
openapi/paths/logout.yaml
Normal file
5
openapi/paths/logout.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
description: Ends the current login session of the current user.
|
||||
post:
|
||||
responses:
|
||||
'204':
|
||||
description: User logged out
|
||||
4
openapi/paths/printer.yaml
Normal file
4
openapi/paths/printer.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
get:
|
||||
responses:
|
||||
'200':
|
||||
description: Retrieves the current state of the printer.
|
||||
8
openapi/paths/printer@tool.yaml
Normal file
8
openapi/paths/printer@tool.yaml
Normal file
@ -0,0 +1,8 @@
|
||||
get:
|
||||
description: >-
|
||||
Retrieves the current temperature data (actual, target and offset) plus
|
||||
optionally a (limited) history (actual, target, timestamp) for all of the
|
||||
printer’s available tools.
|
||||
responses:
|
||||
'200':
|
||||
description: Current tool state
|
||||
20
openapi/paths/version.yaml
Normal file
20
openapi/paths/version.yaml
Normal file
@ -0,0 +1,20 @@
|
||||
description: >-
|
||||
Retrieve information regarding server and API version. Returns a JSON object
|
||||
with two keys, api containing the API version, server containing the server
|
||||
version, text containing the server version including the prefix ``OctoPrint
|
||||
`` (to determine that this is indeed a genuine OctoPrint instance).
|
||||
get:
|
||||
responses:
|
||||
'200':
|
||||
description: OctoPrint server version
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
api:
|
||||
type: string
|
||||
server:
|
||||
type: string
|
||||
text:
|
||||
type: string
|
||||
683
package-lock.json
generated
Normal file
683
package-lock.json
generated
Normal file
@ -0,0 +1,683 @@
|
||||
{
|
||||
"name": "octoprint",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@redocly/ajv": {
|
||||
"version": "6.12.4",
|
||||
"resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-6.12.4.tgz",
|
||||
"integrity": "sha512-RB6vWO78v6c+SW/3bZh+XZMr4nGdJKAiPGsBALuUZnLuCiQ7aXCT1AuFHqnfS2gyXbEUEj+kw8p4ux8KdAfs3A==",
|
||||
"requires": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
"json-schema-traverse": "^0.4.1",
|
||||
"uri-js": "^4.2.2"
|
||||
}
|
||||
},
|
||||
"@redocly/openapi-cli": {
|
||||
"version": "1.0.0-beta.18",
|
||||
"resolved": "https://registry.npmjs.org/@redocly/openapi-cli/-/openapi-cli-1.0.0-beta.18.tgz",
|
||||
"integrity": "sha512-bjxyn5wDIa6LhiyniDcPUt3s+AHY8EDPrT0t/mYU89CBRLQRD/bhT4si2JlidwJv5doM4W6rZot0gg6wq5rTXw==",
|
||||
"requires": {
|
||||
"@redocly/ajv": "^6.12.3",
|
||||
"@types/node": "^14.0.13",
|
||||
"chokidar": "^3.4.0",
|
||||
"colorette": "^1.2.0",
|
||||
"glob": "^7.1.6",
|
||||
"glob-promise": "^3.4.0",
|
||||
"handlebars": "^4.7.6",
|
||||
"js-levenshtein": "^1.1.6",
|
||||
"js-yaml": "^3.14.0",
|
||||
"lodash.isequal": "^4.5.0",
|
||||
"minimatch": "^3.0.4",
|
||||
"node-fetch": "^2.6.1",
|
||||
"portfinder": "^1.0.26",
|
||||
"readline": "^1.3.0",
|
||||
"simple-websocket": "^9.0.0",
|
||||
"typescript": "^3.9.5",
|
||||
"yaml-ast-parser": "0.0.43",
|
||||
"yargs": "^15.3.1"
|
||||
}
|
||||
},
|
||||
"@types/glob": {
|
||||
"version": "7.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
|
||||
"integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==",
|
||||
"requires": {
|
||||
"@types/minimatch": "*",
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/minimatch": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
|
||||
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "14.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.2.tgz",
|
||||
"integrity": "sha512-jeYJU2kl7hL9U5xuI/BhKPZ4vqGM/OmK6whiFAXVhlstzZhVamWhDSmHyGLIp+RVyuF9/d0dqr2P85aFj4BvJg=="
|
||||
},
|
||||
"ansi-regex": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
|
||||
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"requires": {
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"anymatch": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
|
||||
"integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
|
||||
"requires": {
|
||||
"normalize-path": "^3.0.0",
|
||||
"picomatch": "^2.0.4"
|
||||
}
|
||||
},
|
||||
"argparse": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
||||
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
||||
"requires": {
|
||||
"sprintf-js": "~1.0.2"
|
||||
}
|
||||
},
|
||||
"async": {
|
||||
"version": "2.6.3",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
|
||||
"integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
|
||||
"requires": {
|
||||
"lodash": "^4.17.14"
|
||||
}
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||
},
|
||||
"binary-extensions": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
|
||||
"integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ=="
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"requires": {
|
||||
"fill-range": "^7.0.1"
|
||||
}
|
||||
},
|
||||
"camelcase": {
|
||||
"version": "5.3.1",
|
||||
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
|
||||
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
|
||||
},
|
||||
"chokidar": {
|
||||
"version": "3.4.3",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz",
|
||||
"integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==",
|
||||
"requires": {
|
||||
"anymatch": "~3.1.1",
|
||||
"braces": "~3.0.2",
|
||||
"fsevents": "~2.1.2",
|
||||
"glob-parent": "~5.1.0",
|
||||
"is-binary-path": "~2.1.0",
|
||||
"is-glob": "~4.0.1",
|
||||
"normalize-path": "~3.0.0",
|
||||
"readdirp": "~3.5.0"
|
||||
}
|
||||
},
|
||||
"cliui": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
|
||||
"integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
|
||||
"requires": {
|
||||
"string-width": "^4.2.0",
|
||||
"strip-ansi": "^6.0.0",
|
||||
"wrap-ansi": "^6.2.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||
},
|
||||
"colorette": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz",
|
||||
"integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw=="
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"debug": {
|
||||
"version": "3.2.6",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
|
||||
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"decamelize": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
|
||||
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
|
||||
},
|
||||
"emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
||||
},
|
||||
"esprima": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
||||
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
||||
},
|
||||
"fast-json-stable-stringify": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
|
||||
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
|
||||
},
|
||||
"fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"requires": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"find-up": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
|
||||
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
|
||||
"requires": {
|
||||
"locate-path": "^5.0.0",
|
||||
"path-exists": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
|
||||
"integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
|
||||
"optional": true
|
||||
},
|
||||
"get-caller-file": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
||||
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.1.6",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
||||
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.0.4",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"glob-parent": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
|
||||
"integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
|
||||
"requires": {
|
||||
"is-glob": "^4.0.1"
|
||||
}
|
||||
},
|
||||
"glob-promise": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz",
|
||||
"integrity": "sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==",
|
||||
"requires": {
|
||||
"@types/glob": "*"
|
||||
}
|
||||
},
|
||||
"handlebars": {
|
||||
"version": "4.7.6",
|
||||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz",
|
||||
"integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==",
|
||||
"requires": {
|
||||
"minimist": "^1.2.5",
|
||||
"neo-async": "^2.6.0",
|
||||
"source-map": "^0.6.1",
|
||||
"uglify-js": "^3.1.4",
|
||||
"wordwrap": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"is-binary-path": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
|
||||
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
|
||||
"requires": {
|
||||
"binary-extensions": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"is-extglob": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
|
||||
},
|
||||
"is-glob": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
|
||||
"integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
|
||||
"requires": {
|
||||
"is-extglob": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
|
||||
},
|
||||
"js-levenshtein": {
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
|
||||
"integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g=="
|
||||
},
|
||||
"js-yaml": {
|
||||
"version": "3.14.0",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
|
||||
"integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
|
||||
"requires": {
|
||||
"argparse": "^1.0.7",
|
||||
"esprima": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
|
||||
},
|
||||
"locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
||||
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
|
||||
"requires": {
|
||||
"p-locate": "^4.1.0"
|
||||
}
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.20",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
|
||||
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
|
||||
},
|
||||
"lodash.isequal": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
|
||||
"integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.5",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
||||
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
||||
"requires": {
|
||||
"minimist": "^1.2.5"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"neo-async": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
|
||||
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.1",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
|
||||
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
|
||||
},
|
||||
"normalize-path": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
||||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
|
||||
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
|
||||
"requires": {
|
||||
"p-try": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"p-locate": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
|
||||
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
|
||||
"requires": {
|
||||
"p-limit": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"p-try": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
|
||||
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
|
||||
},
|
||||
"path-exists": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
||||
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
|
||||
},
|
||||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
|
||||
},
|
||||
"picomatch": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
|
||||
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg=="
|
||||
},
|
||||
"portfinder": {
|
||||
"version": "1.0.28",
|
||||
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
|
||||
"integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
|
||||
"requires": {
|
||||
"async": "^2.6.2",
|
||||
"debug": "^3.1.1",
|
||||
"mkdirp": "^0.5.5"
|
||||
}
|
||||
},
|
||||
"punycode": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
|
||||
},
|
||||
"queue-microtask": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.1.4.tgz",
|
||||
"integrity": "sha512-eY/4Obve9cE5FK8YvC1cJsm5cr7XvAurul8UtBDJ2PR1p5NmAwHtvAt5ftcLtwYRCUKNhxCneZZlxmUDFoSeKA=="
|
||||
},
|
||||
"randombytes": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
|
||||
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
|
||||
"requires": {
|
||||
"safe-buffer": "^5.1.0"
|
||||
}
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"readdirp": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
|
||||
"integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
|
||||
"requires": {
|
||||
"picomatch": "^2.2.1"
|
||||
}
|
||||
},
|
||||
"readline": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz",
|
||||
"integrity": "sha1-xYDXfvLPyHUrEySYBg3JeTp6wBw="
|
||||
},
|
||||
"require-directory": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
||||
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
|
||||
},
|
||||
"require-main-filename": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
|
||||
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
||||
},
|
||||
"set-blocking": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
|
||||
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
|
||||
},
|
||||
"simple-websocket": {
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/simple-websocket/-/simple-websocket-9.0.0.tgz",
|
||||
"integrity": "sha512-Q+u1BJ06/FR30xS1Sf6zDuL+vAdAA7VFqZ0TdKpmQKB2uNTAPKWQFFhUDV4YD7TDi7gSRJXoxv21WprNPR0ykQ==",
|
||||
"requires": {
|
||||
"debug": "^4.1.1",
|
||||
"queue-microtask": "^1.1.0",
|
||||
"randombytes": "^2.0.3",
|
||||
"readable-stream": "^3.1.1",
|
||||
"ws": "^7.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
|
||||
"integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
|
||||
"requires": {
|
||||
"ms": "2.1.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
||||
},
|
||||
"sprintf-js": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
|
||||
},
|
||||
"string-width": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
|
||||
"integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
|
||||
"requires": {
|
||||
"emoji-regex": "^8.0.0",
|
||||
"is-fullwidth-code-point": "^3.0.0",
|
||||
"strip-ansi": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
|
||||
"requires": {
|
||||
"safe-buffer": "~5.2.0"
|
||||
}
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
|
||||
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
|
||||
"requires": {
|
||||
"ansi-regex": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"requires": {
|
||||
"is-number": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"typescript": {
|
||||
"version": "3.9.7",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz",
|
||||
"integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw=="
|
||||
},
|
||||
"uglify-js": {
|
||||
"version": "3.11.3",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.11.3.tgz",
|
||||
"integrity": "sha512-wDRziHG94mNj2n3R864CvYw/+pc9y/RNImiTyrrf8BzgWn75JgFSwYvXrtZQMnMnOp/4UTrf3iCSQxSStPiByA==",
|
||||
"optional": true
|
||||
},
|
||||
"uri-js": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz",
|
||||
"integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==",
|
||||
"requires": {
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
},
|
||||
"which-module": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
|
||||
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
|
||||
},
|
||||
"wordwrap": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
|
||||
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
|
||||
},
|
||||
"wrap-ansi": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
|
||||
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
|
||||
"requires": {
|
||||
"ansi-styles": "^4.0.0",
|
||||
"string-width": "^4.1.0",
|
||||
"strip-ansi": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
},
|
||||
"ws": {
|
||||
"version": "7.3.1",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz",
|
||||
"integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA=="
|
||||
},
|
||||
"y18n": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
|
||||
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
|
||||
},
|
||||
"yaml-ast-parser": {
|
||||
"version": "0.0.43",
|
||||
"resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz",
|
||||
"integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A=="
|
||||
},
|
||||
"yargs": {
|
||||
"version": "15.4.1",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
|
||||
"integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
|
||||
"requires": {
|
||||
"cliui": "^6.0.0",
|
||||
"decamelize": "^1.2.0",
|
||||
"find-up": "^4.1.0",
|
||||
"get-caller-file": "^2.0.1",
|
||||
"require-directory": "^2.1.1",
|
||||
"require-main-filename": "^2.0.0",
|
||||
"set-blocking": "^2.0.0",
|
||||
"string-width": "^4.2.0",
|
||||
"which-module": "^2.0.0",
|
||||
"y18n": "^4.0.0",
|
||||
"yargs-parser": "^18.1.2"
|
||||
}
|
||||
},
|
||||
"yargs-parser": {
|
||||
"version": "18.1.3",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
|
||||
"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
|
||||
"requires": {
|
||||
"camelcase": "^5.0.0",
|
||||
"decamelize": "^1.2.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
13
package.json
Normal file
13
package.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "octoprint",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"@redocly/openapi-cli": "^1.0.0-beta.18"
|
||||
},
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "openapi preview-docs",
|
||||
"build": "openapi bundle -o dist",
|
||||
"test": "openapi lint"
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user